feat: add Storybook with component stories
Installs @storybook/nextjs-vite. Stories co-located with components, grouped by layer (Shared/Entities/Widgets). Multi-variant cases use render functions instead of one story per variant/size.
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
import path from 'path'
|
||||
import { fileURLToPath } from 'url'
|
||||
import type { StorybookConfig } from '@storybook/nextjs-vite'
|
||||
|
||||
const dirname = path.dirname(fileURLToPath(import.meta.url))
|
||||
|
||||
const config: StorybookConfig = {
|
||||
stories: [
|
||||
'../src/**/*.mdx',
|
||||
'../src/**/*.stories.@(js|jsx|mjs|ts|tsx)',
|
||||
],
|
||||
addons: [
|
||||
'@chromatic-com/storybook',
|
||||
'@storybook/addon-vitest',
|
||||
'@storybook/addon-a11y',
|
||||
'@storybook/addon-docs',
|
||||
],
|
||||
framework: '@storybook/nextjs-vite',
|
||||
staticDirs: ['../public'],
|
||||
viteFinal: async (config) => {
|
||||
config.resolve ??= {}
|
||||
config.resolve.alias = {
|
||||
...(config.resolve.alias as Record<string, string>),
|
||||
'$shared': path.resolve(dirname, '../src/shared'),
|
||||
'$entities': path.resolve(dirname, '../src/entities'),
|
||||
'$features': path.resolve(dirname, '../src/features'),
|
||||
'$widgets': path.resolve(dirname, '../src/widgets'),
|
||||
'$app': path.resolve(dirname, '../src/app'),
|
||||
'$routes': path.resolve(dirname, '../src/routes'),
|
||||
}
|
||||
return config
|
||||
},
|
||||
}
|
||||
|
||||
export default config
|
||||
Reference in New Issue
Block a user