diff --git a/babel.config.js b/babel.config.js index 6a5e5882feb..e89c4ead12e 100644 --- a/babel.config.js +++ b/babel.config.js @@ -3,28 +3,30 @@ const envConfig = { ignoreBrowserslistConfig: true, modules: 'commonjs', - targets: { node: true } + targets: { node: true }, }; if (process.env.ESM) { - envConfig.modules = false + envConfig.modules = false; } if (process.env.CDN) { - envConfig.modules = 'umd' - envConfig.targets = null - envConfig.ignoreBrowserslistConfig = false + envConfig.modules = 'umd'; + envConfig.targets = null; + envConfig.ignoreBrowserslistConfig = false; } module.exports = { presets: [ - [ - require.resolve('@babel/preset-env'), - envConfig, - ], + [require.resolve('@babel/preset-env'), envConfig], require.resolve('@babel/preset-flow'), require.resolve('@babel/preset-react'), ], + env: { + test: { + plugins: [require.resolve('babel-plugin-macros')], + }, + }, plugins: [ require.resolve('@babel/plugin-proposal-class-properties'), require.resolve('@babel/plugin-syntax-dynamic-import'), diff --git a/jest.config.js b/jest.config.js index efb756e92da..2179e16e544 100644 --- a/jest.config.js +++ b/jest.config.js @@ -30,7 +30,7 @@ module.exports = { collectCoverageFrom: [ '**/src/**/*.{js,jsx,ts,tsx}', '!**/src/**/*.stories.js*', - '!**/new-components/theme/default.js*', + '!**/new-components/themes/**/index.js*', '!**/new-components/**', // TODO: add proper coverage to new components '!**/{dist,esm}/**', '!**/node_modules/**', diff --git a/packages/graphiql/.storybook/config.js b/packages/graphiql/.storybook/config.js index 6dd2383c695..e07c5bb6b55 100644 --- a/packages/graphiql/.storybook/config.js +++ b/packages/graphiql/.storybook/config.js @@ -1,10 +1,11 @@ import { configure, addDecorator } from '@storybook/react'; -import ThemeProvider from '../src/new-components/theme/ThemeProvider'; +import ThemeProvider from '../src/new-components/themes/provider'; import React from 'react'; +import requireContext from 'require-context.macro'; addDecorator(story => {story()}); configure( - require.context('../src/new-components', true, /\.stories\.js$/), + requireContext('../src/new-components', true, /\.stories\.js$/), module, ); diff --git a/packages/graphiql/package.json b/packages/graphiql/package.json index 836d3f74498..5fc29808a05 100644 --- a/packages/graphiql/package.json +++ b/packages/graphiql/package.json @@ -60,7 +60,9 @@ "react-dom": "^16.8.0" }, "devDependencies": { + "@storybook/addon-storyshots": "^5.2.8", "@storybook/react": "^5.2.8", + "babel-plugin-macros": "^2.8.0", "@testing-library/jest-dom": "4.2.4", "@testing-library/react": "9.4.0", "cross-env": "^6.0.3", @@ -82,6 +84,7 @@ "react-dom": "^16.12.0", "react-hot-loader": "^4.12.18", "react-test-renderer": "^16.12.0", + "require-context.macro": "^1.2.2", "rimraf": "^3.0.0", "serve": "^11.2.0", "start-server-and-test": "^1.10.6", diff --git a/packages/graphiql/src/new-components/Layout.stories.js b/packages/graphiql/src/new-components/Layout.stories.js index b9eb0aa3184..f625b754b87 100644 --- a/packages/graphiql/src/new-components/Layout.stories.js +++ b/packages/graphiql/src/new-components/Layout.stories.js @@ -1,9 +1,112 @@ import React from 'react'; -import Layout from './Layout'; import Nav from './Nav'; +import List, { ListRow } from './List'; +import { useThemeLayout } from './themes/provider'; + +const explorer = { + input: ( + + {'Input'} + + ), + response: ( + + {'Response'} + + ), + console: ( + + {'Console/Inspector'} + + ), +}; +const nav =