From c9d9ef40c4f5a0dae090638d57698742393480bc Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Fri, 2 Aug 2024 01:02:11 +0900 Subject: [PATCH 01/42] =?UTF-8?q?=F0=9F=94=A8=20settings:=20svgr/webpack?= =?UTF-8?q?=20=EC=84=A4=EC=B9=98=20#13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 1 + pnpm-lock.yaml | 328 +++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 329 insertions(+) diff --git a/package.json b/package.json index aacaeb6..b19cacb 100644 --- a/package.json +++ b/package.json @@ -39,6 +39,7 @@ "@storybook/nextjs": "^8.2.6", "@storybook/react": "^8.2.6", "@storybook/test": "^8.2.6", + "@svgr/webpack": "^8.1.0", "@t3-oss/env-nextjs": "^0.10.1", "@tanstack/eslint-plugin-query": "^5.50.1", "@types/node": "^20", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 54585ba..aea3470 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -78,6 +78,9 @@ importers: '@storybook/test': specifier: ^8.2.6 version: 8.2.6(storybook@8.2.6(@babel/preset-env@7.25.2(@babel/core@7.25.2))) + '@svgr/webpack': + specifier: ^8.1.0 + version: 8.1.0(typescript@5.5.3) '@t3-oss/env-nextjs': specifier: ^0.10.1 version: 0.10.1(typescript@5.5.3)(zod@3.23.8) @@ -684,6 +687,12 @@ packages: peerDependencies: '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-constant-elements@7.25.1': + resolution: {integrity: sha512-SLV/giH/V4SmloZ6Dt40HjTGTAIkxn33TVIHxNGNvo8ezMhrxBkzisj4op1KZYPIOHFLqhv60OHvX+YRu4xbmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + '@babel/plugin-transform-react-display-name@7.24.7': resolution: {integrity: sha512-H/Snz9PFxKsS1JLI4dJLtnJgCJRoo0AUm3chP6NYr+9En1JMKloheEiLIhlp5MDVznWo+H3AAC1Mc8lmUEpsgg==} engines: {node: '>=6.9.0'} @@ -2110,6 +2119,84 @@ packages: peerDependencies: storybook: ^8.2.6 + '@svgr/babel-plugin-add-jsx-attribute@8.0.0': + resolution: {integrity: sha512-b9MIk7yhdS1pMCZM8VeNfUlSKVRhsHZNMl5O9SfaX0l0t5wjdgu4IDzGB8bpnGBBOjGST3rRFVsaaEtI4W6f7g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0': + resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0': + resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0': + resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0': + resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0': + resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0': + resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-plugin-transform-svg-component@8.0.0': + resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} + engines: {node: '>=12'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/babel-preset@8.1.0': + resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} + engines: {node: '>=14'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@svgr/core@8.1.0': + resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} + engines: {node: '>=14'} + + '@svgr/hast-util-to-babel-ast@8.0.0': + resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} + engines: {node: '>=14'} + + '@svgr/plugin-jsx@8.1.0': + resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/plugin-svgo@8.1.0': + resolution: {integrity: sha512-Ywtl837OGO9pTLIN/onoWLmDQ4zFUycI1g76vuKGEz6evR/ZTJlJuz3G/fIkb6OVBJ2g0o6CGJzaEjfmEo3AHA==} + engines: {node: '>=14'} + peerDependencies: + '@svgr/core': '*' + + '@svgr/webpack@8.1.0': + resolution: {integrity: sha512-LnhVjMWyMQV9ZmeEy26maJk+8HTIbd59cH4F2MJ439k9DqejRisfFNGAPvRYlKETuh9LrImlS8aKsBgKjMA8WA==} + engines: {node: '>=14'} + '@swc/counter@0.1.3': resolution: {integrity: sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==} @@ -2187,6 +2274,10 @@ packages: peerDependencies: '@testing-library/dom': '>=7.21.4' + '@trysound/sax@0.2.0': + resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==} + engines: {node: '>=10.13.0'} + '@types/aria-query@5.0.4': resolution: {integrity: sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==} @@ -2875,6 +2966,10 @@ packages: resolution: {integrity: sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==} engines: {node: '>= 6'} + camelcase@6.3.0: + resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} + engines: {node: '>=10'} + caniuse-lite@1.0.30001640: resolution: {integrity: sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==} @@ -3023,6 +3118,10 @@ packages: resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} engines: {node: '>= 6'} + commander@7.2.0: + resolution: {integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==} + engines: {node: '>= 10'} + commander@8.3.0: resolution: {integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==} engines: {node: '>= 12'} @@ -3099,6 +3198,15 @@ packages: resolution: {integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==} engines: {node: '>=10'} + cosmiconfig@8.3.6: + resolution: {integrity: sha512-kcZ6+W5QzcJ3P1Mt+83OUv/oHFqZHIx8DuxG6eZ5RGMERoLqp4BuGjhHLYGK+Kf5XVkQvqBSmAy/nGWN3qDgEA==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + cosmiconfig@9.0.0: resolution: {integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==} engines: {node: '>=14'} @@ -3143,6 +3251,17 @@ packages: css-select@4.3.0: resolution: {integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==} + css-select@5.1.0: + resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} + + css-tree@2.2.1: + resolution: {integrity: sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + + css-tree@2.3.1: + resolution: {integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} @@ -3155,6 +3274,10 @@ packages: engines: {node: '>=4'} hasBin: true + csso@5.0.5: + resolution: {integrity: sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0, npm: '>=7.0.0'} + csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -3305,6 +3428,9 @@ packages: dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} + dom-serializer@2.0.0: + resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} + domain-browser@4.23.0: resolution: {integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==} engines: {node: '>=10'} @@ -3316,9 +3442,16 @@ packages: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} engines: {node: '>= 4'} + domhandler@5.0.3: + resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} + engines: {node: '>= 4'} + domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} + domutils@3.1.0: + resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} + dot-case@3.0.4: resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} @@ -3361,6 +3494,10 @@ packages: entities@2.2.0: resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==} + entities@4.5.0: + resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} + engines: {node: '>=0.12'} + env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -4487,6 +4624,12 @@ packages: md5.js@1.3.5: resolution: {integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==} + mdn-data@2.0.28: + resolution: {integrity: sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==} + + mdn-data@2.0.30: + resolution: {integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==} + media-typer@0.3.0: resolution: {integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==} engines: {node: '>= 0.6'} @@ -5476,6 +5619,9 @@ packages: resolution: {integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==} engines: {node: '>=14.16'} + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + source-map-js@1.2.0: resolution: {integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==} engines: {node: '>=0.10.0'} @@ -5639,6 +5785,14 @@ packages: resolution: {integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==} engines: {node: '>= 0.4'} + svg-parser@2.0.4: + resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} + + svgo@3.3.2: + resolution: {integrity: sha512-OoohrmuUlBs8B8o6MB2Aevn+pRIH9zDALSR+6hhqVfa6fRwG/Qw9VUMSMW9VNg2CFc/MTIfabtdOVl9ODIJjpw==} + engines: {node: '>=14.0.0'} + hasBin: true + synckit@0.8.8: resolution: {integrity: sha512-HwOKAP7Wc5aRGYdKH+dw0PRRpbO841v2DENBtjnR5HFWoiNByAl7vrx3p0G/rCyYXQsrxqtX48TImFtPcIHSpQ==} engines: {node: ^14.18.0 || >=16.0.0} @@ -6714,6 +6868,11 @@ snapshots: '@babel/core': 7.25.2 '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-transform-react-constant-elements@7.25.1(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@babel/helper-plugin-utils': 7.24.8 + '@babel/plugin-transform-react-display-name@7.24.7(@babel/core@7.25.2)': dependencies: '@babel/core': 7.25.2 @@ -8439,6 +8598,99 @@ snapshots: dependencies: storybook: 8.2.6(@babel/preset-env@7.25.2(@babel/core@7.25.2)) + '@svgr/babel-plugin-add-jsx-attribute@8.0.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + + '@svgr/babel-preset@8.1.0(@babel/core@7.25.2)': + dependencies: + '@babel/core': 7.25.2 + '@svgr/babel-plugin-add-jsx-attribute': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-remove-jsx-attribute': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-remove-jsx-empty-expression': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-replace-jsx-attribute-value': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-svg-dynamic-title': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.25.2) + '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.25.2) + '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.25.2) + + '@svgr/core@8.1.0(typescript@5.5.3)': + dependencies: + '@babel/core': 7.25.2 + '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) + camelcase: 6.3.0 + cosmiconfig: 8.3.6(typescript@5.5.3) + snake-case: 3.0.4 + transitivePeerDependencies: + - supports-color + - typescript + + '@svgr/hast-util-to-babel-ast@8.0.0': + dependencies: + '@babel/types': 7.25.2 + entities: 4.5.0 + + '@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0(typescript@5.5.3))': + dependencies: + '@babel/core': 7.25.2 + '@svgr/babel-preset': 8.1.0(@babel/core@7.25.2) + '@svgr/core': 8.1.0(typescript@5.5.3) + '@svgr/hast-util-to-babel-ast': 8.0.0 + svg-parser: 2.0.4 + transitivePeerDependencies: + - supports-color + + '@svgr/plugin-svgo@8.1.0(@svgr/core@8.1.0(typescript@5.5.3))(typescript@5.5.3)': + dependencies: + '@svgr/core': 8.1.0(typescript@5.5.3) + cosmiconfig: 8.3.6(typescript@5.5.3) + deepmerge: 4.3.1 + svgo: 3.3.2 + transitivePeerDependencies: + - typescript + + '@svgr/webpack@8.1.0(typescript@5.5.3)': + dependencies: + '@babel/core': 7.25.2 + '@babel/plugin-transform-react-constant-elements': 7.25.1(@babel/core@7.25.2) + '@babel/preset-env': 7.25.2(@babel/core@7.25.2) + '@babel/preset-react': 7.24.7(@babel/core@7.25.2) + '@babel/preset-typescript': 7.24.7(@babel/core@7.25.2) + '@svgr/core': 8.1.0(typescript@5.5.3) + '@svgr/plugin-jsx': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3)) + '@svgr/plugin-svgo': 8.1.0(@svgr/core@8.1.0(typescript@5.5.3))(typescript@5.5.3) + transitivePeerDependencies: + - supports-color + - typescript + '@swc/counter@0.1.3': {} '@swc/helpers@0.5.5': @@ -8508,6 +8760,8 @@ snapshots: dependencies: '@testing-library/dom': 10.1.0 + '@trysound/sax@0.2.0': {} + '@types/aria-query@5.0.4': {} '@types/babel__core@7.20.5': @@ -9369,6 +9623,8 @@ snapshots: camelcase-css@2.0.1: {} + camelcase@6.3.0: {} + caniuse-lite@1.0.30001640: {} case-sensitive-paths-webpack-plugin@2.4.0: {} @@ -9507,6 +9763,8 @@ snapshots: commander@6.2.1: {} + commander@7.2.0: {} + commander@8.3.0: {} commitizen@4.3.0(@types/node@20.14.10)(typescript@5.5.3): @@ -9583,6 +9841,15 @@ snapshots: path-type: 4.0.0 yaml: 1.10.2 + cosmiconfig@8.3.6(typescript@5.5.3): + dependencies: + import-fresh: 3.3.0 + js-yaml: 4.1.0 + parse-json: 5.2.0 + path-type: 4.0.0 + optionalDependencies: + typescript: 5.5.3 + cosmiconfig@9.0.0(typescript@5.5.3): dependencies: env-paths: 2.2.1 @@ -9659,12 +9926,34 @@ snapshots: domutils: 2.8.0 nth-check: 2.1.1 + css-select@5.1.0: + dependencies: + boolbase: 1.0.0 + css-what: 6.1.0 + domhandler: 5.0.3 + domutils: 3.1.0 + nth-check: 2.1.1 + + css-tree@2.2.1: + dependencies: + mdn-data: 2.0.28 + source-map-js: 1.2.0 + + css-tree@2.3.1: + dependencies: + mdn-data: 2.0.30 + source-map-js: 1.2.0 + css-what@6.1.0: {} css.escape@1.5.1: {} cssesc@3.0.0: {} + csso@5.0.5: + dependencies: + css-tree: 2.2.1 + csstype@3.1.3: {} cz-conventional-changelog@3.3.0(@types/node@20.14.10)(typescript@5.5.3): @@ -9829,6 +10118,12 @@ snapshots: domhandler: 4.3.1 entities: 2.2.0 + dom-serializer@2.0.0: + dependencies: + domelementtype: 2.3.0 + domhandler: 5.0.3 + entities: 4.5.0 + domain-browser@4.23.0: {} domelementtype@2.3.0: {} @@ -9837,12 +10132,22 @@ snapshots: dependencies: domelementtype: 2.3.0 + domhandler@5.0.3: + dependencies: + domelementtype: 2.3.0 + domutils@2.8.0: dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 + domutils@3.1.0: + dependencies: + dom-serializer: 2.0.0 + domelementtype: 2.3.0 + domhandler: 5.0.3 + dot-case@3.0.4: dependencies: no-case: 3.0.4 @@ -9887,6 +10192,8 @@ snapshots: entities@2.2.0: {} + entities@4.5.0: {} + env-paths@2.2.1: {} envinfo@7.13.0: {} @@ -11282,6 +11589,10 @@ snapshots: inherits: 2.0.4 safe-buffer: 5.2.1 + mdn-data@2.0.28: {} + + mdn-data@2.0.30: {} + media-typer@0.3.0: {} memfs@3.5.3: @@ -12347,6 +12658,11 @@ snapshots: slash@5.1.0: {} + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.6.3 + source-map-js@1.2.0: {} source-map-support@0.5.21: @@ -12551,6 +12867,18 @@ snapshots: supports-preserve-symlinks-flag@1.0.0: {} + svg-parser@2.0.4: {} + + svgo@3.3.2: + dependencies: + '@trysound/sax': 0.2.0 + commander: 7.2.0 + css-select: 5.1.0 + css-tree: 2.3.1 + css-what: 6.1.0 + csso: 5.0.5 + picocolors: 1.0.1 + synckit@0.8.8: dependencies: '@pkgr/core': 0.1.1 From 4ae869b3333b9a165b5f1e55d5a09a9772adb39c Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Fri, 2 Aug 2024 01:03:54 +0900 Subject: [PATCH 02/42] =?UTF-8?q?=F0=9F=94=A8=20settings:=20svg=20setting?= =?UTF-8?q?=20in=20nextjs.config=20#13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- next.config.mjs | 32 ++++++++++++++++++++++++++++++-- 1 file changed, 30 insertions(+), 2 deletions(-) diff --git a/next.config.mjs b/next.config.mjs index 65bc706..0cb182d 100644 --- a/next.config.mjs +++ b/next.config.mjs @@ -5,9 +5,37 @@ import { fileURLToPath } from "node:url"; import createJiti from "jiti"; const jiti = createJiti(fileURLToPath(import.meta.url)); -// Import env here to validate during build. Using jiti we can import .ts files :) +// 빌드 중에 검증을 위해 여기에서 env를 가져옵니다. jiti를 사용하여 .ts 파일을 가져올 수 있습니다 :) jiti("./src/env"); -const nextConfig = {}; +const nextConfig = { + webpack(config) { + // SVG 가져오기를 처리하는 기존 규칙을 가져옵니다. + const fileLoaderRule = config.module.rules.find((rule) => + rule.test?.test?.(".svg"), + ); + + config.module.rules.push( + // 기존 규칙을 다시 적용하지만, ?url로 끝나는 svg 가져오기만 해당합니다. + { + ...fileLoaderRule, + test: /\.svg$/i, + resourceQuery: /url/, // *.svg?url + }, + // 다른 모든 *.svg 가져오기를 React 컴포넌트로 변환합니다. + { + test: /\.svg$/i, + issuer: fileLoaderRule.issuer, + resourceQuery: { not: [...fileLoaderRule.resourceQuery.not, /url/] }, // exclude if *.svg?url + use: ["@svgr/webpack"], + }, + ); + + // 이제 우리가 처리했으므로 *.svg를 무시하도록 파일 로더 규칙을 수정합니다. + fileLoaderRule.exclude = /\.svg$/i; + + return config; + }, +}; export default nextConfig; From ac2f9afca77f298431049888d4bf2ee24850a854 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Fri, 2 Aug 2024 01:06:11 +0900 Subject: [PATCH 03/42] =?UTF-8?q?=F0=9F=94=A8=20settings:=20svgr=20?= =?UTF-8?q?=EA=B8=80=EB=A1=9C=EB=B2=8C=20=ED=83=80=EC=9E=85=20=EC=84=A0?= =?UTF-8?q?=EC=96=B8=20#13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tsconfig.json | 3 +-- types/svgr.d.ts | 5 +++++ 2 files changed, 6 insertions(+), 2 deletions(-) create mode 100644 types/svgr.d.ts diff --git a/tsconfig.json b/tsconfig.json index 2860c64..9caa7db 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -19,12 +19,11 @@ ], "paths": { "@/*": ["./src/*"], - "@env": ["./src/env/index.ts"], "@font": ["./src/app/fonts/index.ts"] } }, "include": [ - "next-env.d.ts", + "./types/*.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", diff --git a/types/svgr.d.ts b/types/svgr.d.ts new file mode 100644 index 0000000..a4df759 --- /dev/null +++ b/types/svgr.d.ts @@ -0,0 +1,5 @@ +declare module "*.svg" { + import React from "react"; + const svg: React.FC>; + export default svg; +} From 333d2cdf00d925593b09ab48678a88fc8417b65b Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Fri, 2 Aug 2024 01:10:53 +0900 Subject: [PATCH 04/42] =?UTF-8?q?=F0=9F=92=85=20style:=20svg=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20fill=3D"currentColor"=20=EC=84=A4=EC=A0=95=20?= =?UTF-8?q?=EB=B0=8F=20re-export=20=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1?= =?UTF-8?q?=20#13?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.tsx | 11 ++++++- src/components/icons/ALARM_ICON.svg | 5 +++ .../icons/ARROW_BACK_ANDROID_ICON.svg | 3 ++ src/components/icons/ARROW_DECREASE_ICON.svg | 3 ++ src/components/icons/ARROW_INCREASE_ICON.svg | 3 ++ .../icons/ARROW_LEFT_SMALL_ICON.svg | 3 ++ .../icons/ARROW_RIGHT_ANDROID_ICON.svg | 3 ++ .../icons/ARROW_RIGHT_SMALL_ICON.svg | 3 ++ src/components/icons/CALENDAR_CHECK_ICON.svg | 3 ++ src/components/icons/CAMERA_ICON.svg | 4 +++ .../icons/CHAT_BUBBLE_DOTS_ICON.svg | 3 ++ src/components/icons/CHAT_BUBBLE_ICON.svg | 3 ++ src/components/icons/CHECK_ICON.svg | 3 ++ src/components/icons/CLOCK_ICON.svg | 3 ++ src/components/icons/DOTS_ICON.svg | 3 ++ src/components/icons/DOWNLOAD_ICON.svg | 4 +++ src/components/icons/FILTER_ICON.svg | 3 ++ src/components/icons/HEART_ICON.svg | 3 ++ src/components/icons/HOME_ICON.svg | 3 ++ src/components/icons/LOCK_ICON.svg | 3 ++ src/components/icons/PICTURE_ICON.svg | 3 ++ src/components/icons/PIN_LOCATION_ICON.svg | 3 ++ src/components/icons/PLUS_ICON.svg | 3 ++ src/components/icons/SEARCH_ICON.svg | 3 ++ src/components/icons/SETTING_ICON.svg | 3 ++ src/components/icons/SHARE_ICON.svg | 4 +++ src/components/icons/STACK_UP_SQUARE_ICON.svg | 5 +++ src/components/icons/STAR_ICON.svg | 3 ++ src/components/icons/TRASH_ICON.svg | 3 ++ src/components/icons/TWINKLE_CIRCLE_ICON.svg | 3 ++ src/components/icons/USER_ICON.svg | 3 ++ src/components/icons/USER_SQUARE_ICON.svg | 3 ++ .../icons/WARNING_TRIANGLE_ICON.svg | 3 ++ src/components/icons/X_ICON.svg | 3 ++ src/components/icons/index.ts | 33 +++++++++++++++++++ 35 files changed, 149 insertions(+), 1 deletion(-) create mode 100644 src/components/icons/ALARM_ICON.svg create mode 100644 src/components/icons/ARROW_BACK_ANDROID_ICON.svg create mode 100644 src/components/icons/ARROW_DECREASE_ICON.svg create mode 100644 src/components/icons/ARROW_INCREASE_ICON.svg create mode 100644 src/components/icons/ARROW_LEFT_SMALL_ICON.svg create mode 100644 src/components/icons/ARROW_RIGHT_ANDROID_ICON.svg create mode 100644 src/components/icons/ARROW_RIGHT_SMALL_ICON.svg create mode 100644 src/components/icons/CALENDAR_CHECK_ICON.svg create mode 100644 src/components/icons/CAMERA_ICON.svg create mode 100644 src/components/icons/CHAT_BUBBLE_DOTS_ICON.svg create mode 100644 src/components/icons/CHAT_BUBBLE_ICON.svg create mode 100644 src/components/icons/CHECK_ICON.svg create mode 100644 src/components/icons/CLOCK_ICON.svg create mode 100644 src/components/icons/DOTS_ICON.svg create mode 100644 src/components/icons/DOWNLOAD_ICON.svg create mode 100644 src/components/icons/FILTER_ICON.svg create mode 100644 src/components/icons/HEART_ICON.svg create mode 100644 src/components/icons/HOME_ICON.svg create mode 100644 src/components/icons/LOCK_ICON.svg create mode 100644 src/components/icons/PICTURE_ICON.svg create mode 100644 src/components/icons/PIN_LOCATION_ICON.svg create mode 100644 src/components/icons/PLUS_ICON.svg create mode 100644 src/components/icons/SEARCH_ICON.svg create mode 100644 src/components/icons/SETTING_ICON.svg create mode 100644 src/components/icons/SHARE_ICON.svg create mode 100644 src/components/icons/STACK_UP_SQUARE_ICON.svg create mode 100644 src/components/icons/STAR_ICON.svg create mode 100644 src/components/icons/TRASH_ICON.svg create mode 100644 src/components/icons/TWINKLE_CIRCLE_ICON.svg create mode 100644 src/components/icons/USER_ICON.svg create mode 100644 src/components/icons/USER_SQUARE_ICON.svg create mode 100644 src/components/icons/WARNING_TRIANGLE_ICON.svg create mode 100644 src/components/icons/X_ICON.svg create mode 100644 src/components/icons/index.ts diff --git a/src/app/page.tsx b/src/app/page.tsx index 43caf5f..7607c07 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,7 +1,16 @@ +import { CAMERA_ICON } from "@/components/icons"; + export default function Home() { return ( -
+
+
+ +
diff --git a/src/components/icons/ALARM_ICON.svg b/src/components/icons/ALARM_ICON.svg new file mode 100644 index 0000000..9fac115 --- /dev/null +++ b/src/components/icons/ALARM_ICON.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/components/icons/ARROW_BACK_ANDROID_ICON.svg b/src/components/icons/ARROW_BACK_ANDROID_ICON.svg new file mode 100644 index 0000000..55b8629 --- /dev/null +++ b/src/components/icons/ARROW_BACK_ANDROID_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/ARROW_DECREASE_ICON.svg b/src/components/icons/ARROW_DECREASE_ICON.svg new file mode 100644 index 0000000..1b30978 --- /dev/null +++ b/src/components/icons/ARROW_DECREASE_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/ARROW_INCREASE_ICON.svg b/src/components/icons/ARROW_INCREASE_ICON.svg new file mode 100644 index 0000000..3f867e2 --- /dev/null +++ b/src/components/icons/ARROW_INCREASE_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/ARROW_LEFT_SMALL_ICON.svg b/src/components/icons/ARROW_LEFT_SMALL_ICON.svg new file mode 100644 index 0000000..684708d --- /dev/null +++ b/src/components/icons/ARROW_LEFT_SMALL_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/ARROW_RIGHT_ANDROID_ICON.svg b/src/components/icons/ARROW_RIGHT_ANDROID_ICON.svg new file mode 100644 index 0000000..244a11a --- /dev/null +++ b/src/components/icons/ARROW_RIGHT_ANDROID_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/ARROW_RIGHT_SMALL_ICON.svg b/src/components/icons/ARROW_RIGHT_SMALL_ICON.svg new file mode 100644 index 0000000..f467c91 --- /dev/null +++ b/src/components/icons/ARROW_RIGHT_SMALL_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/CALENDAR_CHECK_ICON.svg b/src/components/icons/CALENDAR_CHECK_ICON.svg new file mode 100644 index 0000000..a2ab2df --- /dev/null +++ b/src/components/icons/CALENDAR_CHECK_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/CAMERA_ICON.svg b/src/components/icons/CAMERA_ICON.svg new file mode 100644 index 0000000..f64aa80 --- /dev/null +++ b/src/components/icons/CAMERA_ICON.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/icons/CHAT_BUBBLE_DOTS_ICON.svg b/src/components/icons/CHAT_BUBBLE_DOTS_ICON.svg new file mode 100644 index 0000000..469a99b --- /dev/null +++ b/src/components/icons/CHAT_BUBBLE_DOTS_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/CHAT_BUBBLE_ICON.svg b/src/components/icons/CHAT_BUBBLE_ICON.svg new file mode 100644 index 0000000..0f4d6e8 --- /dev/null +++ b/src/components/icons/CHAT_BUBBLE_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/CHECK_ICON.svg b/src/components/icons/CHECK_ICON.svg new file mode 100644 index 0000000..38fca3b --- /dev/null +++ b/src/components/icons/CHECK_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/CLOCK_ICON.svg b/src/components/icons/CLOCK_ICON.svg new file mode 100644 index 0000000..874ca95 --- /dev/null +++ b/src/components/icons/CLOCK_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/DOTS_ICON.svg b/src/components/icons/DOTS_ICON.svg new file mode 100644 index 0000000..3080c71 --- /dev/null +++ b/src/components/icons/DOTS_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/DOWNLOAD_ICON.svg b/src/components/icons/DOWNLOAD_ICON.svg new file mode 100644 index 0000000..4888f03 --- /dev/null +++ b/src/components/icons/DOWNLOAD_ICON.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/icons/FILTER_ICON.svg b/src/components/icons/FILTER_ICON.svg new file mode 100644 index 0000000..f0da049 --- /dev/null +++ b/src/components/icons/FILTER_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/HEART_ICON.svg b/src/components/icons/HEART_ICON.svg new file mode 100644 index 0000000..991f35b --- /dev/null +++ b/src/components/icons/HEART_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/HOME_ICON.svg b/src/components/icons/HOME_ICON.svg new file mode 100644 index 0000000..986816b --- /dev/null +++ b/src/components/icons/HOME_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/LOCK_ICON.svg b/src/components/icons/LOCK_ICON.svg new file mode 100644 index 0000000..35f7443 --- /dev/null +++ b/src/components/icons/LOCK_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/PICTURE_ICON.svg b/src/components/icons/PICTURE_ICON.svg new file mode 100644 index 0000000..67979bd --- /dev/null +++ b/src/components/icons/PICTURE_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/PIN_LOCATION_ICON.svg b/src/components/icons/PIN_LOCATION_ICON.svg new file mode 100644 index 0000000..6e4e2ef --- /dev/null +++ b/src/components/icons/PIN_LOCATION_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/PLUS_ICON.svg b/src/components/icons/PLUS_ICON.svg new file mode 100644 index 0000000..a3731c3 --- /dev/null +++ b/src/components/icons/PLUS_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/SEARCH_ICON.svg b/src/components/icons/SEARCH_ICON.svg new file mode 100644 index 0000000..1cc27b8 --- /dev/null +++ b/src/components/icons/SEARCH_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/SETTING_ICON.svg b/src/components/icons/SETTING_ICON.svg new file mode 100644 index 0000000..be676be --- /dev/null +++ b/src/components/icons/SETTING_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/SHARE_ICON.svg b/src/components/icons/SHARE_ICON.svg new file mode 100644 index 0000000..c6f75e0 --- /dev/null +++ b/src/components/icons/SHARE_ICON.svg @@ -0,0 +1,4 @@ + + + + diff --git a/src/components/icons/STACK_UP_SQUARE_ICON.svg b/src/components/icons/STACK_UP_SQUARE_ICON.svg new file mode 100644 index 0000000..2a15dc9 --- /dev/null +++ b/src/components/icons/STACK_UP_SQUARE_ICON.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/src/components/icons/STAR_ICON.svg b/src/components/icons/STAR_ICON.svg new file mode 100644 index 0000000..30eb54d --- /dev/null +++ b/src/components/icons/STAR_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/TRASH_ICON.svg b/src/components/icons/TRASH_ICON.svg new file mode 100644 index 0000000..47804ce --- /dev/null +++ b/src/components/icons/TRASH_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/TWINKLE_CIRCLE_ICON.svg b/src/components/icons/TWINKLE_CIRCLE_ICON.svg new file mode 100644 index 0000000..49585d2 --- /dev/null +++ b/src/components/icons/TWINKLE_CIRCLE_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/USER_ICON.svg b/src/components/icons/USER_ICON.svg new file mode 100644 index 0000000..4b04df8 --- /dev/null +++ b/src/components/icons/USER_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/USER_SQUARE_ICON.svg b/src/components/icons/USER_SQUARE_ICON.svg new file mode 100644 index 0000000..aae3ad5 --- /dev/null +++ b/src/components/icons/USER_SQUARE_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/WARNING_TRIANGLE_ICON.svg b/src/components/icons/WARNING_TRIANGLE_ICON.svg new file mode 100644 index 0000000..e8fbc9e --- /dev/null +++ b/src/components/icons/WARNING_TRIANGLE_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/X_ICON.svg b/src/components/icons/X_ICON.svg new file mode 100644 index 0000000..f5dff90 --- /dev/null +++ b/src/components/icons/X_ICON.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/components/icons/index.ts b/src/components/icons/index.ts new file mode 100644 index 0000000..cae8515 --- /dev/null +++ b/src/components/icons/index.ts @@ -0,0 +1,33 @@ +export { default as ALARM_ICON } from "./ALARM_ICON.svg"; +export { default as ARROW_BACK_ANDROID_ICON } from "./ARROW_BACK_ANDROID_ICON.svg"; +export { default as ARROW_DECREASE_ICON } from "./ARROW_DECREASE_ICON.svg"; +export { default as ARROW_INCREASE_ICON } from "./ARROW_INCREASE_ICON.svg"; +export { default as ARROW_LEFT_SMALL_ICON } from "./ARROW_LEFT_SMALL_ICON.svg"; +export { default as ARROW_RIGHT_ANDROID_ICON } from "./ARROW_RIGHT_ANDROID_ICON.svg"; +export { default as ARROW_RIGHT_SMALL_ICON } from "./ARROW_RIGHT_SMALL_ICON.svg"; +export { default as CALENDAR_CHECK_ICON } from "./CALENDAR_CHECK_ICON.svg"; +export { default as CAMERA_ICON } from "./CAMERA_ICON.svg"; +export { default as CHAT_BUBBLE_DOTS_ICON } from "./CHAT_BUBBLE_DOTS_ICON.svg"; +export { default as CHAT_BUBBLE_ICON } from "./CHAT_BUBBLE_ICON.svg"; +export { default as CHECK_ICON } from "./CHECK_ICON.svg"; +export { default as CLOCK_ICON } from "./CLOCK_ICON.svg"; +export { default as DOTS_ICON } from "./DOTS_ICON.svg"; +export { default as DOWNLOAD_ICON } from "./DOWNLOAD_ICON.svg"; +export { default as FILTER_ICON } from "./FILTER_ICON.svg"; +export { default as HEART_ICON } from "./HEART_ICON.svg"; +export { default as HOME_ICON } from "./HOME_ICON.svg"; +export { default as LOCK_ICON } from "./LOCK_ICON.svg"; +export { default as PICTURE_ICON } from "./PICTURE_ICON.svg"; +export { default as PIN_LOCATION_ICON } from "./PIN_LOCATION_ICON.svg"; +export { default as PLUS_ICON } from "./PLUS_ICON.svg"; +export { default as SEARCH_ICON } from "./SEARCH_ICON.svg"; +export { default as SETTING_ICON } from "./SETTING_ICON.svg"; +export { default as SHARE_ICON } from "./SHARE_ICON.svg"; +export { default as STACK_UP_SQUARE_ICON } from "./STACK_UP_SQUARE_ICON.svg"; +export { default as STAR_ICON } from "./STAR_ICON.svg"; +export { default as TRASH_ICON } from "./TRASH_ICON.svg"; +export { default as TWINKLE_CIRCLE_ICON } from "./TWINKLE_CIRCLE_ICON.svg"; +export { default as USER_ICON } from "./USER_ICON.svg"; +export { default as USER_SQUARE_ICON } from "./USER_SQUARE_ICON.svg"; +export { default as WARNING_TRIANGLE_ICON } from "./WARNING_TRIANGLE_ICON.svg"; +export { default as X_ICON } from "./X_ICON.svg"; From a676927e50dbe250e6b0897c3a807d542ba49eaa Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Fri, 2 Aug 2024 03:19:17 +0900 Subject: [PATCH 05/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20.keep=20=EC=82=AD?= =?UTF-8?q?=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/.keep | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 src/components/.keep diff --git a/src/components/.keep b/src/components/.keep deleted file mode 100644 index e69de29..0000000 From ce50437d73b0334fca028d02342e3cd86a66f713 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Fri, 2 Aug 2024 03:49:55 +0900 Subject: [PATCH 06/42] =?UTF-8?q?=F0=9F=92=85=20style:=20add=20dummy=20sto?= =?UTF-8?q?ries=20for=20chromatic=20build?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/preview.tsx | 2 -- .../button/SquareTabButton.stories.tsx | 28 +++++++++++++++++++ src/components/button/SquareTabButton.tsx | 25 +++++++++++++++++ 3 files changed, 53 insertions(+), 2 deletions(-) create mode 100644 src/components/button/SquareTabButton.stories.tsx create mode 100644 src/components/button/SquareTabButton.tsx diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index 7f9c15d..ed8f18d 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,10 +1,8 @@ import type { Preview } from "@storybook/react"; import React from "react"; -import { Pretendard } from "../src/app/fonts/index"; import "../src/styles/globals.css"; import "../src/styles/theme.css"; -import { cn } from "../src/utils/cn"; const preview: Preview = { parameters: { diff --git a/src/components/button/SquareTabButton.stories.tsx b/src/components/button/SquareTabButton.stories.tsx new file mode 100644 index 0000000..40a3e28 --- /dev/null +++ b/src/components/button/SquareTabButton.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import SquareTabButton from "./SquareTabButton"; + +const meta: Meta = { + title: "SquareTabButton", + component: SquareTabButton, + parameters: { + layout: "centered", + }, + + argTypes: { + active: { + control: { + type: "boolean", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Typographys: Story = { + args: { + active: false, + }, +}; diff --git a/src/components/button/SquareTabButton.tsx b/src/components/button/SquareTabButton.tsx new file mode 100644 index 0000000..e4e3004 --- /dev/null +++ b/src/components/button/SquareTabButton.tsx @@ -0,0 +1,25 @@ +import { Button, ButtonProps } from "@radix-ui/themes"; +import { FC } from "react"; + +import { cn } from "@/utils/cn"; + +export interface Props extends ButtonProps { + active: boolean; +} + +const SquareTabButton: FC = ({ active = false, ...props }) => { + return ( + + ); +}; + +export default SquareTabButton; From 4849bcbe4649ee65f3ef1241b32ecc684249d40d Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Fri, 2 Aug 2024 04:26:57 +0900 Subject: [PATCH 07/42] =?UTF-8?q?=F0=9F=92=85=20style:=20squareTabButton?= =?UTF-8?q?=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20UI=20=EA=B5=AC?= =?UTF-8?q?=EC=B6=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../button/SquareTabButton.stories.tsx | 6 ++++++ src/components/button/SquareTabButton.tsx | 20 ++++++++++++++----- 2 files changed, 21 insertions(+), 5 deletions(-) diff --git a/src/components/button/SquareTabButton.stories.tsx b/src/components/button/SquareTabButton.stories.tsx index 40a3e28..f04e2cf 100644 --- a/src/components/button/SquareTabButton.stories.tsx +++ b/src/components/button/SquareTabButton.stories.tsx @@ -15,6 +15,11 @@ const meta: Meta = { type: "boolean", }, }, + label: { + control: { + type: "text", + }, + }, }, }; @@ -24,5 +29,6 @@ type Story = StoryObj; export const Typographys: Story = { args: { active: false, + label: "Text", }, }; diff --git a/src/components/button/SquareTabButton.tsx b/src/components/button/SquareTabButton.tsx index e4e3004..b2bfd4b 100644 --- a/src/components/button/SquareTabButton.tsx +++ b/src/components/button/SquareTabButton.tsx @@ -3,21 +3,31 @@ import { FC } from "react"; import { cn } from "@/utils/cn"; -export interface Props extends ButtonProps { +export interface Props extends Omit { active: boolean; + label: string; } -const SquareTabButton: FC = ({ active = false, ...props }) => { +const SquareTabButton: FC = ({ label, active = false, ...props }) => { return ( ); }; From 2dbf6386ccfc6a441c6fc5a0c9eac57cb3bde25c Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 19:36:31 +0900 Subject: [PATCH 08/42] =?UTF-8?q?=F0=9F=92=85=20style:=20=EC=98=88?= =?UTF-8?q?=EC=A0=9C=20=EC=82=AC=EC=A7=84=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/festival.png | Bin 0 -> 16762 bytes public/images/festivalReview.png | Bin 0 -> 22713 bytes 2 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 public/images/festival.png create mode 100644 public/images/festivalReview.png diff --git a/public/images/festival.png b/public/images/festival.png new file mode 100644 index 0000000000000000000000000000000000000000..86d1cb46418c323e36582cc6e88123ed4bf86969 GIT binary patch literal 16762 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 literal 0 HcmV?d00001 diff --git a/public/images/festivalReview.png b/public/images/festivalReview.png new file mode 100644 index 0000000000000000000000000000000000000000..8547f38e3ece5c3ca782f6acfd719e878f05fe10 GIT binary patch literal 22713 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 Date: Sat, 3 Aug 2024 19:39:53 +0900 Subject: [PATCH 09/42] =?UTF-8?q?=F0=9F=94=A8=20settings:=20radix/theme=20?= =?UTF-8?q?=EC=82=AD=EC=A0=9C,=20tailwindcss/lineclamp=20=EC=84=A4?= =?UTF-8?q?=EC=B9=98=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- pnpm-lock.yaml | 1352 +++++--------------------------------------- tailwind.config.ts | 2 +- 3 files changed, 146 insertions(+), 1210 deletions(-) diff --git a/package.json b/package.json index b19cacb..54510b3 100644 --- a/package.json +++ b/package.json @@ -15,7 +15,6 @@ }, "dependencies": { "@radix-ui/react-navigation-menu": "^1.2.0", - "@radix-ui/themes": "^3.1.1", "@tanstack/react-query": "^5.50.1", "@tanstack/react-query-devtools": "^5.50.1", "class-variance-authority": "^0.7.0", @@ -41,6 +40,7 @@ "@storybook/test": "^8.2.6", "@svgr/webpack": "^8.1.0", "@t3-oss/env-nextjs": "^0.10.1", + "@tailwindcss/line-clamp": "^0.4.4", "@tanstack/eslint-plugin-query": "^5.50.1", "@types/node": "^20", "@types/react": "^18", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index aea3470..1bc228c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -11,9 +11,6 @@ importers: '@radix-ui/react-navigation-menu': specifier: ^1.2.0 version: 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/themes': - specifier: ^3.1.1 - version: 3.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@tanstack/react-query': specifier: ^5.50.1 version: 5.50.1(react@18.3.1) @@ -84,6 +81,9 @@ importers: '@t3-oss/env-nextjs': specifier: ^0.10.1 version: 0.10.1(typescript@5.5.3)(zod@3.23.8) + '@tailwindcss/line-clamp': + specifier: ^0.4.4 + version: 0.4.4(tailwindcss@3.4.6) '@tanstack/eslint-plugin-query': specifier: ^5.50.1 version: 5.50.1(eslint@8.57.0)(typescript@5.5.3) @@ -1035,21 +1035,6 @@ packages: resolution: {integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - '@floating-ui/core@1.6.5': - resolution: {integrity: sha512-8GrTWmoFhm5BsMZOTHeGD2/0FLKLQQHvO/ZmQga4tKempYRLz8aqJGqXVuQgisnMObq2YZ2SgkwctN1LOOxcqA==} - - '@floating-ui/dom@1.6.8': - resolution: {integrity: sha512-kx62rP19VZ767Q653wsP1XZCGIirkE09E0QUGNYTM/ttbbQHqcGPdSfWFxUyyNLc/W6aoJRBajOSXhP6GXjC0Q==} - - '@floating-ui/react-dom@2.1.1': - resolution: {integrity: sha512-4h84MJt3CHrtG18mGsXuLCHMrug49d7DFkU0RMIyshRveBeyV2hmV/pDaF2Uxtu8kgq5r46llp5E5FQiR0K2Yg==} - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.5': - resolution: {integrity: sha512-sTcG+QZ6fdEUObICavU+aB3Mp8HY4n14wYHdxK4fXjPmv3PXZZeY5RaguJmGyeH/CJQhX3fqKUtS4qc1LoHwhQ==} - '@humanwhocodes/config-array@0.11.14': resolution: {integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==} engines: {node: '>=10.10.0'} @@ -1320,17 +1305,11 @@ packages: webpack-plugin-serve: optional: true - '@radix-ui/colors@3.0.0': - resolution: {integrity: sha512-FUOsGBkHrYJwCSEtWRCIfQbZG7q1e6DgxCIOe1SUQzDe/7rXXeA47s8yCn6fuTNQAj1Zq4oTFi9Yjp3wzElcxg==} - - '@radix-ui/number@1.1.0': - resolution: {integrity: sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==} - '@radix-ui/primitive@1.1.0': resolution: {integrity: sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==} - '@radix-ui/react-accessible-icon@1.1.0': - resolution: {integrity: sha512-i9Zg4NOSXlfUva0agzI2DjWrvFJm9uO4L6CMW7nmMa5CIOOX/Yin894W7WwjodFQWPwe5kmAJ4JF33R8slKI2g==} + '@radix-ui/react-collection@1.1.0': + resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1342,47 +1321,35 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-alert-dialog@1.1.1': - resolution: {integrity: sha512-wmCoJwj7byuVuiLKqDLlX7ClSUU0vd9sdCeM+2Ls+uf13+cpSJoMgwysHq1SGVVkJj5Xn0XWi1NoRCdkMpr6Mw==} + '@radix-ui/react-compose-refs@1.1.0': + resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-arrow@1.1.0': - resolution: {integrity: sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==} + '@radix-ui/react-context@1.1.0': + resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-aspect-ratio@1.1.0': - resolution: {integrity: sha512-dP87DM/Y7jFlPgUZTlhx6FF5CEzOiaxp2rBCKlaXlpH5Ip/9Fg5zZ9lDOQ5o/MOfUlf36eak14zoWYpgcgGoOg==} + '@radix-ui/react-direction@1.1.0': + resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-avatar@1.1.0': - resolution: {integrity: sha512-Q/PbuSMk/vyAd/UoIShVGZ7StHHeRFYU7wXmi5GV+8cLXflZAEpHL/F697H1klrzxKXNtZ97vWiC0q3RKUH8UA==} + '@radix-ui/react-dismissable-layer@1.1.0': + resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1394,21 +1361,17 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-checkbox@1.1.0': - resolution: {integrity: sha512-3+kSzVfMONtP3B6CvaOrXLVTyGYws7tGmG5kOY0AfyH9sexkLytIwciNwjZhY0RoGOEbxI7bMS21XYB8H5itWQ==} + '@radix-ui/react-id@1.1.0': + resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-collection@1.1.0': - resolution: {integrity: sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==} + '@radix-ui/react-navigation-menu@1.2.0': + resolution: {integrity: sha512-OQ8tcwAOR0DhPlSY3e4VMXeHiol7la4PPdJWhhwJiJA+NLX0SaCaonOkRnI3gCDHoZ7Fo7bb/G6q25fRM2Y+3Q==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1420,17 +1383,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-compose-refs@1.1.0': - resolution: {integrity: sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-context-menu@2.2.1': - resolution: {integrity: sha512-wvMKKIeb3eOrkJ96s722vcidZ+2ZNfcYZWBPRHIB1VWrF+fiF851Io6LX0kmK5wTDQFKdulCCKJk2c3SBaQHvA==} + '@radix-ui/react-presence@1.1.0': + resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1442,17 +1396,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-context@1.1.0': - resolution: {integrity: sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-dialog@1.1.1': - resolution: {integrity: sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==} + '@radix-ui/react-primitive@2.0.0': + resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1464,8 +1409,8 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-direction@1.1.0': - resolution: {integrity: sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==} + '@radix-ui/react-slot@1.1.0': + resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1473,34 +1418,26 @@ packages: '@types/react': optional: true - '@radix-ui/react-dismissable-layer@1.1.0': - resolution: {integrity: sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==} + '@radix-ui/react-use-callback-ref@1.1.0': + resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-dropdown-menu@2.1.1': - resolution: {integrity: sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==} + '@radix-ui/react-use-controllable-state@1.1.0': + resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-focus-guards@1.1.0': - resolution: {integrity: sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==} + '@radix-ui/react-use-escape-keydown@1.1.0': + resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} peerDependencies: '@types/react': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc @@ -1508,34 +1445,26 @@ packages: '@types/react': optional: true - '@radix-ui/react-focus-scope@1.1.0': - resolution: {integrity: sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==} + '@radix-ui/react-use-layout-effect@1.1.0': + resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-form@0.1.0': - resolution: {integrity: sha512-1/oVYPDjbFILOLIarcGcMKo+y6SbTVT/iUKVEw59CF4offwZgBgC3ZOeSBewjqU0vdA6FWTPWTN63obj55S/tQ==} + '@radix-ui/react-use-previous@1.1.0': + resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} peerDependencies: '@types/react': '*' - '@types/react-dom': '*' react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc peerDependenciesMeta: '@types/react': optional: true - '@types/react-dom': - optional: true - '@radix-ui/react-hover-card@1.1.1': - resolution: {integrity: sha512-IwzAOP97hQpDADYVKrEEHUH/b2LA+9MgB0LgdmnbFO2u/3M5hmEofjjr2M6CyzUblaAqJdFm6B7oFtU72DPXrA==} + '@radix-ui/react-visually-hidden@1.1.0': + resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} peerDependencies: '@types/react': '*' '@types/react-dom': '*' @@ -1547,434 +1476,77 @@ packages: '@types/react-dom': optional: true - '@radix-ui/react-id@1.1.0': - resolution: {integrity: sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true + '@rushstack/eslint-patch@1.10.3': + resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} + + '@sinclair/typebox@0.27.8': + resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + + '@sindresorhus/merge-streams@2.3.0': + resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} + engines: {node: '>=18'} - '@radix-ui/react-label@2.1.0': - resolution: {integrity: sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==} + '@storybook/addon-actions@8.2.6': + resolution: {integrity: sha512-iCsf3V28/jJ95w2zd8aSvR4denoA2UYV3fpNCTGOURqICyKOG3cyVxvqKp8Hhcwn7trNOsK+HlL6q5gpv56ViA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-menu@2.1.1': - resolution: {integrity: sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==} + '@storybook/addon-backgrounds@8.2.6': + resolution: {integrity: sha512-61NFowA6EmCw+Eyzp0U4fat9MlPDdnT7aoDyzqSImLwWLITY9IvmWuTeo7XKJZN3fe22z1r7cZseKdYrtaHcKw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-navigation-menu@1.2.0': - resolution: {integrity: sha512-OQ8tcwAOR0DhPlSY3e4VMXeHiol7la4PPdJWhhwJiJA+NLX0SaCaonOkRnI3gCDHoZ7Fo7bb/G6q25fRM2Y+3Q==} + '@storybook/addon-controls@8.2.6': + resolution: {integrity: sha512-EHUwHy+oZZv3pXzN7fuXWrS/meHFjqcELY3RBvOyEkGf21agl6co6R1tnf6d5N5QoYAGfIbDO7dkauSL2RfNAw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-popover@1.1.1': - resolution: {integrity: sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==} + '@storybook/addon-docs@8.2.6': + resolution: {integrity: sha512-qe7hxntaezqjKdU9QS+Q9NFL6i/uNdBxdvOnCKgPhBAY/zY6yhk5t3sOvonynPK5nkaNAowfSNPIzNxAXlJ1sA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-popper@1.2.0': - resolution: {integrity: sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==} + '@storybook/addon-essentials@8.2.6': + resolution: {integrity: sha512-diGjGZcZNov+RCAVQBTm8JKP2kUtMRuJIQFBeXdPWpu6hYBk6lw1FlAf2GywWGCvdny1pJT90hfoD33qUMNuDg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-portal@1.1.1': - resolution: {integrity: sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==} + '@storybook/addon-highlight@8.2.6': + resolution: {integrity: sha512-03cV9USsfP3bS4wYV06DYcIaGPfoheQe53Q0Jr1B2yJUVyIPKvmO2nGjLBsqzeL3Wl7vSfLQn0/dUdxCcbqLsw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-presence@1.1.0': - resolution: {integrity: sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==} + '@storybook/addon-interactions@8.2.6': + resolution: {integrity: sha512-YXpHf8jWPz9HJV+Fw4GaunaCWeE6uqF24aLXdAd8xuhN1UfWJeNV6AwAvFQ0hTLqvmz0yMhX/5JXDKeKESoYDA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-primitive@2.0.0': - resolution: {integrity: sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==} + '@storybook/addon-links@8.2.6': + resolution: {integrity: sha512-CUuU3nk8wyZ3bljCmOG/OCKazan+bPuNbCph8N763zyzdEx5M/CbBxV9d3pi3zjYpix7txlqrl2/YdMCejfyFw==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc + react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta + storybook: ^8.2.6 peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': + react: optional: true - '@radix-ui/react-progress@1.1.0': - resolution: {integrity: sha512-aSzvnYpP725CROcxAOEBVZZSIQVQdHgBr2QQFKySsaD14u8dNT0batuXI+AAGDdAHfXH8rbnHmjYFqVJ21KkRg==} + '@storybook/addon-measure@8.2.6': + resolution: {integrity: sha512-neI8YeSOAtOmzasLxo6O8ZLr2ebMaD7XVF+kYatl5+SpyuwwvUGcP9NkKe5S+mB8V2zxFUIsXS74XrhmQhRoaQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-radio-group@1.2.0': - resolution: {integrity: sha512-yv+oiLaicYMBpqgfpSPw6q+RyXlLdIpQWDHZbUKURxe+nEh53hFXPPlfhfQQtYkS5MMK/5IWIa76SksleQZSzw==} + '@storybook/addon-onboarding@8.2.6': + resolution: {integrity: sha512-udON3COEbi0f8A8+kdQxER6zueVMW2J4ES7ZrYyk7Z6LzzgAhfxmhdFTqEgY08jBEhuyskA2bA656GWk7X01EQ==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-roving-focus@1.1.0': - resolution: {integrity: sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==} + '@storybook/addon-outline@8.2.6': + resolution: {integrity: sha512-uAlPtqDWlq7MQQ4zJT80qdjbSdLF/zsvtPhidX6h9cjLKNPWAv79xJQ14AJHaMv+Hzy5xKnM4wdEhgPbzKabQg==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + storybook: ^8.2.6 - '@radix-ui/react-scroll-area@1.1.0': - resolution: {integrity: sha512-9ArIZ9HWhsrfqS765h+GZuLoxaRHD/j0ZWOWilsCvYTpYJp8XwCqNG7Dt9Nu/TItKOdgLGkOPCodQvDc+UMwYg==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-select@2.1.1': - resolution: {integrity: sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slider@1.2.0': - resolution: {integrity: sha512-dAHCDA4/ySXROEPaRtaMV5WHL8+JB/DbtyTbJjYkY0RXmKMO2Ln8DFZhywG5/mVQ4WqHDBc8smc14yPXPqZHYA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-slot@1.1.0': - resolution: {integrity: sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-switch@1.1.0': - resolution: {integrity: sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-tabs@1.1.0': - resolution: {integrity: sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toggle-group@1.1.0': - resolution: {integrity: sha512-PpTJV68dZU2oqqgq75Uzto5o/XfOVgkrJ9rulVmfTKxWp3HfUjHE6CP/WLRR4AzPX9HWxw7vFow2me85Yu+Naw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-toggle@1.1.0': - resolution: {integrity: sha512-gwoxaKZ0oJ4vIgzsfESBuSgJNdc0rv12VhHgcqN0TEJmmZixXG/2XpsLK8kzNWYcnaoRIEEQc0bEi3dIvdUpjw==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-tooltip@1.1.1': - resolution: {integrity: sha512-LLE8nzNE4MzPMw3O2zlVlkLFid3y9hMUs7uCbSHyKSo+tCN4yMCf+ZCCcfrYgsOC0TiHBPQ1mtpJ2liY3ZT3SQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/react-use-callback-ref@1.1.0': - resolution: {integrity: sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-controllable-state@1.1.0': - resolution: {integrity: sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-escape-keydown@1.1.0': - resolution: {integrity: sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-layout-effect@1.1.0': - resolution: {integrity: sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-previous@1.1.0': - resolution: {integrity: sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-rect@1.1.0': - resolution: {integrity: sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-use-size@1.1.0': - resolution: {integrity: sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==} - peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - - '@radix-ui/react-visually-hidden@1.1.0': - resolution: {integrity: sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: ^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@radix-ui/rect@1.1.0': - resolution: {integrity: sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==} - - '@radix-ui/themes@3.1.1': - resolution: {integrity: sha512-G+j+x+7kyqQXnn+ftlNPgk1DdZ8h/vVZnLsG4hZB0Mxw4fdKCh1tThQuXDSBNWhFt/vTG79BMzRMiflovENrmA==} - peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - react-dom: 16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true - - '@rushstack/eslint-patch@1.10.3': - resolution: {integrity: sha512-qC/xYId4NMebE6w/V33Fh9gWxLgURiNYgVNObbJl2LZv0GUUItCcCqC5axQSwRaAgaxl2mELq1rMzlswaQ0Zxg==} - - '@sinclair/typebox@0.27.8': - resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - - '@sindresorhus/merge-streams@2.3.0': - resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} - engines: {node: '>=18'} - - '@storybook/addon-actions@8.2.6': - resolution: {integrity: sha512-iCsf3V28/jJ95w2zd8aSvR4denoA2UYV3fpNCTGOURqICyKOG3cyVxvqKp8Hhcwn7trNOsK+HlL6q5gpv56ViA==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-backgrounds@8.2.6': - resolution: {integrity: sha512-61NFowA6EmCw+Eyzp0U4fat9MlPDdnT7aoDyzqSImLwWLITY9IvmWuTeo7XKJZN3fe22z1r7cZseKdYrtaHcKw==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-controls@8.2.6': - resolution: {integrity: sha512-EHUwHy+oZZv3pXzN7fuXWrS/meHFjqcELY3RBvOyEkGf21agl6co6R1tnf6d5N5QoYAGfIbDO7dkauSL2RfNAw==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-docs@8.2.6': - resolution: {integrity: sha512-qe7hxntaezqjKdU9QS+Q9NFL6i/uNdBxdvOnCKgPhBAY/zY6yhk5t3sOvonynPK5nkaNAowfSNPIzNxAXlJ1sA==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-essentials@8.2.6': - resolution: {integrity: sha512-diGjGZcZNov+RCAVQBTm8JKP2kUtMRuJIQFBeXdPWpu6hYBk6lw1FlAf2GywWGCvdny1pJT90hfoD33qUMNuDg==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-highlight@8.2.6': - resolution: {integrity: sha512-03cV9USsfP3bS4wYV06DYcIaGPfoheQe53Q0Jr1B2yJUVyIPKvmO2nGjLBsqzeL3Wl7vSfLQn0/dUdxCcbqLsw==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-interactions@8.2.6': - resolution: {integrity: sha512-YXpHf8jWPz9HJV+Fw4GaunaCWeE6uqF24aLXdAd8xuhN1UfWJeNV6AwAvFQ0hTLqvmz0yMhX/5JXDKeKESoYDA==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-links@8.2.6': - resolution: {integrity: sha512-CUuU3nk8wyZ3bljCmOG/OCKazan+bPuNbCph8N763zyzdEx5M/CbBxV9d3pi3zjYpix7txlqrl2/YdMCejfyFw==} - peerDependencies: - react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0-beta - storybook: ^8.2.6 - peerDependenciesMeta: - react: - optional: true - - '@storybook/addon-measure@8.2.6': - resolution: {integrity: sha512-neI8YeSOAtOmzasLxo6O8ZLr2ebMaD7XVF+kYatl5+SpyuwwvUGcP9NkKe5S+mB8V2zxFUIsXS74XrhmQhRoaQ==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-onboarding@8.2.6': - resolution: {integrity: sha512-udON3COEbi0f8A8+kdQxER6zueVMW2J4ES7ZrYyk7Z6LzzgAhfxmhdFTqEgY08jBEhuyskA2bA656GWk7X01EQ==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-outline@8.2.6': - resolution: {integrity: sha512-uAlPtqDWlq7MQQ4zJT80qdjbSdLF/zsvtPhidX6h9cjLKNPWAv79xJQ14AJHaMv+Hzy5xKnM4wdEhgPbzKabQg==} - peerDependencies: - storybook: ^8.2.6 - - '@storybook/addon-toolbars@8.2.6': - resolution: {integrity: sha512-0JmRirMpxHS6VZzBk0kY871xWTpkk3TN4S1sxoFf5fcnCfVTHDjEJ5Ws/QWru1RJlIZHuJKRdQIA6Vuq5X+KfQ==} + '@storybook/addon-toolbars@8.2.6': + resolution: {integrity: sha512-0JmRirMpxHS6VZzBk0kY871xWTpkk3TN4S1sxoFf5fcnCfVTHDjEJ5Ws/QWru1RJlIZHuJKRdQIA6Vuq5X+KfQ==} peerDependencies: storybook: ^8.2.6 @@ -2221,6 +1793,11 @@ packages: typescript: optional: true + '@tailwindcss/line-clamp@0.4.4': + resolution: {integrity: sha512-5U6SY5z8N42VtrCrKlsTAA35gy2VSyYtHWCsg1H87NU1SXnEfekTVlrga9fzUDrrHcGi2Lb5KenUWb4lRQT5/g==} + peerDependencies: + tailwindcss: '>=2.0.0 || >=3.0.0 || >=3.0.0-alpha.1' + '@tanstack/eslint-plugin-query@5.50.1': resolution: {integrity: sha512-k4Ra3hx8ddQ1YjW6+5T3f2OuphAipR5cHonB7nQSM5JbiJ7fAo2iu/y4eP3MRgtlrxN//Da77Xg5jqNafrjEHA==} peerDependencies: @@ -2738,10 +2315,6 @@ packages: argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - aria-hidden@1.2.4: - resolution: {integrity: sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==} - engines: {node: '>=10'} - aria-query@5.1.3: resolution: {integrity: sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==} @@ -3039,9 +2612,6 @@ packages: class-variance-authority@0.7.0: resolution: {integrity: sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==} - classnames@2.3.2: - resolution: {integrity: sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==} - clean-css@5.3.3: resolution: {integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==} engines: {node: '>= 10.0'} @@ -3388,9 +2958,6 @@ packages: resolution: {integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==} engines: {node: '>=8'} - detect-node-es@1.1.0: - resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} - didyoumean@1.2.2: resolution: {integrity: sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==} @@ -3962,10 +3529,6 @@ packages: resolution: {integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==} engines: {node: '>= 0.4'} - get-nonce@1.0.1: - resolution: {integrity: sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==} - engines: {node: '>=6'} - get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} @@ -4225,9 +3788,6 @@ packages: resolution: {integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==} engines: {node: '>= 0.4'} - invariant@2.2.4: - resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} - ipaddr.js@1.9.1: resolution: {integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==} engines: {node: '>= 0.10'} @@ -5310,36 +4870,6 @@ packages: resolution: {integrity: sha512-jCvmsr+1IUSMUyzOkRcvnVbX3ZYC6g9TDrDbFuFmRDq7PD4yaGbLKNQL6k2jnArV8hjYxh7hVhAZB6s9HDGpZA==} engines: {node: '>=0.10.0'} - react-remove-scroll-bar@2.3.4: - resolution: {integrity: sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-remove-scroll@2.5.7: - resolution: {integrity: sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - react-style-singleton@2.2.1: - resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - react@18.3.1: resolution: {integrity: sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==} engines: {node: '>=0.10.0'} @@ -6063,26 +5593,6 @@ packages: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} - use-callback-ref@1.3.2: - resolution: {integrity: sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.8.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - use-sidecar@1.1.2: - resolution: {integrity: sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==} - engines: {node: '>=10'} - peerDependencies: - '@types/react': ^16.9.0 || ^17.0.0 || ^18.0.0 - react: ^16.8.0 || ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - use-sync-external-store@1.2.0: resolution: {integrity: sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==} peerDependencies: @@ -7305,23 +6815,6 @@ snapshots: '@eslint/js@8.57.0': {} - '@floating-ui/core@1.6.5': - dependencies: - '@floating-ui/utils': 0.2.5 - - '@floating-ui/dom@1.6.8': - dependencies: - '@floating-ui/core': 1.6.5 - '@floating-ui/utils': 0.2.5 - - '@floating-ui/react-dom@2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@floating-ui/dom': 1.6.8 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - - '@floating-ui/utils@0.2.5': {} - '@humanwhocodes/config-array@0.11.14': dependencies: '@humanwhocodes/object-schema': 2.0.3 @@ -7473,594 +6966,149 @@ snapshots: '@next/swc-linux-x64-gnu@14.2.4': optional: true - '@next/swc-linux-x64-musl@14.2.4': - optional: true - - '@next/swc-win32-arm64-msvc@14.2.4': - optional: true - - '@next/swc-win32-ia32-msvc@14.2.4': - optional: true - - '@next/swc-win32-x64-msvc@14.2.4': - optional: true - - '@nodelib/fs.scandir@2.1.5': - dependencies: - '@nodelib/fs.stat': 2.0.5 - run-parallel: 1.2.0 - - '@nodelib/fs.stat@2.0.5': {} - - '@nodelib/fs.walk@1.2.8': - dependencies: - '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-hot-middleware@2.26.1)(webpack@5.93.0(esbuild@0.21.5))': - dependencies: - ansi-html: 0.0.9 - core-js-pure: 3.37.1 - error-stack-parser: 2.1.4 - html-entities: 2.5.2 - loader-utils: 2.0.4 - react-refresh: 0.14.2 - schema-utils: 4.2.0 - source-map: 0.7.4 - webpack: 5.93.0(esbuild@0.21.5) - optionalDependencies: - type-fest: 2.19.0 - webpack-hot-middleware: 2.26.1 - - '@radix-ui/colors@3.0.0': {} - - '@radix-ui/number@1.1.0': {} - - '@radix-ui/primitive@1.1.0': {} - - '@radix-ui/react-accessible-icon@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-alert-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-arrow@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-aspect-ratio@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-avatar@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-checkbox@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-context-menu@2.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-dialog@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-dropdown-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-focus-guards@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-focus-scope@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-form@0.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-label': 2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-hover-card@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-label@2.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-menu@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-navigation-menu@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 + '@next/swc-linux-x64-musl@14.2.4': + optional: true + + '@next/swc-win32-arm64-msvc@14.2.4': + optional: true + + '@next/swc-win32-ia32-msvc@14.2.4': + optional: true - '@radix-ui/react-popover@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@next/swc-win32-x64-msvc@14.2.4': + optional: true + + '@nodelib/fs.scandir@2.1.5': dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - aria-hidden: 1.2.4 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 - '@radix-ui/react-popper@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': dependencies: - '@floating-ui/react-dom': 2.1.1(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-arrow': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-rect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.17.1 + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.1.1': {} - '@radix-ui/react-portal@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@pmmmwh/react-refresh-webpack-plugin@0.5.15(react-refresh@0.14.2)(type-fest@2.19.0)(webpack-hot-middleware@2.26.1)(webpack@5.93.0(esbuild@0.21.5))': dependencies: - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) + ansi-html: 0.0.9 + core-js-pure: 3.37.1 + error-stack-parser: 2.1.4 + html-entities: 2.5.2 + loader-utils: 2.0.4 + react-refresh: 0.14.2 + schema-utils: 4.2.0 + source-map: 0.7.4 + webpack: 5.93.0(esbuild@0.21.5) optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 + type-fest: 2.19.0 + webpack-hot-middleware: 2.26.1 - '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/primitive@1.1.0': {} + + '@radix-ui/react-collection@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-compose-refs@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - '@radix-ui/react-progress@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-context@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - '@radix-ui/react-radio-group@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-direction@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - '@radix-ui/react-roving-focus@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-dismissable-layer@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-use-escape-keydown': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@radix-ui/react-scroll-area@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-id@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - '@radix-ui/react-select@2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-navigation-menu@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/number': 1.1.0 '@radix-ui/primitive': 1.1.0 '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-focus-guards': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-focus-scope': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) + '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - aria-hidden: 1.2.4 react: 18.3.1 react-dom: 18.3.1(react@18.3.1) - react-remove-scroll: 2.5.7(@types/react@18.3.3)(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@radix-ui/react-slider@1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-presence@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/number': 1.1.0 - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-collection': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-switch@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-previous': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-size': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-tabs@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - - '@radix-ui/react-toggle-group@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@radix-ui/react-toggle@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-primitive@2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) + '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) react: 18.3.1 react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@radix-ui/react-tooltip@1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': + '@radix-ui/react-slot@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: - '@radix-ui/primitive': 1.1.0 '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dismissable-layer': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-id': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-popper': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-presence': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) optionalDependencies: '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 '@radix-ui/react-use-callback-ref@1.1.0(@types/react@18.3.3)(react@18.3.1)': dependencies: @@ -8094,20 +7142,6 @@ snapshots: optionalDependencies: '@types/react': 18.3.3 - '@radix-ui/react-use-rect@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/rect': 1.1.0 - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - - '@radix-ui/react-use-size@1.1.0(@types/react@18.3.3)(react@18.3.1)': - dependencies: - '@radix-ui/react-use-layout-effect': 1.1.0(@types/react@18.3.3)(react@18.3.1) - react: 18.3.1 - optionalDependencies: - '@types/react': 18.3.3 - '@radix-ui/react-visually-hidden@1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': dependencies: '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) @@ -8117,51 +7151,6 @@ snapshots: '@types/react': 18.3.3 '@types/react-dom': 18.3.0 - '@radix-ui/rect@1.1.0': {} - - '@radix-ui/themes@3.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1)': - dependencies: - '@radix-ui/colors': 3.0.0 - '@radix-ui/primitive': 1.1.0 - '@radix-ui/react-accessible-icon': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-alert-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-aspect-ratio': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-avatar': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-checkbox': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-compose-refs': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-context-menu': 2.2.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-dialog': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-direction': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-dropdown-menu': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-form': 0.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-hover-card': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-navigation-menu': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-popover': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-portal': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-primitive': 2.0.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-progress': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-radio-group': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-roving-focus': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-scroll-area': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-select': 2.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slider': 1.2.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-slot': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-switch': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tabs': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-toggle-group': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-tooltip': 1.1.1(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - '@radix-ui/react-use-callback-ref': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-use-controllable-state': 1.1.0(@types/react@18.3.3)(react@18.3.1) - '@radix-ui/react-visually-hidden': 1.1.0(@types/react-dom@18.3.0)(@types/react@18.3.3)(react-dom@18.3.1(react@18.3.1))(react@18.3.1) - classnames: 2.3.2 - react: 18.3.1 - react-dom: 18.3.1(react@18.3.1) - react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - '@types/react-dom': 18.3.0 - '@rushstack/eslint-patch@1.10.3': {} '@sinclair/typebox@0.27.8': {} @@ -8711,6 +7700,10 @@ snapshots: optionalDependencies: typescript: 5.5.3 + '@tailwindcss/line-clamp@0.4.4(tailwindcss@3.4.6)': + dependencies: + tailwindcss: 3.4.6 + '@tanstack/eslint-plugin-query@5.50.1(eslint@8.57.0)(typescript@5.5.3)': dependencies: '@typescript-eslint/utils': 8.0.0-alpha.30(eslint@8.57.0)(typescript@5.5.3) @@ -9310,10 +8303,6 @@ snapshots: argparse@2.0.1: {} - aria-hidden@1.2.4: - dependencies: - tslib: 2.6.3 - aria-query@5.1.3: dependencies: deep-equal: 2.2.3 @@ -9697,8 +8686,6 @@ snapshots: dependencies: clsx: 2.0.0 - classnames@2.3.2: {} - clean-css@5.3.3: dependencies: source-map: 0.6.1 @@ -10078,8 +9065,6 @@ snapshots: detect-libc@2.0.3: optional: true - detect-node-es@1.1.0: {} - didyoumean@1.2.2: {} diff-sequences@29.6.3: {} @@ -10911,8 +9896,6 @@ snapshots: has-symbols: 1.0.3 hasown: 2.0.2 - get-nonce@1.0.1: {} - get-stream@6.0.1: {} get-stream@8.0.1: {} @@ -11221,10 +10204,6 @@ snapshots: hasown: 2.0.2 side-channel: 1.0.6 - invariant@2.2.4: - dependencies: - loose-envify: 1.4.0 - ipaddr.js@1.9.1: {} is-absolute-url@4.0.1: {} @@ -12272,34 +11251,6 @@ snapshots: react-refresh@0.14.2: {} - react-remove-scroll-bar@2.3.4(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - - react-remove-scroll@2.5.7(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - react-remove-scroll-bar: 2.3.4(@types/react@18.3.3)(react@18.3.1) - react-style-singleton: 2.2.1(@types/react@18.3.3)(react@18.3.1) - tslib: 2.6.3 - use-callback-ref: 1.3.2(@types/react@18.3.3)(react@18.3.1) - use-sidecar: 1.1.2(@types/react@18.3.3)(react@18.3.1) - optionalDependencies: - '@types/react': 18.3.3 - - react-style-singleton@2.2.1(@types/react@18.3.3)(react@18.3.1): - dependencies: - get-nonce: 1.0.1 - invariant: 2.2.4 - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - react@18.3.1: dependencies: loose-envify: 1.4.0 @@ -13164,21 +12115,6 @@ snapshots: punycode: 1.4.1 qs: 6.12.3 - use-callback-ref@1.3.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - - use-sidecar@1.1.2(@types/react@18.3.3)(react@18.3.1): - dependencies: - detect-node-es: 1.1.0 - react: 18.3.1 - tslib: 2.6.3 - optionalDependencies: - '@types/react': 18.3.3 - use-sync-external-store@1.2.0(react@18.3.1): dependencies: react: 18.3.1 diff --git a/tailwind.config.ts b/tailwind.config.ts index 1ff5fbd..6f77b83 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -149,6 +149,6 @@ const config: Config = { }, }, }, - plugins: [require("tailwindcss-radix")], + plugins: [require("tailwindcss-radix"), require("@tailwindcss/line-clamp")], }; export default config; From 2d4cd248897ba2f8c1d38b66a1cc8b6231b27a60 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 19:49:22 +0900 Subject: [PATCH 10/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20radix=20theme=20?= =?UTF-8?q?=EA=B4=80=EB=A0=A8=20=EC=BD=94=EB=93=9C=20=EC=82=AD=EC=A0=9C=20?= =?UTF-8?q?#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/lib/RadixThemeProvider.tsx | 16 ---------------- src/styles/theme.css | 3 --- 2 files changed, 19 deletions(-) delete mode 100644 src/lib/RadixThemeProvider.tsx delete mode 100644 src/styles/theme.css diff --git a/src/lib/RadixThemeProvider.tsx b/src/lib/RadixThemeProvider.tsx deleted file mode 100644 index cebd7f0..0000000 --- a/src/lib/RadixThemeProvider.tsx +++ /dev/null @@ -1,16 +0,0 @@ -"use client"; -import { Theme, ThemeProps } from "@radix-ui/themes"; -import { PropsWithChildren } from "react"; - -interface Props extends ThemeProps, PropsWithChildren {} - -function RadixThemeProvider({ children, ...props }: Props) { - return ( - - {children} - {/* */} - - ); -} - -export default RadixThemeProvider; diff --git a/src/styles/theme.css b/src/styles/theme.css deleted file mode 100644 index ac392cb..0000000 --- a/src/styles/theme.css +++ /dev/null @@ -1,3 +0,0 @@ -.radix-themes { - --default-font-family: var(--font-pretendard) !important; -} From 698d07bad1b581b745c35103ef44663759d97da7 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 19:51:28 +0900 Subject: [PATCH 11/42] =?UTF-8?q?=F0=9F=94=A8=20settings:=20=EC=8A=A4?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=EB=B6=81=EC=97=90=EB=8F=84=20SVGR=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/main.ts | 25 +++++++++++++++++++++---- .storybook/preview.tsx | 3 +++ 2 files changed, 24 insertions(+), 4 deletions(-) diff --git a/.storybook/main.ts b/.storybook/main.ts index b3e89bb..9de2fdc 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,6 +1,7 @@ import type { StorybookConfig } from "@storybook/nextjs"; const config: StorybookConfig = { + staticDirs: ["../public"], stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], addons: [ "@storybook/addon-onboarding", @@ -13,8 +14,6 @@ const config: StorybookConfig = { name: "@storybook/nextjs", options: {}, }, - // TODO: 폰트가 먹여졌는지 의문 - staticDirs: ["../public"], features: { experimentalRSC: true, }, @@ -22,7 +21,25 @@ const config: StorybookConfig = { reactDocgen: "react-docgen-typescript", }, previewHead: (head) => ` - ${head}'' - `, + ${head} + +`, + webpackFinal: async (config) => { + config.module?.rules?.forEach((rule) => { + if ( + rule && + typeof rule === "object" && + rule.test instanceof RegExp && + rule.test.test(".svg") + ) { + rule.exclude = /\.svg$/; + } + }); + config.module?.rules?.push({ + test: /\.svg$/, + use: ["@svgr/webpack"], + }); + return config; + }, }; export default config; diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index ed8f18d..ba22f1e 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -6,6 +6,9 @@ import "../src/styles/theme.css"; const preview: Preview = { parameters: { + backgrounds: { + default: "dark", + }, controls: { matchers: { color: /(background|color)$/i, From dfc42fcd4a63cd5263c276598e1ccd8a57e8c340 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 19:55:55 +0900 Subject: [PATCH 12/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20=EB=8B=A8?= =?UTF-8?q?=EC=88=9C=20=ED=8F=AC=EB=A7=A4=ED=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/calendar/page.tsx | 2 +- src/app/chat/page.tsx | 2 +- src/app/example/_components/ZustandPersistExample.tsx | 4 +++- src/app/map/page.tsx | 2 +- src/app/mypage/page.tsx | 2 +- 5 files changed, 7 insertions(+), 5 deletions(-) diff --git a/src/app/calendar/page.tsx b/src/app/calendar/page.tsx index d121ce6..ab47967 100644 --- a/src/app/calendar/page.tsx +++ b/src/app/calendar/page.tsx @@ -1,7 +1,7 @@ import React from "react"; const page = () => { - return

calender
; + return
calender
; }; export default page; diff --git a/src/app/chat/page.tsx b/src/app/chat/page.tsx index 4ba0d70..caf4633 100644 --- a/src/app/chat/page.tsx +++ b/src/app/chat/page.tsx @@ -1,7 +1,7 @@ import React from "react"; const page = () => { - return
chat
; + return
chat
; }; export default page; diff --git a/src/app/example/_components/ZustandPersistExample.tsx b/src/app/example/_components/ZustandPersistExample.tsx index d9e5523..494e1c5 100644 --- a/src/app/example/_components/ZustandPersistExample.tsx +++ b/src/app/example/_components/ZustandPersistExample.tsx @@ -35,7 +35,9 @@ const ZustnadExample = () => { return (
- TODO List + + TODO List +
{ - return
map
; + return
map
; }; export default page; diff --git a/src/app/mypage/page.tsx b/src/app/mypage/page.tsx index 2aafca4..807da70 100644 --- a/src/app/mypage/page.tsx +++ b/src/app/mypage/page.tsx @@ -1,7 +1,7 @@ import React from "react"; const page = () => { - return
mypage
; + return
mypage
; }; export default page; From f1183d79dd103188aed76c894b60ae42e653136b Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 20:06:37 +0900 Subject: [PATCH 13/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20radix=20theme=20?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/preview.tsx | 1 - src/app/layout.tsx | 7 +------ 2 files changed, 1 insertion(+), 7 deletions(-) diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index ba22f1e..b89fbe7 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -2,7 +2,6 @@ import type { Preview } from "@storybook/react"; import React from "react"; import "../src/styles/globals.css"; -import "../src/styles/theme.css"; const preview: Preview = { parameters: { diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 8d2d10e..32b27b6 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -1,12 +1,9 @@ -import "@radix-ui/themes/styles.css"; import "../styles/globals.css"; import "../styles/reset.css"; -import "../styles/theme.css"; import type { Metadata } from "next"; import MobileLayout from "@/layout/Mobile/MobileLayout"; -import RadixThemeProvider from "@/lib/RadixThemeProvider"; import ReactQueryProvider from "@/lib/ReactQueryProvider"; import { cn } from "@/utils/cn"; @@ -26,9 +23,7 @@ export default function RootLayout({ - - {children} - + {children} From 1ad48d5698859ae5531fed3fbc3f1800ef4d7cf1 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 20:56:04 +0900 Subject: [PATCH 14/42] =?UTF-8?q?=F0=9F=92=85=20style:=20=EB=B2=84?= =?UTF-8?q?=ED=8A=BC=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EC=B6=94?= =?UTF-8?q?=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/page.tsx | 9 --- .../Button/BaisButton/BasicButton.stories.tsx | 55 +++++++++++++++ .../common/Button/BaisButton/BasicButton.tsx | 30 +++++++++ .../KakaoButton/KakaoButton.stories.tsx | 28 ++++++++ .../common/Button/KakaoButton/KakaoButton.tsx | 30 +++++++++ .../RectangleTabButton.stories.tsx | 34 ++++++++++ .../RactangleTabButton/RectangleTabButton.tsx | 32 +++++++++ .../RegisterButton/RegisterButton.stories.tsx | 28 ++++++++ .../Button/RegisterButton/RegisterButton.tsx | 29 ++++++++ .../SquareTabButton.stories.tsx | 4 +- .../SquareTabButton}/SquareTabButton.tsx | 10 +-- src/components/icons/ALARM_ICON.svg | 6 +- src/components/icons/KAKAO_ICON.svg | 10 +++ src/components/icons/index.ts | 67 ++++++++++--------- tailwind.config.ts | 1 + 15 files changed, 321 insertions(+), 52 deletions(-) create mode 100644 src/components/common/Button/BaisButton/BasicButton.stories.tsx create mode 100644 src/components/common/Button/BaisButton/BasicButton.tsx create mode 100644 src/components/common/Button/KakaoButton/KakaoButton.stories.tsx create mode 100644 src/components/common/Button/KakaoButton/KakaoButton.tsx create mode 100644 src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx create mode 100644 src/components/common/Button/RactangleTabButton/RectangleTabButton.tsx create mode 100644 src/components/common/Button/RegisterButton/RegisterButton.stories.tsx create mode 100644 src/components/common/Button/RegisterButton/RegisterButton.tsx rename src/components/{button => common/Button/SquareTabButton}/SquareTabButton.stories.tsx (88%) rename src/components/{button => common/Button/SquareTabButton}/SquareTabButton.tsx (81%) create mode 100644 src/components/icons/KAKAO_ICON.svg diff --git a/src/app/page.tsx b/src/app/page.tsx index 7607c07..b0c279b 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,16 +1,7 @@ -import { CAMERA_ICON } from "@/components/icons"; - export default function Home() { return (
-
- -
diff --git a/src/components/common/Button/BaisButton/BasicButton.stories.tsx b/src/components/common/Button/BaisButton/BasicButton.stories.tsx new file mode 100644 index 0000000..fc9ad2a --- /dev/null +++ b/src/components/common/Button/BaisButton/BasicButton.stories.tsx @@ -0,0 +1,55 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import BasicButton from "./BasicButton"; + +const meta: Meta = { + title: "Button/BasicButton", + component: BasicButton, + parameters: { + layout: "centered", + }, + + argTypes: { + active: { + control: { + type: "boolean", + }, + }, + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + active: false, + label: "다음 (0/2)", + }, + decorators: [ + (Story: React.ComponentType) => ( +
+ +
+ ), + ], +}; + +export const Active: Story = { + args: { + active: true, + label: "다음 (0/2)", + }, + decorators: [ + (Story: React.ComponentType) => ( +
+ +
+ ), + ], +}; diff --git a/src/components/common/Button/BaisButton/BasicButton.tsx b/src/components/common/Button/BaisButton/BasicButton.tsx new file mode 100644 index 0000000..309f546 --- /dev/null +++ b/src/components/common/Button/BaisButton/BasicButton.tsx @@ -0,0 +1,30 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + active: boolean; + label: string; +} + +const SquareTabButton: FC = ({ label, active = false, ...props }) => { + return ( + + ); +}; + +export default SquareTabButton; diff --git a/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx b/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx new file mode 100644 index 0000000..4c9569b --- /dev/null +++ b/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import KakaoButton from "./KakaoButton"; + +const meta: Meta = { + title: "Button/KakaoButton", + component: KakaoButton, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + label: "카카오 로그인", + }, +}; diff --git a/src/components/common/Button/KakaoButton/KakaoButton.tsx b/src/components/common/Button/KakaoButton/KakaoButton.tsx new file mode 100644 index 0000000..64095df --- /dev/null +++ b/src/components/common/Button/KakaoButton/KakaoButton.tsx @@ -0,0 +1,30 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { KakaoIcon } from "@/components/icons"; +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + label?: string; +} + +const KakaoButton: FC = ({ label, ...props }) => { + return ( + + ); +}; + +export default KakaoButton; diff --git a/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx b/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx new file mode 100644 index 0000000..0442c0d --- /dev/null +++ b/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx @@ -0,0 +1,34 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import RectangleTabButton from "./RectangleTabButton"; + +const meta: Meta = { + title: "Button/RectangleTabButton", + component: RectangleTabButton, + parameters: { + layout: "centered", + }, + + argTypes: { + active: { + control: { + type: "boolean", + }, + }, + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Rectangle: Story = { + args: { + active: false, + label: "✅ Text", + }, +}; diff --git a/src/components/common/Button/RactangleTabButton/RectangleTabButton.tsx b/src/components/common/Button/RactangleTabButton/RectangleTabButton.tsx new file mode 100644 index 0000000..2dbfc89 --- /dev/null +++ b/src/components/common/Button/RactangleTabButton/RectangleTabButton.tsx @@ -0,0 +1,32 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + active: boolean; + label: string; +} + +const RectangleTabButton: FC = ({ label, active = false, ...props }) => { + return ( + + ); +}; + +export default RectangleTabButton; diff --git a/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx b/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx new file mode 100644 index 0000000..86c81e8 --- /dev/null +++ b/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import RegisterButton from "./RegisterButton"; + +const meta: Meta = { + title: "Button/RegisterButton", + component: RegisterButton, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + label: "페스티벌 등록하기", + }, +}; diff --git a/src/components/common/Button/RegisterButton/RegisterButton.tsx b/src/components/common/Button/RegisterButton/RegisterButton.tsx new file mode 100644 index 0000000..091f228 --- /dev/null +++ b/src/components/common/Button/RegisterButton/RegisterButton.tsx @@ -0,0 +1,29 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { PlusIcon } from "@/components/icons"; +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + icon?: React.ReactElement; + label: string; +} + +const SquareTabButton: FC = ({ label, icon, ...props }) => { + return ( + + ); +}; + +export default SquareTabButton; diff --git a/src/components/button/SquareTabButton.stories.tsx b/src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx similarity index 88% rename from src/components/button/SquareTabButton.stories.tsx rename to src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx index f04e2cf..3a08e63 100644 --- a/src/components/button/SquareTabButton.stories.tsx +++ b/src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import SquareTabButton from "./SquareTabButton"; const meta: Meta = { - title: "SquareTabButton", + title: "Button/SquareTabButton", component: SquareTabButton, parameters: { layout: "centered", @@ -26,7 +26,7 @@ const meta: Meta = { export default meta; type Story = StoryObj; -export const Typographys: Story = { +export const Square: Story = { args: { active: false, label: "Text", diff --git a/src/components/button/SquareTabButton.tsx b/src/components/common/Button/SquareTabButton/SquareTabButton.tsx similarity index 81% rename from src/components/button/SquareTabButton.tsx rename to src/components/common/Button/SquareTabButton/SquareTabButton.tsx index b2bfd4b..97e93e0 100644 --- a/src/components/button/SquareTabButton.tsx +++ b/src/components/common/Button/SquareTabButton/SquareTabButton.tsx @@ -1,16 +1,16 @@ -import { Button, ButtonProps } from "@radix-ui/themes"; -import { FC } from "react"; +import { FC, HtmlHTMLAttributes } from "react"; import { cn } from "@/utils/cn"; -export interface Props extends Omit { +export interface Props + extends Omit, "children"> { active: boolean; label: string; } const SquareTabButton: FC = ({ label, active = false, ...props }) => { return ( - + ); }; diff --git a/src/components/icons/ALARM_ICON.svg b/src/components/icons/ALARM_ICON.svg index 9fac115..d864eb9 100644 --- a/src/components/icons/ALARM_ICON.svg +++ b/src/components/icons/ALARM_ICON.svg @@ -1,5 +1,5 @@ - - - + + + diff --git a/src/components/icons/KAKAO_ICON.svg b/src/components/icons/KAKAO_ICON.svg new file mode 100644 index 0000000..7525000 --- /dev/null +++ b/src/components/icons/KAKAO_ICON.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/src/components/icons/index.ts b/src/components/icons/index.ts index cae8515..10df307 100644 --- a/src/components/icons/index.ts +++ b/src/components/icons/index.ts @@ -1,33 +1,34 @@ -export { default as ALARM_ICON } from "./ALARM_ICON.svg"; -export { default as ARROW_BACK_ANDROID_ICON } from "./ARROW_BACK_ANDROID_ICON.svg"; -export { default as ARROW_DECREASE_ICON } from "./ARROW_DECREASE_ICON.svg"; -export { default as ARROW_INCREASE_ICON } from "./ARROW_INCREASE_ICON.svg"; -export { default as ARROW_LEFT_SMALL_ICON } from "./ARROW_LEFT_SMALL_ICON.svg"; -export { default as ARROW_RIGHT_ANDROID_ICON } from "./ARROW_RIGHT_ANDROID_ICON.svg"; -export { default as ARROW_RIGHT_SMALL_ICON } from "./ARROW_RIGHT_SMALL_ICON.svg"; -export { default as CALENDAR_CHECK_ICON } from "./CALENDAR_CHECK_ICON.svg"; -export { default as CAMERA_ICON } from "./CAMERA_ICON.svg"; -export { default as CHAT_BUBBLE_DOTS_ICON } from "./CHAT_BUBBLE_DOTS_ICON.svg"; -export { default as CHAT_BUBBLE_ICON } from "./CHAT_BUBBLE_ICON.svg"; -export { default as CHECK_ICON } from "./CHECK_ICON.svg"; -export { default as CLOCK_ICON } from "./CLOCK_ICON.svg"; -export { default as DOTS_ICON } from "./DOTS_ICON.svg"; -export { default as DOWNLOAD_ICON } from "./DOWNLOAD_ICON.svg"; -export { default as FILTER_ICON } from "./FILTER_ICON.svg"; -export { default as HEART_ICON } from "./HEART_ICON.svg"; -export { default as HOME_ICON } from "./HOME_ICON.svg"; -export { default as LOCK_ICON } from "./LOCK_ICON.svg"; -export { default as PICTURE_ICON } from "./PICTURE_ICON.svg"; -export { default as PIN_LOCATION_ICON } from "./PIN_LOCATION_ICON.svg"; -export { default as PLUS_ICON } from "./PLUS_ICON.svg"; -export { default as SEARCH_ICON } from "./SEARCH_ICON.svg"; -export { default as SETTING_ICON } from "./SETTING_ICON.svg"; -export { default as SHARE_ICON } from "./SHARE_ICON.svg"; -export { default as STACK_UP_SQUARE_ICON } from "./STACK_UP_SQUARE_ICON.svg"; -export { default as STAR_ICON } from "./STAR_ICON.svg"; -export { default as TRASH_ICON } from "./TRASH_ICON.svg"; -export { default as TWINKLE_CIRCLE_ICON } from "./TWINKLE_CIRCLE_ICON.svg"; -export { default as USER_ICON } from "./USER_ICON.svg"; -export { default as USER_SQUARE_ICON } from "./USER_SQUARE_ICON.svg"; -export { default as WARNING_TRIANGLE_ICON } from "./WARNING_TRIANGLE_ICON.svg"; -export { default as X_ICON } from "./X_ICON.svg"; +export { default as AlarmIcon } from "./ALARM_ICON.svg"; +export { default as ArrowBackAndroidIcon } from "./ARROW_BACK_ANDROID_ICON.svg"; +export { default as ArrowDecreaseIcon } from "./ARROW_DECREASE_ICON.svg"; +export { default as ArrowIncreaseIcon } from "./ARROW_INCREASE_ICON.svg"; +export { default as ArrowLeftSmallIcon } from "./ARROW_LEFT_SMALL_ICON.svg"; +export { default as ArrowRightAndroidIcon } from "./ARROW_RIGHT_ANDROID_ICON.svg"; +export { default as ArrowRightSmallIcon } from "./ARROW_RIGHT_SMALL_ICON.svg"; +export { default as CalendarCheckIcon } from "./CALENDAR_CHECK_ICON.svg"; +export { default as CameraIcon } from "./CAMERA_ICON.svg"; +export { default as ChatBubbleDotsIcon } from "./CHAT_BUBBLE_DOTS_ICON.svg"; +export { default as ChatBubbleIcon } from "./CHAT_BUBBLE_ICON.svg"; +export { default as CheckIcon } from "./CHECK_ICON.svg"; +export { default as ClockIcon } from "./CLOCK_ICON.svg"; +export { default as DotsIcon } from "./DOTS_ICON.svg"; +export { default as DownloadIcon } from "./DOWNLOAD_ICON.svg"; +export { default as FilterIcon } from "./FILTER_ICON.svg"; +export { default as HeartIcon } from "./HEART_ICON.svg"; +export { default as HomeIcon } from "./HOME_ICON.svg"; +export { default as KakaoIcon } from "./KAKAO_ICON.svg"; +export { default as LockIcon } from "./LOCK_ICON.svg"; +export { default as PictureIcon } from "./PICTURE_ICON.svg"; +export { default as PinLocationIcon } from "./PIN_LOCATION_ICON.svg"; +export { default as PlusIcon } from "./PLUS_ICON.svg"; +export { default as SearchIcon } from "./SEARCH_ICON.svg"; +export { default as SettingIcon } from "./SETTING_ICON.svg"; +export { default as ShareIcon } from "./SHARE_ICON.svg"; +export { default as StackUpSquareIcon } from "./STACK_UP_SQUARE_ICON.svg"; +export { default as StarIcon } from "./STAR_ICON.svg"; +export { default as TrashIcon } from "./TRASH_ICON.svg"; +export { default as TwinkleCircleIcon } from "./TWINKLE_CIRCLE_ICON.svg"; +export { default as UserIcon } from "./USER_ICON.svg"; +export { default as UserSquareIcon } from "./USER_SQUARE_ICON.svg"; +export { default as WarningTriangleIcon } from "./WARNING_TRIANGLE_ICON.svg"; +export { default as XIcon } from "./X_ICON.svg"; diff --git a/tailwind.config.ts b/tailwind.config.ts index 6f77b83..fea3419 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -50,6 +50,7 @@ const config: Config = { "secondary-yellow-bg": COLORS.SECONDARY_YELLOW_BG, "secondary-green-bg": COLORS.SECONDARY_GREEN_BG, "secondary-blue-bg": COLORS.SECONDARY_BLUE_BG, + kakao: "#FEE500", }, margin: { "btm-nav-bar": "50px", From 72225ebf90728ec0451907ea095c663e5b1a36c4 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 22:53:21 +0900 Subject: [PATCH 15/42] =?UTF-8?q?=F0=9F=94=A8=20settings:=20=ED=8F=B0?= =?UTF-8?q?=ED=8A=B8=20=ED=8C=8C=EC=9D=BC=20=EC=9C=84=EC=B9=98=20=EB=B3=80?= =?UTF-8?q?=EA=B2=BD=20=EB=B0=8F=20=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81?= =?UTF-8?q?=EC=97=90=20=EC=A0=81=EC=9A=A9=20=EC=99=84=EB=A3=8C=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .storybook/main.ts | 16 +++++++++++----- .storybook/preview.tsx | 5 ++++- .../fonts/Pretendard-Bold.subset.woff2 | Bin .../fonts/Pretendard-Medium.subset.woff2 | Bin .../fonts/Pretendard-Regular.subset.woff2 | Bin .../fonts/Pretendard-SemiBold.subset.woff2 | Bin src/app/fonts/index.ts | 8 ++++---- 7 files changed, 19 insertions(+), 10 deletions(-) rename {src/app => public}/fonts/Pretendard-Bold.subset.woff2 (100%) rename {src/app => public}/fonts/Pretendard-Medium.subset.woff2 (100%) rename {src/app => public}/fonts/Pretendard-Regular.subset.woff2 (100%) rename {src/app => public}/fonts/Pretendard-SemiBold.subset.woff2 (100%) diff --git a/.storybook/main.ts b/.storybook/main.ts index 9de2fdc..a4eb823 100644 --- a/.storybook/main.ts +++ b/.storybook/main.ts @@ -1,7 +1,17 @@ import type { StorybookConfig } from "@storybook/nextjs"; const config: StorybookConfig = { - staticDirs: ["../public"], + staticDirs: [ + "../public", + { + from: "../public/images", + to: "/public/images", + }, + { + from: "../public/fonts", + to: "/public/fonts", + }, + ], stories: ["../src/**/*.mdx", "../src/**/*.stories.@(js|jsx|mjs|ts|tsx)"], addons: [ "@storybook/addon-onboarding", @@ -20,10 +30,6 @@ const config: StorybookConfig = { typescript: { reactDocgen: "react-docgen-typescript", }, - previewHead: (head) => ` - ${head} - -`, webpackFinal: async (config) => { config.module?.rules?.forEach((rule) => { if ( diff --git a/.storybook/preview.tsx b/.storybook/preview.tsx index b89fbe7..8241764 100644 --- a/.storybook/preview.tsx +++ b/.storybook/preview.tsx @@ -1,7 +1,10 @@ import type { Preview } from "@storybook/react"; import React from "react"; +import "../src/styles/reset.css"; import "../src/styles/globals.css"; +import { cn } from "../src/utils/cn"; +import { Pretendard } from "../src/app/fonts/index"; const preview: Preview = { parameters: { @@ -16,7 +19,7 @@ const preview: Preview = { }, decorators: [ (Story) => ( -
+
), diff --git a/src/app/fonts/Pretendard-Bold.subset.woff2 b/public/fonts/Pretendard-Bold.subset.woff2 similarity index 100% rename from src/app/fonts/Pretendard-Bold.subset.woff2 rename to public/fonts/Pretendard-Bold.subset.woff2 diff --git a/src/app/fonts/Pretendard-Medium.subset.woff2 b/public/fonts/Pretendard-Medium.subset.woff2 similarity index 100% rename from src/app/fonts/Pretendard-Medium.subset.woff2 rename to public/fonts/Pretendard-Medium.subset.woff2 diff --git a/src/app/fonts/Pretendard-Regular.subset.woff2 b/public/fonts/Pretendard-Regular.subset.woff2 similarity index 100% rename from src/app/fonts/Pretendard-Regular.subset.woff2 rename to public/fonts/Pretendard-Regular.subset.woff2 diff --git a/src/app/fonts/Pretendard-SemiBold.subset.woff2 b/public/fonts/Pretendard-SemiBold.subset.woff2 similarity index 100% rename from src/app/fonts/Pretendard-SemiBold.subset.woff2 rename to public/fonts/Pretendard-SemiBold.subset.woff2 diff --git a/src/app/fonts/index.ts b/src/app/fonts/index.ts index 8937a46..dc990b6 100644 --- a/src/app/fonts/index.ts +++ b/src/app/fonts/index.ts @@ -3,22 +3,22 @@ import localFont from "next/font/local"; export const Pretendard = localFont({ src: [ { - path: "./Pretendard-Bold.subset.woff2", + path: "../../../public/fonts/Pretendard-Bold.subset.woff2", weight: "700", style: "normal", }, { - path: "./Pretendard-SemiBold.subset.woff2", + path: "../../../public/fonts/Pretendard-SemiBold.subset.woff2", weight: "600", style: "normal", }, { - path: "./Pretendard-Medium.subset.woff2", + path: "../../../public/fonts/Pretendard-Medium.subset.woff2", weight: "500", style: "normal", }, { - path: "./Pretendard-Regular.subset.woff2", + path: "../../../public/fonts/Pretendard-Regular.subset.woff2", weight: "400", style: "normal", }, From f6da6bc8d51a00b2869e60a9a86609cb3c4c5a8f Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 22:54:42 +0900 Subject: [PATCH 16/42] =?UTF-8?q?=E2=9C=A8=20feat:=20=EC=95=84=EC=9D=B4?= =?UTF-8?q?=EC=BD=98=20=EB=B2=84=ED=8A=BC=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/Button/BaisButton/BasicButton.tsx | 4 +- .../Button/IconButton/IconButton.stories.tsx | 47 +++++++++++++++++++ .../common/Button/IconButton/IconButton.tsx | 27 +++++++++++ .../Chip/BasicChip/BasicChip.stories.tsx | 41 ++++++++++++++++ 4 files changed, 117 insertions(+), 2 deletions(-) create mode 100644 src/components/common/Button/IconButton/IconButton.stories.tsx create mode 100644 src/components/common/Button/IconButton/IconButton.tsx create mode 100644 src/components/common/Chip/BasicChip/BasicChip.stories.tsx diff --git a/src/components/common/Button/BaisButton/BasicButton.tsx b/src/components/common/Button/BaisButton/BasicButton.tsx index 309f546..44277d8 100644 --- a/src/components/common/Button/BaisButton/BasicButton.tsx +++ b/src/components/common/Button/BaisButton/BasicButton.tsx @@ -8,7 +8,7 @@ export interface Props label: string; } -const SquareTabButton: FC = ({ label, active = false, ...props }) => { +const BasicButton: FC = ({ label, active = false, ...props }) => { return ( + ); +}; + +export default IconButton; diff --git a/src/components/common/Chip/BasicChip/BasicChip.stories.tsx b/src/components/common/Chip/BasicChip/BasicChip.stories.tsx new file mode 100644 index 0000000..0b0af78 --- /dev/null +++ b/src/components/common/Chip/BasicChip/BasicChip.stories.tsx @@ -0,0 +1,41 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import BasicChip from "./BasicChip"; + +const meta: Meta = { + title: "Chip/BasicChip", + component: BasicChip, + parameters: { + layout: "centered", + }, + + argTypes: { + active: { + control: { + type: "boolean", + }, + }, + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Defaut: Story = { + args: { + label: "Text", + active: false, + }, +}; + +export const Active: Story = { + args: { + label: "Text", + active: true, + }, +}; From 504030ced99562b64024f7468f5f930cb17af0a1 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 22:55:50 +0900 Subject: [PATCH 17/42] =?UTF-8?q?=E2=9C=A8=20feat:=20chip=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/Chip/BasicChip/BasicChip.tsx | 30 ++++++++++++++ .../Chip/ReviewChip/ReviewChip.stories.tsx | 41 +++++++++++++++++++ .../common/Chip/ReviewChip/ReviewChip.tsx | 30 ++++++++++++++ .../SearchHistoryChip.stories.tsx | 28 +++++++++++++ .../SearchHistoryChip/SearchHistoryChip.tsx | 32 +++++++++++++++ 5 files changed, 161 insertions(+) create mode 100644 src/components/common/Chip/BasicChip/BasicChip.tsx create mode 100644 src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx create mode 100644 src/components/common/Chip/ReviewChip/ReviewChip.tsx create mode 100644 src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx create mode 100644 src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.tsx diff --git a/src/components/common/Chip/BasicChip/BasicChip.tsx b/src/components/common/Chip/BasicChip/BasicChip.tsx new file mode 100644 index 0000000..433e4bd --- /dev/null +++ b/src/components/common/Chip/BasicChip/BasicChip.tsx @@ -0,0 +1,30 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + active?: boolean; + label: string; +} + +const ReviewChip: FC = ({ active = false, label, ...props }) => { + return ( + + ); +}; + +export default ReviewChip; diff --git a/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx b/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx new file mode 100644 index 0000000..4451bdf --- /dev/null +++ b/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx @@ -0,0 +1,41 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import ReviewChip from "./ReviewChip"; + +const meta: Meta = { + title: "Chip/ReviewChip", + component: ReviewChip, + parameters: { + layout: "centered", + }, + + argTypes: { + active: { + control: { + type: "boolean", + }, + }, + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Defaut: Story = { + args: { + label: "✨쾌적해요", + active: false, + }, +}; + +export const Active: Story = { + args: { + label: "✨쾌적해요", + active: true, + }, +}; diff --git a/src/components/common/Chip/ReviewChip/ReviewChip.tsx b/src/components/common/Chip/ReviewChip/ReviewChip.tsx new file mode 100644 index 0000000..6602a85 --- /dev/null +++ b/src/components/common/Chip/ReviewChip/ReviewChip.tsx @@ -0,0 +1,30 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + active?: boolean; + label: string; +} + +const ReviewChip: FC = ({ active = false, label, ...props }) => { + return ( + + ); +}; + +export default ReviewChip; diff --git a/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx b/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx new file mode 100644 index 0000000..6cd114c --- /dev/null +++ b/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import SearchHistoryChip from "./SearchHistoryChip"; + +const meta: Meta = { + title: "Chip/SearchHistoryChip", + component: SearchHistoryChip, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const SearchHistory: Story = { + args: { + label: "인천 락 페스티벌", + }, +}; diff --git a/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.tsx b/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.tsx new file mode 100644 index 0000000..93075be --- /dev/null +++ b/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.tsx @@ -0,0 +1,32 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +import { XIcon } from "../../../icons"; + +export interface Props + extends Omit, "children"> { + label: string; +} + +const SearchHistoryChip: FC = ({ label, ...props }) => { + return ( + + ); +}; + +export default SearchHistoryChip; From 5ad0ad192dd6480fd8c5fb4bf38d8b926e13ef85 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 22:57:28 +0900 Subject: [PATCH 18/42] =?UTF-8?q?=E2=9C=A8=20feat:=20tag=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/Tag/DateTag/DateTag.stories.tsx | 28 ++++++++++++++++++ src/components/common/Tag/DateTag/DateTag.tsx | 29 +++++++++++++++++++ .../RecommedFestivalTag.stories.tsx | 28 ++++++++++++++++++ .../RecommedFestivalTag.tsx | 27 +++++++++++++++++ .../Tag/ReviewTag/ReviewTag.stories.tsx | 28 ++++++++++++++++++ .../common/Tag/ReviewTag/ReviewTag.tsx | 27 +++++++++++++++++ 6 files changed, 167 insertions(+) create mode 100644 src/components/common/Tag/DateTag/DateTag.stories.tsx create mode 100644 src/components/common/Tag/DateTag/DateTag.tsx create mode 100644 src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx create mode 100644 src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx create mode 100644 src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx create mode 100644 src/components/common/Tag/ReviewTag/ReviewTag.tsx diff --git a/src/components/common/Tag/DateTag/DateTag.stories.tsx b/src/components/common/Tag/DateTag/DateTag.stories.tsx new file mode 100644 index 0000000..02e3244 --- /dev/null +++ b/src/components/common/Tag/DateTag/DateTag.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import DateTag from "./DateTag"; + +const meta: Meta = { + title: "Tag/DateTag", + component: DateTag, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Date: Story = { + args: { + label: "D-2", + }, +}; diff --git a/src/components/common/Tag/DateTag/DateTag.tsx b/src/components/common/Tag/DateTag/DateTag.tsx new file mode 100644 index 0000000..04f931e --- /dev/null +++ b/src/components/common/Tag/DateTag/DateTag.tsx @@ -0,0 +1,29 @@ +import React, { HtmlHTMLAttributes } from "react"; +import { FC } from "react"; + +// import { X_ICON } from "@/components/icons"; +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + label: string; +} + +const DateTag: FC = ({ label, ...props }) => { + return ( + + ); +}; + +export default DateTag; diff --git a/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx b/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx new file mode 100644 index 0000000..bcf2295 --- /dev/null +++ b/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import RecommedFestivalTag from "./RecommedFestivalTag"; + +const meta: Meta = { + title: "Tag/RecommedFestivalTag", + component: RecommedFestivalTag, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const RecommedFestival: Story = { + args: { + label: "오디가님을 위한 추천 페스티벌", + }, +}; diff --git a/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx b/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx new file mode 100644 index 0000000..db6e6d5 --- /dev/null +++ b/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx @@ -0,0 +1,27 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + label: string; +} + +const RecommedFestivalTag: FC = ({ label, ...props }) => { + return ( + + ); +}; + +export default RecommedFestivalTag; diff --git a/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx b/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx new file mode 100644 index 0000000..6232100 --- /dev/null +++ b/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import ReviewTag from "./ReviewTag"; + +const meta: Meta = { + title: "Tag/ReviewTag", + component: ReviewTag, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Defaut: Story = { + args: { + label: "✨쾌적해요", + }, +}; diff --git a/src/components/common/Tag/ReviewTag/ReviewTag.tsx b/src/components/common/Tag/ReviewTag/ReviewTag.tsx new file mode 100644 index 0000000..dc16b71 --- /dev/null +++ b/src/components/common/Tag/ReviewTag/ReviewTag.tsx @@ -0,0 +1,27 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + label: string; +} + +const ReviewTag: FC = ({ label, ...props }) => { + return ( + + ); +}; + +export default ReviewTag; From c1e1f284db65bdec530cd8c0e2d647d338f87f28 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 23:05:33 +0900 Subject: [PATCH 19/42] =?UTF-8?q?=E2=9C=A8=20feat:=20list=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/List/BasicTile.stories.tsx | 51 +++++++++++ src/components/common/List/BasicTile.tsx | 33 +++++++ .../common/List/FestivalTile.stories.tsx | 87 +++++++++++++++++++ src/components/common/List/FestivalTile.tsx | 54 ++++++++++++ .../common/List/ReviewTile.stories.tsx | 52 +++++++++++ src/components/common/List/ReviewTile.tsx | 64 ++++++++++++++ 6 files changed, 341 insertions(+) create mode 100644 src/components/common/List/BasicTile.stories.tsx create mode 100644 src/components/common/List/BasicTile.tsx create mode 100644 src/components/common/List/FestivalTile.stories.tsx create mode 100644 src/components/common/List/FestivalTile.tsx create mode 100644 src/components/common/List/ReviewTile.stories.tsx create mode 100644 src/components/common/List/ReviewTile.tsx diff --git a/src/components/common/List/BasicTile.stories.tsx b/src/components/common/List/BasicTile.stories.tsx new file mode 100644 index 0000000..4617ba5 --- /dev/null +++ b/src/components/common/List/BasicTile.stories.tsx @@ -0,0 +1,51 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import BasicTile from "./BasicTile"; + +const meta: Meta = { + title: "List/BasicTile", + component: BasicTile, + parameters: { + layout: "centered", + }, + + argTypes: { + active: { + control: { + type: "boolean", + }, + }, + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ( +
+ +
+ ), + args: { + active: false, + label: "👫👭 가족", + }, +}; + +export const Active: Story = { + render: (args) => ( +
+ +
+ ), + args: { + active: true, + label: "👫👭 가족", + }, +}; diff --git a/src/components/common/List/BasicTile.tsx b/src/components/common/List/BasicTile.tsx new file mode 100644 index 0000000..802ff78 --- /dev/null +++ b/src/components/common/List/BasicTile.tsx @@ -0,0 +1,33 @@ +import { FC, HtmlHTMLAttributes } from "react"; + +// import { X_ICON } from "@/components/icons"; +import { cn } from "@/utils/cn"; + +export interface Props + extends Omit, "children"> { + active: boolean; + label: string; +} + +const BasicTile: FC = ({ active, label, ...props }) => { + return ( + + ); +}; + +export default BasicTile; diff --git a/src/components/common/List/FestivalTile.stories.tsx b/src/components/common/List/FestivalTile.stories.tsx new file mode 100644 index 0000000..f8cc3a1 --- /dev/null +++ b/src/components/common/List/FestivalTile.stories.tsx @@ -0,0 +1,87 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import React from "react"; + +import { HeartIcon } from "@/components/icons"; + +import IconButton from "../Button/IconButton/IconButton"; +import DateTag from "../Tag/DateTag/DateTag"; +import FestivalTile from "./FestivalTile"; + +const meta: Meta = { + title: "List/FestivalTile", + component: FestivalTile, + parameters: { + layout: "centered", + }, + + argTypes: { + festival: { + src: "/images/festival.png", + title: "서울 치맥 페스티벌", + location: "서울 광진구", + duration: "8월 1일 ~ 8월 4일", + dday: "D-2", + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const HomeFestivalTile: Story = { + render: (args) => ( +
+ +
+ ), + args: { + festival: { + src: "/images/festival.png", + title: "서울 치맥 페스티벌", + location: "서울 광진구", + duration: "8월 1일 ~ 8월 4일", + dday: "D-2", + }, + icon: , + }, +}; + +export const UnScrabedFestivalTile: Story = { + render: (args) => ( +
+ +
+ ), + args: { + festival: { + src: "/images/festival.png", + title: "서울 치맥 페스티벌", + location: "서울 광진구", + duration: "8월 1일 ~ 8월 4일", + dday: "D-2", + }, + icon: ( + } /> + ), + }, +}; + +export const ScrabedFestivalTile: Story = { + render: (args) => ( +
+ +
+ ), + args: { + festival: { + src: "/images/festival.png", + title: "서울 치맥 페스티벌", + location: "서울 광진구", + duration: "8월 1일 ~ 8월 4일", + dday: "D-2", + }, + icon: ( + } /> + ), + }, +}; diff --git a/src/components/common/List/FestivalTile.tsx b/src/components/common/List/FestivalTile.tsx new file mode 100644 index 0000000..d0f6729 --- /dev/null +++ b/src/components/common/List/FestivalTile.tsx @@ -0,0 +1,54 @@ +import Image from "next/image"; +import { FC, HtmlHTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +interface Festival { + src: string; + title: string; + location: string; + duration: string; + dday: string; +} + +export interface Props + extends Omit, "children"> { + festival: Festival; + icon: React.ReactNode; +} + +const FestivalTile: FC = ({ festival, icon, ...props }) => { + return ( + + ); +}; + +export default FestivalTile; diff --git a/src/components/common/List/ReviewTile.stories.tsx b/src/components/common/List/ReviewTile.stories.tsx new file mode 100644 index 0000000..c9c0954 --- /dev/null +++ b/src/components/common/List/ReviewTile.stories.tsx @@ -0,0 +1,52 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import React from "react"; + +import ReviewTile from "./ReviewTile"; + +const meta: Meta = { + title: "List/ReviewTile", + component: ReviewTile, + parameters: { + layout: "centered", + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ( +
+ +
+ ), + args: { + festivalReview: { + src: "/images/festivalReview.png", + title: "서울 치맥 페스티벌", + content: + "완전 더워요... 선크림 필수.. 빨간 트럭에서파는 치킨 추천합니당 바삭하고 맛있어요. 바삭하고 맛있어요. 바삭하고 맛있어요.", + duration: "8월 1일 ~ 8월 4일", + rating: 4, + keywords: ["✨쾌적해요", "✨쾌적해요"], + }, + }, +}; + +export const WithOutPhoto: Story = { + render: (args) => ( +
+ +
+ ), + args: { + festivalReview: { + title: "서울 치맥 페스티벌", + content: + "완전 더워요... 선크림 필수.. 빨간 트럭에서파는 치킨 추천합니당 바삭하고 맛있어요. 바삭하고 맛있어요. 바삭하고 맛있어요.", + duration: "8월 1일 ~ 8월 4일", + rating: 4, + keywords: ["✨쾌적해요", "✨쾌적해요"], + }, + }, +}; diff --git a/src/components/common/List/ReviewTile.tsx b/src/components/common/List/ReviewTile.tsx new file mode 100644 index 0000000..f1cbe3a --- /dev/null +++ b/src/components/common/List/ReviewTile.tsx @@ -0,0 +1,64 @@ +import Image from "next/image"; +import { FC, HtmlHTMLAttributes } from "react"; + +import Ratings from "@/components/rating/Ratings"; +import { cn } from "@/utils/cn"; + +import ReviewTag from "../Tag/ReviewTag/ReviewTag"; + +interface FestivalReview { + src?: string; + title: string; + content: string; + duration: string; + keywords: string[]; + rating: number; +} + +export interface Props + extends Omit, "children"> { + festivalReview: FestivalReview; +} + +const ReviewTile: FC = ({ festivalReview, ...props }) => { + const firstTwoKeywords = festivalReview.keywords.slice(0, 2); + + return ( +
+ {!!festivalReview.src && ( +
+ {festivalReview.title} +
+ )} + +
+
+
+ + {festivalReview.title} + + +
+ + {festivalReview.content} + +
+
+ {firstTwoKeywords.map((keyword) => ( + + ))} +
+
+
+ ); +}; + +export default ReviewTile; From e33fed33d55bf2d34c99ea08152c2193e489f14e Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 23:06:12 +0900 Subject: [PATCH 20/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20iconButton=20acti?= =?UTF-8?q?ve=20=ED=95=84=EB=93=9C=20=EC=98=B5=EC=85=94=EB=84=90=EB=A1=9C?= =?UTF-8?q?=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/Button/IconButton/IconButton.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/components/common/Button/IconButton/IconButton.tsx b/src/components/common/Button/IconButton/IconButton.tsx index 96d5c3d..c9a2d64 100644 --- a/src/components/common/Button/IconButton/IconButton.tsx +++ b/src/components/common/Button/IconButton/IconButton.tsx @@ -4,7 +4,7 @@ import { cn } from "@/utils/cn"; export interface Props extends Omit, "children"> { - active: boolean; + active?: boolean; icon: React.ReactNode; } From 3af387f86cae40948e5850a6ef787c6c130de949 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 23:07:00 +0900 Subject: [PATCH 21/42] =?UTF-8?q?=F0=9F=92=85=20style:=20typography=20lint?= =?UTF-8?q?height=201.5=20-\>=201.2=EB=A1=9C=20=EC=88=98=EC=A0=95=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/styles/theme/typography.ts | 40 +++++++++++++++++----------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/styles/theme/typography.ts b/src/styles/theme/typography.ts index ee30478..574c2fe 100644 --- a/src/styles/theme/typography.ts +++ b/src/styles/theme/typography.ts @@ -3,7 +3,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "18px", OPTIONS: { fontWeight: 600, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -11,7 +11,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "20px", OPTIONS: { fontWeight: 700, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -19,7 +19,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "16px", OPTIONS: { fontWeight: 700, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -27,7 +27,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "16px", OPTIONS: { fontWeight: 600, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -35,7 +35,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "16px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -43,7 +43,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "16px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -51,7 +51,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 400, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -59,7 +59,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -67,7 +67,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 400, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -75,7 +75,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 600, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -83,7 +83,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 700, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -91,7 +91,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "12px", OPTIONS: { fontWeight: 400, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -99,7 +99,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "12px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -107,7 +107,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "11px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -115,7 +115,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "10px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -123,7 +123,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 400, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -131,7 +131,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -139,7 +139,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "16px", OPTIONS: { fontWeight: 600, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -147,7 +147,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 500, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, @@ -155,7 +155,7 @@ export const TYPOGRAPHY = { FONT_SIZE: "14px", OPTIONS: { fontWeight: 400, - lineHeight: "1.5", + lineHeight: "1.2", letterSpacing: "0", }, }, From 0442352005ac961d135c47119229898f653d2d69 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 23:09:50 +0900 Subject: [PATCH 22/42] =?UTF-8?q?=E2=9C=A8=20feat:=20input=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../common/Input/SearchInput.stories.tsx | 20 +++++++++++++ src/components/common/Input/SearchInput.tsx | 29 +++++++++++++++++++ 2 files changed, 49 insertions(+) create mode 100644 src/components/common/Input/SearchInput.stories.tsx create mode 100644 src/components/common/Input/SearchInput.tsx diff --git a/src/components/common/Input/SearchInput.stories.tsx b/src/components/common/Input/SearchInput.stories.tsx new file mode 100644 index 0000000..639b68d --- /dev/null +++ b/src/components/common/Input/SearchInput.stories.tsx @@ -0,0 +1,20 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import SearchInput from "./SearchInput"; + +const meta: Meta = { + title: "Input/SearchInput", + component: SearchInput, + parameters: { + layout: "centered", + }, + + argTypes: {}, +}; + +export default meta; +type Story = StoryObj; + +export const SearchHistory: Story = { + args: {}, +}; diff --git a/src/components/common/Input/SearchInput.tsx b/src/components/common/Input/SearchInput.tsx new file mode 100644 index 0000000..a70bb61 --- /dev/null +++ b/src/components/common/Input/SearchInput.tsx @@ -0,0 +1,29 @@ +import React, { FC, HTMLProps } from "react"; + +import { SearchIcon } from "@/components/icons"; + +interface Props extends HTMLProps { + onClick: () => void; +} + +const SearchInput: FC = ({ onClick, ...props }) => { + return ( +
+ + +
+ ); +}; + +export default SearchInput; From 0920ac69c471d805cc43f1f2f4758c2911521641 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 23:11:56 +0900 Subject: [PATCH 23/42] =?UTF-8?q?=E2=9C=A8=20feat:=20header=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../MobileHeader/MobileHeader.stories.tsx | 34 +++++++++++++++++++ .../Mobile/MobileHeader/MobileHeader.tsx | 23 +++++++++++++ .../MobileHeader/MobileHomeHeader.stories.tsx | 26 ++++++++++++++ .../Mobile/MobileHeader/MobileHomeHeader.tsx | 26 ++++++++++++++ .../MobileSearchHeader.stories.tsx | 34 +++++++++++++++++++ .../MobileHeader/MobileSearchHeader.tsx | 22 ++++++++++++ 6 files changed, 165 insertions(+) create mode 100644 src/layout/Mobile/MobileHeader/MobileHeader.stories.tsx create mode 100644 src/layout/Mobile/MobileHeader/MobileHeader.tsx create mode 100644 src/layout/Mobile/MobileHeader/MobileHomeHeader.stories.tsx create mode 100644 src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx create mode 100644 src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx create mode 100644 src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx diff --git a/src/layout/Mobile/MobileHeader/MobileHeader.stories.tsx b/src/layout/Mobile/MobileHeader/MobileHeader.stories.tsx new file mode 100644 index 0000000..753d083 --- /dev/null +++ b/src/layout/Mobile/MobileHeader/MobileHeader.stories.tsx @@ -0,0 +1,34 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import React from "react"; + +import MobileHeader from "./MobileHeader"; + +const meta: Meta = { + title: "Header/DefaultHeader", + component: MobileHeader, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ( +
+ +
+ ), + args: { + label: "TEXT", + }, +}; diff --git a/src/layout/Mobile/MobileHeader/MobileHeader.tsx b/src/layout/Mobile/MobileHeader/MobileHeader.tsx new file mode 100644 index 0000000..0a11c68 --- /dev/null +++ b/src/layout/Mobile/MobileHeader/MobileHeader.tsx @@ -0,0 +1,23 @@ +import React, { FC } from "react"; + +import { ArrowLeftSmallIcon } from "../../../components/icons"; + +interface Props { + label: string; + onClick?: () => void; +} + +const MobileHeader: FC = ({ label, onClick }) => { + return ( +
+ + + {label} +
+
+ ); +}; + +export default MobileHeader; diff --git a/src/layout/Mobile/MobileHeader/MobileHomeHeader.stories.tsx b/src/layout/Mobile/MobileHeader/MobileHomeHeader.stories.tsx new file mode 100644 index 0000000..f47ae6d --- /dev/null +++ b/src/layout/Mobile/MobileHeader/MobileHomeHeader.stories.tsx @@ -0,0 +1,26 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import React from "react"; + +import MobileHomeHeader from "./MobileHomeHeader"; + +const meta: Meta = { + title: "Header/HomeHeader", + component: MobileHomeHeader, + parameters: { + layout: "centered", + }, + + argTypes: {}, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ( +
+ +
+ ), + args: {}, +}; diff --git a/src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx b/src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx new file mode 100644 index 0000000..8dc94ff --- /dev/null +++ b/src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx @@ -0,0 +1,26 @@ +import { FC } from "react"; + +import { AlarmIcon, CameraIcon, SearchIcon } from "../../../components/icons"; + +interface Props {} + +const MobileHomeHeader: FC = ({}) => { + return ( +
+ + +
+ + +
+
+ ); +}; + +export default MobileHomeHeader; diff --git a/src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx b/src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx new file mode 100644 index 0000000..c9aadbf --- /dev/null +++ b/src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx @@ -0,0 +1,34 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import React from "react"; + +import MobileSearchHeader from "./MobileSearchHeader"; + +const meta: Meta = { + title: "Header/SearchHeader", + component: MobileSearchHeader, + parameters: { + layout: "centered", + }, + + argTypes: { + label: { + control: { + type: "text", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: (args) => ( +
+ +
+ ), + args: { + label: "TEXT", + }, +}; diff --git a/src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx b/src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx new file mode 100644 index 0000000..64092d8 --- /dev/null +++ b/src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx @@ -0,0 +1,22 @@ +import Link from "next/link"; +import React, { FC } from "react"; + +import SearchInput from "@/components/common/Input/SearchInput"; + +import { ArrowLeftSmallIcon } from "../../../components/icons"; + +interface Props {} + +const MobileSearchHeader: FC = ({}) => { + return ( +
+ + + + + {}} /> +
+ ); +}; + +export default MobileSearchHeader; From 230b068e114bfe6b89a164e625d19a490f24d0cc Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 23:18:37 +0900 Subject: [PATCH 24/42] =?UTF-8?q?=F0=9F=93=9D=20docs:=20=EC=BD=94=EC=96=B4?= =?UTF-8?q?=20=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81=20=EC=BB=B4=ED=8F=AC?= =?UTF-8?q?=EB=84=8C=ED=8A=B8=EC=9D=84=20Core=20=EB=8C=80=EB=B6=84?= =?UTF-8?q?=EB=A5=98=EC=95=88=EC=9C=BC=EB=A1=9C=20=EB=B6=84=EB=A5=98=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/common/Button/BaisButton/BasicButton.stories.tsx | 2 +- src/components/common/Button/IconButton/IconButton.stories.tsx | 2 +- .../common/Button/KakaoButton/KakaoButton.stories.tsx | 2 +- .../Button/RactangleTabButton/RectangleTabButton.stories.tsx | 2 +- .../common/Button/RegisterButton/RegisterButton.stories.tsx | 2 +- .../common/Button/SquareTabButton/SquareTabButton.stories.tsx | 2 +- src/components/common/Chip/BasicChip/BasicChip.stories.tsx | 2 +- src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx | 2 +- .../common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx | 2 +- src/components/common/Input/SearchInput.stories.tsx | 2 +- src/components/common/Tag/DateTag/DateTag.stories.tsx | 2 +- .../Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx | 2 +- src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx | 2 +- 13 files changed, 13 insertions(+), 13 deletions(-) diff --git a/src/components/common/Button/BaisButton/BasicButton.stories.tsx b/src/components/common/Button/BaisButton/BasicButton.stories.tsx index fc9ad2a..9e385e2 100644 --- a/src/components/common/Button/BaisButton/BasicButton.stories.tsx +++ b/src/components/common/Button/BaisButton/BasicButton.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import BasicButton from "./BasicButton"; const meta: Meta = { - title: "Button/BasicButton", + title: "Core/Button/BasicButton", component: BasicButton, parameters: { layout: "centered", diff --git a/src/components/common/Button/IconButton/IconButton.stories.tsx b/src/components/common/Button/IconButton/IconButton.stories.tsx index 4802e76..c7b6f9c 100644 --- a/src/components/common/Button/IconButton/IconButton.stories.tsx +++ b/src/components/common/Button/IconButton/IconButton.stories.tsx @@ -5,7 +5,7 @@ import { CameraIcon } from "@/components/icons"; import IconButton from "./IconButton"; const meta: Meta = { - title: "Button/IconButton", + title: "Core/Button/IconButton", component: IconButton, parameters: { layout: "centered", diff --git a/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx b/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx index 4c9569b..d708276 100644 --- a/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx +++ b/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import KakaoButton from "./KakaoButton"; const meta: Meta = { - title: "Button/KakaoButton", + title: "Core/Button/KakaoButton", component: KakaoButton, parameters: { layout: "centered", diff --git a/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx b/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx index 0442c0d..43c6559 100644 --- a/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx +++ b/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import RectangleTabButton from "./RectangleTabButton"; const meta: Meta = { - title: "Button/RectangleTabButton", + title: "Core/Button/RectangleTabButton", component: RectangleTabButton, parameters: { layout: "centered", diff --git a/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx b/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx index 86c81e8..8d04417 100644 --- a/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx +++ b/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import RegisterButton from "./RegisterButton"; const meta: Meta = { - title: "Button/RegisterButton", + title: "Core/Button/RegisterButton", component: RegisterButton, parameters: { layout: "centered", diff --git a/src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx b/src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx index 3a08e63..3c896e9 100644 --- a/src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx +++ b/src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import SquareTabButton from "./SquareTabButton"; const meta: Meta = { - title: "Button/SquareTabButton", + title: "Core/Button/SquareTabButton", component: SquareTabButton, parameters: { layout: "centered", diff --git a/src/components/common/Chip/BasicChip/BasicChip.stories.tsx b/src/components/common/Chip/BasicChip/BasicChip.stories.tsx index 0b0af78..587be9f 100644 --- a/src/components/common/Chip/BasicChip/BasicChip.stories.tsx +++ b/src/components/common/Chip/BasicChip/BasicChip.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import BasicChip from "./BasicChip"; const meta: Meta = { - title: "Chip/BasicChip", + title: "Core/Chip/BasicChip", component: BasicChip, parameters: { layout: "centered", diff --git a/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx b/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx index 4451bdf..039806f 100644 --- a/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx +++ b/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import ReviewChip from "./ReviewChip"; const meta: Meta = { - title: "Chip/ReviewChip", + title: "Core/Chip/ReviewChip", component: ReviewChip, parameters: { layout: "centered", diff --git a/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx b/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx index 6cd114c..05f21d9 100644 --- a/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx +++ b/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import SearchHistoryChip from "./SearchHistoryChip"; const meta: Meta = { - title: "Chip/SearchHistoryChip", + title: "Core/Chip/SearchHistoryChip", component: SearchHistoryChip, parameters: { layout: "centered", diff --git a/src/components/common/Input/SearchInput.stories.tsx b/src/components/common/Input/SearchInput.stories.tsx index 639b68d..7ba861b 100644 --- a/src/components/common/Input/SearchInput.stories.tsx +++ b/src/components/common/Input/SearchInput.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import SearchInput from "./SearchInput"; const meta: Meta = { - title: "Input/SearchInput", + title: "Core/Input/SearchInput", component: SearchInput, parameters: { layout: "centered", diff --git a/src/components/common/Tag/DateTag/DateTag.stories.tsx b/src/components/common/Tag/DateTag/DateTag.stories.tsx index 02e3244..1995b43 100644 --- a/src/components/common/Tag/DateTag/DateTag.stories.tsx +++ b/src/components/common/Tag/DateTag/DateTag.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import DateTag from "./DateTag"; const meta: Meta = { - title: "Tag/DateTag", + title: "Core/Tag/DateTag", component: DateTag, parameters: { layout: "centered", diff --git a/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx b/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx index bcf2295..18a3e15 100644 --- a/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx +++ b/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import RecommedFestivalTag from "./RecommedFestivalTag"; const meta: Meta = { - title: "Tag/RecommedFestivalTag", + title: "Core/Tag/RecommedFestivalTag", component: RecommedFestivalTag, parameters: { layout: "centered", diff --git a/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx b/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx index 6232100..728393e 100644 --- a/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx +++ b/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx @@ -3,7 +3,7 @@ import type { Meta, StoryObj } from "@storybook/react"; import ReviewTag from "./ReviewTag"; const meta: Meta = { - title: "Tag/ReviewTag", + title: "Core/Tag/ReviewTag", component: ReviewTag, parameters: { layout: "centered", From 4907eb86a6aba894cac7ce55a23cb5830b7d9d1a Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sat, 3 Aug 2024 23:21:28 +0900 Subject: [PATCH 25/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20directory=20renam?= =?UTF-8?q?e=20common=20-\>=20core?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../{common => core}/Button/BaisButton/BasicButton.stories.tsx | 0 src/components/{common => core}/Button/BaisButton/BasicButton.tsx | 0 .../{common => core}/Button/IconButton/IconButton.stories.tsx | 0 src/components/{common => core}/Button/IconButton/IconButton.tsx | 0 .../{common => core}/Button/KakaoButton/KakaoButton.stories.tsx | 0 .../{common => core}/Button/KakaoButton/KakaoButton.tsx | 0 .../Button/RactangleTabButton/RectangleTabButton.stories.tsx | 0 .../Button/RactangleTabButton/RectangleTabButton.tsx | 0 .../Button/RegisterButton/RegisterButton.stories.tsx | 0 .../{common => core}/Button/RegisterButton/RegisterButton.tsx | 0 .../Button/SquareTabButton/SquareTabButton.stories.tsx | 0 .../{common => core}/Button/SquareTabButton/SquareTabButton.tsx | 0 .../{common => core}/Chip/BasicChip/BasicChip.stories.tsx | 0 src/components/{common => core}/Chip/BasicChip/BasicChip.tsx | 0 .../{common => core}/Chip/ReviewChip/ReviewChip.stories.tsx | 0 src/components/{common => core}/Chip/ReviewChip/ReviewChip.tsx | 0 .../Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx | 0 .../{common => core}/Chip/SearchHistoryChip/SearchHistoryChip.tsx | 0 src/components/{common => core}/Input/SearchInput.stories.tsx | 0 src/components/{common => core}/Input/SearchInput.tsx | 0 src/components/{common => core}/List/BasicTile.stories.tsx | 0 src/components/{common => core}/List/BasicTile.tsx | 0 src/components/{common => core}/List/FestivalTile.stories.tsx | 0 src/components/{common => core}/List/FestivalTile.tsx | 0 src/components/{common => core}/List/ReviewTile.stories.tsx | 0 src/components/{common => core}/List/ReviewTile.tsx | 0 src/components/{common => core}/Tag/DateTag/DateTag.stories.tsx | 0 src/components/{common => core}/Tag/DateTag/DateTag.tsx | 0 .../Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx | 0 .../Tag/RecommendFestivalTag/RecommedFestivalTag.tsx | 0 .../{common => core}/Tag/ReviewTag/ReviewTag.stories.tsx | 0 src/components/{common => core}/Tag/ReviewTag/ReviewTag.tsx | 0 32 files changed, 0 insertions(+), 0 deletions(-) rename src/components/{common => core}/Button/BaisButton/BasicButton.stories.tsx (100%) rename src/components/{common => core}/Button/BaisButton/BasicButton.tsx (100%) rename src/components/{common => core}/Button/IconButton/IconButton.stories.tsx (100%) rename src/components/{common => core}/Button/IconButton/IconButton.tsx (100%) rename src/components/{common => core}/Button/KakaoButton/KakaoButton.stories.tsx (100%) rename src/components/{common => core}/Button/KakaoButton/KakaoButton.tsx (100%) rename src/components/{common => core}/Button/RactangleTabButton/RectangleTabButton.stories.tsx (100%) rename src/components/{common => core}/Button/RactangleTabButton/RectangleTabButton.tsx (100%) rename src/components/{common => core}/Button/RegisterButton/RegisterButton.stories.tsx (100%) rename src/components/{common => core}/Button/RegisterButton/RegisterButton.tsx (100%) rename src/components/{common => core}/Button/SquareTabButton/SquareTabButton.stories.tsx (100%) rename src/components/{common => core}/Button/SquareTabButton/SquareTabButton.tsx (100%) rename src/components/{common => core}/Chip/BasicChip/BasicChip.stories.tsx (100%) rename src/components/{common => core}/Chip/BasicChip/BasicChip.tsx (100%) rename src/components/{common => core}/Chip/ReviewChip/ReviewChip.stories.tsx (100%) rename src/components/{common => core}/Chip/ReviewChip/ReviewChip.tsx (100%) rename src/components/{common => core}/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx (100%) rename src/components/{common => core}/Chip/SearchHistoryChip/SearchHistoryChip.tsx (100%) rename src/components/{common => core}/Input/SearchInput.stories.tsx (100%) rename src/components/{common => core}/Input/SearchInput.tsx (100%) rename src/components/{common => core}/List/BasicTile.stories.tsx (100%) rename src/components/{common => core}/List/BasicTile.tsx (100%) rename src/components/{common => core}/List/FestivalTile.stories.tsx (100%) rename src/components/{common => core}/List/FestivalTile.tsx (100%) rename src/components/{common => core}/List/ReviewTile.stories.tsx (100%) rename src/components/{common => core}/List/ReviewTile.tsx (100%) rename src/components/{common => core}/Tag/DateTag/DateTag.stories.tsx (100%) rename src/components/{common => core}/Tag/DateTag/DateTag.tsx (100%) rename src/components/{common => core}/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx (100%) rename src/components/{common => core}/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx (100%) rename src/components/{common => core}/Tag/ReviewTag/ReviewTag.stories.tsx (100%) rename src/components/{common => core}/Tag/ReviewTag/ReviewTag.tsx (100%) diff --git a/src/components/common/Button/BaisButton/BasicButton.stories.tsx b/src/components/core/Button/BaisButton/BasicButton.stories.tsx similarity index 100% rename from src/components/common/Button/BaisButton/BasicButton.stories.tsx rename to src/components/core/Button/BaisButton/BasicButton.stories.tsx diff --git a/src/components/common/Button/BaisButton/BasicButton.tsx b/src/components/core/Button/BaisButton/BasicButton.tsx similarity index 100% rename from src/components/common/Button/BaisButton/BasicButton.tsx rename to src/components/core/Button/BaisButton/BasicButton.tsx diff --git a/src/components/common/Button/IconButton/IconButton.stories.tsx b/src/components/core/Button/IconButton/IconButton.stories.tsx similarity index 100% rename from src/components/common/Button/IconButton/IconButton.stories.tsx rename to src/components/core/Button/IconButton/IconButton.stories.tsx diff --git a/src/components/common/Button/IconButton/IconButton.tsx b/src/components/core/Button/IconButton/IconButton.tsx similarity index 100% rename from src/components/common/Button/IconButton/IconButton.tsx rename to src/components/core/Button/IconButton/IconButton.tsx diff --git a/src/components/common/Button/KakaoButton/KakaoButton.stories.tsx b/src/components/core/Button/KakaoButton/KakaoButton.stories.tsx similarity index 100% rename from src/components/common/Button/KakaoButton/KakaoButton.stories.tsx rename to src/components/core/Button/KakaoButton/KakaoButton.stories.tsx diff --git a/src/components/common/Button/KakaoButton/KakaoButton.tsx b/src/components/core/Button/KakaoButton/KakaoButton.tsx similarity index 100% rename from src/components/common/Button/KakaoButton/KakaoButton.tsx rename to src/components/core/Button/KakaoButton/KakaoButton.tsx diff --git a/src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx b/src/components/core/Button/RactangleTabButton/RectangleTabButton.stories.tsx similarity index 100% rename from src/components/common/Button/RactangleTabButton/RectangleTabButton.stories.tsx rename to src/components/core/Button/RactangleTabButton/RectangleTabButton.stories.tsx diff --git a/src/components/common/Button/RactangleTabButton/RectangleTabButton.tsx b/src/components/core/Button/RactangleTabButton/RectangleTabButton.tsx similarity index 100% rename from src/components/common/Button/RactangleTabButton/RectangleTabButton.tsx rename to src/components/core/Button/RactangleTabButton/RectangleTabButton.tsx diff --git a/src/components/common/Button/RegisterButton/RegisterButton.stories.tsx b/src/components/core/Button/RegisterButton/RegisterButton.stories.tsx similarity index 100% rename from src/components/common/Button/RegisterButton/RegisterButton.stories.tsx rename to src/components/core/Button/RegisterButton/RegisterButton.stories.tsx diff --git a/src/components/common/Button/RegisterButton/RegisterButton.tsx b/src/components/core/Button/RegisterButton/RegisterButton.tsx similarity index 100% rename from src/components/common/Button/RegisterButton/RegisterButton.tsx rename to src/components/core/Button/RegisterButton/RegisterButton.tsx diff --git a/src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx b/src/components/core/Button/SquareTabButton/SquareTabButton.stories.tsx similarity index 100% rename from src/components/common/Button/SquareTabButton/SquareTabButton.stories.tsx rename to src/components/core/Button/SquareTabButton/SquareTabButton.stories.tsx diff --git a/src/components/common/Button/SquareTabButton/SquareTabButton.tsx b/src/components/core/Button/SquareTabButton/SquareTabButton.tsx similarity index 100% rename from src/components/common/Button/SquareTabButton/SquareTabButton.tsx rename to src/components/core/Button/SquareTabButton/SquareTabButton.tsx diff --git a/src/components/common/Chip/BasicChip/BasicChip.stories.tsx b/src/components/core/Chip/BasicChip/BasicChip.stories.tsx similarity index 100% rename from src/components/common/Chip/BasicChip/BasicChip.stories.tsx rename to src/components/core/Chip/BasicChip/BasicChip.stories.tsx diff --git a/src/components/common/Chip/BasicChip/BasicChip.tsx b/src/components/core/Chip/BasicChip/BasicChip.tsx similarity index 100% rename from src/components/common/Chip/BasicChip/BasicChip.tsx rename to src/components/core/Chip/BasicChip/BasicChip.tsx diff --git a/src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx b/src/components/core/Chip/ReviewChip/ReviewChip.stories.tsx similarity index 100% rename from src/components/common/Chip/ReviewChip/ReviewChip.stories.tsx rename to src/components/core/Chip/ReviewChip/ReviewChip.stories.tsx diff --git a/src/components/common/Chip/ReviewChip/ReviewChip.tsx b/src/components/core/Chip/ReviewChip/ReviewChip.tsx similarity index 100% rename from src/components/common/Chip/ReviewChip/ReviewChip.tsx rename to src/components/core/Chip/ReviewChip/ReviewChip.tsx diff --git a/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx b/src/components/core/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx similarity index 100% rename from src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx rename to src/components/core/Chip/SearchHistoryChip/SearchHistoryChip.stories.tsx diff --git a/src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.tsx b/src/components/core/Chip/SearchHistoryChip/SearchHistoryChip.tsx similarity index 100% rename from src/components/common/Chip/SearchHistoryChip/SearchHistoryChip.tsx rename to src/components/core/Chip/SearchHistoryChip/SearchHistoryChip.tsx diff --git a/src/components/common/Input/SearchInput.stories.tsx b/src/components/core/Input/SearchInput.stories.tsx similarity index 100% rename from src/components/common/Input/SearchInput.stories.tsx rename to src/components/core/Input/SearchInput.stories.tsx diff --git a/src/components/common/Input/SearchInput.tsx b/src/components/core/Input/SearchInput.tsx similarity index 100% rename from src/components/common/Input/SearchInput.tsx rename to src/components/core/Input/SearchInput.tsx diff --git a/src/components/common/List/BasicTile.stories.tsx b/src/components/core/List/BasicTile.stories.tsx similarity index 100% rename from src/components/common/List/BasicTile.stories.tsx rename to src/components/core/List/BasicTile.stories.tsx diff --git a/src/components/common/List/BasicTile.tsx b/src/components/core/List/BasicTile.tsx similarity index 100% rename from src/components/common/List/BasicTile.tsx rename to src/components/core/List/BasicTile.tsx diff --git a/src/components/common/List/FestivalTile.stories.tsx b/src/components/core/List/FestivalTile.stories.tsx similarity index 100% rename from src/components/common/List/FestivalTile.stories.tsx rename to src/components/core/List/FestivalTile.stories.tsx diff --git a/src/components/common/List/FestivalTile.tsx b/src/components/core/List/FestivalTile.tsx similarity index 100% rename from src/components/common/List/FestivalTile.tsx rename to src/components/core/List/FestivalTile.tsx diff --git a/src/components/common/List/ReviewTile.stories.tsx b/src/components/core/List/ReviewTile.stories.tsx similarity index 100% rename from src/components/common/List/ReviewTile.stories.tsx rename to src/components/core/List/ReviewTile.stories.tsx diff --git a/src/components/common/List/ReviewTile.tsx b/src/components/core/List/ReviewTile.tsx similarity index 100% rename from src/components/common/List/ReviewTile.tsx rename to src/components/core/List/ReviewTile.tsx diff --git a/src/components/common/Tag/DateTag/DateTag.stories.tsx b/src/components/core/Tag/DateTag/DateTag.stories.tsx similarity index 100% rename from src/components/common/Tag/DateTag/DateTag.stories.tsx rename to src/components/core/Tag/DateTag/DateTag.stories.tsx diff --git a/src/components/common/Tag/DateTag/DateTag.tsx b/src/components/core/Tag/DateTag/DateTag.tsx similarity index 100% rename from src/components/common/Tag/DateTag/DateTag.tsx rename to src/components/core/Tag/DateTag/DateTag.tsx diff --git a/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx b/src/components/core/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx similarity index 100% rename from src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx rename to src/components/core/Tag/RecommendFestivalTag/RecommedFestivalTag.stories.tsx diff --git a/src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx b/src/components/core/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx similarity index 100% rename from src/components/common/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx rename to src/components/core/Tag/RecommendFestivalTag/RecommedFestivalTag.tsx diff --git a/src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx b/src/components/core/Tag/ReviewTag/ReviewTag.stories.tsx similarity index 100% rename from src/components/common/Tag/ReviewTag/ReviewTag.stories.tsx rename to src/components/core/Tag/ReviewTag/ReviewTag.stories.tsx diff --git a/src/components/common/Tag/ReviewTag/ReviewTag.tsx b/src/components/core/Tag/ReviewTag/ReviewTag.tsx similarity index 100% rename from src/components/common/Tag/ReviewTag/ReviewTag.tsx rename to src/components/core/Tag/ReviewTag/ReviewTag.tsx From f3e9206958fee51337c48e6174d8a0992506345c Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 02:40:35 +0900 Subject: [PATCH 26/42] =?UTF-8?q?=F0=9F=94=A8=20settings:=20=EC=8A=A4?= =?UTF-8?q?=ED=86=A0=EB=A6=AC=EB=B6=81=20=EB=B9=8C=EB=93=9C=20=ED=8C=8C?= =?UTF-8?q?=EC=9D=BC=20ignore=20=EC=B2=98=EB=A6=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 ++ package.json | 2 +- pnpm-lock.yaml | 12 ++++++------ 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/.gitignore b/.gitignore index 5ffbdbf..6f8cc75 100644 --- a/.gitignore +++ b/.gitignore @@ -36,5 +36,7 @@ yarn-error.log* next-env.d.ts *storybook.log +storybook-static .env.local + diff --git a/package.json b/package.json index 54510b3..7888822 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,7 @@ "@typescript-eslint/eslint-plugin": "^7.16.0", "@typescript-eslint/parser": "^7.16.0", "autoprefixer": "^10.4.19", - "chromatic": "^11.5.6", + "chromatic": "^11.7.0", "cz-conventional-changelog": "^3.3.0", "cz-customizable": "^7.1.0", "eslint": "^8.57.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1bc228c..75af264 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -109,8 +109,8 @@ importers: specifier: ^10.4.19 version: 10.4.19(postcss@8.4.39) chromatic: - specifier: ^11.5.6 - version: 11.5.6 + specifier: ^11.7.0 + version: 11.7.0 cz-conventional-changelog: specifier: ^3.3.0 version: 3.3.0(@types/node@20.14.10)(typescript@5.5.3) @@ -2584,8 +2584,8 @@ packages: resolution: {integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==} engines: {node: '>=10'} - chromatic@11.5.6: - resolution: {integrity: sha512-ycX/hlZLs69BltwwBNsEXr+As6x5/0rlwp6W/CiHMZ3tpm7dmkd+hQCsb8JGHb1h49W3qPOKQ/Lh9evqcJ1yeQ==} + chromatic@11.7.0: + resolution: {integrity: sha512-Afblm4MWK6GXutxHPJVWKoY1PxCD98Uw0S3/f1a2wu4VTQy97g4+G8vPVqutSMpZFGzG5NjH9QdzKPFMmZczpw==} hasBin: true peerDependencies: '@chromatic-com/cypress': ^0.*.* || ^1.0.0 @@ -6666,7 +6666,7 @@ snapshots: '@chromatic-com/storybook@1.6.1(react@18.3.1)': dependencies: - chromatic: 11.5.6 + chromatic: 11.7.0 filesize: 10.1.4 jsonfile: 6.1.0 react-confetti: 6.1.0(react@18.3.1) @@ -8667,7 +8667,7 @@ snapshots: chownr@2.0.0: {} - chromatic@11.5.6: {} + chromatic@11.7.0: {} chrome-trace-event@1.0.4: {} From b5fea68f2392b23395875bb8452d4f9b55add756 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 18:38:41 +0900 Subject: [PATCH 27/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20=EC=8A=A4?= =?UTF-8?q?=ED=81=AC=EB=A6=B0=20=EC=82=AC=EC=9D=B4=EC=A6=88=20=EB=84=A4?= =?UTF-8?q?=EC=9D=B4=EB=B0=8D=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tailwind.config.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tailwind.config.ts b/tailwind.config.ts index fea3419..9a0afc4 100644 --- a/tailwind.config.ts +++ b/tailwind.config.ts @@ -14,9 +14,9 @@ const config: Config = { ], theme: { screens: { - "m-sm": "320px", - "m-md": "375px", - "m-lg": "450px", + sm: "320px", + md: "375px", + lg: "450px", }, fontSize: { "2xs": "10px", From 54c4d386a6b60d00170ce69923dd5b76e19bc710 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 18:41:42 +0900 Subject: [PATCH 28/42] =?UTF-8?q?=F0=9F=92=85=20style:=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94,=20=EB=B0=94=EB=94=94,=20=EB=84=A4=EB=B9=84=EA=B2=8C?= =?UTF-8?q?=EC=9D=B4=EC=85=98=EB=B0=94=EB=A5=BC=20=EC=84=A0=EC=96=B8?= =?UTF-8?q?=EC=A0=81=EC=9C=BC=EB=A1=9C=20=EA=B5=AC=EC=A1=B0=EC=84=A4?= =?UTF-8?q?=EC=A0=95=ED=95=98=EA=B8=B0=20=EC=9C=84=ED=95=B4=20view=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=83=9D=EC=84=B1=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/app/calendar/page.tsx | 17 ++++++++++++----- src/app/calendar/view.tsx | 19 +++++++++++++++++++ src/app/chat/page.tsx | 15 ++++++++++----- src/app/chat/view.tsx | 19 +++++++++++++++++++ src/app/map/page.tsx | 17 ++++++++++++----- src/app/map/view.tsx | 19 +++++++++++++++++++ src/app/mypage/page.tsx | 15 ++++++++++----- src/app/mypage/view.tsx | 19 +++++++++++++++++++ src/app/page.tsx | 19 ++++++++++--------- src/app/view.tsx | 19 +++++++++++++++++++ 10 files changed, 149 insertions(+), 29 deletions(-) create mode 100644 src/app/calendar/view.tsx create mode 100644 src/app/chat/view.tsx create mode 100644 src/app/map/view.tsx create mode 100644 src/app/mypage/view.tsx create mode 100644 src/app/view.tsx diff --git a/src/app/calendar/page.tsx b/src/app/calendar/page.tsx index ab47967..d9632a4 100644 --- a/src/app/calendar/page.tsx +++ b/src/app/calendar/page.tsx @@ -1,7 +1,14 @@ -import React from "react"; +import MobileHeader from "@/layout/Mobile/MobileHeader/MobileHeader"; +import NavigationBar from "@/layout/Mobile/NavigationBar/NavigationBar"; -const page = () => { - return
calender
; -}; +import CalendarView from "./view"; -export default page; +export default function Calendar() { + return ( +
+ + + +
+ ); +} diff --git a/src/app/calendar/view.tsx b/src/app/calendar/view.tsx new file mode 100644 index 0000000..91c7ca2 --- /dev/null +++ b/src/app/calendar/view.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +const CalendarView = () => { + return ( +
+
+
+
+
+
+
+
+
+
+
+ ); +}; + +export default CalendarView; diff --git a/src/app/chat/page.tsx b/src/app/chat/page.tsx index caf4633..c37c19f 100644 --- a/src/app/chat/page.tsx +++ b/src/app/chat/page.tsx @@ -1,7 +1,12 @@ -import React from "react"; +import NavigationBar from "@/layout/Mobile/NavigationBar/NavigationBar"; -const page = () => { - return
chat
; -}; +import ChatView from "./view"; -export default page; +export default function Map() { + return ( +
+ + +
+ ); +} diff --git a/src/app/chat/view.tsx b/src/app/chat/view.tsx new file mode 100644 index 0000000..42bdce1 --- /dev/null +++ b/src/app/chat/view.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +const ChatView = () => { + return ( +
+
+
+
+
+
+
+
+
+
+
+ ); +}; + +export default ChatView; diff --git a/src/app/map/page.tsx b/src/app/map/page.tsx index 4ed08bd..1e59081 100644 --- a/src/app/map/page.tsx +++ b/src/app/map/page.tsx @@ -1,7 +1,14 @@ -import React from "react"; +import MobileHeader from "@/layout/Mobile/MobileHeader/MobileHeader"; +import NavigationBar from "@/layout/Mobile/NavigationBar/NavigationBar"; -const page = () => { - return
map
; -}; +import MapView from "./view"; -export default page; +export default function Map() { + return ( +
+ + + +
+ ); +} diff --git a/src/app/map/view.tsx b/src/app/map/view.tsx new file mode 100644 index 0000000..cffb198 --- /dev/null +++ b/src/app/map/view.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +const MapView = () => { + return ( +
+
+
+
+
+
+
+
+
+
+
+ ); +}; + +export default MapView; diff --git a/src/app/mypage/page.tsx b/src/app/mypage/page.tsx index 807da70..190a155 100644 --- a/src/app/mypage/page.tsx +++ b/src/app/mypage/page.tsx @@ -1,7 +1,12 @@ -import React from "react"; +import NavigationBar from "@/layout/Mobile/NavigationBar/NavigationBar"; -const page = () => { - return
mypage
; -}; +import MyPageView from "./view"; -export default page; +export default function Map() { + return ( +
+ + +
+ ); +} diff --git a/src/app/mypage/view.tsx b/src/app/mypage/view.tsx new file mode 100644 index 0000000..f36bccd --- /dev/null +++ b/src/app/mypage/view.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +const MyPageView = () => { + return ( +
+
+
+
+
+
+
+
+
+
+
+ ); +}; + +export default MyPageView; diff --git a/src/app/page.tsx b/src/app/page.tsx index b0c279b..3e9cb46 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -1,13 +1,14 @@ +import MobileHomeHeader from "@/layout/Mobile/MobileHeader/MobileHomeHeader"; +import NavigationBar from "@/layout/Mobile/NavigationBar/NavigationBar"; + +import HomeView from "./view"; + export default function Home() { return ( -
-
-
-
-
-
-
-
-
+
+ + + +
); } diff --git a/src/app/view.tsx b/src/app/view.tsx new file mode 100644 index 0000000..27785f2 --- /dev/null +++ b/src/app/view.tsx @@ -0,0 +1,19 @@ +import React from "react"; + +const HomeView = () => { + return ( +
+
+
+
+
+
+
+
+
+
+
+ ); +}; + +export default HomeView; From 989c7cd0cb13a4bdbbccde629254fc6ca15a101f Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 18:47:23 +0900 Subject: [PATCH 29/42] =?UTF-8?q?=E2=9C=A8=20feat:=20rating=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/rating/Rating.stories.tsx | 48 ++++++++++++++++++++++++ src/components/rating/Ratings.tsx | 48 ++++++++++++++++++++++++ 2 files changed, 96 insertions(+) create mode 100644 src/components/rating/Rating.stories.tsx create mode 100644 src/components/rating/Ratings.tsx diff --git a/src/components/rating/Rating.stories.tsx b/src/components/rating/Rating.stories.tsx new file mode 100644 index 0000000..3841f23 --- /dev/null +++ b/src/components/rating/Rating.stories.tsx @@ -0,0 +1,48 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import Ratings from "./Ratings"; + +const meta: Meta = { + title: "Ratings", + component: Ratings, + parameters: { + layout: "centered", + }, + + argTypes: { + rating: { + control: { + type: "number", + }, + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const FIVE: Story = { + args: { + rating: 5, + }, +}; +export const FOUR: Story = { + args: { + rating: 4, + }, +}; +export const THREE: Story = { + args: { + rating: 3, + }, +}; +export const TWO: Story = { + args: { + rating: 2, + }, +}; +export const ONE: Story = { + args: { + rating: 1, + }, +}; diff --git a/src/components/rating/Ratings.tsx b/src/components/rating/Ratings.tsx new file mode 100644 index 0000000..681d112 --- /dev/null +++ b/src/components/rating/Ratings.tsx @@ -0,0 +1,48 @@ +import React, { FC } from "react"; + +import { StarIcon } from "../icons"; + +interface Props { + rating: number; +} + +const Ratings: FC = ({ rating }) => { + const roundedRating = Math.round(rating * 2) / 2; + const stars: React.JSX.Element[] = []; + + for (let i = 1; i <= 5; i++) { + if (roundedRating >= i) { + stars.push( + , + ); + } else if (roundedRating >= i - 0.5) { + // TODO: 반쪽 별로 아이콘 교체 필요 + stars.push( + , + ); + } else { + stars.push( + , + ); + } + } + + return
{stars}
; +}; + +export default Ratings; From 5fb308931dc62ce0b95e2495c56dab44701a371d Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 18:53:46 +0900 Subject: [PATCH 30/42] =?UTF-8?q?=F0=9F=92=85=20style:=20=ED=97=A4?= =?UTF-8?q?=EB=8D=94=20=EC=BB=B4=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EB=A0=88?= =?UTF-8?q?=EC=9D=B4=EC=95=84=EC=9B=83=20=EC=83=81=EB=8B=A8=20=EA=B3=A0?= =?UTF-8?q?=EC=A0=95=EC=9D=84=20=EC=9C=84=ED=95=B4=20=EC=8A=A4=ED=83=80?= =?UTF-8?q?=EC=9D=BC=20=EC=88=98=EC=A0=95=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/Mobile/MobileHeader/MobileHeader.tsx | 2 +- src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx | 4 +++- .../MobileHeader/MobileSearchHeader.stories.tsx | 12 ++---------- .../Mobile/MobileHeader/MobileSearchHeader.tsx | 6 ++++-- 4 files changed, 10 insertions(+), 14 deletions(-) diff --git a/src/layout/Mobile/MobileHeader/MobileHeader.tsx b/src/layout/Mobile/MobileHeader/MobileHeader.tsx index 0a11c68..44eae42 100644 --- a/src/layout/Mobile/MobileHeader/MobileHeader.tsx +++ b/src/layout/Mobile/MobileHeader/MobileHeader.tsx @@ -9,7 +9,7 @@ interface Props { const MobileHeader: FC = ({ label, onClick }) => { return ( -
+
diff --git a/src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx b/src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx index 8dc94ff..424c700 100644 --- a/src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx +++ b/src/layout/Mobile/MobileHeader/MobileHomeHeader.tsx @@ -1,3 +1,5 @@ +"use client"; + import { FC } from "react"; import { AlarmIcon, CameraIcon, SearchIcon } from "../../../components/icons"; @@ -6,7 +8,7 @@ interface Props {} const MobileHomeHeader: FC = ({}) => { return ( -
+
diff --git a/src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx b/src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx index c9aadbf..04f7acd 100644 --- a/src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx +++ b/src/layout/Mobile/MobileHeader/MobileSearchHeader.stories.tsx @@ -10,13 +10,7 @@ const meta: Meta = { layout: "centered", }, - argTypes: { - label: { - control: { - type: "text", - }, - }, - }, + argTypes: {}, }; export default meta; @@ -28,7 +22,5 @@ export const Default: Story = {
), - args: { - label: "TEXT", - }, + args: {}, }; diff --git a/src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx b/src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx index 64092d8..ea8ef69 100644 --- a/src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx +++ b/src/layout/Mobile/MobileHeader/MobileSearchHeader.tsx @@ -1,7 +1,9 @@ +"use client"; + import Link from "next/link"; import React, { FC } from "react"; -import SearchInput from "@/components/common/Input/SearchInput"; +import SearchInput from "@/components/core/Input/SearchInput"; import { ArrowLeftSmallIcon } from "../../../components/icons"; @@ -9,7 +11,7 @@ interface Props {} const MobileSearchHeader: FC = ({}) => { return ( -
+
From f228f9d8d0be175b220570c9deb21997a9d6ca95 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 18:58:27 +0900 Subject: [PATCH 31/42] =?UTF-8?q?=E2=9C=A8=20feat:=20=EB=B0=94=ED=85=80=20?= =?UTF-8?q?=EB=84=A4=EB=B9=84=EA=B2=8C=EC=9D=B4=EC=85=98=EB=B0=94=20?= =?UTF-8?q?=EA=B5=AC=ED=98=84=20=EB=B0=8F=20=EC=8A=A4=ED=86=A0=EB=A6=AC?= =?UTF-8?q?=EB=B6=81=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/Mobile/MobileBottomNavBar.tsx | 27 --------- .../NavigationBar/NavigationBar.stories.tsx | 28 +++++++++ .../Mobile/NavigationBar/NavigationBar.tsx | 60 +++++++++++++++++++ .../NavigationBarButton.tsx} | 4 +- 4 files changed, 90 insertions(+), 29 deletions(-) delete mode 100644 src/layout/Mobile/MobileBottomNavBar.tsx create mode 100644 src/layout/Mobile/NavigationBar/NavigationBar.stories.tsx create mode 100644 src/layout/Mobile/NavigationBar/NavigationBar.tsx rename src/layout/Mobile/{MobileBottomNavLink.tsx => NavigationBar/NavigationBarButton.tsx} (70%) diff --git a/src/layout/Mobile/MobileBottomNavBar.tsx b/src/layout/Mobile/MobileBottomNavBar.tsx deleted file mode 100644 index e6ee31d..0000000 --- a/src/layout/Mobile/MobileBottomNavBar.tsx +++ /dev/null @@ -1,27 +0,0 @@ -import * as NM from "@radix-ui/react-navigation-menu"; - -import NavLink from "./MobileBottomNavLink"; - -const navigations = [ - { name: "홈", slug: "/" }, - { name: "캘린더", slug: "/calendar" }, - { name: "지도", slug: "/map" }, - { name: "채팅", slug: "/chat" }, - { name: "내정보", slug: "/mypage" }, -]; - -const MobileBottomNavBar = () => { - return ( - - - {navigations.map((nav) => ( - - {nav.name} - - ))} - - - ); -}; - -export default MobileBottomNavBar; diff --git a/src/layout/Mobile/NavigationBar/NavigationBar.stories.tsx b/src/layout/Mobile/NavigationBar/NavigationBar.stories.tsx new file mode 100644 index 0000000..5cfba00 --- /dev/null +++ b/src/layout/Mobile/NavigationBar/NavigationBar.stories.tsx @@ -0,0 +1,28 @@ +import type { Meta, StoryObj } from "@storybook/react"; +import React from "react"; + +import MobileLayout from "../MobileLayout"; +import NavigationBar from "./NavigationBar"; + +const meta: Meta = { + title: "NavigationBar", + component: NavigationBar, + parameters: { + layout: "centered", + }, + + argTypes: {}, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + render: () => ( + +
+ +
+ ), + args: {}, +}; diff --git a/src/layout/Mobile/NavigationBar/NavigationBar.tsx b/src/layout/Mobile/NavigationBar/NavigationBar.tsx new file mode 100644 index 0000000..664ca69 --- /dev/null +++ b/src/layout/Mobile/NavigationBar/NavigationBar.tsx @@ -0,0 +1,60 @@ +import * as NM from "@radix-ui/react-navigation-menu"; + +import { + CalendarCheckIcon, + ChatBubbleDotsIcon, + HomeIcon, + PinLocationIcon, + UserIcon, +} from "@/components/icons"; +import { cn } from "@/utils/cn"; + +import NavigationBarButton from "./NavigationBarButton"; + +const navigations = [ + { name: "홈", slug: "/", icon: }, + { + name: "캘린더", + slug: "/calendar", + icon: , + }, + { + name: "지역", + slug: "/map", + icon: , + }, + { + name: "채팅", + slug: "/chat", + icon: , + }, + { name: "MY", slug: "/mypage", icon: }, +]; + +const NavigationBar = () => { + return ( + + + {navigations.map((nav) => ( + + + {nav.icon} + {nav.name} + + + ))} + + + ); +}; + +export default NavigationBar; diff --git a/src/layout/Mobile/MobileBottomNavLink.tsx b/src/layout/Mobile/NavigationBar/NavigationBarButton.tsx similarity index 70% rename from src/layout/Mobile/MobileBottomNavLink.tsx rename to src/layout/Mobile/NavigationBar/NavigationBarButton.tsx index dafad4a..fbb0934 100644 --- a/src/layout/Mobile/MobileBottomNavLink.tsx +++ b/src/layout/Mobile/NavigationBar/NavigationBarButton.tsx @@ -12,11 +12,11 @@ const NavLink = ({ const isActive = href === pathname; return ( - + From f979dc09cfd9c8962a8b9d5ea90d25e475a070b7 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 19:00:46 +0900 Subject: [PATCH 32/42] =?UTF-8?q?=F0=9F=94=A7=20chore:=20mobileLayout=20?= =?UTF-8?q?=ED=83=9C=EA=B7=B8=20=EB=B3=80=EA=B2=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/Mobile/MobileLayout.tsx | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/layout/Mobile/MobileLayout.tsx b/src/layout/Mobile/MobileLayout.tsx index 55909fc..1fd0871 100644 --- a/src/layout/Mobile/MobileLayout.tsx +++ b/src/layout/Mobile/MobileLayout.tsx @@ -1,13 +1,21 @@ -import MobileBottomNavBar from "./MobileBottomNavBar"; +import { FC, HtmlHTMLAttributes } from "react"; -const MobileLayout = ({ children }: { children: React.ReactNode }) => { +import { cn } from "@/utils/cn"; + +interface Props extends HtmlHTMLAttributes {} + +const MobileLayout: FC = ({ ...props }) => { return ( -
-
- {children} - -
-
+
+
+ {props.children} +
+
); }; From b8938266498bffaf8daf73d823c2f5b920c1b0d2 Mon Sep 17 00:00:00 2001 From: Jeongmin Lee Date: Sun, 4 Aug 2024 19:44:59 +0900 Subject: [PATCH 33/42] =?UTF-8?q?=E2=9C=A8=20feat:=20card=20=EC=BB=B4?= =?UTF-8?q?=ED=8F=AC=EB=84=8C=ED=8A=B8=20=EA=B5=AC=ED=98=84=20=EB=B0=8F=20?= =?UTF-8?q?=EC=8A=A4=ED=86=A0=EB=A6=AC=EB=B6=81=20=EC=B6=94=EA=B0=80=20#15?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- public/images/festivalTrend.png | Bin 0 -> 24660 bytes .../EmptyFestivalCard.stories.tsx | 27 +++++++++ .../EmptyFestivalCard/EmptyFestivalCard.tsx | 16 ++++++ .../TrendFestivalCard.stories.tsx | 42 ++++++++++++++ .../TrendFestivalCard/TrendFestivalCard.tsx | 53 ++++++++++++++++++ src/components/core/Tag/DateTag/DateTag.tsx | 12 ++-- 6 files changed, 146 insertions(+), 4 deletions(-) create mode 100644 public/images/festivalTrend.png create mode 100644 src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.stories.tsx create mode 100644 src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.tsx create mode 100644 src/components/core/Card/TrendFestivalCard/TrendFestivalCard.stories.tsx create mode 100644 src/components/core/Card/TrendFestivalCard/TrendFestivalCard.tsx diff --git a/public/images/festivalTrend.png b/public/images/festivalTrend.png new file mode 100644 index 0000000000000000000000000000000000000000..e8158304cdf5e81b18fe7d7adf38f0e37e3f4fec GIT binary patch literal 24660 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 b_{0APFl`mFg6D^%00000NkvXXu0mjfZHcfj literal 0 HcmV?d00001 diff --git a/src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.stories.tsx b/src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.stories.tsx new file mode 100644 index 0000000..025ae5b --- /dev/null +++ b/src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.stories.tsx @@ -0,0 +1,27 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import EmptyFestivalCard from "./EmptyFestivalCard"; + +const meta: Meta = { + title: "Card/EmptyFestivalCard", + component: EmptyFestivalCard, + parameters: { + layout: "centered", + }, + + argTypes: {}, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: {}, + decorators: [ + (Story: React.ComponentType) => ( +
+ +
+ ), + ], +}; diff --git a/src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.tsx b/src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.tsx new file mode 100644 index 0000000..a9b70e0 --- /dev/null +++ b/src/components/core/Card/EmptyFestivalCard/EmptyFestivalCard.tsx @@ -0,0 +1,16 @@ +import React from "react"; + +const EmptyFestivalCard = () => { + return ( +
+
+
+ + 아직 예정된 페스티벌이 없어요! + +
+
+ ); +}; + +export default EmptyFestivalCard; diff --git a/src/components/core/Card/TrendFestivalCard/TrendFestivalCard.stories.tsx b/src/components/core/Card/TrendFestivalCard/TrendFestivalCard.stories.tsx new file mode 100644 index 0000000..417c216 --- /dev/null +++ b/src/components/core/Card/TrendFestivalCard/TrendFestivalCard.stories.tsx @@ -0,0 +1,42 @@ +import type { Meta, StoryObj } from "@storybook/react"; + +import TrendFestivalCard from "./TrendFestivalCard"; + +const meta: Meta = { + title: "Card/TrendFestivalCard", + component: TrendFestivalCard, + parameters: { + layout: "centered", + }, + argTypes: { + festival: { + src: "/images/festival.png", + title: "서울 치맥 페스티벌", + location: "서울 광진구", + duration: "8월 1일 ~ 8월 4일", + dday: "D-2", + }, + }, +}; + +export default meta; +type Story = StoryObj; + +export const Default: Story = { + args: { + festival: { + image: "/images/festivalTrend.png", + title: "한강 페스티벌", + location: "서울 광진구", + duration: "8월 1일 ~ 8월 4일", + dday: "D-2", + }, + }, + decorators: [ + (Story: React.ComponentType) => ( +
+ +
+ ), + ], +}; diff --git a/src/components/core/Card/TrendFestivalCard/TrendFestivalCard.tsx b/src/components/core/Card/TrendFestivalCard/TrendFestivalCard.tsx new file mode 100644 index 0000000..5100f2e --- /dev/null +++ b/src/components/core/Card/TrendFestivalCard/TrendFestivalCard.tsx @@ -0,0 +1,53 @@ +import Image from "next/image"; +import { FC, HTMLAttributes } from "react"; + +import { cn } from "@/utils/cn"; + +import DateTag from "../../Tag/DateTag/DateTag"; + +type FestivalModel = { + location: string; + title: string; + duration: string; + dday: string; + image: string; +}; + +interface Props extends Omit, "type"> { + festival: FestivalModel; +} + +const TrendFestivalCard: FC = ({ festival, ...props }) => { + return ( + + ); +}; + +export default TrendFestivalCard; diff --git a/src/components/core/Tag/DateTag/DateTag.tsx b/src/components/core/Tag/DateTag/DateTag.tsx index 04f931e..92db9d9 100644 --- a/src/components/core/Tag/DateTag/DateTag.tsx +++ b/src/components/core/Tag/DateTag/DateTag.tsx @@ -5,19 +5,23 @@ import { FC } from "react"; import { cn } from "@/utils/cn"; export interface Props - extends Omit, "children"> { + extends Omit< + HtmlHTMLAttributes, + "children" | "className" + > { + className?: string; label: string; } -const DateTag: FC = ({ label, ...props }) => { +const DateTag: FC = ({ label, className, ...props }) => { return (
);