diff --git a/.eslintrc.js b/.eslintrc.js index 801a552a..f7b6ce6b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,5 +1,5 @@ module.exports = { - ignorePatterns: ['.next/', 'node_modules/', 'public', '@types', 'src/styled-system/'], + ignorePatterns: ['.next/', 'node_modules/', 'public', '@types', 'src/styled-system'], plugins: ['simple-import-sort', 'testing-library'], extends: [ 'next/core-web-vitals', diff --git a/.github/ISSUE_TEMPLATE/10mm-client-issue-template.md b/.github/ISSUE_TEMPLATE/10mm-client-issue-template.md new file mode 100644 index 00000000..a6e4366a --- /dev/null +++ b/.github/ISSUE_TEMPLATE/10mm-client-issue-template.md @@ -0,0 +1,14 @@ +--- +name: 10mm-client-issue-template +about: 10mm 프론트엔드 레포지터리의 이슈 템플릿입니다. +title: "[Task] " +labels: '' +assignees: '' + +--- + +## ⚠️ Issue +- 이슈 내용을 입력해주세요 +## ✏️ To Do List +- [ ] Todo 1 +- [ ] Todo 2 diff --git a/.github/workflows/deploy-chromatic.yml b/.github/workflows/deploy-chromatic.yml new file mode 100644 index 00000000..45a2dc21 --- /dev/null +++ b/.github/workflows/deploy-chromatic.yml @@ -0,0 +1,59 @@ +name: deploy-chromatic + +on: + pull_request: + types: [opened, closed] + branches: + - 'develop' + +jobs: + build: + name: deploy-chromatic + if: github.event_name == 'pull_request' && (github.event.action == 'closed' && github.event.pull_request.merged == true) || (github.event.action == 'opened') + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + # node 세팅 + - name: Init node + uses: actions/setup-node@v2.4.1 + with: + node-version: '18.17.1' + cache: 'yarn' + + - name: Set Yarn Version + id: set-version + run: | + yarn set version 4.0.2 + echo "YARN_VERSION=$(yarn -v)" >> $GITHUB_OUTPUT + + - name: Yarn Cache - PnP + uses: actions/cache@v2 + with: + path: | + .yarn/cache + .pnp.* + key: ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}-${{ steps.set-version.outputs.YARN_VERSION }} + restore-keys: | + ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}- + + - name: Install dependencies + run: yarn install + + - name: publish to chromatic + id: chromatic + uses: chromaui/action@v1 + with: + projectToken: ${{ secrets.CHROMATIC_PROJECT_TOKEN }} + token: ${{ secrets.GITHUB_TOKEN }} + + - name: comment PR + uses: thollander/actions-comment-pull-request@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + message: '🚀storybook: ${{ steps.chromatic.outputs.storybookUrl }}' diff --git a/.gitignore b/.gitignore index 516fcd43..b1997388 100644 --- a/.gitignore +++ b/.gitignore @@ -43,3 +43,6 @@ yarn-error.log* # typescript *.tsbuildinfo next-env.d.ts + +# chromatic +build-storybook.log \ No newline at end of file diff --git a/.pnp.cjs b/.pnp.cjs index 796dd409..710b410c 100755 --- a/.pnp.cjs +++ b/.pnp.cjs @@ -35,6 +35,7 @@ const RAW_RUNTIME_STATE = ["@storybook/blocks", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:7.5.3"],\ ["@storybook/nextjs", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:7.5.3"],\ ["@storybook/react", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:7.5.3"],\ + ["@storybook/test", "npm:7.6.3"],\ ["@storybook/testing-library", "npm:0.2.2"],\ ["@tanstack/react-query", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:4.36.1"],\ ["@tanstack/react-query-devtools", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.8.4"],\ @@ -47,6 +48,7 @@ const RAW_RUNTIME_STATE = ["@types/react-dom", "npm:18.2.17"],\ ["@typescript-eslint/eslint-plugin", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:6.12.0"],\ ["@typescript-eslint/parser", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:6.12.0"],\ + ["chromatic", "npm:10.0.0"],\ ["eslint", "npm:8.54.0"],\ ["eslint-config-next", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:14.0.3"],\ ["eslint-config-prettier", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:9.0.0"],\ @@ -65,7 +67,8 @@ const RAW_RUNTIME_STATE = ["react", "npm:18.2.0"],\ ["react-dom", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:18.2.0"],\ ["storybook", "npm:7.5.3"],\ - ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"]\ + ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"],\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "linkType": "SOFT"\ }]\ @@ -84,6 +87,7 @@ const RAW_RUNTIME_STATE = ["@storybook/blocks", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:7.5.3"],\ ["@storybook/nextjs", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:7.5.3"],\ ["@storybook/react", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:7.5.3"],\ + ["@storybook/test", "npm:7.6.3"],\ ["@storybook/testing-library", "npm:0.2.2"],\ ["@tanstack/react-query", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:4.36.1"],\ ["@tanstack/react-query-devtools", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.8.4"],\ @@ -96,6 +100,7 @@ const RAW_RUNTIME_STATE = ["@types/react-dom", "npm:18.2.17"],\ ["@typescript-eslint/eslint-plugin", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:6.12.0"],\ ["@typescript-eslint/parser", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:6.12.0"],\ + ["chromatic", "npm:10.0.0"],\ ["eslint", "npm:8.54.0"],\ ["eslint-config-next", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:14.0.3"],\ ["eslint-config-prettier", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:9.0.0"],\ @@ -114,7 +119,8 @@ const RAW_RUNTIME_STATE = ["react", "npm:18.2.0"],\ ["react-dom", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:18.2.0"],\ ["storybook", "npm:7.5.3"],\ - ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"]\ + ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"],\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "linkType": "SOFT"\ }]\ @@ -4774,7 +4780,7 @@ const RAW_RUNTIME_STATE = ["sockjs-client", null],\ ["source-map", "npm:0.7.4"],\ ["type-fest", null],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"],\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"],\ ["webpack-dev-server", null],\ ["webpack-hot-middleware", null],\ ["webpack-plugin-serve", null]\ @@ -6177,7 +6183,7 @@ const RAW_RUNTIME_STATE = ["browser-assert", "npm:1.2.1"],\ ["case-sensitive-paths-webpack-plugin", "npm:2.4.0"],\ ["constants-browserify", "npm:1.0.0"],\ - ["css-loader", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:6.8.1"],\ + ["css-loader", "virtual:0e245196ff8f59f52e5421b366a8cd41591b91509ddc787c37d606db5b8cb84a30e0e691de4afe815ab3016b76efe504a30d85450e445b8bf9409c0bfc6eca34#npm:6.8.1"],\ ["express", "npm:4.18.2"],\ ["fork-ts-checker-webpack-plugin", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:8.0.0"],\ ["fs-extra", "npm:11.1.1"],\ @@ -6185,7 +6191,7 @@ const RAW_RUNTIME_STATE = ["path-browserify", "npm:1.0.1"],\ ["process", "npm:0.11.10"],\ ["semver", "npm:7.5.4"],\ - ["style-loader", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:3.3.3"],\ + ["style-loader", "virtual:0e245196ff8f59f52e5421b366a8cd41591b91509ddc787c37d606db5b8cb84a30e0e691de4afe815ab3016b76efe504a30d85450e445b8bf9409c0bfc6eca34#npm:3.3.3"],\ ["swc-loader", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:0.2.3"],\ ["terser-webpack-plugin", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.3.9"],\ ["ts-dedent", "npm:2.2.0"],\ @@ -6193,7 +6199,7 @@ const RAW_RUNTIME_STATE = ["url", "npm:0.11.3"],\ ["util", "npm:0.12.5"],\ ["util-deprecate", "npm:1.0.2"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"],\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"],\ ["webpack-dev-middleware", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:6.1.1"],\ ["webpack-hot-middleware", "npm:2.25.4"],\ ["webpack-virtual-modules", "npm:0.5.0"]\ @@ -6218,6 +6224,19 @@ const RAW_RUNTIME_STATE = ["tiny-invariant", "npm:1.3.1"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.6.3", {\ + "packageLocation": "./.yarn/cache/@storybook-channels-npm-7.6.3-0c928c4655-378161310e.zip/node_modules/@storybook/channels/",\ + "packageDependencies": [\ + ["@storybook/channels", "npm:7.6.3"],\ + ["@storybook/client-logger", "npm:7.6.3"],\ + ["@storybook/core-events", "npm:7.6.3"],\ + ["@storybook/global", "npm:5.0.0"],\ + ["qs", "npm:6.11.2"],\ + ["telejson", "npm:7.2.0"],\ + ["tiny-invariant", "npm:1.3.1"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@storybook/cli", [\ @@ -6278,6 +6297,14 @@ const RAW_RUNTIME_STATE = ["@storybook/global", "npm:5.0.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.6.3", {\ + "packageLocation": "./.yarn/cache/@storybook-client-logger-npm-7.6.3-70cd285187-d42c003e05.zip/node_modules/@storybook/client-logger/",\ + "packageDependencies": [\ + ["@storybook/client-logger", "npm:7.6.3"],\ + ["@storybook/global", "npm:5.0.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@storybook/codemod", [\ @@ -6390,6 +6417,14 @@ const RAW_RUNTIME_STATE = ["ts-dedent", "npm:2.2.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.6.3", {\ + "packageLocation": "./.yarn/cache/@storybook-core-events-npm-7.6.3-163b3ab932-635f65d429.zip/node_modules/@storybook/core-events/",\ + "packageDependencies": [\ + ["@storybook/core-events", "npm:7.6.3"],\ + ["ts-dedent", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@storybook/core-server", [\ @@ -6548,6 +6583,20 @@ const RAW_RUNTIME_STATE = ["@storybook/preview-api", "npm:7.5.3"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.6.3", {\ + "packageLocation": "./.yarn/cache/@storybook-instrumenter-npm-7.6.3-7642447fe2-d8abd0e6b6.zip/node_modules/@storybook/instrumenter/",\ + "packageDependencies": [\ + ["@storybook/instrumenter", "npm:7.6.3"],\ + ["@storybook/channels", "npm:7.6.3"],\ + ["@storybook/client-logger", "npm:7.6.3"],\ + ["@storybook/core-events", "npm:7.6.3"],\ + ["@storybook/global", "npm:5.0.0"],\ + ["@storybook/preview-api", "npm:7.6.3"],\ + ["@vitest/utils", "npm:0.34.7"],\ + ["util", "npm:0.12.5"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@storybook/manager", [\ @@ -6672,7 +6721,7 @@ const RAW_RUNTIME_STATE = ["tsconfig-paths", "npm:4.2.0"],\ ["tsconfig-paths-webpack-plugin", "npm:4.1.0"],\ ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"],\ - ["webpack", null]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@next/font",\ @@ -6745,7 +6794,7 @@ const RAW_RUNTIME_STATE = ["react-refresh", "npm:0.11.0"],\ ["semver", "npm:7.5.4"],\ ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@babel/core",\ @@ -6790,6 +6839,27 @@ const RAW_RUNTIME_STATE = ["util-deprecate", "npm:1.0.2"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.6.3", {\ + "packageLocation": "./.yarn/cache/@storybook-preview-api-npm-7.6.3-3341a261c0-a661168c5d.zip/node_modules/@storybook/preview-api/",\ + "packageDependencies": [\ + ["@storybook/preview-api", "npm:7.6.3"],\ + ["@storybook/channels", "npm:7.6.3"],\ + ["@storybook/client-logger", "npm:7.6.3"],\ + ["@storybook/core-events", "npm:7.6.3"],\ + ["@storybook/csf", "npm:0.1.2"],\ + ["@storybook/global", "npm:5.0.0"],\ + ["@storybook/types", "npm:7.6.3"],\ + ["@types/qs", "npm:6.9.10"],\ + ["dequal", "npm:2.0.3"],\ + ["lodash", "npm:4.17.21"],\ + ["memoizerific", "npm:1.11.3"],\ + ["qs", "npm:6.11.2"],\ + ["synchronous-promise", "npm:2.0.17"],\ + ["ts-dedent", "npm:2.2.0"],\ + ["util-deprecate", "npm:1.0.2"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@storybook/react", [\ @@ -6865,7 +6935,7 @@ const RAW_RUNTIME_STATE = ["react-docgen-typescript", "virtual:bbc3d015597fad2d98edae216e799c6aee48913b5948aca0f60ca767f1d3079cc779f30eeaa53c9bd9eb5925a86db335b68e87480385b8dbb4692e5b164b02db#npm:2.2.2"],\ ["tslib", "npm:2.6.2"],\ ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/typescript",\ @@ -6948,6 +7018,27 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@storybook/test", [\ + ["npm:7.6.3", {\ + "packageLocation": "./.yarn/cache/@storybook-test-npm-7.6.3-7a1ce4b9b0-4d15cdf015.zip/node_modules/@storybook/test/",\ + "packageDependencies": [\ + ["@storybook/test", "npm:7.6.3"],\ + ["@storybook/client-logger", "npm:7.6.3"],\ + ["@storybook/core-events", "npm:7.6.3"],\ + ["@storybook/instrumenter", "npm:7.6.3"],\ + ["@storybook/preview-api", "npm:7.6.3"],\ + ["@testing-library/dom", "npm:9.3.3"],\ + ["@testing-library/jest-dom", "virtual:7a1ce4b9b0eb10338eaaadc086b38bc0761f8c9a25ab0a479163c72b25f5c907ad28be796901d30017a881cedb62a4a4ce7a1250fe5b77104467077f021e6e40#npm:6.1.5"],\ + ["@testing-library/user-event", "virtual:7a1ce4b9b0eb10338eaaadc086b38bc0761f8c9a25ab0a479163c72b25f5c907ad28be796901d30017a881cedb62a4a4ce7a1250fe5b77104467077f021e6e40#npm:14.3.0"],\ + ["@types/chai", "npm:4.3.11"],\ + ["@vitest/expect", "npm:0.34.7"],\ + ["@vitest/spy", "npm:0.34.7"],\ + ["chai", "npm:4.3.10"],\ + ["util", "npm:0.12.5"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@storybook/testing-library", [\ ["npm:0.2.2", {\ "packageLocation": "./.yarn/cache/@storybook-testing-library-npm-0.2.2-4b0286ed86-85a8c39b43.zip/node_modules/@storybook/testing-library/",\ @@ -7001,6 +7092,17 @@ const RAW_RUNTIME_STATE = ["file-system-cache", "npm:2.3.0"]\ ],\ "linkType": "HARD"\ + }],\ + ["npm:7.6.3", {\ + "packageLocation": "./.yarn/cache/@storybook-types-npm-7.6.3-bd2bab50f2-0c1d2caed9.zip/node_modules/@storybook/types/",\ + "packageDependencies": [\ + ["@storybook/types", "npm:7.6.3"],\ + ["@storybook/channels", "npm:7.6.3"],\ + ["@types/babel__core", "npm:7.20.5"],\ + ["@types/express", "npm:4.17.21"],\ + ["file-system-cache", "npm:2.3.0"]\ + ],\ + "linkType": "HARD"\ }]\ ]],\ ["@swc/core", [\ @@ -7251,6 +7353,42 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ + ["npm:6.1.5", {\ + "packageLocation": "./.yarn/cache/@testing-library-jest-dom-npm-6.1.5-3fbc61949e-3bc45dc9cb.zip/node_modules/@testing-library/jest-dom/",\ + "packageDependencies": [\ + ["@testing-library/jest-dom", "npm:6.1.5"]\ + ],\ + "linkType": "SOFT"\ + }],\ + ["virtual:7a1ce4b9b0eb10338eaaadc086b38bc0761f8c9a25ab0a479163c72b25f5c907ad28be796901d30017a881cedb62a4a4ce7a1250fe5b77104467077f021e6e40#npm:6.1.5", {\ + "packageLocation": "./.yarn/__virtual__/@testing-library-jest-dom-virtual-9989c3539e/0/cache/@testing-library-jest-dom-npm-6.1.5-3fbc61949e-3bc45dc9cb.zip/node_modules/@testing-library/jest-dom/",\ + "packageDependencies": [\ + ["@testing-library/jest-dom", "virtual:7a1ce4b9b0eb10338eaaadc086b38bc0761f8c9a25ab0a479163c72b25f5c907ad28be796901d30017a881cedb62a4a4ce7a1250fe5b77104467077f021e6e40#npm:6.1.5"],\ + ["@adobe/css-tools", "npm:4.3.1"],\ + ["@babel/runtime", "npm:7.23.4"],\ + ["@jest/globals", null],\ + ["@types/jest", null],\ + ["@types/jest__globals", null],\ + ["@types/vitest", null],\ + ["aria-query", "npm:5.3.0"],\ + ["chalk", "npm:3.0.0"],\ + ["css.escape", "npm:1.5.1"],\ + ["dom-accessibility-api", "npm:0.5.16"],\ + ["jest", null],\ + ["lodash", "npm:4.17.21"],\ + ["redent", "npm:3.0.0"],\ + ["vitest", null]\ + ],\ + "packagePeers": [\ + "@jest/globals",\ + "@types/jest",\ + "@types/jest__globals",\ + "@types/vitest",\ + "jest",\ + "vitest"\ + ],\ + "linkType": "HARD"\ + }],\ ["virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:6.1.4", {\ "packageLocation": "./.yarn/__virtual__/@testing-library-jest-dom-virtual-c8a5563597/0/cache/@testing-library-jest-dom-npm-6.1.4-757806e7e1-e5a0cdb96e.zip/node_modules/@testing-library/jest-dom/",\ "packageDependencies": [\ @@ -7310,6 +7448,13 @@ const RAW_RUNTIME_STATE = }]\ ]],\ ["@testing-library/user-event", [\ + ["npm:14.3.0", {\ + "packageLocation": "./.yarn/cache/@testing-library-user-event-npm-14.3.0-570c508fee-07aac130b2.zip/node_modules/@testing-library/user-event/",\ + "packageDependencies": [\ + ["@testing-library/user-event", "npm:14.3.0"]\ + ],\ + "linkType": "SOFT"\ + }],\ ["npm:14.5.1", {\ "packageLocation": "./.yarn/cache/@testing-library-user-event-npm-14.5.1-daca21fbcb-696e1328c2.zip/node_modules/@testing-library/user-event/",\ "packageDependencies": [\ @@ -7330,6 +7475,19 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ + ["virtual:7a1ce4b9b0eb10338eaaadc086b38bc0761f8c9a25ab0a479163c72b25f5c907ad28be796901d30017a881cedb62a4a4ce7a1250fe5b77104467077f021e6e40#npm:14.3.0", {\ + "packageLocation": "./.yarn/__virtual__/@testing-library-user-event-virtual-edaaf4ea29/0/cache/@testing-library-user-event-npm-14.3.0-570c508fee-07aac130b2.zip/node_modules/@testing-library/user-event/",\ + "packageDependencies": [\ + ["@testing-library/user-event", "virtual:7a1ce4b9b0eb10338eaaadc086b38bc0761f8c9a25ab0a479163c72b25f5c907ad28be796901d30017a881cedb62a4a4ce7a1250fe5b77104467077f021e6e40#npm:14.3.0"],\ + ["@testing-library/dom", "npm:9.3.3"],\ + ["@types/testing-library__dom", null]\ + ],\ + "packagePeers": [\ + "@testing-library/dom",\ + "@types/testing-library__dom"\ + ],\ + "linkType": "HARD"\ + }],\ ["virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:14.5.1", {\ "packageLocation": "./.yarn/__virtual__/@testing-library-user-event-virtual-c15867d72d/0/cache/@testing-library-user-event-npm-14.5.1-daca21fbcb-696e1328c2.zip/node_modules/@testing-library/user-event/",\ "packageDependencies": [\ @@ -7431,6 +7589,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@types/chai", [\ + ["npm:4.3.11", {\ + "packageLocation": "./.yarn/cache/@types-chai-npm-4.3.11-db685c5f0e-c83a003596.zip/node_modules/@types/chai/",\ + "packageDependencies": [\ + ["@types/chai", "npm:4.3.11"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@types/connect", [\ ["npm:3.4.38", {\ "packageLocation": "./.yarn/cache/@types-connect-npm-3.4.38-a8a4c38337-7eb1bc5342.zip/node_modules/@types/connect/",\ @@ -8300,6 +8467,40 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["@vitest/expect", [\ + ["npm:0.34.7", {\ + "packageLocation": "./.yarn/cache/@vitest-expect-npm-0.34.7-c2cb30daa3-0d2fbacdd0.zip/node_modules/@vitest/expect/",\ + "packageDependencies": [\ + ["@vitest/expect", "npm:0.34.7"],\ + ["@vitest/spy", "npm:0.34.7"],\ + ["@vitest/utils", "npm:0.34.7"],\ + ["chai", "npm:4.3.10"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@vitest/spy", [\ + ["npm:0.34.7", {\ + "packageLocation": "./.yarn/cache/@vitest-spy-npm-0.34.7-40eb7868de-67d82626e1.zip/node_modules/@vitest/spy/",\ + "packageDependencies": [\ + ["@vitest/spy", "npm:0.34.7"],\ + ["tinyspy", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ + ["@vitest/utils", [\ + ["npm:0.34.7", {\ + "packageLocation": "./.yarn/cache/@vitest-utils-npm-0.34.7-c39761c6a7-720b43f8fe.zip/node_modules/@vitest/utils/",\ + "packageDependencies": [\ + ["@vitest/utils", "npm:0.34.7"],\ + ["diff-sequences", "npm:29.6.3"],\ + ["loupe", "npm:2.3.7"],\ + ["pretty-format", "npm:29.7.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["@vscode/emmet-helper", [\ ["npm:2.9.2", {\ "packageLocation": "./.yarn/cache/@vscode-emmet-helper-npm-2.9.2-5ce37ff6a3-e9aa8a7072.zip/node_modules/@vscode/emmet-helper/",\ @@ -8708,10 +8909,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:54d9e8425688be8452738007e6ccf0fd1dc1d1053a86c28a61816822053c2eeec2de134337be589bb561f030f3d9361e17eddcea4fb235fbacb597c05bf49f34#npm:1.9.0", {\ - "packageLocation": "./.yarn/__virtual__/acorn-import-assertions-virtual-cca7862396/0/cache/acorn-import-assertions-npm-1.9.0-22f56507c7-af8dd58f6b.zip/node_modules/acorn-import-assertions/",\ + ["virtual:74f5519e0e67ca1c84b709fbbb617cc023fad593cd4c2e7fe1a184348afa29c01b062830699a40a127ea9b4abfc2c431e48776435ade2ea3afb9642833af1fd0#npm:1.9.0", {\ + "packageLocation": "./.yarn/__virtual__/acorn-import-assertions-virtual-ccef6c0b0c/0/cache/acorn-import-assertions-npm-1.9.0-22f56507c7-af8dd58f6b.zip/node_modules/acorn-import-assertions/",\ "packageDependencies": [\ - ["acorn-import-assertions", "virtual:54d9e8425688be8452738007e6ccf0fd1dc1d1053a86c28a61816822053c2eeec2de134337be589bb561f030f3d9361e17eddcea4fb235fbacb597c05bf49f34#npm:1.9.0"],\ + ["acorn-import-assertions", "virtual:74f5519e0e67ca1c84b709fbbb617cc023fad593cd4c2e7fe1a184348afa29c01b062830699a40a127ea9b4abfc2c431e48776435ade2ea3afb9642833af1fd0#npm:1.9.0"],\ ["@types/acorn", null],\ ["acorn", "npm:8.11.2"]\ ],\ @@ -9235,6 +9436,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["assertion-error", [\ + ["npm:1.1.0", {\ + "packageLocation": "./.yarn/cache/assertion-error-npm-1.1.0-66b893015e-fd9429d3a3.zip/node_modules/assertion-error/",\ + "packageDependencies": [\ + ["assertion-error", "npm:1.1.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["ast-types", [\ ["npm:0.14.2", {\ "packageLocation": "./.yarn/cache/ast-types-npm-0.14.2-43c4ac4b0d-7c74b3090c.zip/node_modules/ast-types/",\ @@ -9509,7 +9719,7 @@ const RAW_RUNTIME_STATE = ["@types/webpack", null],\ ["find-cache-dir", "npm:4.0.0"],\ ["schema-utils", "npm:4.2.0"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@babel/core",\ @@ -10290,6 +10500,22 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["chai", [\ + ["npm:4.3.10", {\ + "packageLocation": "./.yarn/cache/chai-npm-4.3.10-96f52a35f0-9e545fd60f.zip/node_modules/chai/",\ + "packageDependencies": [\ + ["chai", "npm:4.3.10"],\ + ["assertion-error", "npm:1.1.0"],\ + ["check-error", "npm:1.0.3"],\ + ["deep-eql", "npm:4.1.3"],\ + ["get-func-name", "npm:2.0.2"],\ + ["loupe", "npm:2.3.7"],\ + ["pathval", "npm:1.1.1"],\ + ["type-detect", "npm:4.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["chalk", [\ ["npm:2.4.2", {\ "packageLocation": "./.yarn/cache/chalk-npm-2.4.2-3ea16dd91e-3d1d103433.zip/node_modules/chalk/",\ @@ -10363,6 +10589,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["check-error", [\ + ["npm:1.0.3", {\ + "packageLocation": "./.yarn/cache/check-error-npm-1.0.3-137994eabc-e2131025cf.zip/node_modules/check-error/",\ + "packageDependencies": [\ + ["check-error", "npm:1.0.3"],\ + ["get-func-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["chokidar", [\ ["npm:3.5.3", {\ "packageLocation": "./.yarn/cache/chokidar-npm-3.5.3-c5f9b0a56a-863e3ff78e.zip/node_modules/chokidar/",\ @@ -10396,6 +10632,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["chromatic", [\ + ["npm:10.0.0", {\ + "packageLocation": "./.yarn/cache/chromatic-npm-10.0.0-fa2b9e86ca-0c616d6b68.zip/node_modules/chromatic/",\ + "packageDependencies": [\ + ["chromatic", "npm:10.0.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["chrome-trace-event", [\ ["npm:1.0.3", {\ "packageLocation": "./.yarn/cache/chrome-trace-event-npm-1.0.3-e0ae3dcd60-b5fbdae5bf.zip/node_modules/chrome-trace-event/",\ @@ -11014,36 +11259,15 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["css-loader", "virtual:0e245196ff8f59f52e5421b366a8cd41591b91509ddc787c37d606db5b8cb84a30e0e691de4afe815ab3016b76efe504a30d85450e445b8bf9409c0bfc6eca34#npm:6.8.1"],\ ["@types/webpack", null],\ - ["icss-utils", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:5.1.0"],\ + ["icss-utils", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:5.1.0"],\ ["postcss", "npm:8.4.31"],\ - ["postcss-modules-extract-imports", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0"],\ - ["postcss-modules-local-by-default", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.3"],\ - ["postcss-modules-scope", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0"],\ - ["postcss-modules-values", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.0"],\ + ["postcss-modules-extract-imports", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:3.0.0"],\ + ["postcss-modules-local-by-default", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:4.0.3"],\ + ["postcss-modules-scope", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:3.0.0"],\ + ["postcss-modules-values", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:4.0.0"],\ ["postcss-value-parser", "npm:4.2.0"],\ ["semver", "npm:7.5.4"],\ - ["webpack", null]\ - ],\ - "packagePeers": [\ - "@types/webpack",\ - "webpack"\ - ],\ - "linkType": "HARD"\ - }],\ - ["virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:6.8.1", {\ - "packageLocation": "./.yarn/__virtual__/css-loader-virtual-88f637f51a/0/cache/css-loader-npm-6.8.1-30d84b4cf1-f20bb2a181.zip/node_modules/css-loader/",\ - "packageDependencies": [\ - ["css-loader", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:6.8.1"],\ - ["@types/webpack", null],\ - ["icss-utils", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:5.1.0"],\ - ["postcss", "npm:8.4.31"],\ - ["postcss-modules-extract-imports", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0"],\ - ["postcss-modules-local-by-default", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.3"],\ - ["postcss-modules-scope", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0"],\ - ["postcss-modules-values", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.0"],\ - ["postcss-value-parser", "npm:4.2.0"],\ - ["semver", "npm:7.5.4"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/webpack",\ @@ -11284,6 +11508,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["deep-eql", [\ + ["npm:4.1.3", {\ + "packageLocation": "./.yarn/cache/deep-eql-npm-4.1.3-020a64f862-12ce93ae63.zip/node_modules/deep-eql/",\ + "packageDependencies": [\ + ["deep-eql", "npm:4.1.3"],\ + ["type-detect", "npm:4.0.8"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["deep-equal", [\ ["npm:2.2.3", {\ "packageLocation": "./.yarn/cache/deep-equal-npm-2.2.3-86cbe803a7-1ce49d0b71.zip/node_modules/deep-equal/",\ @@ -13349,7 +13583,7 @@ const RAW_RUNTIME_STATE = ["semver", "npm:7.5.4"],\ ["tapable", "npm:2.2.1"],\ ["typescript", "patch:typescript@npm%3A5.3.2#optional!builtin::version=5.3.2&hash=e012d7"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/typescript",\ @@ -13553,6 +13787,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["get-func-name", [\ + ["npm:2.0.2", {\ + "packageLocation": "./.yarn/cache/get-func-name-npm-2.0.2-409dbe3703-3f62f4c236.zip/node_modules/get-func-name/",\ + "packageDependencies": [\ + ["get-func-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["get-intrinsic", [\ ["npm:1.2.2", {\ "packageLocation": "./.yarn/cache/get-intrinsic-npm-1.2.2-3f446d8847-aa96db4f80.zip/node_modules/get-intrinsic/",\ @@ -14176,7 +14419,7 @@ const RAW_RUNTIME_STATE = ["lodash", "npm:4.17.21"],\ ["pretty-error", "npm:4.0.0"],\ ["tapable", "npm:2.2.1"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/webpack",\ @@ -14345,10 +14588,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:5.1.0", {\ - "packageLocation": "./.yarn/__virtual__/icss-utils-virtual-c2700d84ee/0/cache/icss-utils-npm-5.1.0-8d8c062d07-5c324d2835.zip/node_modules/icss-utils/",\ + ["virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:5.1.0", {\ + "packageLocation": "./.yarn/__virtual__/icss-utils-virtual-cf7f87d9b7/0/cache/icss-utils-npm-5.1.0-8d8c062d07-5c324d2835.zip/node_modules/icss-utils/",\ "packageDependencies": [\ - ["icss-utils", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:5.1.0"],\ + ["icss-utils", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:5.1.0"],\ ["@types/postcss", null],\ ["postcss", "npm:8.4.31"]\ ],\ @@ -16324,6 +16567,16 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["loupe", [\ + ["npm:2.3.7", {\ + "packageLocation": "./.yarn/cache/loupe-npm-2.3.7-f294c2ef33-635c8f0914.zip/node_modules/loupe/",\ + "packageDependencies": [\ + ["loupe", "npm:2.3.7"],\ + ["get-func-name", "npm:2.0.2"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["lower-case", [\ ["npm:2.0.2", {\ "packageLocation": "./.yarn/cache/lower-case-npm-2.0.2-151055f1c2-83a0a5f159.zip/node_modules/lower-case/",\ @@ -17696,7 +17949,7 @@ const RAW_RUNTIME_STATE = ["url", "npm:0.11.3"],\ ["util", "npm:0.12.5"],\ ["vm-browserify", "npm:1.1.2"],\ - ["webpack", null]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/webpack",\ @@ -18361,6 +18614,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["pathval", [\ + ["npm:1.1.1", {\ + "packageLocation": "./.yarn/cache/pathval-npm-1.1.1-ce0311d7e0-b50a475106.zip/node_modules/pathval/",\ + "packageDependencies": [\ + ["pathval", "npm:1.1.1"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["pbkdf2", [\ ["npm:3.1.2", {\ "packageLocation": "./.yarn/cache/pbkdf2-npm-3.1.2-d67bbb584f-40bdf30df1.zip/node_modules/pbkdf2/",\ @@ -18609,7 +18871,7 @@ const RAW_RUNTIME_STATE = ["jiti", "npm:1.21.0"],\ ["postcss", "npm:8.4.31"],\ ["semver", "npm:7.5.4"],\ - ["webpack", null]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/postcss",\ @@ -18677,10 +18939,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-extract-imports-virtual-f800638bc1/0/cache/postcss-modules-extract-imports-npm-3.0.0-619311282d-8d68bb735c.zip/node_modules/postcss-modules-extract-imports/",\ + ["virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:3.0.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-extract-imports-virtual-0cbbc0490e/0/cache/postcss-modules-extract-imports-npm-3.0.0-619311282d-8d68bb735c.zip/node_modules/postcss-modules-extract-imports/",\ "packageDependencies": [\ - ["postcss-modules-extract-imports", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0"],\ + ["postcss-modules-extract-imports", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:3.0.0"],\ ["@types/postcss", null],\ ["postcss", "npm:8.4.31"]\ ],\ @@ -18699,12 +18961,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.3", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-local-by-default-virtual-476fb006b9/0/cache/postcss-modules-local-by-default-npm-4.0.3-f6674d7148-4f671d77cb.zip/node_modules/postcss-modules-local-by-default/",\ + ["virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:4.0.3", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-local-by-default-virtual-d3cae8817a/0/cache/postcss-modules-local-by-default-npm-4.0.3-f6674d7148-4f671d77cb.zip/node_modules/postcss-modules-local-by-default/",\ "packageDependencies": [\ - ["postcss-modules-local-by-default", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.3"],\ + ["postcss-modules-local-by-default", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:4.0.3"],\ ["@types/postcss", null],\ - ["icss-utils", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:5.1.0"],\ + ["icss-utils", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:5.1.0"],\ ["postcss", "npm:8.4.31"],\ ["postcss-selector-parser", "npm:6.0.13"],\ ["postcss-value-parser", "npm:4.2.0"]\ @@ -18724,10 +18986,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-scope-virtual-a337934b01/0/cache/postcss-modules-scope-npm-3.0.0-0678040a26-cc36b8111c.zip/node_modules/postcss-modules-scope/",\ + ["virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:3.0.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-scope-virtual-6c40988a04/0/cache/postcss-modules-scope-npm-3.0.0-0678040a26-cc36b8111c.zip/node_modules/postcss-modules-scope/",\ "packageDependencies": [\ - ["postcss-modules-scope", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:3.0.0"],\ + ["postcss-modules-scope", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:3.0.0"],\ ["@types/postcss", null],\ ["postcss", "npm:8.4.31"],\ ["postcss-selector-parser", "npm:6.0.13"]\ @@ -18747,12 +19009,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.0", {\ - "packageLocation": "./.yarn/__virtual__/postcss-modules-values-virtual-7c9f440126/0/cache/postcss-modules-values-npm-4.0.0-63d7ec543a-18021961a4.zip/node_modules/postcss-modules-values/",\ + ["virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:4.0.0", {\ + "packageLocation": "./.yarn/__virtual__/postcss-modules-values-virtual-5fc1cafbf5/0/cache/postcss-modules-values-npm-4.0.0-63d7ec543a-18021961a4.zip/node_modules/postcss-modules-values/",\ "packageDependencies": [\ - ["postcss-modules-values", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:4.0.0"],\ + ["postcss-modules-values", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:4.0.0"],\ ["@types/postcss", null],\ - ["icss-utils", "virtual:88f637f51a56433fbfa830461cff43b9bf3dd030f18061be1db94d9b73a67fdceb8252c7fa0b32b59d9923783de88c3b4cd6781014ca71e7d67c1401b0c2e04b#npm:5.1.0"],\ + ["icss-utils", "virtual:8770c56b6925bdadd9b844aca01718760a52ae545aa46a4775dea9a260beda216aff3b194ba92cfa81894b9db5f78382eca431662034864aca13032037a3616f#npm:5.1.0"],\ ["postcss", "npm:8.4.31"]\ ],\ "packagePeers": [\ @@ -20281,7 +20543,7 @@ const RAW_RUNTIME_STATE = ["node-sass", null],\ ["sass", null],\ ["sass-embedded", null],\ - ["webpack", null]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/fibers",\ @@ -21070,20 +21332,7 @@ const RAW_RUNTIME_STATE = "packageDependencies": [\ ["style-loader", "virtual:0e245196ff8f59f52e5421b366a8cd41591b91509ddc787c37d606db5b8cb84a30e0e691de4afe815ab3016b76efe504a30d85450e445b8bf9409c0bfc6eca34#npm:3.3.3"],\ ["@types/webpack", null],\ - ["webpack", null]\ - ],\ - "packagePeers": [\ - "@types/webpack",\ - "webpack"\ - ],\ - "linkType": "HARD"\ - }],\ - ["virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:3.3.3", {\ - "packageLocation": "./.yarn/__virtual__/style-loader-virtual-43569c41d6/0/cache/style-loader-npm-3.3.3-2e8bbeeac4-6c13d5075b.zip/node_modules/style-loader/",\ - "packageDependencies": [\ - ["style-loader", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:3.3.3"],\ - ["@types/webpack", null],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/webpack",\ @@ -21205,7 +21454,7 @@ const RAW_RUNTIME_STATE = ["@swc/core", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:1.3.99"],\ ["@types/swc__core", null],\ ["@types/webpack", null],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@swc/core",\ @@ -21360,12 +21609,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:54d9e8425688be8452738007e6ccf0fd1dc1d1053a86c28a61816822053c2eeec2de134337be589bb561f030f3d9361e17eddcea4fb235fbacb597c05bf49f34#npm:5.3.9", {\ - "packageLocation": "./.yarn/__virtual__/terser-webpack-plugin-virtual-f3b495b30a/0/cache/terser-webpack-plugin-npm-5.3.9-7ba1eb45f4-339737a407.zip/node_modules/terser-webpack-plugin/",\ + ["virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.3.9", {\ + "packageLocation": "./.yarn/__virtual__/terser-webpack-plugin-virtual-bd6ccee989/0/cache/terser-webpack-plugin-npm-5.3.9-7ba1eb45f4-339737a407.zip/node_modules/terser-webpack-plugin/",\ "packageDependencies": [\ - ["terser-webpack-plugin", "virtual:54d9e8425688be8452738007e6ccf0fd1dc1d1053a86c28a61816822053c2eeec2de134337be589bb561f030f3d9361e17eddcea4fb235fbacb597c05bf49f34#npm:5.3.9"],\ + ["terser-webpack-plugin", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.3.9"],\ ["@jridgewell/trace-mapping", "npm:0.3.20"],\ - ["@swc/core", null],\ + ["@swc/core", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:1.3.99"],\ ["@types/esbuild", null],\ ["@types/swc__core", null],\ ["@types/uglify-js", null],\ @@ -21376,7 +21625,7 @@ const RAW_RUNTIME_STATE = ["serialize-javascript", "npm:6.0.1"],\ ["terser", "npm:5.24.0"],\ ["uglify-js", null],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@swc/core",\ @@ -21390,12 +21639,12 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "HARD"\ }],\ - ["virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.3.9", {\ - "packageLocation": "./.yarn/__virtual__/terser-webpack-plugin-virtual-bd6ccee989/0/cache/terser-webpack-plugin-npm-5.3.9-7ba1eb45f4-339737a407.zip/node_modules/terser-webpack-plugin/",\ + ["virtual:74f5519e0e67ca1c84b709fbbb617cc023fad593cd4c2e7fe1a184348afa29c01b062830699a40a127ea9b4abfc2c431e48776435ade2ea3afb9642833af1fd0#npm:5.3.9", {\ + "packageLocation": "./.yarn/__virtual__/terser-webpack-plugin-virtual-50996a9d38/0/cache/terser-webpack-plugin-npm-5.3.9-7ba1eb45f4-339737a407.zip/node_modules/terser-webpack-plugin/",\ "packageDependencies": [\ - ["terser-webpack-plugin", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.3.9"],\ + ["terser-webpack-plugin", "virtual:74f5519e0e67ca1c84b709fbbb617cc023fad593cd4c2e7fe1a184348afa29c01b062830699a40a127ea9b4abfc2c431e48776435ade2ea3afb9642833af1fd0#npm:5.3.9"],\ ["@jridgewell/trace-mapping", "npm:0.3.20"],\ - ["@swc/core", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:1.3.99"],\ + ["@swc/core", null],\ ["@types/esbuild", null],\ ["@types/swc__core", null],\ ["@types/uglify-js", null],\ @@ -21406,7 +21655,7 @@ const RAW_RUNTIME_STATE = ["serialize-javascript", "npm:6.0.1"],\ ["terser", "npm:5.24.0"],\ ["uglify-js", null],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@swc/core",\ @@ -21472,6 +21721,15 @@ const RAW_RUNTIME_STATE = "linkType": "HARD"\ }]\ ]],\ + ["tinyspy", [\ + ["npm:2.2.0", {\ + "packageLocation": "./.yarn/cache/tinyspy-npm-2.2.0-226debb582-bcc5a08c2d.zip/node_modules/tinyspy/",\ + "packageDependencies": [\ + ["tinyspy", "npm:2.2.0"]\ + ],\ + "linkType": "HARD"\ + }]\ + ]],\ ["titleize", [\ ["npm:3.0.0", {\ "packageLocation": "./.yarn/cache/titleize-npm-3.0.0-7deac2f3a3-71fbbeabbf.zip/node_modules/titleize/",\ @@ -22887,10 +23145,10 @@ const RAW_RUNTIME_STATE = ],\ "linkType": "SOFT"\ }],\ - ["virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0", {\ - "packageLocation": "./.yarn/__virtual__/webpack-virtual-54d9e84256/0/cache/webpack-npm-5.89.0-3800e9efd0-ee19b07027.zip/node_modules/webpack/",\ + ["virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0", {\ + "packageLocation": "./.yarn/__virtual__/webpack-virtual-74f5519e0e/0/cache/webpack-npm-5.89.0-3800e9efd0-ee19b07027.zip/node_modules/webpack/",\ "packageDependencies": [\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"],\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"],\ ["@types/eslint-scope", "npm:3.7.7"],\ ["@types/estree", "npm:1.0.5"],\ ["@types/webpack-cli", null],\ @@ -22898,7 +23156,7 @@ const RAW_RUNTIME_STATE = ["@webassemblyjs/wasm-edit", "npm:1.11.6"],\ ["@webassemblyjs/wasm-parser", "npm:1.11.6"],\ ["acorn", "npm:8.11.2"],\ - ["acorn-import-assertions", "virtual:54d9e8425688be8452738007e6ccf0fd1dc1d1053a86c28a61816822053c2eeec2de134337be589bb561f030f3d9361e17eddcea4fb235fbacb597c05bf49f34#npm:1.9.0"],\ + ["acorn-import-assertions", "virtual:74f5519e0e67ca1c84b709fbbb617cc023fad593cd4c2e7fe1a184348afa29c01b062830699a40a127ea9b4abfc2c431e48776435ade2ea3afb9642833af1fd0#npm:1.9.0"],\ ["browserslist", "npm:4.22.1"],\ ["chrome-trace-event", "npm:1.0.3"],\ ["enhanced-resolve", "npm:5.15.0"],\ @@ -22913,7 +23171,7 @@ const RAW_RUNTIME_STATE = ["neo-async", "npm:2.6.2"],\ ["schema-utils", "npm:3.3.0"],\ ["tapable", "npm:2.2.1"],\ - ["terser-webpack-plugin", "virtual:54d9e8425688be8452738007e6ccf0fd1dc1d1053a86c28a61816822053c2eeec2de134337be589bb561f030f3d9361e17eddcea4fb235fbacb597c05bf49f34#npm:5.3.9"],\ + ["terser-webpack-plugin", "virtual:74f5519e0e67ca1c84b709fbbb617cc023fad593cd4c2e7fe1a184348afa29c01b062830699a40a127ea9b4abfc2c431e48776435ade2ea3afb9642833af1fd0#npm:5.3.9"],\ ["watchpack", "npm:2.4.0"],\ ["webpack-cli", null],\ ["webpack-sources", "npm:3.2.3"]\ @@ -22943,7 +23201,7 @@ const RAW_RUNTIME_STATE = ["mime-types", "npm:2.1.35"],\ ["range-parser", "npm:1.2.1"],\ ["schema-utils", "npm:4.2.0"],\ - ["webpack", "virtual:72a64ce7e75cdb65aaa79528559db717a911a856c0cff50de1ce96e8319efe7c16512757c95107964e223ab0f370e94e37d82a71d085dcf8102e573777358536#npm:5.89.0"]\ + ["webpack", "virtual:e44dd4867a784df005635fb1c567647b3fca21257efca49e8b0fa752f029995557295c0e2ab6643b9f0de7463c5667fa1a06f0e8bf4239c4b59bb0e7277cf5be#npm:5.89.0"]\ ],\ "packagePeers": [\ "@types/webpack",\ diff --git a/.prettierignore b/.prettierignore new file mode 100644 index 00000000..b13ab057 --- /dev/null +++ b/.prettierignore @@ -0,0 +1 @@ +src/styled-system \ No newline at end of file diff --git a/.storybook/main.ts b/.storybook/main.ts index 2d8578ec..ba102b22 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,19 +1,39 @@ import type { StorybookConfig } from '@storybook/nextjs'; +import { join, dirname } from 'path'; +import path from 'path'; +/** + * This function is used to resolve the absolute path of a package. + * It is needed in projects that use Yarn PnP or are set up within a monorepo. + */ +function getAbsolutePath(value: string): any { + return dirname(require.resolve(join(value, 'package.json'))); +} const config: StorybookConfig = { stories: ['../src/**/*.mdx', '../src/**/*.stories.@(js|jsx|mjs|ts|tsx)'], addons: [ - '@storybook/addon-links', - '@storybook/addon-essentials', - '@storybook/addon-onboarding', - '@storybook/addon-interactions', + getAbsolutePath('@storybook/addon-links'), + getAbsolutePath('@storybook/addon-essentials'), + getAbsolutePath('@storybook/addon-onboarding'), + getAbsolutePath('@storybook/addon-interactions'), ], framework: { - name: '@storybook/nextjs', + name: getAbsolutePath('@storybook/nextjs'), options: {}, }, docs: { autodocs: 'tag', }, + staticDirs: ['../public'], + async webpackFinal(config, { configType }) { + if (config?.resolve?.alias) { + config.resolve.alias = { + ...config.resolve.alias, + '@': path.resolve(__dirname, '../src'), + '@styled-system': path.resolve(__dirname, '../src/styled-system'), + }; + } + return config; + }, }; export default config; diff --git a/.storybook/preview.ts b/.storybook/preview.ts index 817ac3ce..7923b5c4 100644 --- a/.storybook/preview.ts +++ b/.storybook/preview.ts @@ -1,4 +1,5 @@ import type { Preview } from '@storybook/react'; +import '../src/app/globals.css'; const preview: Preview = { parameters: { diff --git a/.yarn/cache/@storybook-channels-npm-7.6.3-0c928c4655-378161310e.zip b/.yarn/cache/@storybook-channels-npm-7.6.3-0c928c4655-378161310e.zip new file mode 100644 index 00000000..bf4e6696 Binary files /dev/null and b/.yarn/cache/@storybook-channels-npm-7.6.3-0c928c4655-378161310e.zip differ diff --git a/.yarn/cache/@storybook-client-logger-npm-7.6.3-70cd285187-d42c003e05.zip b/.yarn/cache/@storybook-client-logger-npm-7.6.3-70cd285187-d42c003e05.zip new file mode 100644 index 00000000..d019958b Binary files /dev/null and b/.yarn/cache/@storybook-client-logger-npm-7.6.3-70cd285187-d42c003e05.zip differ diff --git a/.yarn/cache/@storybook-core-events-npm-7.6.3-163b3ab932-635f65d429.zip b/.yarn/cache/@storybook-core-events-npm-7.6.3-163b3ab932-635f65d429.zip new file mode 100644 index 00000000..8f877e20 Binary files /dev/null and b/.yarn/cache/@storybook-core-events-npm-7.6.3-163b3ab932-635f65d429.zip differ diff --git a/.yarn/cache/@storybook-instrumenter-npm-7.6.3-7642447fe2-d8abd0e6b6.zip b/.yarn/cache/@storybook-instrumenter-npm-7.6.3-7642447fe2-d8abd0e6b6.zip new file mode 100644 index 00000000..e004215c Binary files /dev/null and b/.yarn/cache/@storybook-instrumenter-npm-7.6.3-7642447fe2-d8abd0e6b6.zip differ diff --git a/.yarn/cache/@storybook-preview-api-npm-7.6.3-3341a261c0-a661168c5d.zip b/.yarn/cache/@storybook-preview-api-npm-7.6.3-3341a261c0-a661168c5d.zip new file mode 100644 index 00000000..346c5e16 Binary files /dev/null and b/.yarn/cache/@storybook-preview-api-npm-7.6.3-3341a261c0-a661168c5d.zip differ diff --git a/.yarn/cache/@storybook-test-npm-7.6.3-7a1ce4b9b0-4d15cdf015.zip b/.yarn/cache/@storybook-test-npm-7.6.3-7a1ce4b9b0-4d15cdf015.zip new file mode 100644 index 00000000..c03f2c2a Binary files /dev/null and b/.yarn/cache/@storybook-test-npm-7.6.3-7a1ce4b9b0-4d15cdf015.zip differ diff --git a/.yarn/cache/@storybook-types-npm-7.6.3-bd2bab50f2-0c1d2caed9.zip b/.yarn/cache/@storybook-types-npm-7.6.3-bd2bab50f2-0c1d2caed9.zip new file mode 100644 index 00000000..bbe43010 Binary files /dev/null and b/.yarn/cache/@storybook-types-npm-7.6.3-bd2bab50f2-0c1d2caed9.zip differ diff --git a/.yarn/cache/@testing-library-jest-dom-npm-6.1.5-3fbc61949e-3bc45dc9cb.zip b/.yarn/cache/@testing-library-jest-dom-npm-6.1.5-3fbc61949e-3bc45dc9cb.zip new file mode 100644 index 00000000..fc385644 Binary files /dev/null and b/.yarn/cache/@testing-library-jest-dom-npm-6.1.5-3fbc61949e-3bc45dc9cb.zip differ diff --git a/.yarn/cache/@testing-library-user-event-npm-14.3.0-570c508fee-07aac130b2.zip b/.yarn/cache/@testing-library-user-event-npm-14.3.0-570c508fee-07aac130b2.zip new file mode 100644 index 00000000..93043cc4 Binary files /dev/null and b/.yarn/cache/@testing-library-user-event-npm-14.3.0-570c508fee-07aac130b2.zip differ diff --git a/.yarn/cache/@types-chai-npm-4.3.11-db685c5f0e-c83a003596.zip b/.yarn/cache/@types-chai-npm-4.3.11-db685c5f0e-c83a003596.zip new file mode 100644 index 00000000..56c291e3 Binary files /dev/null and b/.yarn/cache/@types-chai-npm-4.3.11-db685c5f0e-c83a003596.zip differ diff --git a/.yarn/cache/@vitest-expect-npm-0.34.7-c2cb30daa3-0d2fbacdd0.zip b/.yarn/cache/@vitest-expect-npm-0.34.7-c2cb30daa3-0d2fbacdd0.zip new file mode 100644 index 00000000..4020b216 Binary files /dev/null and b/.yarn/cache/@vitest-expect-npm-0.34.7-c2cb30daa3-0d2fbacdd0.zip differ diff --git a/.yarn/cache/@vitest-spy-npm-0.34.7-40eb7868de-67d82626e1.zip b/.yarn/cache/@vitest-spy-npm-0.34.7-40eb7868de-67d82626e1.zip new file mode 100644 index 00000000..89828707 Binary files /dev/null and b/.yarn/cache/@vitest-spy-npm-0.34.7-40eb7868de-67d82626e1.zip differ diff --git a/.yarn/cache/@vitest-utils-npm-0.34.7-c39761c6a7-720b43f8fe.zip b/.yarn/cache/@vitest-utils-npm-0.34.7-c39761c6a7-720b43f8fe.zip new file mode 100644 index 00000000..6a635454 Binary files /dev/null and b/.yarn/cache/@vitest-utils-npm-0.34.7-c39761c6a7-720b43f8fe.zip differ diff --git a/.yarn/cache/assertion-error-npm-1.1.0-66b893015e-fd9429d3a3.zip b/.yarn/cache/assertion-error-npm-1.1.0-66b893015e-fd9429d3a3.zip new file mode 100644 index 00000000..e7b45eee Binary files /dev/null and b/.yarn/cache/assertion-error-npm-1.1.0-66b893015e-fd9429d3a3.zip differ diff --git a/.yarn/cache/chai-npm-4.3.10-96f52a35f0-9e545fd60f.zip b/.yarn/cache/chai-npm-4.3.10-96f52a35f0-9e545fd60f.zip new file mode 100644 index 00000000..dd7ad518 Binary files /dev/null and b/.yarn/cache/chai-npm-4.3.10-96f52a35f0-9e545fd60f.zip differ diff --git a/.yarn/cache/check-error-npm-1.0.3-137994eabc-e2131025cf.zip b/.yarn/cache/check-error-npm-1.0.3-137994eabc-e2131025cf.zip new file mode 100644 index 00000000..4a3d2b53 Binary files /dev/null and b/.yarn/cache/check-error-npm-1.0.3-137994eabc-e2131025cf.zip differ diff --git a/.yarn/cache/chromatic-npm-10.0.0-fa2b9e86ca-0c616d6b68.zip b/.yarn/cache/chromatic-npm-10.0.0-fa2b9e86ca-0c616d6b68.zip new file mode 100644 index 00000000..f73c8a32 Binary files /dev/null and b/.yarn/cache/chromatic-npm-10.0.0-fa2b9e86ca-0c616d6b68.zip differ diff --git a/.yarn/cache/deep-eql-npm-4.1.3-020a64f862-12ce93ae63.zip b/.yarn/cache/deep-eql-npm-4.1.3-020a64f862-12ce93ae63.zip new file mode 100644 index 00000000..5a4a1dd0 Binary files /dev/null and b/.yarn/cache/deep-eql-npm-4.1.3-020a64f862-12ce93ae63.zip differ diff --git a/.yarn/cache/get-func-name-npm-2.0.2-409dbe3703-3f62f4c236.zip b/.yarn/cache/get-func-name-npm-2.0.2-409dbe3703-3f62f4c236.zip new file mode 100644 index 00000000..d80affc5 Binary files /dev/null and b/.yarn/cache/get-func-name-npm-2.0.2-409dbe3703-3f62f4c236.zip differ diff --git a/.yarn/cache/loupe-npm-2.3.7-f294c2ef33-635c8f0914.zip b/.yarn/cache/loupe-npm-2.3.7-f294c2ef33-635c8f0914.zip new file mode 100644 index 00000000..891d9624 Binary files /dev/null and b/.yarn/cache/loupe-npm-2.3.7-f294c2ef33-635c8f0914.zip differ diff --git a/.yarn/cache/pathval-npm-1.1.1-ce0311d7e0-b50a475106.zip b/.yarn/cache/pathval-npm-1.1.1-ce0311d7e0-b50a475106.zip new file mode 100644 index 00000000..cd6ec67c Binary files /dev/null and b/.yarn/cache/pathval-npm-1.1.1-ce0311d7e0-b50a475106.zip differ diff --git a/.yarn/cache/tinyspy-npm-2.2.0-226debb582-bcc5a08c2d.zip b/.yarn/cache/tinyspy-npm-2.2.0-226debb582-bcc5a08c2d.zip new file mode 100644 index 00000000..ea37e0a3 Binary files /dev/null and b/.yarn/cache/tinyspy-npm-2.2.0-226debb582-bcc5a08c2d.zip differ diff --git a/package.json b/package.json index 798e9ab6..9fa13566 100644 --- a/package.json +++ b/package.json @@ -33,6 +33,7 @@ "@storybook/blocks": "^7.5.3", "@storybook/nextjs": "^7.5.3", "@storybook/react": "^7.5.3", + "@storybook/test": "^7.6.3", "@storybook/testing-library": "^0.2.2", "@tanstack/react-query-devtools": "^5.8.4", "@testing-library/jest-dom": "^6.1.4", @@ -44,6 +45,7 @@ "@types/react-dom": "^18", "@typescript-eslint/eslint-plugin": "^6.12.0", "@typescript-eslint/parser": "^6.12.0", + "chromatic": "^10.0.0", "eslint": "^8", "eslint-config-next": "14.0.3", "eslint-config-prettier": "^9.0.0", @@ -58,7 +60,8 @@ "lint-staged": "^15.1.0", "prettier": "^3.1.0", "storybook": "^7.5.3", - "typescript": "^5" + "typescript": "^5", + "webpack": "^5.89.0" }, "packageManager": "yarn@4.0.2" } diff --git a/panda.config.ts b/panda.config.ts index 71de5aba..79e1bf2a 100644 --- a/panda.config.ts +++ b/panda.config.ts @@ -1,18 +1,34 @@ import { defineConfig } from '@pandacss/dev'; +import { typographyList } from './src/styles/typography'; + export default defineConfig({ // Whether to use css reset preflight: true, jsxFramework: 'react', // Where to look for your css declarations - include: ['./src/**/*.{js,jsx,ts,tsx}', './src/app/**/*.{ts,tsx,js,jsx}'], + include: ['./src/**/*.{js,jsx,ts,tsx}', './src/app/**/*.{ts,tsx,js,jsx}', './stories/**/*.{js,jsx,ts,tsx}'], // Files to exclude exclude: [], // Useful for theme customization theme: { - extend: {}, + extend: { + keyframes: { + gradient: { + '0%': { transform: 'rotate(0deg)', backgroundPositionX: '0%', backgroundPositionY: '0%' }, + '50%': { backgroundPositionX: '50%', backgroundPositionY: '100%' }, + '100%': { transform: 'rotate(0deg)', backgroundPositionX: '0%', backgroundPositionY: '0%' }, + }, + }, + textStyles: typographyList, + tokens: { + fonts: { + pretendard: { value: 'var(--pretendard)' }, + }, + }, + }, }, // The output directory for your css system diff --git a/public/assets/icons/left-arrow-icon.svg b/public/assets/icons/left-arrow-icon.svg new file mode 100644 index 00000000..2905bda0 --- /dev/null +++ b/public/assets/icons/left-arrow-icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/public/images/login_bg.png b/public/images/login_bg.png new file mode 100644 index 00000000..dc4d2368 Binary files /dev/null and b/public/images/login_bg.png differ diff --git a/src/app/LogoIcon.tsx b/src/app/LogoIcon.tsx new file mode 100644 index 00000000..ccfdc1a6 --- /dev/null +++ b/src/app/LogoIcon.tsx @@ -0,0 +1,54 @@ +// TODO : Icon 컴포넌트로 변경 +const LogoIcon = () => { + return ( + + + + + + + + + + + + + + + + + + + + + + + + + + ); +}; + +export default LogoIcon; diff --git a/src/app/globals.css b/src/app/globals.css index 009ed44b..b5b6f36c 100644 --- a/src/app/globals.css +++ b/src/app/globals.css @@ -1 +1,42 @@ -@layer reset, base, tokens, recipes, utilities; \ No newline at end of file +@layer reset, base, tokens, recipes, utilities; + +/* 아래 폰트들은 safari에서의 대응을 위한 css 변수 등록을 위한 코드 입니다 */ +@font-face { + font-family: 'Pretendard'; + font-weight: 400; + font-display: swap; + src: + local('Pretendard'), + url('../assets/fonts/PretendardVariable.woff2') format('woff2'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 500; + font-display: swap; + src: + local('Pretendard'), + url('../assets/fonts/PretendardVariable.woff2') format('woff2'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 600; + font-display: swap; + src: + local('Pretendard'), + url('../assets/fonts/PretendardVariable.woff2') format('woff2'); +} + +@font-face { + font-family: 'Pretendard'; + font-weight: 700; + font-display: swap; + src: + local('Pretendard'), + url('../assets/fonts/PretendardVariable.woff2') format('woff2'); +} + +:root { + --pretendard: 'Pretendard', sans-serif; +} diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 460cf029..08192796 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,4 +1,6 @@ import type { Metadata } from 'next'; +import { css } from '@/styled-system/css'; +import { pretendardFont } from '@/styles/font'; import { QueryProvider } from '../hooks/query'; @@ -11,10 +13,18 @@ export const metadata: Metadata = { export default function RootLayout({ children }: { children: React.ReactNode }) { return ( - + - {children} + +
{children}
+
); } + +const containerCss = { + maxWidth: '475px', + margin: '0 auto', + minHeight: '100vh', +}; diff --git a/src/app/page.module.css b/src/app/page.module.css deleted file mode 100644 index 6676d2c6..00000000 --- a/src/app/page.module.css +++ /dev/null @@ -1,229 +0,0 @@ -.main { - display: flex; - flex-direction: column; - justify-content: space-between; - align-items: center; - padding: 6rem; - min-height: 100vh; -} - -.description { - display: inherit; - justify-content: inherit; - align-items: inherit; - font-size: 0.85rem; - max-width: var(--max-width); - width: 100%; - z-index: 2; - font-family: var(--font-mono); -} - -.description a { - display: flex; - justify-content: center; - align-items: center; - gap: 0.5rem; -} - -.description p { - position: relative; - margin: 0; - padding: 1rem; - background-color: rgba(var(--callout-rgb), 0.5); - border: 1px solid rgba(var(--callout-border-rgb), 0.3); - border-radius: var(--border-radius); -} - -.code { - font-weight: 700; - font-family: var(--font-mono); -} - -.grid { - display: grid; - grid-template-columns: repeat(4, minmax(25%, auto)); - max-width: 100%; - width: var(--max-width); -} - -.card { - padding: 1rem 1.2rem; - border-radius: var(--border-radius); - background: rgba(var(--card-rgb), 0); - border: 1px solid rgba(var(--card-border-rgb), 0); - transition: background 200ms, border 200ms; -} - -.card span { - display: inline-block; - transition: transform 200ms; -} - -.card h2 { - font-weight: 600; - margin-bottom: 0.7rem; -} - -.card p { - margin: 0; - opacity: 0.6; - font-size: 0.9rem; - line-height: 1.5; - max-width: 30ch; -} - -.center { - display: flex; - justify-content: center; - align-items: center; - position: relative; - padding: 4rem 0; -} - -.center::before { - background: var(--secondary-glow); - border-radius: 50%; - width: 480px; - height: 360px; - margin-left: -400px; -} - -.center::after { - background: var(--primary-glow); - width: 240px; - height: 180px; - z-index: -1; -} - -.center::before, -.center::after { - content: ''; - left: 50%; - position: absolute; - filter: blur(45px); - transform: translateZ(0); -} - -.logo { - position: relative; -} -/* Enable hover only on non-touch devices */ -@media (hover: hover) and (pointer: fine) { - .card:hover { - background: rgba(var(--card-rgb), 0.1); - border: 1px solid rgba(var(--card-border-rgb), 0.15); - } - - .card:hover span { - transform: translateX(4px); - } -} - -@media (prefers-reduced-motion) { - .card:hover span { - transform: none; - } -} - -/* Mobile */ -@media (max-width: 700px) { - .content { - padding: 4rem; - } - - .grid { - grid-template-columns: 1fr; - margin-bottom: 120px; - max-width: 320px; - text-align: center; - } - - .card { - padding: 1rem 2.5rem; - } - - .card h2 { - margin-bottom: 0.5rem; - } - - .center { - padding: 8rem 0 6rem; - } - - .center::before { - transform: none; - height: 300px; - } - - .description { - font-size: 0.8rem; - } - - .description a { - padding: 1rem; - } - - .description p, - .description div { - display: flex; - justify-content: center; - position: fixed; - width: 100%; - } - - .description p { - align-items: center; - inset: 0 0 auto; - padding: 2rem 1rem 1.4rem; - border-radius: 0; - border: none; - border-bottom: 1px solid rgba(var(--callout-border-rgb), 0.25); - background: linear-gradient( - to bottom, - rgba(var(--background-start-rgb), 1), - rgba(var(--callout-rgb), 0.5) - ); - background-clip: padding-box; - backdrop-filter: blur(24px); - } - - .description div { - align-items: flex-end; - pointer-events: none; - inset: auto 0 0; - padding: 2rem; - height: 200px; - background: linear-gradient( - to bottom, - transparent 0%, - rgb(var(--background-end-rgb)) 40% - ); - z-index: 1; - } -} - -/* Tablet and Smaller Desktop */ -@media (min-width: 701px) and (max-width: 1120px) { - .grid { - grid-template-columns: repeat(2, 50%); - } -} - -@media (prefers-color-scheme: dark) { - .vercelLogo { - filter: invert(1); - } - - .logo { - filter: invert(1) drop-shadow(0 0 0.3rem #ffffff70); - } -} - -@keyframes rotate { - from { - transform: rotate(360deg); - } - to { - transform: rotate(0deg); - } -} diff --git a/src/app/page.tsx b/src/app/page.tsx index a39489ff..94187b7a 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,11 +1,59 @@ -import Header from '@/components/Header'; +import Link from 'next/link'; +import LogoIcon from '@/app/LogoIcon'; import { css } from '@styled-system/css'; export default function Home() { return ( -
-
- Hello 🐼! -
+
+
+ +

하루 10분의 변화를 경험하세요.

+
+ + + +
); } + +const MainWrapperCss = css({ + display: 'flex', + flexDirection: 'column', + alignItems: 'center', + justifyContent: 'space-between', + + bgImage: 'url(/images/login_bg.png)', + bgPosition: 'center', + bgRepeat: 'no-repeat', + bgSize: 'cover', + + width: '100%', + height: '100vh', + padding: '118px 16px 50px 16px', +}); + +const MainTitleCss = css({ + color: '#fff', + textShadow: '0px 0px 5px rgba(0, 0, 0, 0.08)', + marginTop: '8px', + textStyle: 'title1', // pretendard 사용예시로 일단 임시 주석입니당 +}); + +const LoginButtonCss = css({ + width: '100%', + padding: '16px 0px', + cursor: 'pointer', + + borderRadius: '30px', + boxShadow: '0px 4px 30px 5px rgba(18, 23, 41, 0.15)', + background: '#fff', + + color: '#191F28', + textStyle: 'title3', // pretendard 사용예시로 일단 임시 주석입니당 +}); + +const LinkCss = css({ + width: '100%', +}); diff --git a/src/app/timer/TimerView.tsx b/src/app/timer/TimerView.tsx new file mode 100644 index 00000000..e7ce822d --- /dev/null +++ b/src/app/timer/TimerView.tsx @@ -0,0 +1,47 @@ +import React from 'react'; +import { css } from '@/styled-system/css'; +import { center } from '@/styled-system/patterns'; + +interface Props { + isActive: boolean; + time: [string, string]; + category: string; +} +export default function TimerView({ category, time, isActive }: Props) { + return ( +
+
+
{category}
+
+ {time[0]} + : + {time[1]} +
+
+
+ ); +} + +const innerCss = { + width: '312px', + height: '312px', + background: 'white', + boxShadow: '0px 10px 30px 5px rgba(18.51, 14.90, 195.38, 0.07)', + borderRadius: 9999, + flexDirection: 'column', +}; + +const categoryCss = { color: '#4E5968', fontSize: '18px', fontWeight: '600', lineHeight: '150%' }; + +const timerTextCss = { + fontSize: '70px', + fontWeight: '700', + animation: 'gradient 3s ease-in-out infinite', + backgroundSize: '150% 200%!', + '-webkit-background-clip': 'text!', + background: 'linear-gradient(108deg, #FF8C8C -1.04%, #5D8AFF 101.48%)', +}; diff --git a/src/app/timer/layout.tsx b/src/app/timer/layout.tsx new file mode 100644 index 00000000..3aadb9f1 --- /dev/null +++ b/src/app/timer/layout.tsx @@ -0,0 +1,10 @@ +import { type PropsWithChildren } from 'react'; +import { css } from '@/styled-system/css'; + +export default function Layout({ children }: PropsWithChildren) { + return
{children}
; +} + +const containerCss = css({ + minHeight: '100vh', +}); diff --git a/src/app/timer/page.tsx b/src/app/timer/page.tsx new file mode 100644 index 00000000..cd14a574 --- /dev/null +++ b/src/app/timer/page.tsx @@ -0,0 +1,100 @@ +'use client'; +import TimerView from '@/app/timer/TimerView'; +import useTimer from '@/app/timer/useTimer'; +import useTimerStatus from '@/app/timer/useTimerStatus'; +import Header from '@/components/Layout/Header'; +import { css } from '@styled-system/css'; + +export default function TimerPage() { + const { step, stepLabel, onNextStep } = useTimerStatus(); + const { formattedTime } = useTimer(step); + + const onFinish = () => { + onNextStep('stop'); + alert('정말 끝내시겠습니까?'); + }; + + return ( +
+
+
+

{stepLabel.title}

+

{stepLabel.desc}

+ + +
+ {step === 'ready' && ( + + )} + {step === 'progress' && ( + <> + + + + )} + {step === 'stop' && ( + <> + + + + )} +
+
+
+ ); +} + +const bgCss = { + minHeight: '100vh', + transition: '1s ease', +}; + +const containerCss = { + padding: '24px 16px', +}; + +const font24Css = { + fontSize: '24px', + fontFamily: 'Pretendard', + fontWeight: '700', + lineHeight: '150%', + wordWrap: 'break-word', +}; + +const font14Css = { + fontSize: '14px', + fontFamily: 'Pretendard', + fontWeight: '400', + lineHeight: '150%', +}; + +const titleCss = css(font24Css, { color: '#333D4B' }); +const descCss = css(font14Css, { color: '#6B7684', marginBottom: '84px' }); + +const buttonContainerCss = { + margin: '28px auto', + display: 'flex', + justifyContent: 'center', + gap: '12px', + + '& button': { + backgroundColor: 'white', + borderRadius: '30px', + padding: '16px 24px', + boxSizing: '0px 4px 20px 0px rgba(18, 23, 41, 0.10)', + }, +}; diff --git a/src/app/timer/useTimer.ts b/src/app/timer/useTimer.ts new file mode 100644 index 00000000..31018aa2 --- /dev/null +++ b/src/app/timer/useTimer.ts @@ -0,0 +1,34 @@ +import { useEffect, useState } from 'react'; +import { type StepType } from '@/app/timer/useTimerStatus'; + +export default function useTimer(status: StepType, initSeconds = 600) { + const [second, setSecond] = useState(initSeconds); // 남은 시간 (단위: 초) + + const formattedTime = formatMMSS(second); + + useEffect(() => { + let timer: NodeJS.Timeout; + + if (second <= 0) { + return; + } + + if (status === 'progress') { + timer = setInterval(() => { + setSecond((prev) => prev - 1); + }, 1000); + } + return () => clearInterval(timer); + }, [second, status]); + + return { formattedTime }; +} + +const formatMMSS = (second: number): [string, string] => { + const minutes = Math.floor(second / 60); // 분 계산 + const seconds = second % 60; // 초 계산 + const formattedMinutes = String(minutes).padStart(2, '0'); // 두 자리로 변환 + const formattedSeconds = String(seconds).padStart(2, '0'); // 두 자리로 변환 + + return [formattedMinutes, formattedSeconds]; +}; diff --git a/src/app/timer/useTimerStatus.ts b/src/app/timer/useTimerStatus.ts new file mode 100644 index 00000000..73dc7964 --- /dev/null +++ b/src/app/timer/useTimerStatus.ts @@ -0,0 +1,32 @@ +import { useState } from 'react'; + +export type StepType = 'ready' | 'progress' | 'stop'; + +const TIMER_STATUS = { + ready: { + title: '준비 되셨나요?', + desc: '타이머를 눌러서 10분의 미션을 완성해 주세요!', + }, + progress: { + title: '시작!', + desc: '10분 동안 최선을 다해주세요!', + }, + stop: { + title: '잠시 멈췄어요', + desc: '준비가 되면 타이머를 다시 시작해주세요!', + }, +} as const; + +function useTimerStatus() { + const [step, setStep] = useState('ready'); + + const stepLabel = TIMER_STATUS[step]; + + const onNextStep = (nextStep: StepType) => { + setStep(nextStep); + }; + + return { step, onNextStep, stepLabel }; +} + +export default useTimerStatus; diff --git a/src/assets/fonts/PretendardVariable.woff2 b/src/assets/fonts/PretendardVariable.woff2 new file mode 100644 index 00000000..49c54b51 Binary files /dev/null and b/src/assets/fonts/PretendardVariable.woff2 differ diff --git a/src/components/Button.tsx b/src/components/Button.tsx new file mode 100644 index 00000000..eabeda54 --- /dev/null +++ b/src/components/Button.tsx @@ -0,0 +1,13 @@ +import { type ButtonHTMLAttributes } from 'react'; + +interface ButtonProps extends ButtonHTMLAttributes {} + +const Button: React.FC = ({ className, children, ...props }) => { + return ( + + ); +}; + +export default Button; diff --git a/src/components/Header.tsx b/src/components/Header.tsx deleted file mode 100644 index abcddb32..00000000 --- a/src/components/Header.tsx +++ /dev/null @@ -1,19 +0,0 @@ -import Icon from '@/components/Icon'; -import { css } from '@styled-system/css'; - -const Header = () => { - return ( -
-

- -

-
- ); -}; - -export default Header; diff --git a/src/components/Layout/Header.stories.ts b/src/components/Layout/Header.stories.ts new file mode 100644 index 00000000..2c84f2a3 --- /dev/null +++ b/src/components/Layout/Header.stories.ts @@ -0,0 +1,26 @@ +import type { Meta, StoryObj } from '@storybook/react'; + +import Header from './Header'; + +// More on how to set up stories at: https://storybook.js.org/docs/react/writing-stories/introduction#default-export +const meta = { + title: 'Example/Header', + component: Header, + parameters: { + // Optional parameter to center the component in the Canvas. More info: https://storybook.js.org/docs/react/configure/story-layout + layout: 'centered', + }, + // This component will have an automatically generated Autodocs entry: https://storybook.js.org/docs/react/writing-docs/autodocs + tags: ['autodocs'], + // More on argTypes: https://storybook.js.org/docs/react/api/argtypes +} satisfies Meta; + +export default meta; +type Story = StoryObj; + +// More on writing stories with args: https://storybook.js.org/docs/react/writing-stories/args +export const Primary: Story = { + args: { + title: 'Header', + }, +}; diff --git a/src/components/Layout/Header.tsx b/src/components/Layout/Header.tsx new file mode 100644 index 00000000..2afc2c6c --- /dev/null +++ b/src/components/Layout/Header.tsx @@ -0,0 +1,44 @@ +import Image from 'next/image'; +import { flex } from '@/styled-system/patterns'; +import { css } from '@styled-system/css'; + +interface Props { + title?: string; +} + +function Header({ title }: Props) { + return ( + <> +
+ +

