| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788 |
- import { createRequire } from "node:module";
- import type { StorybookConfig } from "@storybook/nextjs";
- const resolve = createRequire(import.meta.url).resolve;
- const config = {
- framework: "@storybook/nextjs",
- stories: [
- "../src/**/*.mdx",
- "../src/**/?(*.)story.tsx",
- "../src/**/?(*.)stories.tsx",
- ],
- features: {
- backgrounds: true,
- },
-
- addons: [
- "@storybook/addon-themes",
- {
- name: "@storybook/addon-styling-webpack",
- options: {
- rules: [
- {
- test: /\.s[ac]ss$/i,
- use: [
- "style-loader",
- {
- loader: "css-loader",
- options: {
- modules: {
- auto: true,
- localIdentName: "[name]__[local]--[hash:base64:5]",
- exportLocalsConvention: "as-is",
- },
- importLoaders: 1,
- esModule: false,
- },
- },
- {
- loader: "sass-loader",
- options: { implementation: resolve("sass") },
- },
- ],
- },
- ],
- },
- },
- ],
- webpackFinal: (config) => {
- config.resolve = {
- ...config.resolve,
- extensionAlias: {
- ...config.resolve?.extensionAlias,
- ".js": [".js", ".ts"],
- ".jsx": [".jsx", ".tsx"],
- },
- };
- for (const rule of config.module?.rules ?? []) {
- if (
- typeof rule === "object" &&
- rule !== null &&
- rule.test instanceof RegExp &&
- rule.test.test(".svg")
- ) {
- rule.exclude = /\.svg$/i;
- }
- }
- config.module = {
- ...config.module,
- rules: [
- ...(config.module?.rules ?? []),
- {
- test: /\.svg$/i,
- use: ["@svgr/webpack"],
- },
- ],
- };
- return config;
- },
- } satisfies StorybookConfig;
- export default config;
|