48 lines
1.6 KiB
TypeScript
48 lines
1.6 KiB
TypeScript
import type { StorybookConfig } from 'storybook-react-rsbuild';
|
|
|
|
/* Dev-only playground. Never shipped — package `files` is ["dist"]. */
|
|
const config: StorybookConfig = {
|
|
rsbuildFinal: (config) => {
|
|
config.tools ??= {};
|
|
// Append our rule without clobbering storybook-react-rsbuild's own
|
|
// tools.rspack hook (it injects the storybook-config-entry virtual module
|
|
// in build mode). Mutate in place and return nothing so its config stays.
|
|
const prev = config.tools.rspack;
|
|
config.tools.rspack = [
|
|
...(Array.isArray(prev) ? prev : prev ? [prev] : []),
|
|
(rspackConfig) => {
|
|
rspackConfig.module ??= {};
|
|
rspackConfig.module.rules ??= [];
|
|
(rspackConfig.module.rules as unknown[]).push({
|
|
test: /\.mjs$/,
|
|
type: 'javascript/auto',
|
|
resolve: { fullySpecified: false },
|
|
});
|
|
},
|
|
];
|
|
return config;
|
|
},
|
|
stories: ['../src/**/*.mdx', '../src/**/*.stories.@(ts|tsx)'],
|
|
addons: ['@storybook/addon-docs'],
|
|
staticDirs: ['../src/assets'],
|
|
framework: {
|
|
name: 'storybook-react-rsbuild',
|
|
options: {},
|
|
},
|
|
typescript: {
|
|
// Prop tables in autodocs come from the components' TS types.
|
|
reactDocgen: 'react-docgen-typescript',
|
|
reactDocgenTypescriptOptions: {
|
|
shouldExtractLiteralValuesFromEnum: true,
|
|
// Keep our own props + Radix primitives; drop other node_modules noise.
|
|
propFilter: (prop) =>
|
|
prop.parent
|
|
? !/node_modules/.test(prop.parent.fileName) ||
|
|
/node_modules\/radix-ui/.test(prop.parent.fileName)
|
|
: true,
|
|
},
|
|
},
|
|
};
|
|
|
|
export default config;
|