{title}

+
+
+ + ); +} + +const headerBlankCss = { + height: '42px;', + width: '100%', +}; + +const wrapperCss = flex({ + padding: '10px 16px', + gap: '6px', + background: 'transparent', + position: 'fixed', + margin: '0 auto', + zIndex: 100, +}); + +const headingCss = css({ + color: '#6B7684', + fontSize: '16px', + fontFamily: 'Pretendard', + fontWeight: '600', +}); + +export default Header; diff --git a/src/styled-system/tokens/index.css b/src/styled-system/tokens/index.css index 640b66b0..71c10372 100644 --- a/src/styled-system/tokens/index.css +++ b/src/styled-system/tokens/index.css @@ -36,9 +36,6 @@ --line-heights-normal: 1.5; --line-heights-relaxed: 1.625; --line-heights-loose: 2; - --fonts-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; - --fonts-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; - --fonts-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; --letter-spacings-tighter: -0.05em; --letter-spacings-tight: -0.025em; --letter-spacings-normal: 0em; @@ -413,6 +410,10 @@ --animations-ping: ping 1s cubic-bezier(0, 0, 0.2, 1) infinite; --animations-pulse: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite; --animations-bounce: bounce 1s infinite; + --fonts-sans: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --fonts-serif: ui-serif, Georgia, Cambria, "Times New Roman", Times, serif; + --fonts-mono: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --fonts-pretendard: var(--pretendard); --breakpoints-sm: 640px; --breakpoints-md: 768px; --breakpoints-lg: 1024px; diff --git a/src/styled-system/tokens/index.mjs b/src/styled-system/tokens/index.mjs index 5db20578..5f48544f 100644 --- a/src/styled-system/tokens/index.mjs +++ b/src/styled-system/tokens/index.mjs @@ -143,18 +143,6 @@ const tokens = { "value": "2", "variable": "var(--line-heights-loose)" }, - "fonts.sans": { - "value": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"", - "variable": "var(--fonts-sans)" - }, - "fonts.serif": { - "value": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif", - "variable": "var(--fonts-serif)" - }, - "fonts.mono": { - "value": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace", - "variable": "var(--fonts-mono)" - }, "letterSpacings.tighter": { "value": "-0.05em", "variable": "var(--letter-spacings-tighter)" @@ -1651,6 +1639,22 @@ const tokens = { "value": "bounce 1s infinite", "variable": "var(--animations-bounce)" }, + "fonts.sans": { + "value": "ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, \"Noto Sans\", sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\", \"Noto Color Emoji\"", + "variable": "var(--fonts-sans)" + }, + "fonts.serif": { + "value": "ui-serif, Georgia, Cambria, \"Times New Roman\", Times, serif", + "variable": "var(--fonts-serif)" + }, + "fonts.mono": { + "value": "ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, \"Liberation Mono\", \"Courier New\", monospace", + "variable": "var(--fonts-mono)" + }, + "fonts.pretendard": { + "value": "var(--pretendard)", + "variable": "var(--fonts-pretendard)" + }, "breakpoints.sm": { "value": "640px", "variable": "var(--breakpoints-sm)" diff --git a/src/styled-system/tokens/keyframes.css b/src/styled-system/tokens/keyframes.css index 554e3c17..12c573b6 100644 --- a/src/styled-system/tokens/keyframes.css +++ b/src/styled-system/tokens/keyframes.css @@ -25,4 +25,20 @@ animation-timing-function: cubic-bezier(0,0,0.2,1) } } + @keyframes gradient { + 0% { + transform: rotate(0deg); + background-position-x: 0%; + background-position-y: 0% + } + 50% { + background-position-x: 50%; + background-position-y: 100% + } + 100% { + transform: rotate(0deg); + background-position-x: 0%; + background-position-y: 0% + } + } } \ No newline at end of file diff --git a/src/styled-system/tokens/tokens.d.ts b/src/styled-system/tokens/tokens.d.ts index fac1971f..c04137ce 100644 --- a/src/styled-system/tokens/tokens.d.ts +++ b/src/styled-system/tokens/tokens.d.ts @@ -1,5 +1,5 @@ /* eslint-disable */ -export type Token = "borders.none" | "easings.default" | "easings.linear" | "easings.in" | "easings.out" | "easings.in-out" | "durations.fastest" | "durations.faster" | "durations.fast" | "durations.normal" | "durations.slow" | "durations.slower" | "durations.slowest" | "radii.xs" | "radii.sm" | "radii.md" | "radii.lg" | "radii.xl" | "radii.2xl" | "radii.3xl" | "radii.full" | "fontWeights.thin" | "fontWeights.extralight" | "fontWeights.light" | "fontWeights.normal" | "fontWeights.medium" | "fontWeights.semibold" | "fontWeights.bold" | "fontWeights.extrabold" | "fontWeights.black" | "lineHeights.none" | "lineHeights.tight" | "lineHeights.snug" | "lineHeights.normal" | "lineHeights.relaxed" | "lineHeights.loose" | "fonts.sans" | "fonts.serif" | "fonts.mono" | "letterSpacings.tighter" | "letterSpacings.tight" | "letterSpacings.normal" | "letterSpacings.wide" | "letterSpacings.wider" | "letterSpacings.widest" | "fontSizes.2xs" | "fontSizes.xs" | "fontSizes.sm" | "fontSizes.md" | "fontSizes.lg" | "fontSizes.xl" | "fontSizes.2xl" | "fontSizes.3xl" | "fontSizes.4xl" | "fontSizes.5xl" | "fontSizes.6xl" | "fontSizes.7xl" | "fontSizes.8xl" | "fontSizes.9xl" | "shadows.xs" | "shadows.sm" | "shadows.md" | "shadows.lg" | "shadows.xl" | "shadows.2xl" | "shadows.inner" | "colors.current" | "colors.black" | "colors.white" | "colors.transparent" | "colors.rose.50" | "colors.rose.100" | "colors.rose.200" | "colors.rose.300" | "colors.rose.400" | "colors.rose.500" | "colors.rose.600" | "colors.rose.700" | "colors.rose.800" | "colors.rose.900" | "colors.rose.950" | "colors.pink.50" | "colors.pink.100" | "colors.pink.200" | "colors.pink.300" | "colors.pink.400" | "colors.pink.500" | "colors.pink.600" | "colors.pink.700" | "colors.pink.800" | "colors.pink.900" | "colors.pink.950" | "colors.fuchsia.50" | "colors.fuchsia.100" | "colors.fuchsia.200" | "colors.fuchsia.300" | "colors.fuchsia.400" | "colors.fuchsia.500" | "colors.fuchsia.600" | "colors.fuchsia.700" | "colors.fuchsia.800" | "colors.fuchsia.900" | "colors.fuchsia.950" | "colors.purple.50" | "colors.purple.100" | "colors.purple.200" | "colors.purple.300" | "colors.purple.400" | "colors.purple.500" | "colors.purple.600" | "colors.purple.700" | "colors.purple.800" | "colors.purple.900" | "colors.purple.950" | "colors.violet.50" | "colors.violet.100" | "colors.violet.200" | "colors.violet.300" | "colors.violet.400" | "colors.violet.500" | "colors.violet.600" | "colors.violet.700" | "colors.violet.800" | "colors.violet.900" | "colors.violet.950" | "colors.indigo.50" | "colors.indigo.100" | "colors.indigo.200" | "colors.indigo.300" | "colors.indigo.400" | "colors.indigo.500" | "colors.indigo.600" | "colors.indigo.700" | "colors.indigo.800" | "colors.indigo.900" | "colors.indigo.950" | "colors.blue.50" | "colors.blue.100" | "colors.blue.200" | "colors.blue.300" | "colors.blue.400" | "colors.blue.500" | "colors.blue.600" | "colors.blue.700" | "colors.blue.800" | "colors.blue.900" | "colors.blue.950" | "colors.sky.50" | "colors.sky.100" | "colors.sky.200" | "colors.sky.300" | "colors.sky.400" | "colors.sky.500" | "colors.sky.600" | "colors.sky.700" | "colors.sky.800" | "colors.sky.900" | "colors.sky.950" | "colors.cyan.50" | "colors.cyan.100" | "colors.cyan.200" | "colors.cyan.300" | "colors.cyan.400" | "colors.cyan.500" | "colors.cyan.600" | "colors.cyan.700" | "colors.cyan.800" | "colors.cyan.900" | "colors.cyan.950" | "colors.teal.50" | "colors.teal.100" | "colors.teal.200" | "colors.teal.300" | "colors.teal.400" | "colors.teal.500" | "colors.teal.600" | "colors.teal.700" | "colors.teal.800" | "colors.teal.900" | "colors.teal.950" | "colors.emerald.50" | "colors.emerald.100" | "colors.emerald.200" | "colors.emerald.300" | "colors.emerald.400" | "colors.emerald.500" | "colors.emerald.600" | "colors.emerald.700" | "colors.emerald.800" | "colors.emerald.900" | "colors.emerald.950" | "colors.green.50" | "colors.green.100" | "colors.green.200" | "colors.green.300" | "colors.green.400" | "colors.green.500" | "colors.green.600" | "colors.green.700" | "colors.green.800" | "colors.green.900" | "colors.green.950" | "colors.lime.50" | "colors.lime.100" | "colors.lime.200" | "colors.lime.300" | "colors.lime.400" | "colors.lime.500" | "colors.lime.600" | "colors.lime.700" | "colors.lime.800" | "colors.lime.900" | "colors.lime.950" | "colors.yellow.50" | "colors.yellow.100" | "colors.yellow.200" | "colors.yellow.300" | "colors.yellow.400" | "colors.yellow.500" | "colors.yellow.600" | "colors.yellow.700" | "colors.yellow.800" | "colors.yellow.900" | "colors.yellow.950" | "colors.amber.50" | "colors.amber.100" | "colors.amber.200" | "colors.amber.300" | "colors.amber.400" | "colors.amber.500" | "colors.amber.600" | "colors.amber.700" | "colors.amber.800" | "colors.amber.900" | "colors.amber.950" | "colors.orange.50" | "colors.orange.100" | "colors.orange.200" | "colors.orange.300" | "colors.orange.400" | "colors.orange.500" | "colors.orange.600" | "colors.orange.700" | "colors.orange.800" | "colors.orange.900" | "colors.orange.950" | "colors.red.50" | "colors.red.100" | "colors.red.200" | "colors.red.300" | "colors.red.400" | "colors.red.500" | "colors.red.600" | "colors.red.700" | "colors.red.800" | "colors.red.900" | "colors.red.950" | "colors.neutral.50" | "colors.neutral.100" | "colors.neutral.200" | "colors.neutral.300" | "colors.neutral.400" | "colors.neutral.500" | "colors.neutral.600" | "colors.neutral.700" | "colors.neutral.800" | "colors.neutral.900" | "colors.neutral.950" | "colors.stone.50" | "colors.stone.100" | "colors.stone.200" | "colors.stone.300" | "colors.stone.400" | "colors.stone.500" | "colors.stone.600" | "colors.stone.700" | "colors.stone.800" | "colors.stone.900" | "colors.stone.950" | "colors.zinc.50" | "colors.zinc.100" | "colors.zinc.200" | "colors.zinc.300" | "colors.zinc.400" | "colors.zinc.500" | "colors.zinc.600" | "colors.zinc.700" | "colors.zinc.800" | "colors.zinc.900" | "colors.zinc.950" | "colors.gray.50" | "colors.gray.100" | "colors.gray.200" | "colors.gray.300" | "colors.gray.400" | "colors.gray.500" | "colors.gray.600" | "colors.gray.700" | "colors.gray.800" | "colors.gray.900" | "colors.gray.950" | "colors.slate.50" | "colors.slate.100" | "colors.slate.200" | "colors.slate.300" | "colors.slate.400" | "colors.slate.500" | "colors.slate.600" | "colors.slate.700" | "colors.slate.800" | "colors.slate.900" | "colors.slate.950" | "blurs.sm" | "blurs.base" | "blurs.md" | "blurs.lg" | "blurs.xl" | "blurs.2xl" | "blurs.3xl" | "spacing.0" | "spacing.1" | "spacing.2" | "spacing.3" | "spacing.4" | "spacing.5" | "spacing.6" | "spacing.7" | "spacing.8" | "spacing.9" | "spacing.10" | "spacing.11" | "spacing.12" | "spacing.14" | "spacing.16" | "spacing.20" | "spacing.24" | "spacing.28" | "spacing.32" | "spacing.36" | "spacing.40" | "spacing.44" | "spacing.48" | "spacing.52" | "spacing.56" | "spacing.60" | "spacing.64" | "spacing.72" | "spacing.80" | "spacing.96" | "spacing.0.5" | "spacing.1.5" | "spacing.2.5" | "spacing.3.5" | "sizes.0" | "sizes.1" | "sizes.2" | "sizes.3" | "sizes.4" | "sizes.5" | "sizes.6" | "sizes.7" | "sizes.8" | "sizes.9" | "sizes.10" | "sizes.11" | "sizes.12" | "sizes.14" | "sizes.16" | "sizes.20" | "sizes.24" | "sizes.28" | "sizes.32" | "sizes.36" | "sizes.40" | "sizes.44" | "sizes.48" | "sizes.52" | "sizes.56" | "sizes.60" | "sizes.64" | "sizes.72" | "sizes.80" | "sizes.96" | "sizes.0.5" | "sizes.1.5" | "sizes.2.5" | "sizes.3.5" | "sizes.xs" | "sizes.sm" | "sizes.md" | "sizes.lg" | "sizes.xl" | "sizes.2xl" | "sizes.3xl" | "sizes.4xl" | "sizes.5xl" | "sizes.6xl" | "sizes.7xl" | "sizes.8xl" | "sizes.prose" | "sizes.full" | "sizes.min" | "sizes.max" | "sizes.fit" | "sizes.breakpoint-sm" | "sizes.breakpoint-md" | "sizes.breakpoint-lg" | "sizes.breakpoint-xl" | "sizes.breakpoint-2xl" | "animations.spin" | "animations.ping" | "animations.pulse" | "animations.bounce" | "breakpoints.sm" | "breakpoints.md" | "breakpoints.lg" | "breakpoints.xl" | "breakpoints.2xl" | "spacing.-1" | "spacing.-2" | "spacing.-3" | "spacing.-4" | "spacing.-5" | "spacing.-6" | "spacing.-7" | "spacing.-8" | "spacing.-9" | "spacing.-10" | "spacing.-11" | "spacing.-12" | "spacing.-14" | "spacing.-16" | "spacing.-20" | "spacing.-24" | "spacing.-28" | "spacing.-32" | "spacing.-36" | "spacing.-40" | "spacing.-44" | "spacing.-48" | "spacing.-52" | "spacing.-56" | "spacing.-60" | "spacing.-64" | "spacing.-72" | "spacing.-80" | "spacing.-96" | "spacing.-0.5" | "spacing.-1.5" | "spacing.-2.5" | "spacing.-3.5" | "colors.colorPalette" | "colors.colorPalette.50" | "colors.colorPalette.100" | "colors.colorPalette.200" | "colors.colorPalette.300" | "colors.colorPalette.400" | "colors.colorPalette.500" | "colors.colorPalette.600" | "colors.colorPalette.700" | "colors.colorPalette.800" | "colors.colorPalette.900" | "colors.colorPalette.950" +export type Token = "borders.none" | "easings.default" | "easings.linear" | "easings.in" | "easings.out" | "easings.in-out" | "durations.fastest" | "durations.faster" | "durations.fast" | "durations.normal" | "durations.slow" | "durations.slower" | "durations.slowest" | "radii.xs" | "radii.sm" | "radii.md" | "radii.lg" | "radii.xl" | "radii.2xl" | "radii.3xl" | "radii.full" | "fontWeights.thin" | "fontWeights.extralight" | "fontWeights.light" | "fontWeights.normal" | "fontWeights.medium" | "fontWeights.semibold" | "fontWeights.bold" | "fontWeights.extrabold" | "fontWeights.black" | "lineHeights.none" | "lineHeights.tight" | "lineHeights.snug" | "lineHeights.normal" | "lineHeights.relaxed" | "lineHeights.loose" | "letterSpacings.tighter" | "letterSpacings.tight" | "letterSpacings.normal" | "letterSpacings.wide" | "letterSpacings.wider" | "letterSpacings.widest" | "fontSizes.2xs" | "fontSizes.xs" | "fontSizes.sm" | "fontSizes.md" | "fontSizes.lg" | "fontSizes.xl" | "fontSizes.2xl" | "fontSizes.3xl" | "fontSizes.4xl" | "fontSizes.5xl" | "fontSizes.6xl" | "fontSizes.7xl" | "fontSizes.8xl" | "fontSizes.9xl" | "shadows.xs" | "shadows.sm" | "shadows.md" | "shadows.lg" | "shadows.xl" | "shadows.2xl" | "shadows.inner" | "colors.current" | "colors.black" | "colors.white" | "colors.transparent" | "colors.rose.50" | "colors.rose.100" | "colors.rose.200" | "colors.rose.300" | "colors.rose.400" | "colors.rose.500" | "colors.rose.600" | "colors.rose.700" | "colors.rose.800" | "colors.rose.900" | "colors.rose.950" | "colors.pink.50" | "colors.pink.100" | "colors.pink.200" | "colors.pink.300" | "colors.pink.400" | "colors.pink.500" | "colors.pink.600" | "colors.pink.700" | "colors.pink.800" | "colors.pink.900" | "colors.pink.950" | "colors.fuchsia.50" | "colors.fuchsia.100" | "colors.fuchsia.200" | "colors.fuchsia.300" | "colors.fuchsia.400" | "colors.fuchsia.500" | "colors.fuchsia.600" | "colors.fuchsia.700" | "colors.fuchsia.800" | "colors.fuchsia.900" | "colors.fuchsia.950" | "colors.purple.50" | "colors.purple.100" | "colors.purple.200" | "colors.purple.300" | "colors.purple.400" | "colors.purple.500" | "colors.purple.600" | "colors.purple.700" | "colors.purple.800" | "colors.purple.900" | "colors.purple.950" | "colors.violet.50" | "colors.violet.100" | "colors.violet.200" | "colors.violet.300" | "colors.violet.400" | "colors.violet.500" | "colors.violet.600" | "colors.violet.700" | "colors.violet.800" | "colors.violet.900" | "colors.violet.950" | "colors.indigo.50" | "colors.indigo.100" | "colors.indigo.200" | "colors.indigo.300" | "colors.indigo.400" | "colors.indigo.500" | "colors.indigo.600" | "colors.indigo.700" | "colors.indigo.800" | "colors.indigo.900" | "colors.indigo.950" | "colors.blue.50" | "colors.blue.100" | "colors.blue.200" | "colors.blue.300" | "colors.blue.400" | "colors.blue.500" | "colors.blue.600" | "colors.blue.700" | "colors.blue.800" | "colors.blue.900" | "colors.blue.950" | "colors.sky.50" | "colors.sky.100" | "colors.sky.200" | "colors.sky.300" | "colors.sky.400" | "colors.sky.500" | "colors.sky.600" | "colors.sky.700" | "colors.sky.800" | "colors.sky.900" | "colors.sky.950" | "colors.cyan.50" | "colors.cyan.100" | "colors.cyan.200" | "colors.cyan.300" | "colors.cyan.400" | "colors.cyan.500" | "colors.cyan.600" | "colors.cyan.700" | "colors.cyan.800" | "colors.cyan.900" | "colors.cyan.950" | "colors.teal.50" | "colors.teal.100" | "colors.teal.200" | "colors.teal.300" | "colors.teal.400" | "colors.teal.500" | "colors.teal.600" | "colors.teal.700" | "colors.teal.800" | "colors.teal.900" | "colors.teal.950" | "colors.emerald.50" | "colors.emerald.100" | "colors.emerald.200" | "colors.emerald.300" | "colors.emerald.400" | "colors.emerald.500" | "colors.emerald.600" | "colors.emerald.700" | "colors.emerald.800" | "colors.emerald.900" | "colors.emerald.950" | "colors.green.50" | "colors.green.100" | "colors.green.200" | "colors.green.300" | "colors.green.400" | "colors.green.500" | "colors.green.600" | "colors.green.700" | "colors.green.800" | "colors.green.900" | "colors.green.950" | "colors.lime.50" | "colors.lime.100" | "colors.lime.200" | "colors.lime.300" | "colors.lime.400" | "colors.lime.500" | "colors.lime.600" | "colors.lime.700" | "colors.lime.800" | "colors.lime.900" | "colors.lime.950" | "colors.yellow.50" | "colors.yellow.100" | "colors.yellow.200" | "colors.yellow.300" | "colors.yellow.400" | "colors.yellow.500" | "colors.yellow.600" | "colors.yellow.700" | "colors.yellow.800" | "colors.yellow.900" | "colors.yellow.950" | "colors.amber.50" | "colors.amber.100" | "colors.amber.200" | "colors.amber.300" | "colors.amber.400" | "colors.amber.500" | "colors.amber.600" | "colors.amber.700" | "colors.amber.800" | "colors.amber.900" | "colors.amber.950" | "colors.orange.50" | "colors.orange.100" | "colors.orange.200" | "colors.orange.300" | "colors.orange.400" | "colors.orange.500" | "colors.orange.600" | "colors.orange.700" | "colors.orange.800" | "colors.orange.900" | "colors.orange.950" | "colors.red.50" | "colors.red.100" | "colors.red.200" | "colors.red.300" | "colors.red.400" | "colors.red.500" | "colors.red.600" | "colors.red.700" | "colors.red.800" | "colors.red.900" | "colors.red.950" | "colors.neutral.50" | "colors.neutral.100" | "colors.neutral.200" | "colors.neutral.300" | "colors.neutral.400" | "colors.neutral.500" | "colors.neutral.600" | "colors.neutral.700" | "colors.neutral.800" | "colors.neutral.900" | "colors.neutral.950" | "colors.stone.50" | "colors.stone.100" | "colors.stone.200" | "colors.stone.300" | "colors.stone.400" | "colors.stone.500" | "colors.stone.600" | "colors.stone.700" | "colors.stone.800" | "colors.stone.900" | "colors.stone.950" | "colors.zinc.50" | "colors.zinc.100" | "colors.zinc.200" | "colors.zinc.300" | "colors.zinc.400" | "colors.zinc.500" | "colors.zinc.600" | "colors.zinc.700" | "colors.zinc.800" | "colors.zinc.900" | "colors.zinc.950" | "colors.gray.50" | "colors.gray.100" | "colors.gray.200" | "colors.gray.300" | "colors.gray.400" | "colors.gray.500" | "colors.gray.600" | "colors.gray.700" | "colors.gray.800" | "colors.gray.900" | "colors.gray.950" | "colors.slate.50" | "colors.slate.100" | "colors.slate.200" | "colors.slate.300" | "colors.slate.400" | "colors.slate.500" | "colors.slate.600" | "colors.slate.700" | "colors.slate.800" | "colors.slate.900" | "colors.slate.950" | "blurs.sm" | "blurs.base" | "blurs.md" | "blurs.lg" | "blurs.xl" | "blurs.2xl" | "blurs.3xl" | "spacing.0" | "spacing.1" | "spacing.2" | "spacing.3" | "spacing.4" | "spacing.5" | "spacing.6" | "spacing.7" | "spacing.8" | "spacing.9" | "spacing.10" | "spacing.11" | "spacing.12" | "spacing.14" | "spacing.16" | "spacing.20" | "spacing.24" | "spacing.28" | "spacing.32" | "spacing.36" | "spacing.40" | "spacing.44" | "spacing.48" | "spacing.52" | "spacing.56" | "spacing.60" | "spacing.64" | "spacing.72" | "spacing.80" | "spacing.96" | "spacing.0.5" | "spacing.1.5" | "spacing.2.5" | "spacing.3.5" | "sizes.0" | "sizes.1" | "sizes.2" | "sizes.3" | "sizes.4" | "sizes.5" | "sizes.6" | "sizes.7" | "sizes.8" | "sizes.9" | "sizes.10" | "sizes.11" | "sizes.12" | "sizes.14" | "sizes.16" | "sizes.20" | "sizes.24" | "sizes.28" | "sizes.32" | "sizes.36" | "sizes.40" | "sizes.44" | "sizes.48" | "sizes.52" | "sizes.56" | "sizes.60" | "sizes.64" | "sizes.72" | "sizes.80" | "sizes.96" | "sizes.0.5" | "sizes.1.5" | "sizes.2.5" | "sizes.3.5" | "sizes.xs" | "sizes.sm" | "sizes.md" | "sizes.lg" | "sizes.xl" | "sizes.2xl" | "sizes.3xl" | "sizes.4xl" | "sizes.5xl" | "sizes.6xl" | "sizes.7xl" | "sizes.8xl" | "sizes.prose" | "sizes.full" | "sizes.min" | "sizes.max" | "sizes.fit" | "sizes.breakpoint-sm" | "sizes.breakpoint-md" | "sizes.breakpoint-lg" | "sizes.breakpoint-xl" | "sizes.breakpoint-2xl" | "animations.spin" | "animations.ping" | "animations.pulse" | "animations.bounce" | "fonts.sans" | "fonts.serif" | "fonts.mono" | "fonts.pretendard" | "breakpoints.sm" | "breakpoints.md" | "breakpoints.lg" | "breakpoints.xl" | "breakpoints.2xl" | "spacing.-1" | "spacing.-2" | "spacing.-3" | "spacing.-4" | "spacing.-5" | "spacing.-6" | "spacing.-7" | "spacing.-8" | "spacing.-9" | "spacing.-10" | "spacing.-11" | "spacing.-12" | "spacing.-14" | "spacing.-16" | "spacing.-20" | "spacing.-24" | "spacing.-28" | "spacing.-32" | "spacing.-36" | "spacing.-40" | "spacing.-44" | "spacing.-48" | "spacing.-52" | "spacing.-56" | "spacing.-60" | "spacing.-64" | "spacing.-72" | "spacing.-80" | "spacing.-96" | "spacing.-0.5" | "spacing.-1.5" | "spacing.-2.5" | "spacing.-3.5" | "colors.colorPalette" | "colors.colorPalette.50" | "colors.colorPalette.100" | "colors.colorPalette.200" | "colors.colorPalette.300" | "colors.colorPalette.400" | "colors.colorPalette.500" | "colors.colorPalette.600" | "colors.colorPalette.700" | "colors.colorPalette.800" | "colors.colorPalette.900" | "colors.colorPalette.950" export type ColorPalette = "current" | "black" | "white" | "transparent" | "rose" | "pink" | "fuchsia" | "purple" | "violet" | "indigo" | "blue" | "sky" | "cyan" | "teal" | "emerald" | "green" | "lime" | "yellow" | "amber" | "orange" | "red" | "neutral" | "stone" | "zinc" | "gray" | "slate" @@ -15,8 +15,6 @@ export type FontWeightToken = "thin" | "extralight" | "light" | "normal" | "medi export type LineHeightToken = "none" | "tight" | "snug" | "normal" | "relaxed" | "loose" -export type FontToken = "sans" | "serif" | "mono" - export type LetterSpacingToken = "tighter" | "tight" | "normal" | "wide" | "wider" | "widest" export type FontSizeToken = "2xs" | "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" @@ -33,9 +31,11 @@ export type SizeToken = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9 export type AnimationToken = "spin" | "ping" | "pulse" | "bounce" +export type FontToken = "sans" | "serif" | "mono" | "pretendard" + export type BreakpointToken = "sm" | "md" | "lg" | "xl" | "2xl" -export type AnimationName = "spin" | "ping" | "pulse" | "bounce" +export type AnimationName = "spin" | "ping" | "pulse" | "bounce" | "gradient" export type Tokens = { borders: BorderToken @@ -44,7 +44,6 @@ export type Tokens = { radii: RadiusToken fontWeights: FontWeightToken lineHeights: LineHeightToken - fonts: FontToken letterSpacings: LetterSpacingToken fontSizes: FontSizeToken shadows: ShadowToken @@ -53,6 +52,7 @@ export type Tokens = { spacing: SpacingToken sizes: SizeToken animations: AnimationToken + fonts: FontToken breakpoints: BreakpointToken animationName: AnimationName } & { [token: string]: never } diff --git a/src/styled-system/types/prop-type.d.ts b/src/styled-system/types/prop-type.d.ts index a22705a6..e57f16f9 100644 --- a/src/styled-system/types/prop-type.d.ts +++ b/src/styled-system/types/prop-type.d.ts @@ -203,7 +203,7 @@ interface PropertyValueTypes { srOnly: boolean; debug: boolean; colorPalette: "current" | "black" | "white" | "transparent" | "rose" | "pink" | "fuchsia" | "purple" | "violet" | "indigo" | "blue" | "sky" | "cyan" | "teal" | "emerald" | "green" | "lime" | "yellow" | "amber" | "orange" | "red" | "neutral" | "stone" | "zinc" | "gray" | "slate"; - textStyle: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl"; + textStyle: "xs" | "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | "4xl" | "5xl" | "6xl" | "7xl" | "8xl" | "9xl" | "title1" | "title2" | "title3" | "subtitle1" | "subtitle2" | "subtitle3" | "subtitle4" | "subtitle5" | "body1" | "body2" | "body3" | "body4" | "caption" | "overline"; } diff --git a/src/styles/font.ts b/src/styles/font.ts new file mode 100644 index 00000000..2d501a2e --- /dev/null +++ b/src/styles/font.ts @@ -0,0 +1,25 @@ +import localFont from 'next/font/local'; + +export const pretendardFont = localFont({ + src: '../assets/fonts/PretendardVariable.woff2', + display: 'swap', + preload: true, + variable: '--pretendard', + fallback: [ + 'Pretendard Variable', + 'Pretendard', + '-apple-system', + 'BlinkMacSystemFont', + 'system-ui', + 'Roboto', + 'Helvetica Neue', + 'Segoe UI', + 'Apple SD Gothic Neo', + 'Noto Sans KR', + 'Malgun Gothic', + 'Apple Color Emoji', + 'Segoe UI Emoji', + 'Segoe UI Symbol', + 'sans-serif', + ], +}); diff --git a/src/styles/typography.ts b/src/styles/typography.ts new file mode 100644 index 00000000..562c110e --- /dev/null +++ b/src/styles/typography.ts @@ -0,0 +1,116 @@ +import { defineTextStyles } from '@pandacss/dev'; + +export const typographyList = defineTextStyles({ + title1: { + value: { + fontFamily: 'pretendard', + fontWeight: '600', + fontSize: '28px', + lineHeight: '34px', + }, + }, + title2: { + value: { + fontFamily: 'pretendard', + fontWeight: '700', + fontSize: '24px', + lineHeight: '30px', + }, + }, + title3: { + value: { + fontFamily: 'pretendard', + fontWeight: '700', + fontSize: '20px', + lineHeight: '26px', + }, + }, + subtitle1: { + value: { + fontFamily: 'pretendard', + fontWeight: '600', + fontSize: '18px', + lineHeight: '22px', + }, + }, + subtitle2: { + value: { + fontFamily: 'pretendard', + fontWeight: '600', + fontSize: '16px', + lineHeight: '20px', + }, + }, + subtitle3: { + value: { + fontFamily: 'pretendard', + fontWeight: '400', + fontSize: '16px', + lineHeight: '20px', + }, + }, + subtitle4: { + value: { + fontFamily: 'pretendard', + fontWeight: '600', + fontSize: '15px', + lineHeight: '19px', + }, + }, + subtitle5: { + value: { + fontFamily: 'pretendard', + fontWeight: '600', + fontSize: '14px', + lineHeight: '18px', + }, + }, + body1: { + value: { + fontFamily: 'pretendard', + fontWeight: '400', + fontSize: '15px', + lineHeight: '18px', + }, + }, + body2: { + value: { + fontFamily: 'pretendard', + fontWeight: '400', + fontSize: '14px', + lineHeight: '17px', + }, + }, + body3: { + value: { + fontFamily: 'pretendard', + fontWeight: '400', + fontSize: '13px', + lineHeight: '16px', + }, + }, + body4: { + value: { + fontFamily: 'pretendard', + fontWeight: '400', + fontSize: '12px', + lineHeight: '15px', + }, + }, + caption: { + value: { + fontFamily: 'pretendard', + fontWeight: '400', + fontSize: '10px', + lineHeight: '16px', + }, + }, + overline: { + value: { + fontFamily: 'pretendard', + fontWeight: '500', + fontSize: '10px', + lineHeight: '16px', + }, + }, +}); diff --git a/tsconfig.json b/tsconfig.json index 86244adc..576f5a35 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,6 +1,6 @@ { "compilerOptions": { - "target": "es5", + "target": "es6", "lib": ["dom", "dom.iterable", "esnext"], "allowJs": true, "skipLibCheck": true, diff --git a/yarn.lock b/yarn.lock index e7cb6748..93154480 100644 --- a/yarn.lock +++ b/yarn.lock @@ -18,6 +18,7 @@ __metadata: "@storybook/blocks": "npm:^7.5.3" "@storybook/nextjs": "npm:^7.5.3" "@storybook/react": "npm:^7.5.3" + "@storybook/test": "npm:^7.6.3" "@storybook/testing-library": "npm:^0.2.2" "@tanstack/react-query": "npm:^4.36.1" "@tanstack/react-query-devtools": "npm:^5.8.4" @@ -30,6 +31,7 @@ __metadata: "@types/react-dom": "npm:^18" "@typescript-eslint/eslint-plugin": "npm:^6.12.0" "@typescript-eslint/parser": "npm:^6.12.0" + chromatic: "npm:^10.0.0" eslint: "npm:^8" eslint-config-next: "npm:14.0.3" eslint-config-prettier: "npm:^9.0.0" @@ -49,6 +51,7 @@ __metadata: react-dom: "npm:^18" storybook: "npm:^7.5.3" typescript: "npm:^5" + webpack: "npm:^5.89.0" languageName: unknown linkType: soft @@ -4092,6 +4095,20 @@ __metadata: languageName: node linkType: hard +"@storybook/channels@npm:7.6.3": + version: 7.6.3 + resolution: "@storybook/channels@npm:7.6.3" + dependencies: + "@storybook/client-logger": "npm:7.6.3" + "@storybook/core-events": "npm:7.6.3" + "@storybook/global": "npm:^5.0.0" + qs: "npm:^6.10.0" + telejson: "npm:^7.2.0" + tiny-invariant: "npm:^1.3.1" + checksum: 378161310e5354985c900c7134584a1c9a31bc6a7ddad6e5f8baad24206b750fdd24a1dc48ef336657079837666923066db3ee1893b3b6bd89c43b458678d940 + languageName: node + linkType: hard + "@storybook/cli@npm:7.5.3": version: 7.5.3 resolution: "@storybook/cli@npm:7.5.3" @@ -4153,6 +4170,15 @@ __metadata: languageName: node linkType: hard +"@storybook/client-logger@npm:7.6.3": + version: 7.6.3 + resolution: "@storybook/client-logger@npm:7.6.3" + dependencies: + "@storybook/global": "npm:^5.0.0" + checksum: d42c003e05c40b0ca1f27abf9d3133f888919ea38eef15a5f605cdb4485da50598a04ec8a04b7dfe31f046ac454e0eab807d14adb22284da9449500ca5a16a39 + languageName: node + linkType: hard + "@storybook/codemod@npm:7.5.3": version: 7.5.3 resolution: "@storybook/codemod@npm:7.5.3" @@ -4246,6 +4272,15 @@ __metadata: languageName: node linkType: hard +"@storybook/core-events@npm:7.6.3": + version: 7.6.3 + resolution: "@storybook/core-events@npm:7.6.3" + dependencies: + ts-dedent: "npm:^2.0.0" + checksum: 635f65d42909cf0e373818f6590f42029d6ccf689a8904618dbc5dfb8f8d736d0f1c59c52ef1daefda3693faec101017d919f99604ff60a7ce03ba286712a49f + languageName: node + linkType: hard + "@storybook/core-server@npm:7.5.3": version: 7.5.3 resolution: "@storybook/core-server@npm:7.5.3" @@ -4344,7 +4379,7 @@ __metadata: languageName: node linkType: hard -"@storybook/csf@npm:^0.1.0": +"@storybook/csf@npm:^0.1.0, @storybook/csf@npm:^0.1.2": version: 0.1.2 resolution: "@storybook/csf@npm:0.1.2" dependencies: @@ -4394,6 +4429,21 @@ __metadata: languageName: node linkType: hard +"@storybook/instrumenter@npm:7.6.3": + version: 7.6.3 + resolution: "@storybook/instrumenter@npm:7.6.3" + dependencies: + "@storybook/channels": "npm:7.6.3" + "@storybook/client-logger": "npm:7.6.3" + "@storybook/core-events": "npm:7.6.3" + "@storybook/global": "npm:^5.0.0" + "@storybook/preview-api": "npm:7.6.3" + "@vitest/utils": "npm:^0.34.6" + util: "npm:^0.12.4" + checksum: d8abd0e6b6934b7511382f9d9aaf6f7c44ac38fe43c93a7d2fdbff62b20c014d889b1d87b0873bf3220124f867f943ca02765a14627801304627fdcda5aa9161 + languageName: node + linkType: hard + "@storybook/manager-api@npm:7.5.3": version: 7.5.3 resolution: "@storybook/manager-api@npm:7.5.3" @@ -4565,6 +4615,28 @@ __metadata: languageName: node linkType: hard +"@storybook/preview-api@npm:7.6.3": + version: 7.6.3 + resolution: "@storybook/preview-api@npm:7.6.3" + dependencies: + "@storybook/channels": "npm:7.6.3" + "@storybook/client-logger": "npm:7.6.3" + "@storybook/core-events": "npm:7.6.3" + "@storybook/csf": "npm:^0.1.2" + "@storybook/global": "npm:^5.0.0" + "@storybook/types": "npm:7.6.3" + "@types/qs": "npm:^6.9.5" + dequal: "npm:^2.0.2" + lodash: "npm:^4.17.21" + memoizerific: "npm:^1.11.3" + qs: "npm:^6.10.0" + synchronous-promise: "npm:^2.0.15" + ts-dedent: "npm:^2.0.0" + util-deprecate: "npm:^1.0.2" + checksum: a661168c5d9bf56ecdb120ef50d698f61fed3f216b997469d7d3b6c1d5e2b421a3799ea496c8e0fbd08b9a070a0edc99c750dead643f122f77046dd4f8945956 + languageName: node + linkType: hard + "@storybook/preview@npm:7.5.3": version: 7.5.3 resolution: "@storybook/preview@npm:7.5.3" @@ -4666,6 +4738,26 @@ __metadata: languageName: node linkType: hard +"@storybook/test@npm:^7.6.3": + version: 7.6.3 + resolution: "@storybook/test@npm:7.6.3" + dependencies: + "@storybook/client-logger": "npm:7.6.3" + "@storybook/core-events": "npm:7.6.3" + "@storybook/instrumenter": "npm:7.6.3" + "@storybook/preview-api": "npm:7.6.3" + "@testing-library/dom": "npm:^9.3.1" + "@testing-library/jest-dom": "npm:^6.1.3" + "@testing-library/user-event": "npm:14.3.0" + "@types/chai": "npm:^4" + "@vitest/expect": "npm:^0.34.2" + "@vitest/spy": "npm:^0.34.1" + chai: "npm:^4.3.7" + util: "npm:^0.12.4" + checksum: 4d15cdf01538bbf1b61285ead44b6bdfcb1b4f3e16a3577b4bd0f3302476997026474bc3aeac06bcaa7b8511897bbab037548fa892b5e1d0b455209daa04f24e + languageName: node + linkType: hard + "@storybook/testing-library@npm:^0.2.2": version: 0.2.2 resolution: "@storybook/testing-library@npm:0.2.2" @@ -4704,6 +4796,18 @@ __metadata: languageName: node linkType: hard +"@storybook/types@npm:7.6.3": + version: 7.6.3 + resolution: "@storybook/types@npm:7.6.3" + dependencies: + "@storybook/channels": "npm:7.6.3" + "@types/babel__core": "npm:^7.0.0" + "@types/express": "npm:^4.7.0" + file-system-cache: "npm:2.3.0" + checksum: 0c1d2caed9b879852f8362ee4f4b80f703e3fc2c9e5e1b0d737fdf13cea63c53c719f1569d9e421977b095a48b112ad2f9ce1ce022b55282355b261a132b5612 + languageName: node + linkType: hard + "@swc/core-darwin-arm64@npm:1.3.99": version: 1.3.99 resolution: "@swc/core-darwin-arm64@npm:1.3.99" @@ -4879,7 +4983,7 @@ __metadata: languageName: node linkType: hard -"@testing-library/dom@npm:^9.0.0": +"@testing-library/dom@npm:^9.0.0, @testing-library/dom@npm:^9.3.1": version: 9.3.3 resolution: "@testing-library/dom@npm:9.3.3" dependencies: @@ -4895,6 +4999,36 @@ __metadata: languageName: node linkType: hard +"@testing-library/jest-dom@npm:^6.1.3": + version: 6.1.5 + resolution: "@testing-library/jest-dom@npm:6.1.5" + dependencies: + "@adobe/css-tools": "npm:^4.3.1" + "@babel/runtime": "npm:^7.9.2" + aria-query: "npm:^5.0.0" + chalk: "npm:^3.0.0" + css.escape: "npm:^1.5.1" + dom-accessibility-api: "npm:^0.5.6" + lodash: "npm:^4.17.15" + redent: "npm:^3.0.0" + peerDependencies: + "@jest/globals": ">= 28" + "@types/jest": ">= 28" + jest: ">= 28" + vitest: ">= 0.32" + peerDependenciesMeta: + "@jest/globals": + optional: true + "@types/jest": + optional: true + jest: + optional: true + vitest: + optional: true + checksum: 3bc45dc9cb6dc49134e79ef636612b8639014bdd8c85c3741a78a92345147d03f9efeefc2f02ad306764a62f8c236b0e0ef3d5a68c16af1c51887be45d253f6b + languageName: node + linkType: hard + "@testing-library/jest-dom@npm:^6.1.4": version: 6.1.4 resolution: "@testing-library/jest-dom@npm:6.1.4" @@ -4939,6 +5073,15 @@ __metadata: languageName: node linkType: hard +"@testing-library/user-event@npm:14.3.0": + version: 14.3.0 + resolution: "@testing-library/user-event@npm:14.3.0" + peerDependencies: + "@testing-library/dom": ">=7.21.4" + checksum: 07aac130b2688ec683819330a661bcc43dd3d58505df83c92484fc9937fabf853a31a75b6ce9a256a69aeddf462ae8c413cf28bbbe458364bf679c24c7134619 + languageName: node + linkType: hard + "@testing-library/user-event@npm:^14.4.0, @testing-library/user-event@npm:^14.5.1": version: 14.5.1 resolution: "@testing-library/user-event@npm:14.5.1" @@ -5025,6 +5168,13 @@ __metadata: languageName: node linkType: hard +"@types/chai@npm:^4": + version: 4.3.11 + resolution: "@types/chai@npm:4.3.11" + checksum: c83a00359684bf06114d5ad0ffa62c78b2fbfe09a985eda56e55cd3c191fe176052aef6e297a8c8a3608efb8ea7a44598cf7e0ae1a3a9311af892417e95b0b28 + languageName: node + linkType: hard + "@types/connect@npm:*": version: 3.4.38 resolution: "@types/connect@npm:3.4.38" @@ -5702,6 +5852,37 @@ __metadata: languageName: node linkType: hard +"@vitest/expect@npm:^0.34.2": + version: 0.34.7 + resolution: "@vitest/expect@npm:0.34.7" + dependencies: + "@vitest/spy": "npm:0.34.7" + "@vitest/utils": "npm:0.34.7" + chai: "npm:^4.3.10" + checksum: 0d2fbacdd022f8ee24400fadb065d701fe514a61f8d8e35c6ca3aeb6949587d917c821abc8550bb5c65f89b1b50919bd7e2fe970a373dc4626ab02abcbf10f07 + languageName: node + linkType: hard + +"@vitest/spy@npm:0.34.7, @vitest/spy@npm:^0.34.1": + version: 0.34.7 + resolution: "@vitest/spy@npm:0.34.7" + dependencies: + tinyspy: "npm:^2.1.1" + checksum: 67d82626e1cc6bf442b7c17d9adcb33f4302d45b8ea02500aa9ec8617a56931759bb6bf1d64cef6469e877d06c094fca8eea1306e6ba94c69f93424f18b791a8 + languageName: node + linkType: hard + +"@vitest/utils@npm:0.34.7, @vitest/utils@npm:^0.34.6": + version: 0.34.7 + resolution: "@vitest/utils@npm:0.34.7" + dependencies: + diff-sequences: "npm:^29.4.3" + loupe: "npm:^2.3.6" + pretty-format: "npm:^29.5.0" + checksum: 720b43f8fece1371aaafc722e5d86e1f5e4334db2aac638002a05cd60f097763ff07ae7e3a99db99f7c282d3f60036b76ee91129cf9f2e877812dd5eb432024f + languageName: node + linkType: hard + "@vscode/emmet-helper@npm:^2.8.4": version: 2.9.2 resolution: "@vscode/emmet-helper@npm:2.9.2" @@ -6481,6 +6662,13 @@ __metadata: languageName: node linkType: hard +"assertion-error@npm:^1.1.0": + version: 1.1.0 + resolution: "assertion-error@npm:1.1.0" + checksum: fd9429d3a3d4fd61782eb3962ae76b6d08aa7383123fca0596020013b3ebd6647891a85b05ce821c47d1471ed1271f00b0545cf6a4326cf2fc91efcc3b0fbecf + languageName: node + linkType: hard + "ast-types-flow@npm:^0.0.8": version: 0.0.8 resolution: "ast-types-flow@npm:0.0.8" @@ -7318,6 +7506,21 @@ __metadata: languageName: node linkType: hard +"chai@npm:^4.3.10, chai@npm:^4.3.7": + version: 4.3.10 + resolution: "chai@npm:4.3.10" + dependencies: + assertion-error: "npm:^1.1.0" + check-error: "npm:^1.0.3" + deep-eql: "npm:^4.1.3" + get-func-name: "npm:^2.0.2" + loupe: "npm:^2.3.6" + pathval: "npm:^1.1.1" + type-detect: "npm:^4.0.8" + checksum: 9e545fd60f5efee4f06f7ad62f7b1b142932b08fbb3454db69defd511e7c58771ce51843764212da1e129b2c9d1b029fbf5f98da030fe67a95a0853e8679524f + languageName: node + linkType: hard + "chalk@npm:5.3.0, chalk@npm:^5.0.0": version: 5.3.0 resolution: "chalk@npm:5.3.0" @@ -7384,6 +7587,15 @@ __metadata: languageName: node linkType: hard +"check-error@npm:^1.0.3": + version: 1.0.3 + resolution: "check-error@npm:1.0.3" + dependencies: + get-func-name: "npm:^2.0.2" + checksum: e2131025cf059b21080f4813e55b3c480419256914601750b0fee3bd9b2b8315b531e551ef12560419b8b6d92a3636511322752b1ce905703239e7cc451b6399 + languageName: node + linkType: hard + "chokidar@npm:^3.5.3": version: 3.5.3 resolution: "chokidar@npm:3.5.3" @@ -7417,6 +7629,17 @@ __metadata: languageName: node linkType: hard +"chromatic@npm:^10.0.0": + version: 10.0.0 + resolution: "chromatic@npm:10.0.0" + bin: + chroma: dist/bin.js + chromatic: dist/bin.js + chromatic-cli: dist/bin.js + checksum: 0c616d6b689c2f37b79f35e885ec71fbacd0fb9267ba85b58be1430fd6a2a98f691abf030e0a22219756fb657110658f856ec491c460c3741c24439c7c179cd5 + languageName: node + linkType: hard + "chrome-trace-event@npm:^1.0.2": version: 1.0.3 resolution: "chrome-trace-event@npm:1.0.3" @@ -8121,6 +8344,15 @@ __metadata: languageName: node linkType: hard +"deep-eql@npm:^4.1.3": + version: 4.1.3 + resolution: "deep-eql@npm:4.1.3" + dependencies: + type-detect: "npm:^4.0.0" + checksum: 12ce93ae63de187e77b076d3d51bfc28b11f98910a22c18714cce112791195e86a94f97788180994614b14562a86c9763f67c69f785e4586f806b5df39bf9301 + languageName: node + linkType: hard + "deep-equal@npm:^2.0.5": version: 2.2.3 resolution: "deep-equal@npm:2.2.3" @@ -8346,7 +8578,7 @@ __metadata: languageName: node linkType: hard -"diff-sequences@npm:^29.6.3": +"diff-sequences@npm:^29.4.3, diff-sequences@npm:^29.6.3": version: 29.6.3 resolution: "diff-sequences@npm:29.6.3" checksum: 179daf9d2f9af5c57ad66d97cb902a538bcf8ed64963fa7aa0c329b3de3665ce2eb6ffdc2f69f29d445fa4af2517e5e55e5b6e00c00a9ae4f43645f97f7078cb @@ -10099,6 +10331,13 @@ __metadata: languageName: node linkType: hard +"get-func-name@npm:^2.0.1, get-func-name@npm:^2.0.2": + version: 2.0.2 + resolution: "get-func-name@npm:2.0.2" + checksum: 3f62f4c23647de9d46e6f76d2b3eafe58933a9b3830c60669e4180d6c601ce1b4aa310ba8366143f55e52b139f992087a9f0647274e8745621fa2af7e0acf13b + languageName: node + linkType: hard + "get-intrinsic@npm:^1.0.2, get-intrinsic@npm:^1.1.1, get-intrinsic@npm:^1.1.3, get-intrinsic@npm:^1.2.0, get-intrinsic@npm:^1.2.1, get-intrinsic@npm:^1.2.2": version: 1.2.2 resolution: "get-intrinsic@npm:1.2.2" @@ -12537,6 +12776,15 @@ __metadata: languageName: node linkType: hard +"loupe@npm:^2.3.6": + version: 2.3.7 + resolution: "loupe@npm:2.3.7" + dependencies: + get-func-name: "npm:^2.0.1" + checksum: 635c8f0914c2ce7ecfe4e239fbaf0ce1d2c00e4246fafcc4ed000bfdb1b8f89d05db1a220054175cca631ebf3894872a26fffba0124477fcb562f78762848fb1 + languageName: node + linkType: hard + "lower-case@npm:^2.0.2": version: 2.0.2 resolution: "lower-case@npm:2.0.2" @@ -14377,6 +14625,13 @@ __metadata: languageName: node linkType: hard +"pathval@npm:^1.1.1": + version: 1.1.1 + resolution: "pathval@npm:1.1.1" + checksum: b50a4751068aa3a5428f5a0b480deecedc6f537666a3630a0c2ae2d5e7c0f4bf0ee77b48404441ec1220bef0c91625e6030b3d3cf5a32ab0d9764018d1d9dbb6 + languageName: node + linkType: hard + "pbkdf2@npm:^3.0.3": version: 3.1.2 resolution: "pbkdf2@npm:3.1.2" @@ -14756,7 +15011,7 @@ __metadata: languageName: node linkType: hard -"pretty-format@npm:^29.0.0, pretty-format@npm:^29.7.0": +"pretty-format@npm:^29.0.0, pretty-format@npm:^29.5.0, pretty-format@npm:^29.7.0": version: 29.7.0 resolution: "pretty-format@npm:29.7.0" dependencies: @@ -16901,6 +17156,13 @@ __metadata: languageName: node linkType: hard +"tinyspy@npm:^2.1.1": + version: 2.2.0 + resolution: "tinyspy@npm:2.2.0" + checksum: bcc5a08c2dc7574d32e6dcc2e760ad95a3cf30249c22799815b6389179427c95573d27d2d965ebc5fca2b6d338c46678cd7337ea2a9cebacee3dc662176b07cb + languageName: node + linkType: hard + "titleize@npm:^3.0.0": version: 3.0.0 resolution: "titleize@npm:3.0.0" @@ -17157,7 +17419,7 @@ __metadata: languageName: node linkType: hard -"type-detect@npm:4.0.8": +"type-detect@npm:4.0.8, type-detect@npm:^4.0.0, type-detect@npm:^4.0.8": version: 4.0.8 resolution: "type-detect@npm:4.0.8" checksum: 5179e3b8ebc51fce1b13efb75fdea4595484433f9683bbc2dca6d99789dba4e602ab7922d2656f2ce8383987467f7770131d4a7f06a26287db0615d2f4c4ce7d @@ -18107,7 +18369,7 @@ __metadata: languageName: node linkType: hard -"webpack@npm:5": +"webpack@npm:5, webpack@npm:^5.89.0": version: 5.89.0 resolution: "webpack@npm:5.89.0" dependencies: