hypnagaga/.storybook/main.ts
2026-02-25 20:44:28 -05:00

58 lines
No EOL
1.9 KiB
TypeScript

import { readdirSync } from "fs";
import path from "path";
import { fileURLToPath } from "url";
import type { StorybookConfig } from "@storybook/sveltekit";
const __dirname = path.dirname(fileURLToPath(import.meta.url));
// Exclude upstream components whose stories fail addon-svelte-csf parser (SB_SVELTE_CSF_PARSER_EXTRACT_SVELTE_0009)
const EXCLUDE_COMPONENTS = ["GraphicBlock", "InfoBox", "PaddingReset"];
const componentsDir = path.join(__dirname, "../graphics-components-src/src/components");
const componentDirs = readdirSync(componentsDir, { withFileTypes: true })
.filter(
(d) =>
d.isDirectory() &&
!d.name.startsWith("@") &&
!EXCLUDE_COMPONENTS.includes(d.name),
)
.map((d) => d.name);
const submoduleStories = [
"../graphics-components-src/src/docs/**/*.mdx",
...componentDirs.flatMap((name) => [
`../graphics-components-src/src/components/${name}/**/*.mdx`,
`../graphics-components-src/src/components/${name}/**/*.stories.@(js|ts|svelte)`,
]),
];
const config: StorybookConfig = {
stories: [
"../src/**/*.stories.@(js|ts|svelte)",
...submoduleStories,
],
addons: ["@storybook/addon-docs", "@storybook/addon-svelte-csf"],
framework: "@storybook/sveltekit",
async viteFinal(config) {
config.resolve = config.resolve ?? {};
config.resolve.alias = {
...config.resolve.alias,
"@reuters-graphics/graphics-components": path.resolve(
__dirname,
"../graphics-components-src/src/index.ts",
),
"@reuters-graphics/graphics-components/scss": path.resolve(
__dirname,
"../graphics-components-src/src/scss",
),
};
config.server = config.server ?? {};
config.server.fs = config.server.fs ?? {};
config.server.fs.allow = [
...(config.server.fs.allow ?? []),
path.resolve(__dirname, "../graphics-components-src"),
];
return config;
},
};
export default config;