diff options
Diffstat (limited to '.storybook/main.ts')
| -rw-r--r-- | .storybook/main.ts | 47 |
1 files changed, 47 insertions, 0 deletions
diff --git a/.storybook/main.ts b/.storybook/main.ts new file mode 100644 index 0000000..8257c59 --- /dev/null +++ b/.storybook/main.ts @@ -0,0 +1,47 @@ +import type { StorybookConfig } from '@storybook/nextjs'; +import { RuleSetRule } from 'webpack'; + +const config: StorybookConfig = { + stories: [ + '../src/**!(content)/*.mdx', + '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)', + ], + addons: [ + '@storybook/addon-links', + '@storybook/addon-essentials', + '@storybook/addon-interactions', + '@storybook/addon-onboarding', + 'storybook-dark-mode', + ], + framework: { + name: '@storybook/nextjs', + options: {}, + }, + docs: { + autodocs: 'tag', + }, + staticDirs: ['../public'], + webpackFinal: async (config) => { + // Use SVGR for SVG files. See: https://medium.com/@derek_19900/config-storybook-4-to-use-svgr-webpack-plugin-22cb1152f004 + const rules = config.module?.rules as RuleSetRule[]; + const fileLoaderRule = rules.find( + (rule) => rule?.test instanceof RegExp && rule.test.test('.svg') + ); + + if (fileLoaderRule) fileLoaderRule.exclude = /\.svg$/; + + rules.push({ + test: /\.svg$/, + use: [{ loader: '@svgr/webpack', options: { dimensions: false } }], + }); + + /** @type {import('next').NextConfig} */ + const nextConfig = require('../next.config'); + + return { + ...config, + ...nextConfig.webpack, + }; + }, +}; +export default config; |
