From 9e4e53ba44976f71aed78952a3477485d85d041f Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Thu, 30 Oct 2025 04:40:56 +0900 Subject: [PATCH 1/8] =?UTF-8?q?chore:=20vitest=20=EA=B4=80=EB=A0=A8=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=82=AD=EC=A0=9C=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/vitest.setup.ts | 7 ------- vitest.config.ts | 35 ----------------------------------- vitest.shims.d.ts | 1 - 3 files changed, 43 deletions(-) delete mode 100644 .storybook/vitest.setup.ts delete mode 100644 vitest.config.ts delete mode 100644 vitest.shims.d.ts diff --git a/.storybook/vitest.setup.ts b/.storybook/vitest.setup.ts deleted file mode 100644 index e8c7ed3..0000000 --- a/.storybook/vitest.setup.ts +++ /dev/null @@ -1,7 +0,0 @@ -import * as a11yAddonAnnotations from '@storybook/addon-a11y/preview'; -import { setProjectAnnotations } from '@storybook/nextjs-vite'; -import * as projectAnnotations from './preview'; - -// This is an important step to apply the right configuration when testing your stories. -// More info at: https://storybook.js.org/docs/api/portable-stories/portable-stories-vitest#setprojectannotations -setProjectAnnotations([a11yAddonAnnotations, projectAnnotations]); diff --git a/vitest.config.ts b/vitest.config.ts deleted file mode 100644 index e4644ff..0000000 --- a/vitest.config.ts +++ /dev/null @@ -1,35 +0,0 @@ -import path from 'node:path'; -import { fileURLToPath } from 'node:url'; - -import { defineConfig } from 'vitest/config'; - -import { storybookTest } from '@storybook/addon-vitest/vitest-plugin'; - -const dirname = - typeof __dirname !== 'undefined' ? __dirname : path.dirname(fileURLToPath(import.meta.url)); - -// More info at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon -export default defineConfig({ - test: { - projects: [ - { - extends: true, - plugins: [ - // The plugin will run tests for the stories defined in your Storybook config - // See options at: https://storybook.js.org/docs/next/writing-tests/integrations/vitest-addon#storybooktest - storybookTest({ configDir: path.join(dirname, '.storybook') }), - ], - test: { - name: 'storybook', - browser: { - enabled: true, - headless: true, - provider: 'playwright', - instances: [{ browser: 'chromium' }], - }, - setupFiles: ['.storybook/vitest.setup.ts'], - }, - }, - ], - }, -}); diff --git a/vitest.shims.d.ts b/vitest.shims.d.ts deleted file mode 100644 index a1d31e5..0000000 --- a/vitest.shims.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// From 997fb3b9ba1bca6bc1b626e3ca255c9bfe6c92d6 Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Thu, 30 Oct 2025 04:43:13 +0900 Subject: [PATCH 2/8] =?UTF-8?q?feat:=20storybook=20svg=20=EC=84=A4?= =?UTF-8?q?=EC=A0=95=20=EB=B0=8F=20global=20=EC=8A=A4=ED=83=80=EC=9D=BC=20?= =?UTF-8?q?=EC=A0=81=EC=9A=A9=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/main.ts | 32 ++++- .storybook/preview.ts | 8 +- next.config.ts | 21 +-- package.json | 2 + pnpm-lock.yaml | 226 +++++++++++++++++++++++++++++++ src/app/layout.tsx | 2 +- src/app/{ => styles}/globals.css | 0 svgr.d.ts | 5 - 8 files changed, 263 insertions(+), 33 deletions(-) rename src/app/{ => styles}/globals.css (100%) diff --git a/.storybook/main.ts b/.storybook/main.ts index f8109ce..ed048f3 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -3,16 +3,40 @@ import type { StorybookConfig } from '@storybook/nextjs'; const config: StorybookConfig = { stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ - '@chromatic-com/storybook', - '@storybook/addon-docs', '@storybook/addon-onboarding', - '@storybook/addon-a11y', + '@storybook/addon-links', + '@storybook/addon-essentials', + '@chromatic-com/storybook', '@storybook/addon-vitest', ], framework: { name: '@storybook/nextjs', options: {}, }, - staticDirs: ['../public'], + webpackFinal: async (config) => { + if (!config.module || !config.module.rules) { + return config; + } + + config.module.rules = [ + ...config.module.rules.map((rule) => { + if (!rule || rule === '...') { + return rule; + } + + if (rule.test && /svg/.test(String(rule.test))) { + return { ...rule, exclude: /\.svg$/i }; + } + + return rule; + }), + { + test: /\.svg$/, + use: ['@svgr/webpack'], + }, + ]; + + return config; + }, }; export default config; diff --git a/.storybook/preview.ts b/.storybook/preview.ts index a9e11e2..5dfcf5f 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,4 +1,5 @@ import type { Preview } from '@storybook/nextjs'; +import '@/app/styles/globals.css'; const preview: Preview = { parameters: { @@ -8,13 +9,6 @@ const preview: Preview = { date: /Date$/i, }, }, - - a11y: { - // 'todo' - show a11y violations in the test UI only - // 'error' - fail CI on a11y violations - // 'off' - skip a11y checks entirely - test: 'todo', - }, }, }; diff --git a/next.config.ts b/next.config.ts index c9157e8..5399318 100644 --- a/next.config.ts +++ b/next.config.ts @@ -8,25 +8,14 @@ const nextConfig: NextConfig = { typeof rule.test === 'object' && rule.test instanceof RegExp && rule.test?.test?.('.svg') ); - if (!fileLoaderRule) { - throw new Error('File loader rule not found'); - } - - config.module.rules.push( - { - ...fileLoaderRule, - test: /\.svg$/i, - resourceQuery: /url/, - }, - { + if (fileLoaderRule) { + config.module.rules.push({ test: /\.svg$/i, - issuer: fileLoaderRule.issuer, - resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, use: ['@svgr/webpack'], - } - ); + }); - fileLoaderRule.exclude = /\.svg$/i; + fileLoaderRule.exclude = /\.svg$/i; + } return config; }, diff --git a/package.json b/package.json index 2de735a..797d1db 100644 --- a/package.json +++ b/package.json @@ -31,6 +31,8 @@ "@eslint/eslintrc": "^3", "@storybook/addon-a11y": "^9.1.12", "@storybook/addon-docs": "^9.1.12", + "@storybook/addon-essentials": "^8.6.14", + "@storybook/addon-links": "^8.6.14", "@storybook/addon-onboarding": "^9.1.12", "@storybook/addon-vitest": "^9.1.12", "@storybook/nextjs": "^9.1.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78bcd76..ebd8e98 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,6 +39,12 @@ importers: '@storybook/addon-docs': specifier: ^9.1.12 version: 9.1.12(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-essentials': + specifier: ^8.6.14 + version: 8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-links': + specifier: ^8.6.14 + version: 8.6.14(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/addon-onboarding': specifier: ^9.1.12 version: 9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) @@ -1418,16 +1424,75 @@ packages: peerDependencies: storybook: ^9.1.12 + '@storybook/addon-actions@8.6.14': + resolution: {integrity: sha512-mDQxylxGGCQSK7tJPkD144J8jWh9IU9ziJMHfB84PKpI/V5ZgqMDnpr2bssTrUaGDqU5e1/z8KcRF+Melhs9pQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-backgrounds@8.6.14': + resolution: {integrity: sha512-l9xS8qWe5n4tvMwth09QxH2PmJbCctEvBAc1tjjRasAfrd69f7/uFK4WhwJAstzBTNgTc8VXI4w8ZR97i1sFbg==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-controls@8.6.14': + resolution: {integrity: sha512-IiQpkNJdiRyA4Mq9mzjZlvQugL/aE7hNgVxBBGPiIZG6wb6Ht9hNnBYpap5ZXXFKV9p2qVI0FZK445ONmAa+Cw==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-docs@8.6.14': + resolution: {integrity: sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==} + peerDependencies: + storybook: ^8.6.14 + '@storybook/addon-docs@9.1.12': resolution: {integrity: sha512-isHZvVgFLU2cBD+TbFY9Fu4fREoli/OoKGYterMI+/OQDzCAmoPs2i8HgCK8bwgrCnJKf8dS0uv28+6qBdZoZQ==} peerDependencies: storybook: ^9.1.12 + '@storybook/addon-essentials@8.6.14': + resolution: {integrity: sha512-5ZZSHNaW9mXMOFkoPyc3QkoNGdJHETZydI62/OASR0lmPlJ1065TNigEo5dJddmZNn0/3bkE8eKMAzLnO5eIdA==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-highlight@8.6.14': + resolution: {integrity: sha512-4H19OJlapkofiE9tM6K/vsepf4ir9jMm9T+zw5L85blJZxhKZIbJ6FO0TCG9PDc4iPt3L6+aq5B0X29s9zicNQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-links@8.6.14': + resolution: {integrity: sha512-DRlXHIyZzOruAZkxmXfVgTF+4d6K27pFcH4cUsm3KT1AXuZbr23lb5iZHpUZoG6lmU85Sru4xCEgewSTXBIe1w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.14 + peerDependenciesMeta: + react: + optional: true + + '@storybook/addon-measure@8.6.14': + resolution: {integrity: sha512-1Tlyb72NX8aAqm6I6OICsUuGOP6hgnXcuFlXucyhKomPa6j3Eu2vKu561t/f0oGtAK2nO93Z70kVaEh5X+vaGw==} + peerDependencies: + storybook: ^8.6.14 + '@storybook/addon-onboarding@9.1.12': resolution: {integrity: sha512-6w+RySUKpbh96VwhGVvEH+q9l4WlGxuZs+i6kGUmojEdr1p6Hl3vOnLzHQlitjDudiYdfPEPmJrmUa6zpuuXEA==} peerDependencies: storybook: ^9.1.12 + '@storybook/addon-outline@8.6.14': + resolution: {integrity: sha512-CW857JvN6OxGWElqjlzJO2S69DHf+xO3WsEfT5mT3ZtIjmsvRDukdWfDU9bIYUFyA2lFvYjncBGjbK+I91XR7w==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-toolbars@8.6.14': + resolution: {integrity: sha512-W/wEXT8h3VyZTVfWK/84BAcjAxTdtRiAkT2KAN0nbSHxxB5KEM1MjKpKu2upyzzMa3EywITqbfy4dP6lpkVTwQ==} + peerDependencies: + storybook: ^8.6.14 + + '@storybook/addon-viewport@8.6.14': + resolution: {integrity: sha512-gNzVQbMqRC+/4uQTPI2ZrWuRHGquTMZpdgB9DrD88VTEjNudP+J6r8myLfr2VvGksBbUMHkGHMXHuIhrBEnXYA==} + peerDependencies: + storybook: ^8.6.14 + '@storybook/addon-vitest@9.1.12': resolution: {integrity: sha512-FB82Z/lfxsfKK3laIj0UVoXMiIqLd35mF+V5jBIerBmRnR391sbjDis1AGbEgqlkpvPxl0E/mufqstqGdPCA1Q==} peerDependencies: @@ -1443,6 +1508,18 @@ packages: vitest: optional: true + '@storybook/blocks@8.6.14': + resolution: {integrity: sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 + storybook: ^8.6.14 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + '@storybook/builder-vite@9.1.12': resolution: {integrity: sha512-EYuMN4OXkRIa5K/JU23bRslHrG/3K6/LXIPLWZ5b2+T5qhW9JKW/wM98rRbqxPfU57ytlSwBFe2fUFREBAsvbA==} peerDependencies: @@ -1463,6 +1540,11 @@ packages: peerDependencies: storybook: ^9.1.12 + '@storybook/csf-plugin@8.6.14': + resolution: {integrity: sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==} + peerDependencies: + storybook: ^8.6.14 + '@storybook/csf-plugin@9.1.12': resolution: {integrity: sha512-qfKQp13TP116GSzc5R30ScPFYwQzk3SWQEksv2IubEOk3TMfeuVHzfifRrfQ/mZyglxQ1uZlpOO5+4fe6dv2gw==} peerDependencies: @@ -1526,6 +1608,13 @@ packages: typescript: '>= 4.x' webpack: '>= 4' + '@storybook/react-dom-shim@8.6.14': + resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.6.14 + '@storybook/react-dom-shim@9.1.12': resolution: {integrity: sha512-d6NHTvGUQb27xvKXLwSchhqrN43b8bdnegSZbgi+y/tddyTdEO1LPHBguGH7B7woA4VQuAs7WwiYiCm4lNqa7A==} peerDependencies: @@ -1812,6 +1901,9 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + '@types/uuid@9.0.8': + resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} + '@types/webpack@5.28.5': resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} @@ -3810,6 +3902,9 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} + map-or-similar@1.5.0: + resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} + math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -3827,6 +3922,9 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} + memoizerific@1.11.3: + resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} + meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -4153,6 +4251,10 @@ packages: engines: {node: '>=18'} hasBin: true + polished@4.3.1: + resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} + engines: {node: '>=10'} + possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -4993,6 +5095,10 @@ packages: utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + hasBin: true + vite-node@3.2.4: resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -6557,6 +6663,42 @@ snapshots: axe-core: 4.11.0 storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/addon-actions@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/global': 5.0.0 + '@types/uuid': 9.0.8 + dequal: 2.0.3 + polished: 4.3.1 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + uuid: 9.0.1 + + '@storybook/addon-backgrounds@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/global': 5.0.0 + memoizerific: 1.11.3 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + ts-dedent: 2.2.0 + + '@storybook/addon-controls@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/global': 5.0.0 + dequal: 2.0.3 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + ts-dedent: 2.2.0 + + '@storybook/addon-docs@8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.1.0) + '@storybook/blocks': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/csf-plugin': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/react-dom-shim': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + '@storybook/addon-docs@9.1.12(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.1.0) @@ -6570,10 +6712,60 @@ snapshots: transitivePeerDependencies: - '@types/react' + '@storybook/addon-essentials@8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/addon-actions': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-controls': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-docs': 8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-highlight': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-measure': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-outline': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-toolbars': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + '@storybook/addon-viewport': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + ts-dedent: 2.2.0 + transitivePeerDependencies: + - '@types/react' + + '@storybook/addon-highlight@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + + '@storybook/addon-links@8.6.14(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + ts-dedent: 2.2.0 + optionalDependencies: + react: 19.1.0 + + '@storybook/addon-measure@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + tiny-invariant: 1.3.3 + '@storybook/addon-onboarding@9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/addon-outline@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/global': 5.0.0 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + ts-dedent: 2.2.0 + + '@storybook/addon-toolbars@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + + '@storybook/addon-viewport@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + memoizerific: 1.11.3 + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/addon-vitest@9.1.12(@vitest/browser@3.2.4)(@vitest/runner@3.2.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vitest@3.2.4)': dependencies: '@storybook/global': 5.0.0 @@ -6589,6 +6781,15 @@ snapshots: - react - react-dom + '@storybook/blocks@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + '@storybook/icons': 1.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + ts-dedent: 2.2.0 + optionalDependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + '@storybook/builder-vite@9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@storybook/csf-plugin': 9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) @@ -6628,6 +6829,11 @@ snapshots: storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 + '@storybook/csf-plugin@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + unplugin: 1.16.1 + '@storybook/csf-plugin@9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) @@ -6758,6 +6964,12 @@ snapshots: transitivePeerDependencies: - supports-color + '@storybook/react-dom-shim@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': + dependencies: + react: 19.1.0 + react-dom: 19.1.0(react@19.1.0) + storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) + '@storybook/react-dom-shim@9.1.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: react: 19.1.0 @@ -7067,6 +7279,8 @@ snapshots: '@types/semver@7.7.1': {} + '@types/uuid@9.0.8': {} + '@types/webpack@5.28.5(esbuild@0.25.11)': dependencies: '@types/node': 20.19.21 @@ -9347,6 +9561,8 @@ snapshots: dependencies: semver: 7.7.3 + map-or-similar@1.5.0: {} + math-intrinsics@1.1.0: {} md5.js@1.3.5: @@ -9363,6 +9579,10 @@ snapshots: dependencies: fs-monkey: 1.1.0 + memoizerific@1.11.3: + dependencies: + map-or-similar: 1.5.0 + meow@12.1.1: {} merge-stream@2.0.0: {} @@ -9693,6 +9913,10 @@ snapshots: optionalDependencies: fsevents: 2.3.2 + polished@4.3.1: + dependencies: + '@babel/runtime': 7.28.4 + possible-typed-array-names@1.1.0: {} postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)): @@ -10639,6 +10863,8 @@ snapshots: utila@0.4.0: {} + uuid@9.0.1: {} + vite-node@3.2.4(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: cac: 6.7.14 diff --git a/src/app/layout.tsx b/src/app/layout.tsx index c517ba7..38dccd4 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,6 +1,6 @@ import type { Metadata } from 'next'; import localFont from 'next/font/local'; -import './globals.css'; +import '@/app/styles/globals.css'; const pretendard = localFont({ src: [{ path: '../assets/fonts/PretendardVariable.woff2', style: 'normal', weight: '100 900' }], diff --git a/src/app/globals.css b/src/app/styles/globals.css similarity index 100% rename from src/app/globals.css rename to src/app/styles/globals.css diff --git a/svgr.d.ts b/svgr.d.ts index bd3438f..100cfb5 100644 --- a/svgr.d.ts +++ b/svgr.d.ts @@ -3,8 +3,3 @@ declare module '*.svg' { const content: FC>; export default content; } - -declare module '*.svg?url' { - const content: string; - export default content; -} From 3dd00c14dbcb77360471907c6266dd26d7d81b5a Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Thu, 30 Oct 2025 04:54:32 +0900 Subject: [PATCH 3/8] =?UTF-8?q?refactor:=20styles=20=ED=8F=B4=EB=8D=94=20?= =?UTF-8?q?=EC=9D=B4=EB=8F=99=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/preview.ts | 2 +- src/app/layout.tsx | 4 ++-- src/{app => }/styles/globals.css | 0 3 files changed, 3 insertions(+), 3 deletions(-) rename src/{app => }/styles/globals.css (100%) diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 5dfcf5f..5131564 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,5 +1,5 @@ import type { Preview } from '@storybook/nextjs'; -import '@/app/styles/globals.css'; +import '@styles/globals.css'; const preview: Preview = { parameters: { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 38dccd4..1cf7507 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,9 +1,9 @@ import type { Metadata } from 'next'; import localFont from 'next/font/local'; -import '@/app/styles/globals.css'; +import '@styles/globals.css'; const pretendard = localFont({ - src: [{ path: '../assets/fonts/PretendardVariable.woff2', style: 'normal', weight: '100 900' }], + src: [{ path: '@/assets/fonts/PretendardVariable.woff2', style: 'normal', weight: '100 900' }], variable: '--font-family-sans', display: 'swap', fallback: ['system-ui', 'Arial', 'sans-serif'], diff --git a/src/app/styles/globals.css b/src/styles/globals.css similarity index 100% rename from src/app/styles/globals.css rename to src/styles/globals.css From ed599246960e7aa0a590d4b976c29cbfee196147 Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Mon, 3 Nov 2025 22:51:51 +0900 Subject: [PATCH 4/8] =?UTF-8?q?chore:=20storybook=20=EB=B2=84=EC=A0=84=20?= =?UTF-8?q?=EB=B3=80=EA=B2=BD=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/main.ts | 8 +- .storybook/preview.ts | 2 +- .vscode/settings.json | 3 +- package.json | 2 - pnpm-lock.yaml | 226 ----------------------------------------- src/app/layout.tsx | 13 +-- src/styles/globals.css | 43 ++++++-- 7 files changed, 42 insertions(+), 255 deletions(-) diff --git a/.storybook/main.ts b/.storybook/main.ts index ed048f3..f7e58ae 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -2,13 +2,7 @@ import type { StorybookConfig } from '@storybook/nextjs'; const config: StorybookConfig = { stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], - addons: [ - '@storybook/addon-onboarding', - '@storybook/addon-links', - '@storybook/addon-essentials', - '@chromatic-com/storybook', - '@storybook/addon-vitest', - ], + addons: ['@storybook/addon-onboarding', '@chromatic-com/storybook', '@storybook/addon-a11y'], framework: { name: '@storybook/nextjs', options: {}, diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 5131564..858e3d8 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,5 +1,5 @@ import type { Preview } from '@storybook/nextjs'; -import '@styles/globals.css'; +import '../src/styles/globals.css'; const preview: Preview = { parameters: { diff --git a/.vscode/settings.json b/.vscode/settings.json index f5458bf..30ae42d 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -7,5 +7,6 @@ "files.eol": "\n", "files.insertFinalNewline": true, "typescript.preferences.importModuleSpecifier": "non-relative", - "javascript.updateImportsOnFileMove.enabled": "always" + "javascript.updateImportsOnFileMove.enabled": "always", + "css.lint.unknownAtRules": "ignore" } diff --git a/package.json b/package.json index 797d1db..2de735a 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,6 @@ "@eslint/eslintrc": "^3", "@storybook/addon-a11y": "^9.1.12", "@storybook/addon-docs": "^9.1.12", - "@storybook/addon-essentials": "^8.6.14", - "@storybook/addon-links": "^8.6.14", "@storybook/addon-onboarding": "^9.1.12", "@storybook/addon-vitest": "^9.1.12", "@storybook/nextjs": "^9.1.12", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index ebd8e98..78bcd76 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -39,12 +39,6 @@ importers: '@storybook/addon-docs': specifier: ^9.1.12 version: 9.1.12(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-essentials': - specifier: ^8.6.14 - version: 8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-links': - specifier: ^8.6.14 - version: 8.6.14(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) '@storybook/addon-onboarding': specifier: ^9.1.12 version: 9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) @@ -1424,75 +1418,16 @@ packages: peerDependencies: storybook: ^9.1.12 - '@storybook/addon-actions@8.6.14': - resolution: {integrity: sha512-mDQxylxGGCQSK7tJPkD144J8jWh9IU9ziJMHfB84PKpI/V5ZgqMDnpr2bssTrUaGDqU5e1/z8KcRF+Melhs9pQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-backgrounds@8.6.14': - resolution: {integrity: sha512-l9xS8qWe5n4tvMwth09QxH2PmJbCctEvBAc1tjjRasAfrd69f7/uFK4WhwJAstzBTNgTc8VXI4w8ZR97i1sFbg==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-controls@8.6.14': - resolution: {integrity: sha512-IiQpkNJdiRyA4Mq9mzjZlvQugL/aE7hNgVxBBGPiIZG6wb6Ht9hNnBYpap5ZXXFKV9p2qVI0FZK445ONmAa+Cw==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-docs@8.6.14': - resolution: {integrity: sha512-Obpd0OhAF99JyU5pp5ci17YmpcQtMNgqW2pTXV8jAiiipWpwO++hNDeQmLmlSXB399XjtRDOcDVkoc7rc6JzdQ==} - peerDependencies: - storybook: ^8.6.14 - '@storybook/addon-docs@9.1.12': resolution: {integrity: sha512-isHZvVgFLU2cBD+TbFY9Fu4fREoli/OoKGYterMI+/OQDzCAmoPs2i8HgCK8bwgrCnJKf8dS0uv28+6qBdZoZQ==} peerDependencies: storybook: ^9.1.12 - '@storybook/addon-essentials@8.6.14': - resolution: {integrity: sha512-5ZZSHNaW9mXMOFkoPyc3QkoNGdJHETZydI62/OASR0lmPlJ1065TNigEo5dJddmZNn0/3bkE8eKMAzLnO5eIdA==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-highlight@8.6.14': - resolution: {integrity: sha512-4H19OJlapkofiE9tM6K/vsepf4ir9jMm9T+zw5L85blJZxhKZIbJ6FO0TCG9PDc4iPt3L6+aq5B0X29s9zicNQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-links@8.6.14': - resolution: {integrity: sha512-DRlXHIyZzOruAZkxmXfVgTF+4d6K27pFcH4cUsm3KT1AXuZbr23lb5iZHpUZoG6lmU85Sru4xCEgewSTXBIe1w==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.14 - peerDependenciesMeta: - react: - optional: true - - '@storybook/addon-measure@8.6.14': - resolution: {integrity: sha512-1Tlyb72NX8aAqm6I6OICsUuGOP6hgnXcuFlXucyhKomPa6j3Eu2vKu561t/f0oGtAK2nO93Z70kVaEh5X+vaGw==} - peerDependencies: - storybook: ^8.6.14 - '@storybook/addon-onboarding@9.1.12': resolution: {integrity: sha512-6w+RySUKpbh96VwhGVvEH+q9l4WlGxuZs+i6kGUmojEdr1p6Hl3vOnLzHQlitjDudiYdfPEPmJrmUa6zpuuXEA==} peerDependencies: storybook: ^9.1.12 - '@storybook/addon-outline@8.6.14': - resolution: {integrity: sha512-CW857JvN6OxGWElqjlzJO2S69DHf+xO3WsEfT5mT3ZtIjmsvRDukdWfDU9bIYUFyA2lFvYjncBGjbK+I91XR7w==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-toolbars@8.6.14': - resolution: {integrity: sha512-W/wEXT8h3VyZTVfWK/84BAcjAxTdtRiAkT2KAN0nbSHxxB5KEM1MjKpKu2upyzzMa3EywITqbfy4dP6lpkVTwQ==} - peerDependencies: - storybook: ^8.6.14 - - '@storybook/addon-viewport@8.6.14': - resolution: {integrity: sha512-gNzVQbMqRC+/4uQTPI2ZrWuRHGquTMZpdgB9DrD88VTEjNudP+J6r8myLfr2VvGksBbUMHkGHMXHuIhrBEnXYA==} - peerDependencies: - storybook: ^8.6.14 - '@storybook/addon-vitest@9.1.12': resolution: {integrity: sha512-FB82Z/lfxsfKK3laIj0UVoXMiIqLd35mF+V5jBIerBmRnR391sbjDis1AGbEgqlkpvPxl0E/mufqstqGdPCA1Q==} peerDependencies: @@ -1508,18 +1443,6 @@ packages: vitest: optional: true - '@storybook/blocks@8.6.14': - resolution: {integrity: sha512-rBMHAfA39AGHgkrDze4RmsnQTMw1ND5fGWobr9pDcJdnDKWQWNRD7Nrlxj0gFlN3n4D9lEZhWGdFrCbku7FVAQ==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 - storybook: ^8.6.14 - peerDependenciesMeta: - react: - optional: true - react-dom: - optional: true - '@storybook/builder-vite@9.1.12': resolution: {integrity: sha512-EYuMN4OXkRIa5K/JU23bRslHrG/3K6/LXIPLWZ5b2+T5qhW9JKW/wM98rRbqxPfU57ytlSwBFe2fUFREBAsvbA==} peerDependencies: @@ -1540,11 +1463,6 @@ packages: peerDependencies: storybook: ^9.1.12 - '@storybook/csf-plugin@8.6.14': - resolution: {integrity: sha512-dErtc9teAuN+eelN8FojzFE635xlq9cNGGGEu0WEmMUQ4iJ8pingvBO1N8X3scz4Ry7KnxX++NNf3J3gpxS8qQ==} - peerDependencies: - storybook: ^8.6.14 - '@storybook/csf-plugin@9.1.12': resolution: {integrity: sha512-qfKQp13TP116GSzc5R30ScPFYwQzk3SWQEksv2IubEOk3TMfeuVHzfifRrfQ/mZyglxQ1uZlpOO5+4fe6dv2gw==} peerDependencies: @@ -1608,13 +1526,6 @@ packages: typescript: '>= 4.x' webpack: '>= 4' - '@storybook/react-dom-shim@8.6.14': - resolution: {integrity: sha512-0hixr3dOy3f3M+HBofp3jtMQMS+sqzjKNgl7Arfuj3fvjmyXOks/yGjDImySR4imPtEllvPZfhiQNlejheaInw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - react-dom: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.6.14 - '@storybook/react-dom-shim@9.1.12': resolution: {integrity: sha512-d6NHTvGUQb27xvKXLwSchhqrN43b8bdnegSZbgi+y/tddyTdEO1LPHBguGH7B7woA4VQuAs7WwiYiCm4lNqa7A==} peerDependencies: @@ -1901,9 +1812,6 @@ packages: '@types/semver@7.7.1': resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} - '@types/uuid@9.0.8': - resolution: {integrity: sha512-jg+97EGIcY9AGHJJRaaPVgetKDsrTgbRjQ5Msgjh/DQKEFl0DtyRr/VCOyD1T2R1MNeWPK/u7JoGhlDZnKBAfA==} - '@types/webpack@5.28.5': resolution: {integrity: sha512-wR87cgvxj3p6D0Crt1r5avwqffqPXUkNlnQ1mjU93G7gCuFjufZR4I6j8cz5g1F1tTYpfOOFvly+cmIQwL9wvw==} @@ -3902,9 +3810,6 @@ packages: resolution: {integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==} engines: {node: '>=10'} - map-or-similar@1.5.0: - resolution: {integrity: sha512-0aF7ZmVon1igznGI4VS30yugpduQW3y3GkcgGJOp7d8x8QrizhigUxjI/m2UojsXXto+jLAH3KSz+xOJTiORjg==} - math-intrinsics@1.1.0: resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} engines: {node: '>= 0.4'} @@ -3922,9 +3827,6 @@ packages: resolution: {integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==} engines: {node: '>= 4.0.0'} - memoizerific@1.11.3: - resolution: {integrity: sha512-/EuHYwAPdLtXwAwSZkh/Gutery6pD2KYd44oQLhAvQp/50mpyduZh8Q7PYHXTCJ+wuXxt7oij2LXyIJOOYFPog==} - meow@12.1.1: resolution: {integrity: sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==} engines: {node: '>=16.10'} @@ -4251,10 +4153,6 @@ packages: engines: {node: '>=18'} hasBin: true - polished@4.3.1: - resolution: {integrity: sha512-OBatVyC/N7SCW/FaDHrSd+vn0o5cS855TOmYi4OkdWUMSJCET/xip//ch8xGUvtr3i44X9LVyWwQlRMTN3pwSA==} - engines: {node: '>=10'} - possible-typed-array-names@1.1.0: resolution: {integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==} engines: {node: '>= 0.4'} @@ -5095,10 +4993,6 @@ packages: utila@0.4.0: resolution: {integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==} - uuid@9.0.1: - resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} - hasBin: true - vite-node@3.2.4: resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} @@ -6663,42 +6557,6 @@ snapshots: axe-core: 4.11.0 storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/addon-actions@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/global': 5.0.0 - '@types/uuid': 9.0.8 - dequal: 2.0.3 - polished: 4.3.1 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - uuid: 9.0.1 - - '@storybook/addon-backgrounds@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/global': 5.0.0 - memoizerific: 1.11.3 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - ts-dedent: 2.2.0 - - '@storybook/addon-controls@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/global': 5.0.0 - dequal: 2.0.3 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - ts-dedent: 2.2.0 - - '@storybook/addon-docs@8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.1.0) - '@storybook/blocks': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/csf-plugin': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/react-dom-shim': 8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - '@storybook/addon-docs@9.1.12(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: '@mdx-js/react': 3.1.1(@types/react@19.2.2)(react@19.1.0) @@ -6712,60 +6570,10 @@ snapshots: transitivePeerDependencies: - '@types/react' - '@storybook/addon-essentials@8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/addon-actions': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-backgrounds': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-controls': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-docs': 8.6.14(@types/react@19.2.2)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-highlight': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-measure': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-outline': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-toolbars': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - '@storybook/addon-viewport': 8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - ts-dedent: 2.2.0 - transitivePeerDependencies: - - '@types/react' - - '@storybook/addon-highlight@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - - '@storybook/addon-links@8.6.14(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - ts-dedent: 2.2.0 - optionalDependencies: - react: 19.1.0 - - '@storybook/addon-measure@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - tiny-invariant: 1.3.3 - '@storybook/addon-onboarding@9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/addon-outline@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/global': 5.0.0 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - ts-dedent: 2.2.0 - - '@storybook/addon-toolbars@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - - '@storybook/addon-viewport@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - memoizerific: 1.11.3 - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/addon-vitest@9.1.12(@vitest/browser@3.2.4)(@vitest/runner@3.2.4)(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vitest@3.2.4)': dependencies: '@storybook/global': 5.0.0 @@ -6781,15 +6589,6 @@ snapshots: - react - react-dom - '@storybook/blocks@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - '@storybook/icons': 1.6.0(react-dom@19.1.0(react@19.1.0))(react@19.1.0) - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - ts-dedent: 2.2.0 - optionalDependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - '@storybook/builder-vite@9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))': dependencies: '@storybook/csf-plugin': 9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1))) @@ -6829,11 +6628,6 @@ snapshots: storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) ts-dedent: 2.2.0 - '@storybook/csf-plugin@8.6.14(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - unplugin: 1.16.1 - '@storybook/csf-plugin@9.1.12(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) @@ -6964,12 +6758,6 @@ snapshots: transitivePeerDependencies: - supports-color - '@storybook/react-dom-shim@8.6.14(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': - dependencies: - react: 19.1.0 - react-dom: 19.1.0(react@19.1.0) - storybook: 9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)) - '@storybook/react-dom-shim@9.1.12(react-dom@19.1.0(react@19.1.0))(react@19.1.0)(storybook@9.1.12(@testing-library/dom@10.4.1)(prettier@3.6.2)(vite@7.1.10(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1)))': dependencies: react: 19.1.0 @@ -7279,8 +7067,6 @@ snapshots: '@types/semver@7.7.1': {} - '@types/uuid@9.0.8': {} - '@types/webpack@5.28.5(esbuild@0.25.11)': dependencies: '@types/node': 20.19.21 @@ -9561,8 +9347,6 @@ snapshots: dependencies: semver: 7.7.3 - map-or-similar@1.5.0: {} - math-intrinsics@1.1.0: {} md5.js@1.3.5: @@ -9579,10 +9363,6 @@ snapshots: dependencies: fs-monkey: 1.1.0 - memoizerific@1.11.3: - dependencies: - map-or-similar: 1.5.0 - meow@12.1.1: {} merge-stream@2.0.0: {} @@ -9913,10 +9693,6 @@ snapshots: optionalDependencies: fsevents: 2.3.2 - polished@4.3.1: - dependencies: - '@babel/runtime': 7.28.4 - possible-typed-array-names@1.1.0: {} postcss-loader@8.2.0(postcss@8.5.6)(typescript@5.9.3)(webpack@5.102.1(esbuild@0.25.11)): @@ -10863,8 +10639,6 @@ snapshots: utila@0.4.0: {} - uuid@9.0.1: {} - vite-node@3.2.4(@types/node@20.19.21)(jiti@2.6.1)(lightningcss@1.30.1)(terser@5.44.0)(yaml@2.8.1): dependencies: cac: 6.7.14 diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 1cf7507..9ec184e 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,10 +1,9 @@ import type { Metadata } from 'next'; import localFont from 'next/font/local'; -import '@styles/globals.css'; +import '@/styles/globals.css'; const pretendard = localFont({ - src: [{ path: '@/assets/fonts/PretendardVariable.woff2', style: 'normal', weight: '100 900' }], - variable: '--font-family-sans', + src: [{ path: '../assets/fonts/PretendardVariable.woff2', style: 'normal', weight: '100 900' }], display: 'swap', fallback: ['system-ui', 'Arial', 'sans-serif'], }); @@ -14,13 +13,9 @@ export const metadata: Metadata = { description: '함께 모으는 우리만의 기록, 공유 가계부 MOA', }; -export default function RootLayout({ - children, -}: Readonly<{ - children: React.ReactNode; -}>) { +export default function RootLayout({ children }: { children: React.ReactNode }) { return ( - +
{children}
diff --git a/src/styles/globals.css b/src/styles/globals.css index 693bfb2..b544083 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -1,18 +1,18 @@ @import 'tailwindcss'; -:root { +@theme { --background: #ffffff; --foreground: #000000; --font-family-sans: 'Pretendard', sans-serif; --font-family-mono: 'Menlo', monospace; - --font-size-xs: 8px; - --font-size-sm: 10px; - --font-size-base: 12px; - --font-size-lg: 14px; - --font-size-xl: 16px; - --font-size-xxl: 24px; + --text-size-xs: 0.5rem; /* 8px */ + --text-size-sm: 0.625rem; /* 10px */ + --text-size-base: 0.75rem; /* 12px */ + --text-size-lg: 0.875rem; /* 14px */ + --text-size-xl: 1rem; /* 16px */ + --text-size-xxl: 1.5rem; /* 24px */ --font-weight-regular: 400; --font-weight-medium: 500; @@ -52,13 +52,38 @@ --layout-width: 440px; - --radius-sm: 4px; - --radius-md: 8px; + --rounded-sm: 4px; + --rounded-md: 8px; --color-background: var(--background); --color-foreground: var(--foreground); } +/* Custom text size utilities */ +.text-xs-custom { + font-size: var(--text-size-xs); +} + +.text-sm-custom { + font-size: var(--text-size-sm); +} + +.text-base-custom { + font-size: var(--text-size-base); +} + +.text-lg-custom { + font-size: var(--text-size-lg); +} + +.text-xl-custom { + font-size: var(--text-size-xl); +} + +.text-xxl-custom { + font-size: var(--text-size-xxl); +} + body { background: var(--background); color: var(--foreground); From 156e969ffa6babd4c97a105379880f30519d9d99 Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Mon, 3 Nov 2025 23:28:40 +0900 Subject: [PATCH 5/8] =?UTF-8?q?feat:=20=EB=B2=84=ED=8A=BC=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Button/constants.ts | 36 ++++++++ src/components/Button/index.stories.tsx | 105 ++++++++++++++++++++++++ src/components/Button/index.tsx | 58 +++++++++++++ src/styles/globals.css | 20 +++-- 4 files changed, 210 insertions(+), 9 deletions(-) create mode 100644 src/components/Button/constants.ts create mode 100644 src/components/Button/index.stories.tsx create mode 100644 src/components/Button/index.tsx diff --git a/src/components/Button/constants.ts b/src/components/Button/constants.ts new file mode 100644 index 0000000..46d45a3 --- /dev/null +++ b/src/components/Button/constants.ts @@ -0,0 +1,36 @@ +export const BUTTON_BASE_STYLES = + 'inline-flex items-center justify-center font-semibold transition-colors disabled:opacity-50 disabled:cursor-not-allowed'; + +export const BUTTON_BORDER_RADIUS = { + xs: 'rounded-[var(--rounded-sm)]', + sm: 'rounded-[var(--rounded-sm)]', + md: 'rounded-[var(--rounded-md)]', + lg: 'rounded-[var(--rounded-md)]', + xl: 'rounded-[var(--rounded-md)]', +} as const; + +export const BUTTON_VARIANTS = { + primary: + 'bg-[var(--color-green-normal)] text-white hover:bg-[var(--color-green-normal-hover)] active:bg-[var(--color-green-normal-active)]', + back: 'bg-[var(--color-green-dark)] text-white hover:bg-[var(--color-green-dark-hover)] active:bg-[var(--color-green-dark-active)]', + cancel: + 'bg-[var(--color-grey-light)] text-white hover:bg-[var(--color-grey-light-hover)] active:bg-[var(--color-grey-light-active)]', + outline: + 'bg-[var(--color-green-light)] !text-[var(--color-green-normal)] border border-[var(--color-green-normal)] hover:bg-[var(--color-green-light-hover)] active:bg-[var(--color-green-light-active)]', + text: 'text-[var(--color-green-darker)] hover:text-[var(--color-green-darker-hover)] active:text-[var(--color-green-darker-active)] font-medium', + underline: + 'text-[var(--color-grey-normal)] hover:text-[var(--color-grey-normal-hover)] active:text-[var(--color-grey-normal-active)] font-medium underline decoration-[var(--color-grey-normal)] underline-offset-[4px]', +} as const; + +export const BUTTON_TEXT_SIZES = { + text: 'text-xs-custom', + underline: 'text-sm-custom', +} as const; + +export const BUTTON_SIZES = { + xs: 'h-8 w-[100px] max-w-full text-base-custom', + sm: 'h-8 w-[200px] max-w-full text-base-custom', + md: 'h-10 w-[72px] max-w-full text-lg-custom', + lg: 'h-10 w-[228px] max-w-full text-lg-custom', + xl: 'h-10 w-[300px] max-w-full text-lg-custom', +} as const; diff --git a/src/components/Button/index.stories.tsx b/src/components/Button/index.stories.tsx new file mode 100644 index 0000000..191e00d --- /dev/null +++ b/src/components/Button/index.stories.tsx @@ -0,0 +1,105 @@ +import type { Meta, StoryObj } from '@storybook/nextjs'; +import { Button } from './index'; + +const meta = { + title: 'Components/Button', + component: Button, + parameters: { + layout: 'centered', + }, + tags: ['autodocs'], +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +export const Primary: Story = { + args: { + children: '입력 완료', + variant: 'primary', + }, +}; + +export const Back: Story = { + args: { + children: '이전', + variant: 'back', + }, +}; + +export const Cancel: Story = { + args: { + children: '취소', + variant: 'cancel', + }, +}; + +export const Outline: Story = { + args: { + children: '새 가계부 만들기', + variant: 'outline', + }, +}; + +export const Text: Story = { + args: { + children: '건너뛰기', + variant: 'text', + }, +}; + +export const Underline: Story = { + args: { + children: '건너뛰기', + variant: 'underline', + }, +}; + +export const SizeXS: Story = { + args: { + children: 'XS', + size: 'xs', + }, +}; + +export const SizeSM: Story = { + args: { + children: '다음', + size: 'sm', + }, +}; + +export const SizeMD: Story = { + args: { + children: '확인', + size: 'md', + }, +}; + +export const SizeLG: Story = { + args: { + children: '확인', + size: 'lg', + }, +}; + +export const SizeXL: Story = { + args: { + children: '입력 완료', + size: 'xl', + }, +}; + +export const Loading: Story = { + args: { + children: '입력 완료', + isLoading: true, + }, +}; + +export const Disabled: Story = { + args: { + children: '입력 완료', + disabled: true, + }, +}; diff --git a/src/components/Button/index.tsx b/src/components/Button/index.tsx new file mode 100644 index 0000000..6ed07d5 --- /dev/null +++ b/src/components/Button/index.tsx @@ -0,0 +1,58 @@ +'use client'; + +import { FC, ButtonHTMLAttributes, ReactNode } from 'react'; +import { + BUTTON_BASE_STYLES, + BUTTON_BORDER_RADIUS, + BUTTON_SIZES, + BUTTON_TEXT_SIZES, + BUTTON_VARIANTS, +} from './constants'; + +export type ButtonVariant = 'primary' | 'back' | 'cancel' | 'outline' | 'text' | 'underline'; +export type ButtonSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl'; + +export interface ButtonProps extends ButtonHTMLAttributes { + variant?: ButtonVariant; + size?: ButtonSize; + isLoading?: boolean; + children: ReactNode; +} + +const getSizeClasses = (variant: ButtonVariant, size: ButtonSize): string => { + const isTextVariant = variant === 'text' || variant === 'underline'; + return isTextVariant + ? BUTTON_TEXT_SIZES[variant] + : `${BUTTON_SIZES[size]} ${BUTTON_BORDER_RADIUS[size]}`; +}; + +const getButtonClasses = ( + variant: ButtonVariant, + size: ButtonSize, + additionalClasses: string +): string => { + const sizeClasses = getSizeClasses(variant, size); + return `${BUTTON_BASE_STYLES} ${BUTTON_VARIANTS[variant]} ${sizeClasses} ${additionalClasses}`; +}; + +export const Button: FC = ({ + variant = 'primary', + size = 'md', + isLoading = false, + children, + className = '', + disabled, + ...props +}) => { + return ( + + ); +}; + +export default Button; diff --git a/src/styles/globals.css b/src/styles/globals.css index b544083..cc86aca 100644 --- a/src/styles/globals.css +++ b/src/styles/globals.css @@ -35,16 +35,18 @@ --color-green-dark-active: #004c41; --color-green-darker: #003b33; - --color-grey-light: #f3f3f3; - --color-grey-light-hover: #ededed; - --color-grey-light-active: #d9d9d9; + --color-grey-light: #c8c8c8; + --color-grey-light-hover: #bdbdbd; + --color-grey-light-active: #afafaf; --color-grey-normal: #848484; - --color-grey-normal-hover: #777777; - --color-grey-normal-active: #6a6a6a; - --color-grey-dark: #636363; - --color-grey-dark-hover: #4f4f4f; - --color-grey-dark-active: #3b3b3b; - --color-grey-darker: #2e2e2e; + --color-grey-normal-hover: #707070; + --color-grey-normal-active: #606060; + --color-grey-dark: #2e2e2e; + --color-grey-dark-hover: #212121; + --color-grey-dark-active: #0f0f0f; + + --color-grey-lighter: #fdfdfd; + --color-grey-lighter-hover: #f2f2f2; --color-red: #ed4242; From 6fe5e112f8a7cfea7dc0a10d6b80b2f5f7d89e37 Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Mon, 3 Nov 2025 23:53:44 +0900 Subject: [PATCH 6/8] =?UTF-8?q?chore:=20Chromatic=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EC=B6=94=EA=B0=80=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/chromatic.yml | 59 +++++++++++++++++++++++++++++++++ package.json | 4 ++- pnpm-lock.yaml | 17 ++++++++++ 3 files changed, 79 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/chromatic.yml diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml new file mode 100644 index 0000000..f1e427c --- /dev/null +++ b/.github/workflows/chromatic.yml @@ -0,0 +1,59 @@ +name: 'Chromatic Deployment' + +run-name: Storybook deployment by ${{ github.actor }} + +on: + pull_request: + types: [opened, synchronize, reopened] + paths: + - '**/*.stories.tsx' + - '**/*.stories.ts' + - '**/*.stories.jsx' + - '**/*.stories.js' + - 'src/components/**' + +jobs: + chromatic: + if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-build') }} + name: Run Chromatic Deployment + runs-on: ubuntu-latest + outputs: + status: ${{ job.status }} + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - uses: pnpm/action-setup@v4 + name: Install pnpm + with: + version: 10 + run_install: false + + - name: Set up Node.js version + uses: actions/setup-node@v4 + with: + node-version: 20.x + cache: 'pnpm' + cache-dependency-path: '**/pnpm-lock.yaml' + + - name: Install dependencies + run: pnpm install + + - name: Run Chromatic + id: chromatic + uses: chromaui/action@latest + with: + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + buildScriptName: build-storybook + onlyChanged: true + + - name: Comment PR + uses: thollander/actions-comment-pull-request@v1 + if: ${{ github.event_name == 'pull_request' }} + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + message: '스토리북 URL 확인하기 - ${{ steps.chromatic.outputs.storybookUrl }}' diff --git a/package.json b/package.json index 2de735a..b58a1a0 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,8 @@ "prettier": "prettier --write .", "prepare": "husky", "storybook": "storybook dev -p 6006", - "build-storybook": "storybook build" + "build-storybook": "storybook build", + "chromatic": "npx chromatic --project-token=chpt_1c021dc7a04fb30" }, "lint-staged": { "*.{js,ts,tsx,jsx}": [ @@ -43,6 +44,7 @@ "@types/webpack": "^5.28.5", "@vitest/browser": "^3.2.4", "@vitest/coverage-v8": "^3.2.4", + "chromatic": "^13.3.3", "eslint": "^9", "eslint-config-next": "15.5.4", "eslint-config-prettier": "^10.1.8", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 78bcd76..9793af1 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -75,6 +75,9 @@ importers: '@vitest/coverage-v8': specifier: ^3.2.4 version: 3.2.4(@vitest/browser@3.2.4)(vitest@3.2.4) + chromatic: + specifier: ^13.3.3 + version: 13.3.3 eslint: specifier: ^9 version: 9.37.0(jiti@2.6.1) @@ -2416,6 +2419,18 @@ packages: '@chromatic-com/playwright': optional: true + chromatic@13.3.3: + resolution: {integrity: sha512-89w0hiFzIRqLbwGSkqSQzhbpuqaWpXYZuevSIF+570Wb+T/apeAkp3px8nMJcFw+zEdqw/i6soofkJtfirET1Q==} + hasBin: true + peerDependencies: + '@chromatic-com/cypress': ^0.*.* || ^1.0.0 + '@chromatic-com/playwright': ^0.*.* || ^1.0.0 + peerDependenciesMeta: + '@chromatic-com/cypress': + optional: true + '@chromatic-com/playwright': + optional: true + chrome-trace-event@1.0.4: resolution: {integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==} engines: {node: '>=6.0'} @@ -7777,6 +7792,8 @@ snapshots: chromatic@12.2.0: {} + chromatic@13.3.3: {} + chrome-trace-event@1.0.4: {} cipher-base@1.0.7: From ae944fc0b27f9528ebcd52cb58498414e9b12863 Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Mon, 3 Nov 2025 23:55:57 +0900 Subject: [PATCH 7/8] =?UTF-8?q?chore:=20Chromatic=20workflow=EC=9D=98=20pn?= =?UTF-8?q?pm=20version=20=EB=B3=80=EA=B2=BD=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/chromatic.yml | 1 - 1 file changed, 1 deletion(-) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index f1e427c..4a69602 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -29,7 +29,6 @@ jobs: - uses: pnpm/action-setup@v4 name: Install pnpm with: - version: 10 run_install: false - name: Set up Node.js version From 014832bd6c2e0f4fa6a13aab65889a28b4cce88d Mon Sep 17 00:00:00 2001 From: Lseojeong Date: Tue, 4 Nov 2025 00:02:07 +0900 Subject: [PATCH 8/8] =?UTF-8?q?chore:=20Chromatic=20command=20and=20workfl?= =?UTF-8?q?ow=20permissions=20=EC=84=A4=EC=A0=95=20(#9)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/chromatic.yml | 3 +++ package.json | 2 +- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/chromatic.yml b/.github/workflows/chromatic.yml index 4a69602..2773522 100644 --- a/.github/workflows/chromatic.yml +++ b/.github/workflows/chromatic.yml @@ -17,6 +17,9 @@ jobs: if: ${{ !contains(github.event.pull_request.labels.*.name, 'skip-build') }} name: Run Chromatic Deployment runs-on: ubuntu-latest + permissions: + contents: read + pull-requests: write outputs: status: ${{ job.status }} diff --git a/package.json b/package.json index b58a1a0..6dafc23 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "prepare": "husky", "storybook": "storybook dev -p 6006", "build-storybook": "storybook build", - "chromatic": "npx chromatic --project-token=chpt_1c021dc7a04fb30" + "chromatic": "npx chromatic" }, "lint-staged": { "*.{js,ts,tsx,jsx}": [