From e34153e3b51f9ffec488d57710e24ff796b62bf9 Mon Sep 17 00:00:00 2001 From: Anton Akhatov Date: Sat, 30 Dec 2023 00:28:02 +0000 Subject: [PATCH] add new components --- .storybook/preview-head.html | 16 + .storybook/preview.js | 21 +- README.md | 22 +- package.json | 51 +- pnpm-lock.yaml | 1857 ++++++++++++++++- public/fonts.css | 36 +- .../Accordion/Accordion.stories.tsx | 94 + src/lib/components/Accordion/index.tsx | 126 ++ .../AnimatedLogo/AnimatedLogo.stories.tsx | 2 +- src/lib/components/Button/Button.stories.tsx | 42 + src/lib/components/Button/index.tsx | 159 ++ .../components/Checkbox/Checkbox.stories.tsx | 18 + src/lib/components/Checkbox/index.tsx | 99 + .../components/Divider/Divider.stories.tsx | 65 + src/lib/components/Divider/index.tsx | 12 + src/lib/components/Link/Link.stories.tsx | 31 + src/lib/components/Link/index.tsx | 54 + .../components/ListGrid/ListGrid.stories.tsx | 48 + src/lib/components/ListGrid/index.tsx | 80 + .../ProjectsPanel/ProjectsPanel.stories.tsx | 2 +- .../RangeHistogram/RangeHistogram.module.css | 27 + .../RangeHistogram/RangeHistogram.stories.tsx | 78 + .../RangeHistogram/RangeHistogram.tsx | 90 + .../RangeHistogram/components/Axis.module.css | 42 + .../RangeHistogram/components/Axis.tsx | 67 + .../components/BarChart.module.css | 65 + .../RangeHistogram/components/BarChart.tsx | 119 ++ .../components/Slider.helpers.ts | 36 + .../components/Slider.module.css | 85 + .../RangeHistogram/components/Slider.tsx | 150 ++ src/lib/components/RangeHistogram/index.ts | 9 + src/lib/components/RangeHistogram/types.ts | 14 + .../components/RangeHistogram/utils/index.ts | 23 + .../SheetModal/SheetModal.stories.tsx | 16 + src/lib/components/SheetModal/index.tsx | 49 + src/lib/components/SheetModal/sheetModal.css | 20 + src/lib/components/Switch/Switch.stories.tsx | 16 + src/lib/components/Switch/index.tsx | 54 + src/lib/components/Tag/Tag.stories.tsx | 21 + src/lib/components/Tag/index.tsx | 30 + src/lib/components/index.ts | 12 +- src/lib/index.ts | 3 + src/lib/theme/index.ts | 24 + src/lib/types/ICheckboxState.ts | 4 + src/lib/utils/styled.ts | 47 + vite.config.ts | 14 +- 46 files changed, 3793 insertions(+), 157 deletions(-) create mode 100644 src/lib/components/Accordion/Accordion.stories.tsx create mode 100644 src/lib/components/Accordion/index.tsx create mode 100644 src/lib/components/Button/Button.stories.tsx create mode 100644 src/lib/components/Button/index.tsx create mode 100644 src/lib/components/Checkbox/Checkbox.stories.tsx create mode 100644 src/lib/components/Checkbox/index.tsx create mode 100644 src/lib/components/Divider/Divider.stories.tsx create mode 100644 src/lib/components/Divider/index.tsx create mode 100644 src/lib/components/Link/Link.stories.tsx create mode 100644 src/lib/components/Link/index.tsx create mode 100644 src/lib/components/ListGrid/ListGrid.stories.tsx create mode 100644 src/lib/components/ListGrid/index.tsx create mode 100644 src/lib/components/RangeHistogram/RangeHistogram.module.css create mode 100644 src/lib/components/RangeHistogram/RangeHistogram.stories.tsx create mode 100644 src/lib/components/RangeHistogram/RangeHistogram.tsx create mode 100644 src/lib/components/RangeHistogram/components/Axis.module.css create mode 100644 src/lib/components/RangeHistogram/components/Axis.tsx create mode 100644 src/lib/components/RangeHistogram/components/BarChart.module.css create mode 100644 src/lib/components/RangeHistogram/components/BarChart.tsx create mode 100644 src/lib/components/RangeHistogram/components/Slider.helpers.ts create mode 100644 src/lib/components/RangeHistogram/components/Slider.module.css create mode 100644 src/lib/components/RangeHistogram/components/Slider.tsx create mode 100644 src/lib/components/RangeHistogram/index.ts create mode 100644 src/lib/components/RangeHistogram/types.ts create mode 100644 src/lib/components/RangeHistogram/utils/index.ts create mode 100644 src/lib/components/SheetModal/SheetModal.stories.tsx create mode 100644 src/lib/components/SheetModal/index.tsx create mode 100644 src/lib/components/SheetModal/sheetModal.css create mode 100644 src/lib/components/Switch/Switch.stories.tsx create mode 100644 src/lib/components/Switch/index.tsx create mode 100644 src/lib/components/Tag/Tag.stories.tsx create mode 100644 src/lib/components/Tag/index.tsx create mode 100644 src/lib/theme/index.ts create mode 100644 src/lib/types/ICheckboxState.ts create mode 100644 src/lib/utils/styled.ts diff --git a/.storybook/preview-head.html b/.storybook/preview-head.html index a6426e6..06dfe32 100644 --- a/.storybook/preview-head.html +++ b/.storybook/preview-head.html @@ -1 +1,17 @@ + \ No newline at end of file diff --git a/.storybook/preview.js b/.storybook/preview.js index 9ef46fd..155d45b 100644 --- a/.storybook/preview.js +++ b/.storybook/preview.js @@ -1,9 +1,18 @@ export const parameters = { - actions: { argTypesRegex: '^on[A-Z].*' }, - controls: { - matchers: { - color: /(background|color)$/i, - date: /Date$/, - }, + actions: { argTypesRegex: '^on[A-Z].*' }, + controls: { + matchers: { + color: /(background|color)$/i, + date: /Date$/, }, + }, + backgrounds: { + default: 'dark', + values: [ + { + name: 'dark', + value: '#141D34', + }, + ], + }, }; diff --git a/README.md b/README.md index cd2530d..8cf6b4b 100644 --- a/README.md +++ b/README.md @@ -8,20 +8,28 @@ React components for ekaterinburgdev projects +## Installation +``` +pnpm i ekb -## Development - -1. Install [Node.js](https://nodejs.org/en/download/) and [pnpm](https://www.npmjs.com/package/pnpm#user-content-usage) +Add ekb/fonts.css +``` -2. Install dependencies +## Local server ``` -pnpm i +pnpm start ``` -3. Run local server +## Local linking development + +If you want to test this library without tag publishing you can link the package: ``` -pnpm start +pnpm build + +pnpm link --global +cd OTHER_PROJECT_WITH_THIS_PACKAGE +pnpm link --global ekb ``` diff --git a/package.json b/package.json index 9c6c051..b661391 100644 --- a/package.json +++ b/package.json @@ -1,7 +1,22 @@ { "name": "ekb", "type": "module", - "version": "1.1.5", + "version": "1.2.0-rc.0", + "files": [ + "dist" + ], + "types": "./dist/index.d.ts", + "exports": { + ".": { + "import": "./dist/ekb.es.js", + "require": "./dist/ekb.umd.js", + "types": "./dist/index.d.ts" + }, + "./style.css": { + "import": "./dist/style.css", + "require": "./dist/style.css" + } + }, "repository": { "type": "git", "url": "https://github.com/ekaterinburgdev/ekaterinburg-ui.git" @@ -16,15 +31,17 @@ "react-dom": "^18.2.0" }, "dependencies": { - "autoprefixer": "^10.4.16", "classnames": "^2.3.2", - "postcss": "^8.4.32", - "postcss-nesting": "^12.0.2", + "framer-motion": "^10.16.16", + "polished": "^4.2.2", "react": "^18.2.0", + "react-aria": "^3.31.0", "react-dom": "^18.2.0", "react-focus-lock": "^2.9.6", "react-hotkeys-hook": "^4.4.1", - "vite-plugin-svgr": "^3.3.0" + "react-modal-sheet": "^2.2.0", + "react-stately": "^3.29.0", + "styled-components": "^6.1.6" }, "devDependencies": { "@babel/core": "^7.23.6", @@ -40,27 +57,15 @@ "@types/react": "^18.2.45", "@types/react-dom": "^18.2.18", "@vitejs/plugin-react": "^3.1.0", + "autoprefixer": "^10.4.16", "babel-loader": "^9.1.3", + "babel-plugin-styled-components": "^2.1.4", + "postcss": "^8.4.32", + "postcss-nesting": "^12.0.2", "storybook": "^7.6.6", "typescript": "^5.3.3", "vite": "^4.5.1", - "vite-plugin-dts": "^1.7.3" - }, - "files": [ - "dist" - ], - "main": "./dist/ekb.umd.js", - "module": "./dist/ekb.es.js", - "types": "./dist/index.d.ts", - "exports": { - ".": { - "import": "./dist/ekb.es.js", - "require": "./dist/ekb.umd.js", - "types": "./dist/index.d.ts" - }, - "./style.css": { - "import": "./dist/style.css", - "require": "./dist/style.css" - } + "vite-plugin-dts": "^1.7.3", + "vite-plugin-svgr": "^3.3.0" } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index f4503dd..3b86f28 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5,21 +5,21 @@ settings: excludeLinksFromLockfile: false dependencies: - autoprefixer: - specifier: ^10.4.16 - version: 10.4.16(postcss@8.4.32) classnames: specifier: ^2.3.2 version: 2.3.2 - postcss: - specifier: ^8.4.32 - version: 8.4.32 - postcss-nesting: - specifier: ^12.0.2 - version: 12.0.2(postcss@8.4.32) + framer-motion: + specifier: ^10.16.16 + version: 10.16.16(react-dom@18.2.0)(react@18.2.0) + polished: + specifier: ^4.2.2 + version: 4.2.2 react: specifier: ^18.2.0 version: 18.2.0 + react-aria: + specifier: ^3.31.0 + version: 3.31.0(react-dom@18.2.0)(react@18.2.0) react-dom: specifier: ^18.2.0 version: 18.2.0(react@18.2.0) @@ -29,9 +29,15 @@ dependencies: react-hotkeys-hook: specifier: ^4.4.1 version: 4.4.1(react-dom@18.2.0)(react@18.2.0) - vite-plugin-svgr: - specifier: ^3.3.0 - version: 3.3.0(typescript@5.3.3)(vite@4.5.1) + react-modal-sheet: + specifier: ^2.2.0 + version: 2.2.0(framer-motion@10.16.16)(react@18.2.0) + react-stately: + specifier: ^3.29.0 + version: 3.29.0(react@18.2.0) + styled-components: + specifier: ^6.1.6 + version: 6.1.6(react-dom@18.2.0)(react@18.2.0) devDependencies: '@babel/core': @@ -73,9 +79,21 @@ devDependencies: '@vitejs/plugin-react': specifier: ^3.1.0 version: 3.1.0(vite@4.5.1) + autoprefixer: + specifier: ^10.4.16 + version: 10.4.16(postcss@8.4.32) babel-loader: specifier: ^9.1.3 version: 9.1.3(@babel/core@7.23.6)(webpack@5.89.0) + babel-plugin-styled-components: + specifier: ^2.1.4 + version: 2.1.4(@babel/core@7.23.6)(styled-components@6.1.6) + postcss: + specifier: ^8.4.32 + version: 8.4.32 + postcss-nesting: + specifier: ^12.0.2 + version: 12.0.2(postcss@8.4.32) storybook: specifier: ^7.6.6 version: 7.6.6 @@ -88,6 +106,9 @@ devDependencies: vite-plugin-dts: specifier: ^1.7.3 version: 1.7.3(@types/node@20.10.5)(vite@4.5.1) + vite-plugin-svgr: + specifier: ^3.3.0 + version: 3.3.0(typescript@5.3.3)(vite@4.5.1) packages: @@ -97,6 +118,7 @@ packages: dependencies: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 + dev: true /@aw-web-design/x-default-browser@1.4.126: resolution: {integrity: sha512-Xk1sIhyNC/esHGGVjL/niHLowM0csl/kFO5uawBy4IrWwy0o1G8LGt3jP6nmWGz+USxeeqbihAmp/oVZju6wug==} @@ -111,10 +133,12 @@ packages: dependencies: '@babel/highlight': 7.23.4 chalk: 2.4.2 + dev: true /@babel/compat-data@7.23.5: resolution: {integrity: sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==} engines: {node: '>=6.9.0'} + dev: true /@babel/core@7.23.6: resolution: {integrity: sha512-FxpRyGjrMJXh7X3wGLGhNDCRiwpWEF74sKjTLDJSG5Kyvow3QZaG0Adbqzi9ZrVjTWpsX+2cxWXD71NMg93kdw==} @@ -137,6 +161,7 @@ packages: semver: 6.3.1 transitivePeerDependencies: - supports-color + dev: true /@babel/generator@7.23.6: resolution: {integrity: sha512-qrSfCYxYQB5owCmGLbl8XRpX1ytXlpueOb0N0UmQwA073KZxejgQTzAmJezxvpwQD9uGtK2shHdi55QT+MbjIw==} @@ -146,6 +171,7 @@ packages: '@jridgewell/gen-mapping': 0.3.3 '@jridgewell/trace-mapping': 0.3.20 jsesc: 2.5.2 + dev: true /@babel/helper-annotate-as-pure@7.22.5: resolution: {integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==} @@ -170,6 +196,7 @@ packages: browserslist: 4.22.2 lru-cache: 5.1.1 semver: 6.3.1 + dev: true /@babel/helper-create-class-features-plugin@7.23.6(@babel/core@7.23.6): resolution: {integrity: sha512-cBXU1vZni/CpGF29iTu4YRbOZt3Wat6zCoMDxRF1MayiEc4URxOj31tT65HUM0CRpMowA3HCJaAOVOUnMf96cw==} @@ -219,6 +246,7 @@ packages: /@babel/helper-environment-visitor@7.22.20: resolution: {integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-function-name@7.23.0: resolution: {integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==} @@ -226,12 +254,14 @@ packages: dependencies: '@babel/template': 7.22.15 '@babel/types': 7.23.6 + dev: true /@babel/helper-hoist-variables@7.22.5: resolution: {integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==} engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 + dev: true /@babel/helper-member-expression-to-functions@7.23.0: resolution: {integrity: sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==} @@ -245,6 +275,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 + dev: true /@babel/helper-module-transforms@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==} @@ -258,6 +289,7 @@ packages: '@babel/helper-simple-access': 7.22.5 '@babel/helper-split-export-declaration': 7.22.6 '@babel/helper-validator-identifier': 7.22.20 + dev: true /@babel/helper-optimise-call-expression@7.22.5: resolution: {integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==} @@ -300,6 +332,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 + dev: true /@babel/helper-skip-transparent-expression-wrappers@7.22.5: resolution: {integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==} @@ -313,18 +346,22 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.6 + dev: true /@babel/helper-string-parser@7.23.4: resolution: {integrity: sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-identifier@7.22.20: resolution: {integrity: sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-validator-option@7.23.5: resolution: {integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==} engines: {node: '>=6.9.0'} + dev: true /@babel/helper-wrap-function@7.22.20: resolution: {integrity: sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==} @@ -344,6 +381,7 @@ packages: '@babel/types': 7.23.6 transitivePeerDependencies: - supports-color + dev: true /@babel/highlight@7.23.4: resolution: {integrity: sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==} @@ -352,6 +390,7 @@ packages: '@babel/helper-validator-identifier': 7.22.20 chalk: 2.4.2 js-tokens: 4.0.0 + dev: true /@babel/parser@7.23.6: resolution: {integrity: sha512-Z2uID7YJ7oNvAI20O9X0bblw7Qqs8Q2hFy0R9tAfnfLkp5MW0UH9eUvnDSnFwKZ0AvgS1ucqR4KzvVHgnke1VQ==} @@ -359,6 +398,7 @@ packages: hasBin: true dependencies: '@babel/types': 7.23.6 + dev: true /@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.23.3(@babel/core@7.23.6): resolution: {integrity: sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==} @@ -1337,6 +1377,7 @@ packages: '@babel/code-frame': 7.23.5 '@babel/parser': 7.23.6 '@babel/types': 7.23.6 + dev: true /@babel/traverse@7.23.6: resolution: {integrity: sha512-czastdK1e8YByZqezMPFiZ8ahwVMh/ESl9vPgvgdB9AmFMGP5jfpFax74AQgl5zj4XHzqeYAg2l8PuUeRS1MgQ==} @@ -1354,6 +1395,7 @@ packages: globals: 11.12.0 transitivePeerDependencies: - supports-color + dev: true /@babel/types@7.23.6: resolution: {integrity: sha512-+uarb83brBzPKN38NX1MkB6vb6+mwvR6amUulqAE7ccQw1pEl+bCia9TbdG1lsnFP7lZySvUn37CHyXQdfTwzg==} @@ -1362,6 +1404,7 @@ packages: '@babel/helper-string-parser': 7.23.4 '@babel/helper-validator-identifier': 7.22.20 to-fast-properties: 2.0.0 + dev: true /@base2/pretty-print-object@1.0.1: resolution: {integrity: sha512-4iri8i1AqYHJE2DstZYkyEprg6Pq6sKx3xn5FpySk9sNhH7qN2LLlHJCfDTZRILNwQNPD7mATWM0TBui7uC1pA==} @@ -1381,13 +1424,38 @@ packages: postcss-selector-parser: ^6.0.13 dependencies: postcss-selector-parser: 6.0.13 - dev: false + dev: true /@discoveryjs/json-ext@0.5.7: resolution: {integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==} engines: {node: '>=10.0.0'} dev: true + /@emotion/is-prop-valid@0.8.8: + resolution: {integrity: sha512-u5WtneEAr5IDG2Wv65yhunPSMLIpuKsbuOktRojfrEiEvRyC85LgPMZI63cr7NUqT8ZIGdSVg8ZKGxIug4lXcA==} + requiresBuild: true + dependencies: + '@emotion/memoize': 0.7.4 + dev: false + optional: true + + /@emotion/is-prop-valid@1.2.1: + resolution: {integrity: sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==} + dependencies: + '@emotion/memoize': 0.8.1 + + /@emotion/memoize@0.7.4: + resolution: {integrity: sha512-Ja/Vfqe3HpuzRsG1oBtWTHk2PGZ7GR+2Vz5iYGelAw8dx32K0y7PjVuxK6z1nMpZOqAFsRUPCkK1YjJ56qJlgw==} + requiresBuild: true + dev: false + optional: true + + /@emotion/memoize@0.8.1: + resolution: {integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==} + + /@emotion/unitless@0.8.0: + resolution: {integrity: sha512-VINS5vEYAscRl2ZUDiT3uMPlrFQupiKgHz5AA4bCH1miKBg4qtwkim1qPmJj/4WG6TreYMY111rEFsjupcOKHw==} + /@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@18.2.0): resolution: {integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==} peerDependencies: @@ -1402,6 +1470,7 @@ packages: cpu: [arm64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-arm@0.18.20: @@ -1410,6 +1479,7 @@ packages: cpu: [arm] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/android-x64@0.18.20: @@ -1418,6 +1488,7 @@ packages: cpu: [x64] os: [android] requiresBuild: true + dev: true optional: true /@esbuild/darwin-arm64@0.18.20: @@ -1426,6 +1497,7 @@ packages: cpu: [arm64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/darwin-x64@0.18.20: @@ -1434,6 +1506,7 @@ packages: cpu: [x64] os: [darwin] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-arm64@0.18.20: @@ -1442,6 +1515,7 @@ packages: cpu: [arm64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/freebsd-x64@0.18.20: @@ -1450,6 +1524,7 @@ packages: cpu: [x64] os: [freebsd] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm64@0.18.20: @@ -1458,6 +1533,7 @@ packages: cpu: [arm64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-arm@0.18.20: @@ -1466,6 +1542,7 @@ packages: cpu: [arm] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ia32@0.18.20: @@ -1474,6 +1551,7 @@ packages: cpu: [ia32] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-loong64@0.18.20: @@ -1482,6 +1560,7 @@ packages: cpu: [loong64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-mips64el@0.18.20: @@ -1490,6 +1569,7 @@ packages: cpu: [mips64el] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-ppc64@0.18.20: @@ -1498,6 +1578,7 @@ packages: cpu: [ppc64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-riscv64@0.18.20: @@ -1506,6 +1587,7 @@ packages: cpu: [riscv64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-s390x@0.18.20: @@ -1514,6 +1596,7 @@ packages: cpu: [s390x] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/linux-x64@0.18.20: @@ -1522,6 +1605,7 @@ packages: cpu: [x64] os: [linux] requiresBuild: true + dev: true optional: true /@esbuild/netbsd-x64@0.18.20: @@ -1530,6 +1614,7 @@ packages: cpu: [x64] os: [netbsd] requiresBuild: true + dev: true optional: true /@esbuild/openbsd-x64@0.18.20: @@ -1538,6 +1623,7 @@ packages: cpu: [x64] os: [openbsd] requiresBuild: true + dev: true optional: true /@esbuild/sunos-x64@0.18.20: @@ -1546,6 +1632,7 @@ packages: cpu: [x64] os: [sunos] requiresBuild: true + dev: true optional: true /@esbuild/win32-arm64@0.18.20: @@ -1554,6 +1641,7 @@ packages: cpu: [arm64] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-ia32@0.18.20: @@ -1562,6 +1650,7 @@ packages: cpu: [ia32] os: [win32] requiresBuild: true + dev: true optional: true /@esbuild/win32-x64@0.18.20: @@ -1570,6 +1659,7 @@ packages: cpu: [x64] os: [win32] requiresBuild: true + dev: true optional: true /@fal-works/esbuild-plugin-global-externals@2.1.2: @@ -1604,6 +1694,65 @@ packages: resolution: {integrity: sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A==} dev: true + /@formatjs/ecma402-abstract@1.18.0: + resolution: {integrity: sha512-PEVLoa3zBevWSCZzPIM/lvPCi8P5l4G+NXQMc/CjEiaCWgyHieUoo0nM7Bs0n/NbuQ6JpXEolivQ9pKSBHaDlA==} + dependencies: + '@formatjs/intl-localematcher': 0.5.2 + tslib: 2.6.2 + dev: false + + /@formatjs/fast-memoize@2.2.0: + resolution: {integrity: sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==} + dependencies: + tslib: 2.6.2 + dev: false + + /@formatjs/icu-messageformat-parser@2.7.3: + resolution: {integrity: sha512-X/jy10V9S/vW+qlplqhMUxR8wErQ0mmIYSq4mrjpjDl9mbuGcCILcI1SUYkL5nlM4PJqpc0KOS0bFkkJNPxYRw==} + dependencies: + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/icu-skeleton-parser': 1.7.0 + tslib: 2.6.2 + dev: false + + /@formatjs/icu-skeleton-parser@1.7.0: + resolution: {integrity: sha512-Cfdo/fgbZzpN/jlN/ptQVe0lRHora+8ezrEeg2RfrNjyp+YStwBy7cqDY8k5/z2LzXg6O0AdzAV91XS0zIWv+A==} + dependencies: + '@formatjs/ecma402-abstract': 1.18.0 + tslib: 2.6.2 + dev: false + + /@formatjs/intl-localematcher@0.5.2: + resolution: {integrity: sha512-txaaE2fiBMagLrR4jYhxzFO6wEdEG4TPMqrzBAcbr4HFUYzH/YC+lg6OIzKCHm8WgDdyQevxbAAV1OgcXctuGw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@internationalized/date@3.5.1: + resolution: {integrity: sha512-LUQIfwU9e+Fmutc/DpRTGXSdgYZLBegi4wygCWDSVmUdLTaMHsQyASDiJtREwanwKuQLq0hY76fCJ9J/9I2xOQ==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@internationalized/message@3.1.1: + resolution: {integrity: sha512-ZgHxf5HAPIaR0th+w0RUD62yF6vxitjlprSxmLJ1tam7FOekqRSDELMg4Cr/DdszG5YLsp5BG3FgHgqquQZbqw==} + dependencies: + '@swc/helpers': 0.5.3 + intl-messageformat: 10.5.8 + dev: false + + /@internationalized/number@3.5.0: + resolution: {integrity: sha512-ZY1BW8HT9WKYvaubbuqXbbDdHhOUMfE2zHHFJeTppid0S+pc8HtdIxFxaYMsGjCb4UsF+MEJ4n2TfU7iHnUK8w==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@internationalized/string@3.2.0: + resolution: {integrity: sha512-Xx3Sy3f2c9ctT+vh8c7euEaEHQZltp0euZ3Hy4UfT3E13r6lxpUS3kgKyumEjboJZSnaZv7JhqWz3D75v+IxQg==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + /@isaacs/cliui@8.0.2: resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} engines: {node: '>=12'} @@ -1698,14 +1847,17 @@ packages: '@jridgewell/set-array': 1.1.2 '@jridgewell/sourcemap-codec': 1.4.15 '@jridgewell/trace-mapping': 0.3.20 + dev: true /@jridgewell/resolve-uri@3.1.1: resolution: {integrity: sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/set-array@1.1.2: resolution: {integrity: sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==} engines: {node: '>=6.0.0'} + dev: true /@jridgewell/source-map@0.3.5: resolution: {integrity: sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==} @@ -1716,12 +1868,14 @@ packages: /@jridgewell/sourcemap-codec@1.4.15: resolution: {integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==} + dev: true /@jridgewell/trace-mapping@0.3.20: resolution: {integrity: sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==} dependencies: '@jridgewell/resolve-uri': 3.1.1 '@jridgewell/sourcemap-codec': 1.4.15 + dev: true /@juggle/resize-observer@3.4.0: resolution: {integrity: sha512-dfLbk+PwWvFzSxwk3n5ySL0hfBog779o8h68wK/7/APo/7cgyWp5jcXockbxdk5kFRkbeXWm4Fbi9FrdN381sA==} @@ -2305,87 +2459,1318 @@ packages: /@radix-ui/react-use-layout-effect@1.0.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@types/react': 18.2.45 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/rect': 1.0.1 + '@types/react': 18.2.45 + react: 18.2.0 + dev: true + + /@radix-ui/react-use-size@1.0.1(@types/react@18.2.45)(react@18.2.0): + resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + peerDependencies: + '@types/react': '*' + react: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) + '@types/react': 18.2.45 + react: 18.2.0 + dev: true + + /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + peerDependencies: + '@types/react': '*' + '@types/react-dom': '*' + react: ^16.8 || ^17.0 || ^18.0 + react-dom: ^16.8 || ^17.0 || ^18.0 + peerDependenciesMeta: + '@types/react': + optional: true + '@types/react-dom': + optional: true + dependencies: + '@babel/runtime': 7.23.6 + '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) + '@types/react': 18.2.45 + '@types/react-dom': 18.2.18 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: true + + /@radix-ui/rect@1.0.1: + resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + dependencies: + '@babel/runtime': 7.23.6 + dev: true + + /@react-aria/breadcrumbs@3.5.9(react@18.2.0): + resolution: {integrity: sha512-asbXTL5NjeHl1+YIF0K70y8tNHk8Lb6VneYH8yOkpLO49ejyNDYBK0tp0jtI9IZAQiTa2qkhYq58c9LloTwebQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/link': 3.6.3(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/breadcrumbs': 3.7.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/button@3.9.1(react@18.2.0): + resolution: {integrity: sha512-nAnLMUAnwIVcRkKzS1G2IU6LZSkIWPJGu9amz/g7Y02cGUwFp3lk5bEw2LdoaXiSDJNSX8g0SZFU8FROg57jfQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/calendar@3.5.4(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-8k7khgea5kwfWriZJWCADNB0R2d7g5A6tTjUEktK4FFZcTb0RCubFejts4hRyzKlF9XHUro2dfh6sbZrzfMKDQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/calendar': 3.4.3(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/checkbox@3.13.0(react@18.2.0): + resolution: {integrity: sha512-eylJwtADIPKJ1Y5rITNJm/8JD8sXG2nhiZBIg1ko44Szxrpu+Le53NoGtg8nlrfh9vbUrXVvuFtf2jxbPXR5Jw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/toggle': 3.10.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/checkbox': 3.6.1(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/combobox@3.8.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-0Zsy91WC2uhnIjtProL1E5qRjBtRVdsNgpr8T9QCQht4i2sHd8L/srrOx7b6vRIngUMZq7GofOpQcKVdxx4kEA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/combobox': 3.8.1(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/combobox': 3.10.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/datepicker@3.9.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-bdlY2H/zwe3hQf64Lp1oGTf7Va8ennDyAv4Ffowb+BOoL8+FB9smtGyONKe87zXu7VJL2M5xYAi4n7c004PM+w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@internationalized/number': 3.5.0 + '@internationalized/string': 3.2.0 + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/spinbutton': 3.6.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/datepicker': 3.9.1(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/datepicker': 3.7.1(react@18.2.0) + '@react-types/dialog': 3.5.7(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/dialog@3.5.9(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Eg5pFJN3b5NitKL60nf30iPpQGCyOcU4YakUVn5+GWKLBlm8ryE8jyoIIO0e0LCM65K+fL+gGHGK01GCZyKrpQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/dialog': 3.5.7(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/dnd@3.5.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-7OPGePdle+xNYHAIAUOvIETRMfnkRt7h/C0bCkxUR2GYefEbTzfraso4ppNH2JZ7fCRd0K/Qe+jvQklwusHAKA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/string': 3.2.0 + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/dnd': 3.2.7(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/focus@3.16.0(react@18.2.0): + resolution: {integrity: sha512-GP6EYI07E8NKQQcXHjpIocEU0vh0oi0Vcsd+/71fKS0NnTR0TUOEeil0JuuQ9ymkmPDTu51Aaaa4FxVsuN/23A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + clsx: 2.0.0 + react: 18.2.0 + dev: false + + /@react-aria/form@3.0.1(react@18.2.0): + resolution: {integrity: sha512-6586oODMDR4/ciGRwXjpvEAg7tWGSDrXE//waK0n5e5sMuzlPOo1DHc5SpPTvz0XdJsu6VDt2rHdVWVIC9LEyw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/grid@3.8.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-JlQDkdm5heG1FfRyy5KnB8b6s/hRqSI6Xt2xN2AccLX5kcbfFr2/d5KVxyf6ahfa4Gfd46alN6477ju5eTWJew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/grid': 3.8.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/virtualizer': 3.6.6(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/gridlist@3.7.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-rkkepYM7xJiebR0g3uC4zzkdR7a8z0fLaM+sg9lSTbdElHMLAlrebS2ytEyZnhiu9nbOnw13GN1OC4/ZenzbHQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/grid': 3.8.6(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/i18n@3.10.0(react@18.2.0): + resolution: {integrity: sha512-sviD5Y1pLPG49HHRmVjR+5nONrp0HK219+nu9Y7cDfUhXu2EjyhMS9t/n9/VZ69hHChZ2PnHYLEE2visu9CuCg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@internationalized/message': 3.1.1 + '@internationalized/number': 3.5.0 + '@internationalized/string': 3.2.0 + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/interactions@3.20.1(react@18.2.0): + resolution: {integrity: sha512-PLNBr87+SzRhe9PvvF9qvzYeP4ofTwfKSorwmO+hjr3qoczrSXf4LRQlb27wB6hF10C7ZE/XVbUI1lj4QQrZ/g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/label@3.7.4(react@18.2.0): + resolution: {integrity: sha512-3Y0yyrqpLzZdzHw+TOyzwuyx5wa2ujU5DGfKuL5GFnU9Ii4DtdwBGSYS7Yu7qadU+eQmG4OGhAgFVswbIgIwJw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/link@3.6.3(react@18.2.0): + resolution: {integrity: sha512-8kPWc4u/lDow3Ll0LDxeMgaxt9Y3sl8UldKLGli8tzRSltYFugNh/n+i9sCnmo4Qv9Tp9kYv+yxBK50Uk9sINw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/link': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/listbox@3.11.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-PBrnldmyEYUUJvfDeljW8ITvZyBTfGpLNf0b5kfBPK3TDgRH4niEH2vYEcaZvSqb0FrpdvcunuTRXcOpfb+gCQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/listbox': 3.4.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/live-announcer@3.3.1: + resolution: {integrity: sha512-hsc77U7S16trM86d+peqJCOCQ7/smO1cybgdpOuzXyiwcHQw8RQ4GrXrS37P4Ux/44E9nMZkOwATQRT2aK8+Ew==} + dependencies: + '@swc/helpers': 0.5.3 + dev: false + + /@react-aria/menu@3.12.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Nsujv3b61WR0gybDKnBjAeyxDVJOfPLMggRUf9SQDfPWnrPXEsAFxaPaVcAkzlfI4HiQs1IxNwsKFNpc3PPZTQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/menu': 3.6.0(react@18.2.0) + '@react-stately/tree': 3.7.5(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/menu': 3.9.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/meter@3.4.9(react@18.2.0): + resolution: {integrity: sha512-1/FHFmFmSyfQBJ2oH152lp4nps76v1UdhnFbIsmRIH+0g0IfMv1yDT2M9dIZ/b9DgVZSx527FmWOXm0eHGKD6w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/progress': 3.4.9(react@18.2.0) + '@react-types/meter': 3.3.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/numberfield@3.10.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-9rt+O63UL3zKR99c+8njbtBeVoEhitzzSCFWsqbtStyoUEV5tJQDgD9kSlozFLAzYftq2pJ7uazlptMEXyS13g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/spinbutton': 3.6.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/numberfield': 3.8.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/numberfield': 3.7.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/overlays@3.20.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-2m7MpRJL5UucbEuu08lMHsiFJoDowkJV4JAIFBZYK1NzVH0vF/A+w9HRNM7jRwx2DUxE+iIsZnl8yKV/7KY8OQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/progress@3.4.9(react@18.2.0): + resolution: {integrity: sha512-CME1ZLsJHOmSgK8IAPOC/+vYO5Oc614mkEw5MluT/yclw5rMyjAkK1XsHLjEXy81uwPeiRyoQQIMPKG2/sMxFQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/progress': 3.5.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/radio@3.10.0(react@18.2.0): + resolution: {integrity: sha512-6NaKzdGymdcVWLYgHT0cHsVmNzPOp89o8r41w29OPBQWu8w2c9mxg4366OiIZn/uXIBS4abhQ4nL4toBRLgBrg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/radio': 3.10.1(react@18.2.0) + '@react-types/radio': 3.7.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/searchfield@3.7.0(react@18.2.0): + resolution: {integrity: sha512-btBbkIwsExXWv5av62gINEbm4QFmDDT7r+d5TAKin5tvKqU8zrsM9fm7KCDEhIGcpUW+q2AUS589iw19z9uCcA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/searchfield': 3.5.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/searchfield': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/select@3.14.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-pAy/+Xbj11Lx6bi/O1hWH0NSIDRxFb6V7N0ry2L8x7MALljh516VbpnAc5RgvbjbuKq0cHUAcdINOzOzpYWm4A==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-stately/select': 3.6.1(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/select': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/selection@3.17.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-xl2sgeGH61ngQeE05WOWWPVpGRTPMjQEFmsAWEprArFi4Z7ihSZgpGX22l1w7uSmtXM/eN/v0W8hUYUju5iXlQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/separator@3.3.9(react@18.2.0): + resolution: {integrity: sha512-1wEXiaSJjq2+DR5TC0RKnUBsfZN+YXTzyI7XMzjQoc3YlclumX8wQtzPAOGOEjHB1JKUgo1Gw70FtupVXz58QQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/slider@3.7.4(react@18.2.0): + resolution: {integrity: sha512-OFJWeGSL2duVDFs/kcjlWsY6bqCVKZgM0aFn2QN4wmID+vfBvBnqGHAgWv3BCePTAPS3+GBjMN002TrftorjwQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/slider': 3.5.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/slider': 3.7.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/spinbutton@3.6.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-u5GuOP3k4Zis055iY0fZJNHU7dUNCoSfUq5LKwJ1iNaCqDcavdstAnAg+X1a7rhpp5zCnJmAMseo3Qmzi9P+Ew==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/ssr@3.9.1(react@18.2.0): + resolution: {integrity: sha512-NqzkLFP8ZVI4GSorS0AYljC13QW2sc8bDqJOkBvkAt3M8gbcAXJWVRGtZBCRscki9RZF+rNlnPdg0G0jYkhJcg==} + engines: {node: '>= 12'} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/switch@3.6.0(react@18.2.0): + resolution: {integrity: sha512-YNWc5fGLNXE4XlmDAKyqAdllRiClGR7ki4KGFY7nL+xR5jxzjCGU3S3ToMK5Op3QSMGZLxY/aYmC4O+MvcoADQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/toggle': 3.10.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/switch': 3.5.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/table@3.13.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-AzmETpyxwNqISTzwHJPs85x9gujG40IIsSOBUdp49oKhB85RbPLvMwhadp4wCVAoHw3erOC/TJxHtVc7o2K1LA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/grid': 3.8.6(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/live-announcer': 3.3.1 + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/flags': 3.0.0 + '@react-stately/table': 3.11.4(react@18.2.0) + '@react-stately/virtualizer': 3.6.6(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/table': 3.9.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/tabs@3.8.3(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-Plw0K/5Qv35vYq7pHZFfQB2BF5OClFx4Abzo9hLVx4oMy3qb7i5lxmLBVbt81yPX/MdjYeP4zO1EHGBl4zMRhA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/tabs': 3.6.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/tabs': 3.3.4(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/tag@3.3.1(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-w7d8sVZqxTo8VFfeg2ixLp5kawtrcguGznVY4mt5aE6K8LMJOeNVDqNNfolfyia80VjOWjeX+RpVdVJRdrv/GQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/gridlist': 3.7.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/button': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + + /@react-aria/textfield@3.14.0(react@18.2.0): + resolution: {integrity: sha512-LtHFcPK/N9m3KWSRM5KdmlIk7cUEk0OF+uBUrfKsGGc1bJKVToimdW7jQusChHmHhslHUR7WQ4KDjXyFjoLXOw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/form': 3.0.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/textfield': 3.9.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/toggle@3.10.0(react@18.2.0): + resolution: {integrity: sha512-6cUf4V9TuG2J7AvXUdU/GspEPFCubUOID3mrselSe563RViy+mMZk0vUEOdyoNanDcEXl58W4dE3SGWxFn71vg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/tooltip@3.7.0(react@18.2.0): + resolution: {integrity: sha512-+u9Sftkfe09IDyPEnbbreFKS50vh9X/WTa7n1u2y3PenI9VreLpUR6czyzda4BlvQ95e9jQz1cVxUjxTNaZmBw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-stately/tooltip': 3.4.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/tooltip': 3.4.6(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-aria/utils@3.17.0(react@18.2.0): + resolution: {integrity: sha512-NEul0cQ6tQPdNSHYzNYD+EfFabeYNvDwEiHB82kK/Tsfhfm84SM+baben/at2N51K7iRrJPr5hC5fi4+P88lNg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.4.36 + clsx: 1.2.1 + react: 18.2.0 + dev: false + + /@react-aria/utils@3.23.0(react@18.2.0): + resolution: {integrity: sha512-fJA63/VU4iQNT8WUvrmll3kvToqMurD69CcgVmbQ56V7ZbvlzFi44E7BpnoaofScYLLtFWRjVdaHsohT6O/big==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + clsx: 2.0.0 + react: 18.2.0 + dev: false + + /@react-aria/visually-hidden@3.8.8(react@18.2.0): + resolution: {integrity: sha512-Cn2PYKD4ijGDtF0+dvsh8qa4y7KTNAlkTG6h20r8Q+6UTyRNmtE2/26QEaApRF8CBiNy9/BZC/ZC4FK2OjvCoA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/calendar@3.4.3(react@18.2.0): + resolution: {integrity: sha512-OrEcdskszDjnjVnFuSiDC2PVBJ6lWMCJROD5s6W1LUehUtBp8LX9wPavAGHV43LbhN9ldj560sxaQ4WCddrRCA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/checkbox@3.6.1(react@18.2.0): + resolution: {integrity: sha512-rOjFeVBy32edYwhKiHj3ZLdLeO+xZ2fnBwxnOBjcygnw4Neygm8FJH/dB1J0hdYYR349yby86ED2x0wRc84zPw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/collections@3.10.4(react@18.2.0): + resolution: {integrity: sha512-OHhCrItGt4zB2bSrgObRo0H2SC7QlkH8ReGxo+NVIWchXRLRoiWBP7S+IwleewEo5gOqDVPY3hqA9n4iiI8twg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/combobox@3.8.1(react@18.2.0): + resolution: {integrity: sha512-FaWkqTXQdWg7ptaeU4iPcqF/kxbRg2ZNUcvW/hiL/enciV5tRCsddvfNqvDvy1L30z9AUwlp9MWqzm/DhBITCw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-stately/select': 3.6.1(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/combobox': 3.10.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/data@3.11.0(react@18.2.0): + resolution: {integrity: sha512-0BlPT58WrAtUvpiEfUuyvIsGFTzp/9vA5y+pk53kGJhOdc5tqBGHi9cg40pYE/i1vdHJGMpyHGRD9nkQb8wN3Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/datepicker@3.9.1(react@18.2.0): + resolution: {integrity: sha512-o5xLvlZGJyAbTev2yruGlV2fzQyIDuYTgL19TTt0W0WCfjGGr/AAA9GjGXXmyoRA7sZMxqIPnnv7lNrdA38ofA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@internationalized/string': 3.2.0 + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/datepicker': 3.7.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/dnd@3.2.7(react@18.2.0): + resolution: {integrity: sha512-QqSCvE9Rhp+Mr8Mt/SrByze24BFX1cy7gmXbwoqAYgHNIx3gWCVdBLqxfpfgYIhZdF9H72EWS8lQkfkZla06Ng==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/flags@3.0.0: + resolution: {integrity: sha512-e3i2ItHbIa0eEwmSXAnPdD7K8syW76JjGe8ENxwFJPW/H1Pu9RJfjkCb/Mq0WSPN/TpxBb54+I9TgrGhbCoZ9w==} + dependencies: + '@swc/helpers': 0.4.36 + dev: false + + /@react-stately/form@3.0.0(react@18.2.0): + resolution: {integrity: sha512-C8wkfFmtx1escizibhdka5JvTy9/Vp173CS9cakjvWTmnjYYC1nOlzwp7BsYWTgerCFbRY/BU/Cf/bJDxPiUKQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/grid@3.8.4(react@18.2.0): + resolution: {integrity: sha512-rwqV1K4lVhaiaqJkt4TfYqdJoVIyqvSm98rKAYfCNzrKcivVpoiCMJ2EMt6WlYCjDVBdEOQ7fMV1I60IV0pntA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/list@3.10.2(react@18.2.0): + resolution: {integrity: sha512-INt+zofkIg2KN8B95xPi9pJG7ZFWAm30oIm/lCPBqM3K1Nm03/QaAbiQj2QeJcOsG3lb7oqI6D6iwTolwJkjIQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/menu@3.6.0(react@18.2.0): + resolution: {integrity: sha512-OB6CjNyfOkAuirqx1oTL8z8epS9WDzLyrXjmRnxdiCU9EgRXLGAQNECuO7VIpl58oDry8tgRJiJ8fn8FivWSQA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/menu': 3.9.6(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/numberfield@3.8.0(react@18.2.0): + resolution: {integrity: sha512-1XvB8tDOvZKcFnMM6qNLEaTVJcIc0jRFS/9jtS8MzalZvh8DbKi0Ucm1bGU7S5rkCx2QWqZ0rGOIm2h/RlcpkA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/number': 3.5.0 + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/numberfield': 3.7.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/overlays@3.6.4(react@18.2.0): + resolution: {integrity: sha512-tHEaoAGpE9dSnsskqLPVKum59yGteoSqsniTopodM+miQozbpPlSjdiQnzGLroy5Afx5OZYClE616muNHUILXA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/overlays': 3.8.4(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/radio@3.10.1(react@18.2.0): + resolution: {integrity: sha512-MsBYbcLCvjKsqTAKe43T681F2XwKMsS7PLG0eplZgWP9210AMY78GeY1XPYZKHPAau8XkbYiuJqbqTerIJ3DBw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/radio': 3.7.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/searchfield@3.5.0(react@18.2.0): + resolution: {integrity: sha512-SStjChkn/33pEn40slKQPnBnmQYyxVazVwPjiBkdeVejC42lUVairUTrGJgF0PNoZTbxn0so2/XzjqTC9T8iCw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/searchfield': 3.5.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/select@3.6.1(react@18.2.0): + resolution: {integrity: sha512-e5ixtLiYLlFWM8z1msDqXWhflF9esIRfroptZsltMn1lt2iImUlDRlOTZlMtPQzUrDWoiHXRX88sSKUM/jXjQQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/select': 3.9.1(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/selection@3.14.2(react@18.2.0): + resolution: {integrity: sha512-mL7OoiUgVWaaF7ks5XSxgbXeShijYmD4G3bkBHhqkpugU600QH6BM2hloCq8KOUupk1y8oTljPtF9EmCv375DA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/slider@3.5.0(react@18.2.0): + resolution: {integrity: sha512-dOVpIxb7XKuiRxgpHt1bUSlsklciFki100tKIyBPR+Okar9iC/CwLYROYgVfLkGe77jEBNkor9tDLjDGEWcc1w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/slider': 3.7.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/table@3.11.4(react@18.2.0): + resolution: {integrity: sha512-dWINJIEOKQl4qq3moq+S8xCD3m+yJqBj0dahr+rOkS+t2uqORwzsusTM35D2T/ZHZi49S2GpE7QuDa+edCynPw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/flags': 3.0.0 + '@react-stately/grid': 3.8.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/table': 3.9.2(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tabs@3.6.3(react@18.2.0): + resolution: {integrity: sha512-Nj+Gacwa2SIzYIvHW40GsyX4Q6c8kF7GOuXESeQswbCjnwqhrSbDBp+ngPcUPUJxqFh6JhDCVwAS3wMhUoyUwA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/tabs': 3.3.4(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/toggle@3.7.0(react@18.2.0): + resolution: {integrity: sha512-TRksHkCJk/Xogq4181g3CYgJf+EfsJCqX5UZDSw1Z1Kgpvonjmdf6FAfQfCh9QR2OuXUL6hOLUDVLte5OPI+5g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/checkbox': 3.6.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tooltip@3.4.6(react@18.2.0): + resolution: {integrity: sha512-uL93bmsXf+OOgpKLPEKfpDH4z+MK2CuqlqVxx7rshN0vjWOSoezE5nzwgee90+RpDrLNNNWTNa7n+NkDRpI1jA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-types/tooltip': 3.4.6(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/tree@3.7.5(react@18.2.0): + resolution: {integrity: sha512-xTJVwvhAeY0N5rui4N/TxN7f8hjXdqApDuGDxMZeFAWoQz8Abf7LFKBVQ3OkT6qVr7P+23dgoisUDBhD5a45Hg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/utils': 3.9.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/utils@3.9.0(react@18.2.0): + resolution: {integrity: sha512-yPKFY1F88HxuZ15BG2qwAYxtpE4HnIU0Ofi4CuBE0xC6I8mwo4OQjDzi+DZjxQngM9D6AeTTD6F1V8gkozA0Gw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-stately/virtualizer@3.6.6(react@18.2.0): + resolution: {integrity: sha512-9hWvfITdE/028q4YFve6FxlmA3PdSMkUwpYA+vfaGCXI/4DFZIssBMspUeu4PTRJoV+k+m0z1wYHPmufrq6a3g==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + '@swc/helpers': 0.5.3 + react: 18.2.0 + dev: false + + /@react-types/breadcrumbs@3.7.2(react@18.2.0): + resolution: {integrity: sha512-esl6RucDW2CNMsApJxNYfMtDaUcfLlwKMPH/loYsOBbKxGl2HsgVLMcdpjEkTRs2HCTNCbBXWpeU8AY77t+bsw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/link': 3.5.2(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/button@3.9.1(react@18.2.0): + resolution: {integrity: sha512-bf9iTar3PtqnyV9rA+wyFyrskZKhwmOuOd/ifYIjPs56YNVXWH5Wfqj6Dx3xdFBgtKx8mEVQxVhoX+WkHX+rtw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/calendar@3.4.3(react@18.2.0): + resolution: {integrity: sha512-96x57ctX5wNEl+8et3sc2NQm8neOJayEeqOQQpyPtI7jyvst/xBrKCwysf9W/dhgPlUC+KeBAYFWfjd5hFVHYA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/checkbox@3.6.0(react@18.2.0): + resolution: {integrity: sha512-vgbuJzQpVCNT5AZWV0OozXCnihqrXxoZKfJFIw0xro47pT2sn3t5UC4RA9wfjDGMoK4frw1K/4HQLsQIOsPBkw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/combobox@3.10.0(react@18.2.0): + resolution: {integrity: sha512-1IXSNS02TPbguyYopaW2snU6sZusbClHrEyVr4zPeexTV4kpUUBNXOzFQ+eSQRR0r2XW57Z0yRW4GJ6FGU0yCA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/datepicker@3.7.1(react@18.2.0): + resolution: {integrity: sha512-5juVDULOytNzkotqX8j5mYKJckeIpkgbHqVSGkPgLw0++FceIaSZ6RH56cqLup0pO45paqIt9zHh+QXBYX+syg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/date': 3.5.1 + '@react-types/calendar': 3.4.3(react@18.2.0) + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/dialog@3.5.7(react@18.2.0): + resolution: {integrity: sha512-geYoqAyQaTLG43AaXdMUVqZXYgkSifrD9cF7lR2kPAT0uGFv0YREi6ieU+aui8XJ83EW0xcxP+EPWd2YkN4D4w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/grid@3.2.3(react@18.2.0): + resolution: {integrity: sha512-GQM4RDmYhstcYZ0Odjq+xUwh1fhLmRebG6qMM8OXHTPQ77nhl3wc1UTGRhZm6mzEionplSRx4GCpEMEHMJIU0w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/link@3.5.2(react@18.2.0): + resolution: {integrity: sha512-/s51/WejmpLiyxOgP89s4txgxYoGaPe8pVDItVo1h4+BhU1Puyvgv/Jx8t9dPvo6LUXbraaN+SgKk/QDxaiirw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/listbox@3.4.6(react@18.2.0): + resolution: {integrity: sha512-XOQvrTqNh5WIPDvKiWiep8T07RAsMfjAXTjDbnjxVlKACUXkcwpts9kFaLnJ9LJRFt6DwItfP+WMkzvmx63/NQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/menu@3.9.6(react@18.2.0): + resolution: {integrity: sha512-w/RbFInOf4nNayQDv5c2L8IMJbcFOkBhsT3xvvpTy+CHvJcQdjggwaV1sRiw7eF/PwB81k2CwigmidUzHJhKDg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/meter@3.3.6(react@18.2.0): + resolution: {integrity: sha512-1XYp1fA9UU0lO6kjf3TwVE8mppOJa64mBKAcLWtTyq1e/cYIAbx5o6CsuUx0YDpXKF6gdtvIWvfmxeWsmqJ1jQ==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/progress': 3.5.1(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/numberfield@3.7.0(react@18.2.0): + resolution: {integrity: sha512-gaGi+vqm1Y8LCWRsWYUjcGftPIzl+8W2VOfkgKMLM8y76nnwTPtmAqs+Ap1cg7sEJSfsiKMq93e9yvP3udrC2w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/overlays@3.8.4(react@18.2.0): + resolution: {integrity: sha512-pfgNlQnbF6RB/R2oSxyqAP3Uzz0xE/k5q4n5gUeCDNLjY5qxFHGE8xniZZ503nZYw6VBa9XMN1efDOKQyeiO0w==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/progress@3.5.1(react@18.2.0): + resolution: {integrity: sha512-CqsUjczUK/SfuFzDcajBBaXRTW0D3G9S/yqLDj9e8E0ii+lGDLt1PHj24t1J7E88U2rVYqmM9VL4NHTt8o3IYA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/radio@3.7.0(react@18.2.0): + resolution: {integrity: sha512-EcwGAXzSHjSqpFZha7xn3IUrhPiJLj+0yb1Ip0qPmhWz0VVw2DwrkY7q/jfaKroVvQhTo2TbfGhcsAQrt0fRqg==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/searchfield@3.5.2(react@18.2.0): + resolution: {integrity: sha512-JAK2/Kg4Dr393FYfbRw0TlXKnJPX77sq1x/ZBxtO6p64+MuuIYKqw0i9PwDlo1PViw2QI5u8GFhKA2TgemY9uA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + '@react-types/textfield': 3.9.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/select@3.9.1(react@18.2.0): + resolution: {integrity: sha512-EpKSxrnh8HdZvOF9dHQkjivAcdIp1K81FaxmvosH8Lygqh0iYXxAdZGtKLMyBoPI8YFhA+rotIzTcOqgCCnqWA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + + /@react-types/shared@3.22.0(react@18.2.0): + resolution: {integrity: sha512-yVOekZWbtSmmiThGEIARbBpnmUIuePFlLyctjvCbgJgGhz8JnEJOipLQ/a4anaWfzAgzSceQP8j/K+VOOePleA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + react: 18.2.0 + dev: false + + /@react-types/slider@3.7.0(react@18.2.0): + resolution: {integrity: sha512-uyQXUVFfqc9SPUW0LZLMan2n232F/OflRafiHXz9viLFa9tVOupVa7GhASRAoHojwkjoJ1LjFlPih7g5dOZ0/Q==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - '@types/react': 18.2.45 + '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 - dev: true + dev: false - /@radix-ui/react-use-previous@1.0.1(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==} + /@react-types/switch@3.5.0(react@18.2.0): + resolution: {integrity: sha512-/wNmUGjk69bP6t5k2QkAdrNN5Eb9Rz4dOyp0pCPmoeE+5haW6sV5NmtkvWX1NSc4DQz1xL/a5b+A0vxPCP22Jw==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - '@types/react': 18.2.45 + '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 - dev: true + dev: false - /@radix-ui/react-use-rect@1.0.1(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==} + /@react-types/table@3.9.2(react@18.2.0): + resolution: {integrity: sha512-brw5JUANOzBa2rYNpN8AIl9nDZ9RwRZC6G/wTM/JhtirjC1S42oCtf8Ap5rWJBdmMG/5KOfcGNcAl/huyqb3gg==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/rect': 1.0.1 - '@types/react': 18.2.45 + '@react-types/grid': 3.2.3(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 - dev: true + dev: false - /@radix-ui/react-use-size@1.0.1(@types/react@18.2.45)(react@18.2.0): - resolution: {integrity: sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==} + /@react-types/tabs@3.3.4(react@18.2.0): + resolution: {integrity: sha512-4mCTtFrwMRypyGTZCvNYVT9CkknexO/UYvqwDm2jMYb8JgjRvxnomu776Yh7uyiYKWyql2upm20jqasEOm620w==} peerDependencies: - '@types/react': '*' - react: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-use-layout-effect': 1.0.1(@types/react@18.2.45)(react@18.2.0) - '@types/react': 18.2.45 + '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 - dev: true + dev: false - /@radix-ui/react-visually-hidden@1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0): - resolution: {integrity: sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==} + /@react-types/textfield@3.9.0(react@18.2.0): + resolution: {integrity: sha512-D/DiwzsfkwlAg3uv8hoIfwju+zhB/hWDEdTvxQbPkntDr0kmN/QfI17NMSzbOBCInC4ABX87ViXLGxr940ykGA==} peerDependencies: - '@types/react': '*' - '@types/react-dom': '*' - react: ^16.8 || ^17.0 || ^18.0 - react-dom: ^16.8 || ^17.0 || ^18.0 - peerDependenciesMeta: - '@types/react': - optional: true - '@types/react-dom': - optional: true + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - '@radix-ui/react-primitive': 1.0.3(@types/react-dom@18.2.18)(@types/react@18.2.45)(react-dom@18.2.0)(react@18.2.0) - '@types/react': 18.2.45 - '@types/react-dom': 18.2.18 + '@react-types/shared': 3.22.0(react@18.2.0) react: 18.2.0 - react-dom: 18.2.0(react@18.2.0) - dev: true + dev: false - /@radix-ui/rect@1.0.1: - resolution: {integrity: sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==} + /@react-types/tooltip@3.4.6(react@18.2.0): + resolution: {integrity: sha512-RaZewdER7ZcsNL99RhVHs8kSLyzIBkwc0W6eFZrxST2MD9J5GzkVWRhIiqtFOd5U1aYnxdJ6woq72Ef+le6Vfw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 dependencies: - '@babel/runtime': 7.23.6 - dev: true + '@react-types/overlays': 3.8.4(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false /@rollup/pluginutils@5.1.0: resolution: {integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==} @@ -2399,6 +3784,7 @@ packages: '@types/estree': 1.0.5 estree-walker: 2.0.2 picomatch: 2.3.1 + dev: true /@rushstack/node-core-library@3.62.0(@types/node@20.10.5): resolution: {integrity: sha512-88aJn2h8UpSvdwuDXBv1/v1heM6GnBf3RjEy6ZPP7UnzHNCqOHA2Ut+ScYUbXcqIdfew9JlTAe3g+cnX9xQ/Aw==} @@ -3141,7 +4527,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-plugin-remove-jsx-attribute@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==} @@ -3150,7 +4536,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-plugin-remove-jsx-empty-expression@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==} @@ -3159,7 +4545,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-plugin-replace-jsx-attribute-value@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-KVQ+PtIjb1BuYT3ht8M5KbzWBhdAjjUPdlMtpuw/VjT8coTrItWX6Qafl9+ji831JaJcu6PJNKCV0bp01lBNzQ==} @@ -3168,7 +4554,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-plugin-svg-dynamic-title@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-omNiKqwjNmOQJ2v6ge4SErBbkooV2aAWwaPFs2vUY7p7GhVkzRkJ00kILXQvRhA6miHnNpXv7MRnnSjdRjK8og==} @@ -3177,7 +4563,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-plugin-svg-em-dimensions@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-mURHYnu6Iw3UBTbhGwE/vsngtCIbHE43xCRK7kCw4t01xyGqb2Pd+WXekRRoFOBIY29ZoOhUCTEweDMdrjfi9g==} @@ -3186,7 +4572,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-plugin-transform-react-native-svg@8.1.0(@babel/core@7.23.6): resolution: {integrity: sha512-Tx8T58CHo+7nwJ+EhUwx3LfdNSG9R2OKfaIXXs5soiy5HtgoAEkDay9LIimLOcG8dJQH1wPZp/cnAv6S9CrR1Q==} @@ -3195,7 +4581,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-plugin-transform-svg-component@8.0.0(@babel/core@7.23.6): resolution: {integrity: sha512-DFx8xa3cZXTdb/k3kfPeaixecQLgKh5NVBMwD0AQxOzcZawK4oo1Jh9LbrcACUivsCA7TLG8eeWgrDXjTMhRmw==} @@ -3204,7 +4590,7 @@ packages: '@babel/core': ^7.0.0-0 dependencies: '@babel/core': 7.23.6 - dev: false + dev: true /@svgr/babel-preset@8.1.0(@babel/core@7.23.6): resolution: {integrity: sha512-7EYDbHE7MxHpv4sxvnVPngw5fuR6pw79SkcrILHJ/iMpuKySNCl5W1qcwPEpU+LgyRXOaAFgH0KhwD18wwg6ug==} @@ -3221,7 +4607,7 @@ packages: '@svgr/babel-plugin-svg-em-dimensions': 8.0.0(@babel/core@7.23.6) '@svgr/babel-plugin-transform-react-native-svg': 8.1.0(@babel/core@7.23.6) '@svgr/babel-plugin-transform-svg-component': 8.0.0(@babel/core@7.23.6) - dev: false + dev: true /@svgr/core@8.1.0(typescript@5.3.3): resolution: {integrity: sha512-8QqtOQT5ACVlmsvKOJNEaWmRPmcojMOzCz4Hs2BGG/toAp/K38LcsMRyLp349glq5AzJbCEeimEoxaX6v/fLrA==} @@ -3235,7 +4621,7 @@ packages: transitivePeerDependencies: - supports-color - typescript - dev: false + dev: true /@svgr/hast-util-to-babel-ast@8.0.0: resolution: {integrity: sha512-EbDKwO9GpfWP4jN9sGdYwPBU0kdomaPIL2Eu4YwmgP+sJeXT+L7bMwJUBnhzfH8Q2qMBqZ4fJwpCyYsAN3mt2Q==} @@ -3243,7 +4629,7 @@ packages: dependencies: '@babel/types': 7.23.6 entities: 4.5.0 - dev: false + dev: true /@svgr/plugin-jsx@8.1.0(@svgr/core@8.1.0): resolution: {integrity: sha512-0xiIyBsLlr8quN+WyuxooNW9RJ0Dpr8uOnH/xrCVO8GLUcwHISwj1AG0k+LFzteTkAA0GbX0kj9q6Dk70PTiPA==} @@ -3258,6 +4644,25 @@ packages: svg-parser: 2.0.4 transitivePeerDependencies: - supports-color + dev: true + + /@swc/helpers@0.4.14: + resolution: {integrity: sha512-4C7nX/dvpzB7za4Ql9K81xK3HPxCpHMgwTZVyf+9JQ6VUbn9jjZVN7/Nkdz/Ugzs2CSjqnL/UPXroiVBVHUWUw==} + dependencies: + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.4.36: + resolution: {integrity: sha512-5lxnyLEYFskErRPenYItLRSge5DjrJngYKdVjRSrWfza9G6KkgHEXi0vUZiyUeMU5JfXH1YnvXZzSp8ul88o2Q==} + dependencies: + legacy-swc-helpers: /@swc/helpers@0.4.14 + tslib: 2.6.2 + dev: false + + /@swc/helpers@0.5.3: + resolution: {integrity: sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==} + dependencies: + tslib: 2.6.2 dev: false /@ts-morph/common@0.18.1: @@ -3365,6 +4770,7 @@ packages: /@types/estree@1.0.5: resolution: {integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==} + dev: true /@types/express-serve-static-core@4.17.41: resolution: {integrity: sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==} @@ -3466,6 +4872,7 @@ packages: resolution: {integrity: sha512-nNPsNE65wjMxEKI93yOP+NPGGBJz/PoN3kZsVLee0XMiJolxSekEVD8wRwBUBqkwc7UWop0edW50yrCQW4CyRw==} dependencies: undici-types: 5.26.5 + dev: true /@types/normalize-package-data@2.4.4: resolution: {integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==} @@ -3525,6 +4932,9 @@ packages: '@types/node': 20.10.5 dev: true + /@types/stylis@4.2.0: + resolution: {integrity: sha512-n4sx2bqL0mW1tvDf/loQ+aMX7GQD3lc3fkCMC55VFNDu/vBOabO+LTIeXKM14xK0ppk5TUGcWRjiSpIlUpghKw==} + /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} dev: true @@ -3828,6 +5238,7 @@ packages: engines: {node: '>=4'} dependencies: color-convert: 1.9.3 + dev: true /ansi-styles@4.3.0: resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} @@ -3861,7 +5272,7 @@ packages: /argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} - dev: false + dev: true /aria-hidden@1.2.3: resolution: {integrity: sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==} @@ -3922,7 +5333,7 @@ packages: picocolors: 1.0.0 postcss: 8.4.32 postcss-value-parser: 4.2.0 - dev: false + dev: true /available-typed-arrays@1.0.5: resolution: {integrity: sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==} @@ -4004,6 +5415,21 @@ packages: - supports-color dev: true + /babel-plugin-styled-components@2.1.4(@babel/core@7.23.6)(styled-components@6.1.6): + resolution: {integrity: sha512-Xgp9g+A/cG47sUyRwwYxGM4bR/jDRg5N6it/8+HxCnbT5XNKSKDT9xm4oag/osgqjC2It/vH0yXsomOG6k558g==} + peerDependencies: + styled-components: '>= 2' + dependencies: + '@babel/helper-annotate-as-pure': 7.22.5 + '@babel/helper-module-imports': 7.22.15 + '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.6) + lodash: 4.17.21 + picomatch: 2.3.1 + styled-components: 6.1.6(react-dom@18.2.0)(react@18.2.0) + transitivePeerDependencies: + - '@babel/core' + dev: true + /balanced-match@1.0.2: resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} dev: true @@ -4103,6 +5529,7 @@ packages: electron-to-chromium: 1.4.616 node-releases: 2.0.14 update-browserslist-db: 1.0.13(browserslist@4.22.2) + dev: true /bser@2.1.1: resolution: {integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==} @@ -4146,7 +5573,7 @@ packages: /callsites@3.1.0: resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} engines: {node: '>=6'} - dev: false + dev: true /camelcase@5.3.1: resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} @@ -4156,10 +5583,14 @@ packages: /camelcase@6.3.0: resolution: {integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==} engines: {node: '>=10'} - dev: false + dev: true + + /camelize@1.0.1: + resolution: {integrity: sha512-dU+Tx2fsypxTgtLoE36npi3UqcjSSMNYfkqgmoEhtZrraP5VWq0K7FkWVTYa8eMPtnU/G2txVsfdCJTn9uzpuQ==} /caniuse-lite@1.0.30001571: resolution: {integrity: sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==} + dev: true /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -4168,6 +5599,7 @@ packages: ansi-styles: 3.2.1 escape-string-regexp: 1.0.5 supports-color: 5.5.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -4255,6 +5687,16 @@ packages: engines: {node: '>=0.8'} dev: true + /clsx@1.2.1: + resolution: {integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==} + engines: {node: '>=6'} + dev: false + + /clsx@2.0.0: + resolution: {integrity: sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==} + engines: {node: '>=6'} + dev: false + /code-block-writer@11.0.3: resolution: {integrity: sha512-NiujjUFB4SwScJq2bwbYUtXbZhBSlY6vYzm++3Q6oC+U+injTqfPYFK8wS9COOmb2lueqp0ZRB4nK1VYeHgNyw==} dev: true @@ -4263,6 +5705,7 @@ packages: resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==} dependencies: color-name: 1.1.3 + dev: true /color-convert@2.0.1: resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} @@ -4273,6 +5716,7 @@ packages: /color-name@1.1.3: resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==} + dev: true /color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} @@ -4368,6 +5812,7 @@ packages: /convert-source-map@2.0.0: resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + dev: true /cookie-signature@1.0.6: resolution: {integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==} @@ -4402,7 +5847,7 @@ packages: parse-json: 5.2.0 path-type: 4.0.0 typescript: 5.3.3 - dev: false + dev: true /cross-spawn@7.0.3: resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} @@ -4418,11 +5863,25 @@ packages: engines: {node: '>=8'} dev: true + /css-color-keywords@1.0.0: + resolution: {integrity: sha512-FyyrDHZKEjXDpNJYvVsV960FiqQyXc/LlYmsxl2BcdMb2WPx0OGRVgTg55rPSyLSNMqP52R9r8geSp7apN3Ofg==} + engines: {node: '>=4'} + + /css-to-react-native@3.2.0: + resolution: {integrity: sha512-e8RKaLXMOFii+02mOlqwjbD00KSEKqblnpO9e++1aXS1fPQOpS1YoqdVHBqPjHNoxeF2mimzVqawm2KCbEdtHQ==} + dependencies: + camelize: 1.0.1 + css-color-keywords: 1.0.0 + postcss-value-parser: 4.2.0 + /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} engines: {node: '>=4'} hasBin: true - dev: false + dev: true + + /csstype@3.1.2: + resolution: {integrity: sha512-I7K1Uu0MBPzaFKg4nI5Q7Vs2t+3gWWW648spaF+Rg7pI9ds18Ugn+lvg4SHczUdKlHI5LWBXyqfS8+DufyBsgQ==} /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -4448,6 +5907,7 @@ packages: optional: true dependencies: ms: 2.1.2 + dev: true /default-browser-id@3.0.0: resolution: {integrity: sha512-OZ1y3y0SqSICtE8DE4S8YOE9UZOJ8wO16fKWVP5J1Qz42kV9jcnMVFrEE/noXb/ss3Q4pZIH79kxofzyNNtUNA==} @@ -4568,7 +6028,7 @@ packages: dependencies: no-case: 3.0.4 tslib: 2.6.2 - dev: false + dev: true /dotenv-expand@10.0.0: resolution: {integrity: sha512-GopVGCpVS1UKH75VKHGuQFqS1Gusej0z4FyQkPdwjil2gNIv+LNsqBlboOzpJFZKVT95GkCyWJbBSdFEFUWI2A==} @@ -4607,6 +6067,7 @@ packages: /electron-to-chromium@1.4.616: resolution: {integrity: sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==} + dev: true /emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} @@ -4638,7 +6099,7 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} - dev: false + dev: true /envinfo@7.11.0: resolution: {integrity: sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==} @@ -4650,6 +6111,7 @@ packages: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} dependencies: is-arrayish: 0.2.1 + dev: true /es-module-lexer@0.9.3: resolution: {integrity: sha512-1HQ2M2sPtxwnvOvT1ZClHyQDiggdNjURWpY2we6aMKCQiUVxTmVs2UYPLIrD84sS+kMdUwfBSylbJPwNnBrnHQ==} @@ -4702,10 +6164,12 @@ packages: '@esbuild/win32-arm64': 0.18.20 '@esbuild/win32-ia32': 0.18.20 '@esbuild/win32-x64': 0.18.20 + dev: true /escalade@3.1.1: resolution: {integrity: sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==} engines: {node: '>=6'} + dev: true /escape-html@1.0.3: resolution: {integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==} @@ -4714,6 +6178,7 @@ packages: /escape-string-regexp@1.0.5: resolution: {integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==} engines: {node: '>=0.8.0'} + dev: true /escodegen@2.1.0: resolution: {integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==} @@ -4760,6 +6225,7 @@ packages: /estree-walker@2.0.2: resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + dev: true /esutils@2.0.3: resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} @@ -5021,6 +6487,24 @@ packages: /fraction.js@4.3.7: resolution: {integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==} + dev: true + + /framer-motion@10.16.16(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-je6j91rd7NmUX7L1XHouwJ4v3R+SO4umso2LUcgOct3rHZ0PajZ80ETYZTajzEXEl9DlKyzjyt4AvGQ+lrebOw==} + peerDependencies: + react: ^18.0.0 + react-dom: ^18.0.0 + peerDependenciesMeta: + react: + optional: true + react-dom: + optional: true + dependencies: + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + tslib: 2.6.2 + optionalDependencies: + '@emotion/is-prop-valid': 0.8.8 dev: false /fresh@0.5.2: @@ -5084,6 +6568,7 @@ packages: engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true + dev: true optional: true /function-bind@1.1.2: @@ -5093,6 +6578,7 @@ packages: /gensync@1.0.0-beta.2: resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} engines: {node: '>=6.9.0'} + dev: true /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} @@ -5194,6 +6680,7 @@ packages: /globals@11.12.0: resolution: {integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==} engines: {node: '>=4'} + dev: true /globby@11.1.0: resolution: {integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==} @@ -5245,6 +6732,7 @@ packages: /has-flag@3.0.0: resolution: {integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==} engines: {node: '>=4'} + dev: true /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} @@ -5348,7 +6836,7 @@ packages: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - dev: false + dev: true /import-lazy@4.0.0: resolution: {integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==} @@ -5376,6 +6864,15 @@ packages: resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} dev: true + /intl-messageformat@10.5.8: + resolution: {integrity: sha512-NRf0jpBWV0vd671G5b06wNofAN8tp7WWDogMZyaU8GUAsmbouyvgwmFJI7zLjfAMpm3zK+vSwRP3jzaoIcMbaA==} + dependencies: + '@formatjs/ecma402-abstract': 1.18.0 + '@formatjs/fast-memoize': 2.2.0 + '@formatjs/icu-messageformat-parser': 2.7.3 + tslib: 2.6.2 + dev: false + /invariant@2.2.4: resolution: {integrity: sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==} dependencies: @@ -5406,6 +6903,7 @@ packages: /is-arrayish@0.2.1: resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + dev: true /is-binary-path@2.1.0: resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==} @@ -5654,7 +7152,7 @@ packages: hasBin: true dependencies: argparse: 2.0.1 - dev: false + dev: true /jscodeshift@0.15.1(@babel/preset-env@7.23.6): resolution: {integrity: sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==} @@ -5699,9 +7197,11 @@ packages: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} engines: {node: '>=4'} hasBin: true + dev: true /json-parse-even-better-errors@2.3.1: resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + dev: true /json-schema-traverse@0.4.1: resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} @@ -5715,6 +7215,7 @@ packages: resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} engines: {node: '>=6'} hasBin: true + dev: true /jsonfile@4.0.0: resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} @@ -5760,6 +7261,7 @@ packages: /lines-and-columns@1.2.4: resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + dev: true /loader-runner@4.3.0: resolution: {integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==} @@ -5829,7 +7331,7 @@ packages: resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} dependencies: tslib: 2.6.2 - dev: false + dev: true /lru-cache@10.1.0: resolution: {integrity: sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==} @@ -5840,6 +7342,7 @@ packages: resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} dependencies: yallist: 3.1.1 + dev: true /lru-cache@6.0.0: resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==} @@ -6049,6 +7552,7 @@ packages: /ms@2.1.2: resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==} + dev: true /ms@2.1.3: resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} @@ -6073,7 +7577,7 @@ packages: dependencies: lower-case: 2.0.2 tslib: 2.6.2 - dev: false + dev: true /node-dir@0.1.17: resolution: {integrity: sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==} @@ -6104,6 +7608,7 @@ packages: /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} + dev: true /normalize-package-data@2.5.0: resolution: {integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==} @@ -6122,7 +7627,7 @@ packages: /normalize-range@0.1.2: resolution: {integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==} engines: {node: '>=0.10.0'} - dev: false + dev: true /npm-run-path@4.0.1: resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} @@ -6281,7 +7786,7 @@ packages: engines: {node: '>=6'} dependencies: callsites: 3.1.0 - dev: false + dev: true /parse-json@5.2.0: resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} @@ -6291,6 +7796,7 @@ packages: error-ex: 1.3.2 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 + dev: true /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -6345,6 +7851,7 @@ packages: /path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} + dev: true /pathe@1.1.1: resolution: {integrity: sha512-d+RQGp0MAYTIaDBIMmOfMwz3E+LOZnxx1HZd5R18mmCZY0QBlK0LDZfPc8FW8Ed2DlvsuE6PRjroDY+wg4+j/Q==} @@ -6368,6 +7875,7 @@ packages: /picomatch@2.3.1: resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==} engines: {node: '>=8.6'} + dev: true /pify@4.0.1: resolution: {integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==} @@ -6412,7 +7920,6 @@ packages: engines: {node: '>=10'} dependencies: '@babel/runtime': 7.23.6 - dev: true /postcss-nesting@12.0.2(postcss@8.4.32): resolution: {integrity: sha512-63PpJHSeNs93S3ZUIyi+7kKx4JqOIEJ6QYtG3x+0qA4J03+4n0iwsyA1GAHyWxsHYljQS4/4ZK1o2sMi70b5wQ==} @@ -6423,7 +7930,7 @@ packages: '@csstools/selector-specificity': 3.0.1(postcss-selector-parser@6.0.13) postcss: 8.4.32 postcss-selector-parser: 6.0.13 - dev: false + dev: true /postcss-selector-parser@6.0.13: resolution: {integrity: sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==} @@ -6431,11 +7938,18 @@ packages: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - dev: false + dev: true /postcss-value-parser@4.2.0: resolution: {integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==} - dev: false + + /postcss@8.4.31: + resolution: {integrity: sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==} + engines: {node: ^10 || ^12 || >=14} + dependencies: + nanoid: 3.3.7 + picocolors: 1.0.0 + source-map-js: 1.0.2 /postcss@8.4.32: resolution: {integrity: sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==} @@ -6444,6 +7958,7 @@ packages: nanoid: 3.3.7 picocolors: 1.0.0 source-map-js: 1.0.2 + dev: true /prettier@2.8.8: resolution: {integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==} @@ -6587,6 +8102,53 @@ packages: unpipe: 1.0.0 dev: true + /react-aria@3.31.0(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-fdmiEhopCq4TIP0BMMsDh92RMfGzVyNaSPdYLs5qqhDlVmaVL3NqWcK8RVstgI13ST/DIM+h9jgtp8+X1EDHMw==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + react-dom: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@internationalized/string': 3.2.0 + '@react-aria/breadcrumbs': 3.5.9(react@18.2.0) + '@react-aria/button': 3.9.1(react@18.2.0) + '@react-aria/calendar': 3.5.4(react-dom@18.2.0)(react@18.2.0) + '@react-aria/checkbox': 3.13.0(react@18.2.0) + '@react-aria/combobox': 3.8.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/datepicker': 3.9.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dialog': 3.5.9(react-dom@18.2.0)(react@18.2.0) + '@react-aria/dnd': 3.5.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/focus': 3.16.0(react@18.2.0) + '@react-aria/gridlist': 3.7.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/i18n': 3.10.0(react@18.2.0) + '@react-aria/interactions': 3.20.1(react@18.2.0) + '@react-aria/label': 3.7.4(react@18.2.0) + '@react-aria/link': 3.6.3(react@18.2.0) + '@react-aria/listbox': 3.11.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/menu': 3.12.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/meter': 3.4.9(react@18.2.0) + '@react-aria/numberfield': 3.10.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/overlays': 3.20.0(react-dom@18.2.0)(react@18.2.0) + '@react-aria/progress': 3.4.9(react@18.2.0) + '@react-aria/radio': 3.10.0(react@18.2.0) + '@react-aria/searchfield': 3.7.0(react@18.2.0) + '@react-aria/select': 3.14.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/selection': 3.17.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/separator': 3.3.9(react@18.2.0) + '@react-aria/slider': 3.7.4(react@18.2.0) + '@react-aria/ssr': 3.9.1(react@18.2.0) + '@react-aria/switch': 3.6.0(react@18.2.0) + '@react-aria/table': 3.13.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tabs': 3.8.3(react-dom@18.2.0)(react@18.2.0) + '@react-aria/tag': 3.3.1(react-dom@18.2.0)(react@18.2.0) + '@react-aria/textfield': 3.14.0(react@18.2.0) + '@react-aria/tooltip': 3.7.0(react@18.2.0) + '@react-aria/utils': 3.23.0(react@18.2.0) + '@react-aria/visually-hidden': 3.8.8(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + dev: false + /react-clientside-effect@1.2.6(react@18.2.0): resolution: {integrity: sha512-XGGGRQAKY+q25Lz9a/4EPqom7WRjz3z9R2k4jhVKA/puQFH/5Nt27vFZYql4m4NVNdUvX8PS3O7r/Zzm7cjUlg==} peerDependencies: @@ -6690,6 +8252,18 @@ packages: resolution: {integrity: sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==} dev: true + /react-modal-sheet@2.2.0(framer-motion@10.16.16)(react@18.2.0): + resolution: {integrity: sha512-OAIWuVWxMx3zQqrMLbYWnczadplg0WLd+AaBWmN5+ysNF5/pneqjkOV3AWaIZOCIF4TcrejiCsTduutbzCRP2Q==} + engines: {node: '>=16'} + peerDependencies: + framer-motion: '>=6' + react: '>=16' + dependencies: + '@react-aria/utils': 3.17.0(react@18.2.0) + framer-motion: 10.16.16(react-dom@18.2.0)(react@18.2.0) + react: 18.2.0 + dev: false + /react-refresh@0.14.0: resolution: {integrity: sha512-wViHqhAd8OHeLS/IRMJjTSDHF3U9eWi62F/MledQGPdJGDhodXJ9PBLNGr6WWL7qlH12Mt3TyTpbS+hGXMjCzQ==} engines: {node: '>=0.10.0'} @@ -6730,6 +8304,37 @@ packages: use-sidecar: 1.1.2(@types/react@18.2.45)(react@18.2.0) dev: true + /react-stately@3.29.0(react@18.2.0): + resolution: {integrity: sha512-JWPgEg2RxDtSmMkypsBLuhsuiaMDfJcnFw96oDRg8lAGqkslZmbmYH/O1Wz08k2W6P3Bds4rZz6iK91XMNXomA==} + peerDependencies: + react: ^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 + dependencies: + '@react-stately/calendar': 3.4.3(react@18.2.0) + '@react-stately/checkbox': 3.6.1(react@18.2.0) + '@react-stately/collections': 3.10.4(react@18.2.0) + '@react-stately/combobox': 3.8.1(react@18.2.0) + '@react-stately/data': 3.11.0(react@18.2.0) + '@react-stately/datepicker': 3.9.1(react@18.2.0) + '@react-stately/dnd': 3.2.7(react@18.2.0) + '@react-stately/form': 3.0.0(react@18.2.0) + '@react-stately/list': 3.10.2(react@18.2.0) + '@react-stately/menu': 3.6.0(react@18.2.0) + '@react-stately/numberfield': 3.8.0(react@18.2.0) + '@react-stately/overlays': 3.6.4(react@18.2.0) + '@react-stately/radio': 3.10.1(react@18.2.0) + '@react-stately/searchfield': 3.5.0(react@18.2.0) + '@react-stately/select': 3.6.1(react@18.2.0) + '@react-stately/selection': 3.14.2(react@18.2.0) + '@react-stately/slider': 3.5.0(react@18.2.0) + '@react-stately/table': 3.11.4(react@18.2.0) + '@react-stately/tabs': 3.6.3(react@18.2.0) + '@react-stately/toggle': 3.7.0(react@18.2.0) + '@react-stately/tooltip': 3.4.6(react@18.2.0) + '@react-stately/tree': 3.7.5(react@18.2.0) + '@react-types/shared': 3.22.0(react@18.2.0) + react: 18.2.0 + dev: false + /react-style-singleton@2.2.1(@types/react@18.2.45)(react@18.2.0): resolution: {integrity: sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==} engines: {node: '>=10'} @@ -6876,7 +8481,7 @@ packages: /resolve-from@4.0.0: resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} engines: {node: '>=4'} - dev: false + dev: true /resolve-from@5.0.0: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} @@ -6939,6 +8544,7 @@ packages: hasBin: true optionalDependencies: fsevents: 2.3.3 + dev: true /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -6990,6 +8596,7 @@ packages: /semver@6.3.1: resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} hasBin: true + dev: true /semver@7.5.4: resolution: {integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==} @@ -7059,6 +8666,9 @@ packages: kind-of: 6.0.3 dev: true + /shallowequal@1.1.0: + resolution: {integrity: sha512-y0m1JoUZSlPAjXVtPPW70aZWfIL/dSP7AFkRnniLCrK/8MDKog3TySTBmckD+RObVxH0v4Tox67+F14PdED2oQ==} + /shebang-command@2.0.0: resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} engines: {node: '>=8'} @@ -7109,7 +8719,7 @@ packages: dependencies: dot-case: 3.0.4 tslib: 2.6.2 - dev: false + dev: true /source-map-js@1.0.2: resolution: {integrity: sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==} @@ -7248,11 +8858,34 @@ packages: engines: {node: '>=8'} dev: true + /styled-components@6.1.6(react-dom@18.2.0)(react@18.2.0): + resolution: {integrity: sha512-DgTLULSC29xpabJ24bbn1+hulU6vvGFQf4RPwBOJrm8WJFnN42yXpo5voBt3jDSJBa5tBd1L6PqswJjQ0wRKdg==} + engines: {node: '>= 16'} + peerDependencies: + react: '>= 16.8.0' + react-dom: '>= 16.8.0' + dependencies: + '@emotion/is-prop-valid': 1.2.1 + '@emotion/unitless': 0.8.0 + '@types/stylis': 4.2.0 + css-to-react-native: 3.2.0 + csstype: 3.1.2 + postcss: 8.4.31 + react: 18.2.0 + react-dom: 18.2.0(react@18.2.0) + shallowequal: 1.1.0 + stylis: 4.3.1 + tslib: 2.5.0 + + /stylis@4.3.1: + resolution: {integrity: sha512-EQepAV+wMsIaGVGX1RECzgrcqRRU/0sYOHkeLsZ3fzHaHXZy4DaOOX0vOlGQdlsjkh3mFHAIlVimpwAs4dslyQ==} + /supports-color@5.5.0: resolution: {integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==} engines: {node: '>=4'} dependencies: has-flag: 3.0.0 + dev: true /supports-color@7.2.0: resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} @@ -7275,7 +8908,7 @@ packages: /svg-parser@2.0.4: resolution: {integrity: sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==} - dev: false + dev: true /synchronous-promise@2.0.17: resolution: {integrity: sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==} @@ -7410,6 +9043,7 @@ packages: /to-fast-properties@2.0.0: resolution: {integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==} engines: {node: '>=4'} + dev: true /to-regex-range@5.0.1: resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} @@ -7447,6 +9081,9 @@ packages: resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} dev: true + /tslib@2.5.0: + resolution: {integrity: sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==} + /tslib@2.6.2: resolution: {integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==} @@ -7486,6 +9123,7 @@ packages: resolution: {integrity: sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==} engines: {node: '>=14.17'} hasBin: true + dev: true /uglify-js@3.17.4: resolution: {integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==} @@ -7497,6 +9135,7 @@ packages: /undici-types@5.26.5: resolution: {integrity: sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==} + dev: true /unicode-canonical-property-names-ecmascript@2.0.0: resolution: {integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==} @@ -7585,6 +9224,7 @@ packages: browserslist: 4.22.2 escalade: 3.1.1 picocolors: 1.0.0 + dev: true /uri-js@4.4.1: resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} @@ -7634,6 +9274,7 @@ packages: /util-deprecate@1.0.2: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + dev: true /util@0.12.5: resolution: {integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==} @@ -7706,7 +9347,7 @@ packages: - rollup - supports-color - typescript - dev: false + dev: true /vite@4.5.1(@types/node@20.10.5): resolution: {integrity: sha512-AXXFaAJ8yebyqzoNB9fu2pHoo/nWX+xZlaRwoeYUxEqBO+Zj4msE5G+BhGBll9lYEKv9Hfks52PAF2X7qDYXQA==} @@ -7742,6 +9383,7 @@ packages: rollup: 3.29.4 optionalDependencies: fsevents: 2.3.3 + dev: true /walker@1.0.8: resolution: {integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==} @@ -7918,6 +9560,7 @@ packages: /yallist@3.1.1: resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + dev: true /yallist@4.0.0: resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} diff --git a/public/fonts.css b/public/fonts.css index 6452c9d..664640a 100644 --- a/public/fonts.css +++ b/public/fonts.css @@ -1,39 +1,55 @@ @font-face { - font-family: "Iset Sans"; + font-family: 'Iset Sans'; font-style: normal; font-weight: 300; - src: url("./IsetSans-Light.woff2") format("woff2"); + src: url('./IsetSans-Light.woff2') format('woff2'); font-display: swap; } @font-face { - font-family: "Iset Sans"; + font-family: 'Iset Sans'; font-style: normal; font-weight: 400; - src: url("./IsetSans-Regular.woff2") format("woff2"); + src: url('./IsetSans-Regular.woff2') format('woff2'); font-display: swap; } @font-face { - font-family: "Iset Sans"; + font-family: 'Iset Sans'; font-style: normal; font-weight: 500; - src: url("./IsetSans-Medium.woff2") format("woff2"); + src: url('./IsetSans-Medium.woff2') format('woff2'); font-display: swap; } @font-face { - font-family: "Iset Sans"; + font-family: 'Iset Sans'; font-style: normal; font-weight: 700; - src: url("./IsetSans-SemiBold.woff2") format("woff2"); + src: url('./IsetSans-SemiBold.woff2') format('woff2'); font-display: swap; } @font-face { - font-family: "Iset Sans"; + font-family: 'Iset Sans'; font-style: italic; font-weight: 400; - src: url("./IsetSans-Regular-Italic.woff2") format("woff2"); + src: url('./IsetSans-Regular-Italic.woff2') format('woff2'); font-display: swap; } + +.iset-icons { + font-family: 'Iset Sans'; + font-weight: normal; + font-style: normal; + font-size: 24px; + line-height: 1; + letter-spacing: normal; + text-transform: none; + display: inline-block; + white-space: nowrap; + word-wrap: normal; + direction: ltr; + -webkit-font-feature-settings: 'liga'; + -webkit-font-smoothing: antialiased; +} diff --git a/src/lib/components/Accordion/Accordion.stories.tsx b/src/lib/components/Accordion/Accordion.stories.tsx new file mode 100644 index 0000000..3293df7 --- /dev/null +++ b/src/lib/components/Accordion/Accordion.stories.tsx @@ -0,0 +1,94 @@ +import { ComponentProps } from 'react'; +import { StoryFn } from '@storybook/react'; +import { Accordion, AccordionItem } from '.'; +import { Checkbox, useCheckboxState } from '../Checkbox'; +import { ListGrid, ListGridItem } from '../ListGrid'; + +export default { + title: 'Organisms/Accordion', + component: Accordion, + argTypes: {}, +}; + +function StatefulAccordionItem(props: ComponentProps) { + const state = useCheckboxState(); + + return ; +} + +function ItemCheckbox() { + const state = useCheckboxState(); + + return ; +} + +const Template: StoryFn = (args: any) => { + let rows = [ + { + id: 1, + title: 'Красная линия', + subTitle: '35', + description: 'Маршрут по историческому центру города', + postfix: '56%', + }, + { + id: 2, + title: 'Синяя линия', + subTitle: '11', + postfix: '23%', + }, + { + id: 3, + title: 'Title', + subTitle: '29', + description: 'Арт-объекты фестиваля уличного искусства «Стенограффия»', + postfix: '31%', + }, + ]; + + return ( +
+ + + + {rows.map((item) => ( + } {...item}> + {item.title} + + ))} + + + + + {rows.map((item) => ( + } {...item}> + {item.title} + + ))} + + + + + {rows.map((item) => ( + } {...item}> + {item.title} + + ))} + + + + + {rows.map((item) => ( + } {...item}> + {item.title} + + ))} + + + +
+ ); +}; + +export const Default = Template.bind({}); +Default.args = {}; diff --git a/src/lib/components/Accordion/index.tsx b/src/lib/components/Accordion/index.tsx new file mode 100644 index 0000000..726d263 --- /dev/null +++ b/src/lib/components/Accordion/index.tsx @@ -0,0 +1,126 @@ +import { ReactNode, forwardRef } from 'react'; +import styled, { css } from 'styled-components'; +import { Switch } from '../Switch'; +import { ICheckboxState } from '../../types/ICheckboxState'; + +type Gap = 0 | 8 | 16; + +interface Props extends ICheckboxState { + title: ReactNode; + children: ReactNode; + subTitle?: ReactNode; + active?: boolean; + verticalGap?: Gap; + horizontalGap?: Gap; +} + +const Wrapper = styled.label<{ $opened?: boolean }>` + display: flex; + font-size: 16px; + line-height: 20px; + gap: 4px; + background-color: #1e2841; + padding: 12px 16px; + user-select: none; + cursor: pointer; + &:hover { + background-color: #040d24; + } + &:active { + background-color: #141d34; + } + ${({ $opened }) => + $opened && + css` + background-color: #141d34; + `} +`; +const Content = styled.div` + width: 100%; + gap: 2px; + display: flex; + flex-direction: column; +`; +const TitleWrapper = styled.div` + display: flex; + gap: 4px; +`; +const Title = styled.span` + font-weight: 500; + white-space: nowrap; + text-overflow: ellipsis; +`; +const SubTitle = styled.span` + color: #9baac3; +`; + +const Postfix = styled.div` + color: #9baac3; +`; + +const Container = styled.div``; + +const Body = styled.div<{ + $horizontalGap: Gap; + $verticalGap: Gap; +}>` + background-color: #141d34; + padding: ${({ $horizontalGap, $verticalGap }) => css` + ${$verticalGap}px + ${$horizontalGap}px + ${$verticalGap + 16}px + ${$horizontalGap}px + `}; +`; + +export const AccordionItem = forwardRef( + function AccordionItem( + { + title, + subTitle, + horizontalGap = 16, + verticalGap = 8, + children, + toggle, + isSelected, + }, + ref + ) { + return ( + + + + + {title} + {subTitle && {subTitle}} + + + + + + + {isSelected && children && ( + + {children} + + )} + + ); + } +); + +export const Accordion = styled.div` + display: flex; + flex-direction: column; + border-radius: 16px; + border: 8px solid #1e2841; + overflow: auto; + + ${Container}:first-child { + border-radius: 8px 8px 0 0; + } + + ${Container}:last-child { + border-radius: 0 0 8px 8px; + } +`; diff --git a/src/lib/components/AnimatedLogo/AnimatedLogo.stories.tsx b/src/lib/components/AnimatedLogo/AnimatedLogo.stories.tsx index c35be09..215cf42 100644 --- a/src/lib/components/AnimatedLogo/AnimatedLogo.stories.tsx +++ b/src/lib/components/AnimatedLogo/AnimatedLogo.stories.tsx @@ -2,7 +2,7 @@ import { StoryFn } from '@storybook/react'; import { AnimatedLogo, Props } from './AnimatedLogo'; export default { - title: 'Organisms/AnimatedLogo', + title: 'Ekb/AnimatedLogo', component: AnimatedLogo, }; diff --git a/src/lib/components/Button/Button.stories.tsx b/src/lib/components/Button/Button.stories.tsx new file mode 100644 index 0000000..7a76a23 --- /dev/null +++ b/src/lib/components/Button/Button.stories.tsx @@ -0,0 +1,42 @@ +import { StoryFn } from '@storybook/react'; +import { Button, ButtonProps, ButtonSize, ButtonType } from '.'; + +export default { + title: 'Atoms/Button', + component: Button, + argTypes: { + type: { + options: ButtonType, + control: { type: 'radio' }, + }, + size: { + options: ButtonSize, + control: { type: 'radio' }, + }, + }, +}; + +const Template: StoryFn = (args: ButtonProps) => { + return ( +
+ + + +
+ ); +}; + +export const Default = Template.bind({}); +Default.args = { + children: 'Text', +}; diff --git a/src/lib/components/Button/index.tsx b/src/lib/components/Button/index.tsx new file mode 100644 index 0000000..51fb05b --- /dev/null +++ b/src/lib/components/Button/index.tsx @@ -0,0 +1,159 @@ +import { ReactNode, forwardRef } from 'react'; +import styled, { css } from 'styled-components'; + +export enum ButtonType { + ACCENT = 'accent', + DEFAULT = 'default', + CONTRAST = 'contrast', +} + +export enum ButtonSize { + SMALL = 'small', + MEDIUM = 'medium', + LARGE = 'large', +} + +export interface ButtonProps { + children?: ReactNode; + className?: string; + rounded?: boolean; + fullWidth?: boolean; + size?: ButtonSize; + type?: ButtonType; + prefix?: ReactNode; + postfix?: ReactNode; + href?: string; + onClick?: (e: React.MouseEvent) => void; +} + +function getTypeStyles({ type = ButtonType.ACCENT }: ButtonProps) { + switch (type) { + case ButtonType.ACCENT: + return css` + background: #ffd400; + color: black; + &:hover { + background: #e1bb00; + } + &:active { + background: #c7a500; + } + `; + case ButtonType.DEFAULT: + return css` + background: #3c465a; + color: #fff; + opacity: 0.5; + &:hover { + background: #49556f; + } + &:active { + color: #b2c3df; + background: #606f8e; + } + `; + case ButtonType.CONTRAST: + return css` + background: #000; + color: #fff; + &:hover { + background: #0a0a0a; + } + &:active { + background: #141414; + } + `; + default: + return null; + } +} + +function getSizeStyles({ size = ButtonSize.LARGE }: ButtonProps) { + switch (size) { + case ButtonSize.SMALL: + return css` + padding: 3px 8px; + border-radius: 16px; + font-size: 12px; + line-height: 14px; + `; + case ButtonSize.MEDIUM: + return css` + padding: 8px 12px; + font-size: 14px; + line-height: 18px; + `; + case ButtonSize.LARGE: + default: + return css` + padding: 8px 12px; + font-size: 16px; + line-height: 20px; + `; + } +} + +function getRoundedStyles({ rounded }: ButtonProps) { + if (rounded) { + return css` + border-radius: 72px; + `; + } + + return css` + border-radius: 8px; + `; +} + +export const BaseButton = styled.button` + cursor: pointer; + border: none; + text-decoration: none; + transition: all 0.15s ease; + appearance: none; + display: inline-flex; + align-items: center; + gap: 4px; + white-space: nowrap; + + ${getRoundedStyles} + ${getTypeStyles} + ${getSizeStyles} + ${({ fullWidth }) => + fullWidth && + css` + width: 100%; + `} +`; + +export const Button = forwardRef( + function Button( + { prefix, postfix, size, rounded, type, href, children, ...props }, + ref + ) { + const buttonProps = href + ? { + as: 'a', + target: '_blank', + rel: 'noreferrer', + } + : {}; + + const allProps = { + ...props, + ...buttonProps, + href, + size, + rounded, + type, + }; + + return ( + + {prefix} + {children} + {postfix} + + ); + } +); diff --git a/src/lib/components/Checkbox/Checkbox.stories.tsx b/src/lib/components/Checkbox/Checkbox.stories.tsx new file mode 100644 index 0000000..1ac1817 --- /dev/null +++ b/src/lib/components/Checkbox/Checkbox.stories.tsx @@ -0,0 +1,18 @@ +import { StoryFn } from '@storybook/react'; +import { Checkbox, CheckboxProps } from '.'; +import { useToggleState } from 'react-stately'; + +export default { + title: 'Atoms/Checkbox', + component: Checkbox, +}; + +const Template: StoryFn = (args: CheckboxProps) => { + const state = useToggleState(); + return ; +}; + +export const Default = Template.bind({}); +Default.args = { + children: 'Label', +}; diff --git a/src/lib/components/Checkbox/index.tsx b/src/lib/components/Checkbox/index.tsx new file mode 100644 index 0000000..5a044c8 --- /dev/null +++ b/src/lib/components/Checkbox/index.tsx @@ -0,0 +1,99 @@ +import { Children, ReactNode } from 'react'; +import styled, { css } from 'styled-components'; +import { useFocusRing, VisuallyHidden } from 'react-aria'; +import { ICheckboxState } from '../../types/ICheckboxState'; + +export interface CheckboxProps extends ICheckboxState { + children?: ReactNode; + isIndeterminate?: boolean; + defaultColor?: string; + activeColor?: string; +} + +const CheckStroke = styled.rect``; +const CheckFill = styled.rect``; +const CheckMark = styled.path``; + +const Label = styled.label<{ $hasChildren?: boolean }>` + display: flex; + align-items: center; + user-select: none; + cursor: pointer; + + ${({ $hasChildren }) => + $hasChildren && + css` + svg { + margin-right: 8px; + } + `} + + svg, + rect, + path { + transition: transform 0.2s; + } + + /* Remove hover effect on touch screen */ + @media (hover: hover) { + &:hover svg { + transform: scale(1.2); + } + } +`; + +// 00B400 +export function Checkbox({ + defaultColor = '#3C4669', + activeColor = '#3C4669', + toggle, + ...props +}: CheckboxProps) { + let { isFocusVisible, focusProps } = useFocusRing(); + let isSelected = props.isSelected && !props.isIndeterminate; + const color = isSelected ? activeColor : defaultColor; + const boxStyles = { + x: 1, + y: 1, + width: 18, + height: 18, + rx: 4, + }; + + return ( + + ); +} + +export { useToggleState as useCheckboxState } from 'react-stately'; diff --git a/src/lib/components/Divider/Divider.stories.tsx b/src/lib/components/Divider/Divider.stories.tsx new file mode 100644 index 0000000..cd77f15 --- /dev/null +++ b/src/lib/components/Divider/Divider.stories.tsx @@ -0,0 +1,65 @@ +import { StoryFn } from '@storybook/react'; +import { Divider, DividerProps } from '.'; +import { Checkbox, ListGrid, ListGridItem } from '..'; + +export default { + title: 'Atoms/Divider', + component: Divider, +}; + +let rows = [ + { + id: 1, + title: 'Красная линия', + subTitle: '35', + description: 'Маршрут по историческому центру города', + postfix: '56%', + }, + { + id: 2, + title: 'Синяя линия', + subTitle: '11', + description: 'Маршрут по местам, связанными c царской семьей', + postfix: '23%', + }, + { + id: 3, + title: 'Title', + subTitle: '29', + description: 'Арт-объекты фестиваля уличного искусства «Стенограффия»', + postfix: '31%', + }, +]; + +const Template: StoryFn = (args: DividerProps) => ( +
+ + {rows.map((item) => ( + } + {...item} + > + {item.title} + + ))} + + + + {rows.map((item) => ( + } + {...item} + > + {item.title} + + ))} + +
+); + +export const Default = Template.bind({}); +Default.args = { + children: 'Divider', +}; diff --git a/src/lib/components/Divider/index.tsx b/src/lib/components/Divider/index.tsx new file mode 100644 index 0000000..9ec0ba6 --- /dev/null +++ b/src/lib/components/Divider/index.tsx @@ -0,0 +1,12 @@ +import styled, { css } from 'styled-components'; + +export interface DividerProps { + verticalGap?: 0 | 8 | 16; +} + +export const Divider = styled.div` + margin: ${({ verticalGap = 16 }) => css` + ${verticalGap}px 0 + `}; + border: 1px solid #3c4669; +`; diff --git a/src/lib/components/Link/Link.stories.tsx b/src/lib/components/Link/Link.stories.tsx new file mode 100644 index 0000000..23d387a --- /dev/null +++ b/src/lib/components/Link/Link.stories.tsx @@ -0,0 +1,31 @@ +import { StoryFn } from '@storybook/react'; +import { Link, LinkProps, LinkSize } from '.'; + +export default { + title: 'Atoms/Link', + component: Link, + argTypes: { + size: { + options: LinkSize, + control: { type: 'radio' }, + }, + }, +}; + +const Template: StoryFn = (args: LinkProps) => { + return ( +
+ + Medium + + + Small + +
+ ); +}; + +export const Default = Template.bind({}); +Default.args = { + children: 'Text', +}; diff --git a/src/lib/components/Link/index.tsx b/src/lib/components/Link/index.tsx new file mode 100644 index 0000000..b0288b2 --- /dev/null +++ b/src/lib/components/Link/index.tsx @@ -0,0 +1,54 @@ +import { rgba } from 'polished'; +import { ReactNode } from 'react'; +import styled, { css } from 'styled-components'; + +export enum LinkSize { + MEDIUM = 'medium', + SMALL = 'small', +} + +export interface LinkProps { + size?: LinkSize; + onClick?: (e: React.MouseEvent) => void; + children?: ReactNode; +} + +function getSizeStyles({ size = LinkSize.MEDIUM }: LinkProps) { + switch (size) { + case LinkSize.SMALL: + return css` + font-size: 14px; + line-height: 18px; + `; + case LinkSize.MEDIUM: + default: + return css` + font-size: 16px; + line-height: 20px; + `; + } +} + +export const Link = styled.a.attrs({ + target: '_blank', + rel: 'noreferrer', +})` + cursor: pointer; + transition: all 0.15s ease; + appearance: none; + display: inline; + align-items: center; + gap: 4px; + text-decoration: none; + border-bottom: 1px solid ${rgba('#9baac3', 0.32)}; + color: #9baac3; + &:hover { + color: #fff; + } + &:active { + color: #fff; + border-bottom-color: #fff; + } + + ${getSizeStyles} +`; diff --git a/src/lib/components/ListGrid/ListGrid.stories.tsx b/src/lib/components/ListGrid/ListGrid.stories.tsx new file mode 100644 index 0000000..2e37a9f --- /dev/null +++ b/src/lib/components/ListGrid/ListGrid.stories.tsx @@ -0,0 +1,48 @@ +import { StoryFn } from '@storybook/react'; +import { ListGrid, ListGridItem } from '.'; +import { Checkbox } from '../Checkbox'; + +export default { + title: 'Atoms/ListGrid', + component: ListGrid, + argTypes: {}, +}; + +const Template: StoryFn = (args: any) => { + let rows = [ + { + id: 1, + title: 'Красная линия', + subTitle: '35', + description: 'Маршрут по историческому центру города', + postfix: '56%', + }, + { + id: 2, + title: 'Синяя линия', + subTitle: '11', + description: 'Маршрут по местам, связанными c царской семьей', + postfix: '23%', + }, + { + id: 3, + title: 'Title', + subTitle: '29', + description: 'Арт-объекты фестиваля уличного искусства «Стенограффия»', + postfix: '31%', + }, + ]; + + return ( + + {rows.map((item) => ( + } {...item}> + {item.title} + + ))} + + ); +}; + +export const Default = Template.bind({}); +Default.args = {}; diff --git a/src/lib/components/ListGrid/index.tsx b/src/lib/components/ListGrid/index.tsx new file mode 100644 index 0000000..b91087e --- /dev/null +++ b/src/lib/components/ListGrid/index.tsx @@ -0,0 +1,80 @@ +import { ReactNode } from 'react'; +import styled, { css } from 'styled-components'; + +const Wrapper = styled.label` + display: flex; + font-size: 14px; + line-height: 18px; + user-select: none; + gap: 8px; + cursor: pointer; +`; +const Content = styled.div` + width: 100%; + gap: 2px; + display: flex; + flex-direction: column; + justify-content: center; +`; +const TitleWrapper = styled.div` + display: flex; + gap: 8px; +`; +const Title = styled.span` + font-weight: 500; + white-space: nowrap; + text-overflow: ellipsis; +`; +const SubTitle = styled.span` + color: #9baac3; +`; +const Description = styled.div` + color: #9baac3; +`; +const Prefix = styled.div``; +const Postfix = styled.div` + color: #9baac3; +`; + +interface Props { + subTitle?: ReactNode; + description?: ReactNode; + prefix?: ReactNode; + postfix?: ReactNode; + children: ReactNode; +} + +interface ListGridProps { + verticalGap?: 0 | 8 | 16; +} + +export const ListGrid = styled.div` + display: flex; + flex-direction: column; + gap: ${({ verticalGap = 16 }) => + css` + ${verticalGap}px + `}; +`; + +export function ListGridItem({ + subTitle, + description, + prefix, + postfix, + children, +}: Props): ReactNode { + return ( + + {prefix && {prefix}} + + + {children} + {subTitle && {subTitle}} + + {description && {description}} + + {postfix && {postfix}} + + ); +} diff --git a/src/lib/components/ProjectsPanel/ProjectsPanel.stories.tsx b/src/lib/components/ProjectsPanel/ProjectsPanel.stories.tsx index fb21971..33ad6c2 100644 --- a/src/lib/components/ProjectsPanel/ProjectsPanel.stories.tsx +++ b/src/lib/components/ProjectsPanel/ProjectsPanel.stories.tsx @@ -10,7 +10,7 @@ import { import { Props } from './components/ProjectsPanel'; export default { - title: 'Organisms/ProjectsPanel', + title: 'Ekb/ProjectsPanel', component: ProjectsPanel, }; diff --git a/src/lib/components/RangeHistogram/RangeHistogram.module.css b/src/lib/components/RangeHistogram/RangeHistogram.module.css new file mode 100644 index 0000000..3246d3a --- /dev/null +++ b/src/lib/components/RangeHistogram/RangeHistogram.module.css @@ -0,0 +1,27 @@ +.histogram { + --histogram-color-active: white; + --histogram-color-disabled: #2c3a5e; + + --histogram-thumb-color-active: white; + --histogram-thumb-color-disabled: #55647d; + + --histogram-padding-x: 10px; +} + +.histogram { + position: relative; + padding-top: 32px; + padding-right: var(--histogram-padding-x); + padding-bottom: 0; + padding-left: var(--histogram-padding-x); + box-sizing: content-box; + user-select: none; +} + +.histogram__range { + margin-top: 1px; +} + +.histogram__axis { + margin-top: 8px; +} diff --git a/src/lib/components/RangeHistogram/RangeHistogram.stories.tsx b/src/lib/components/RangeHistogram/RangeHistogram.stories.tsx new file mode 100644 index 0000000..a2a90ea --- /dev/null +++ b/src/lib/components/RangeHistogram/RangeHistogram.stories.tsx @@ -0,0 +1,78 @@ +import { StoryFn } from '@storybook/react'; +import { HistogramData, RangeHistogram } from '.'; +import { Checkbox } from '../Checkbox'; +import { useState } from 'react'; + +export default { + title: 'Atoms/RangeHistogram', + component: RangeHistogram, + argTypes: {}, +}; + +const Template: StoryFn = (args: any) => { + const rangeData = [ + { + from: 1723, + to: 1860, + color: '#ff7461', + value: 145, + }, + { + from: 1860, + to: 1917, + color: '#ffA34e', + value: 263, + }, + { + from: 1917, + to: 1930, + color: '#fee678', + value: 504, + }, + { + from: 1930, + to: 1940, + color: '#85e634', + value: 718, + }, + { + from: 1940, + to: 1955, + color: '#0f9467', + value: 2610, + }, + { + from: 1955, + to: 1991, + color: '#71b3ff', + value: 11895, + }, + { + from: 1991, + to: 2010, + color: '#c270ff', + value: 3813, + }, + { + from: 2010, + to: 2023, + color: '#f97bcf', + value: 2807, + }, + ]; + + return ( + + ); +}; + +export const Default = Template.bind({}); +Default.args = {}; diff --git a/src/lib/components/RangeHistogram/RangeHistogram.tsx b/src/lib/components/RangeHistogram/RangeHistogram.tsx new file mode 100644 index 0000000..04c84d1 --- /dev/null +++ b/src/lib/components/RangeHistogram/RangeHistogram.tsx @@ -0,0 +1,90 @@ +import { useCallback, useEffect, useState } from 'react'; + +import histogramStyles from './RangeHistogram.module.css'; +import { Slider } from './components/Slider'; +import { BarChart } from './components/BarChart'; +import { Axis } from './components/Axis'; +import { HistogramData, MinMax, Range } from './types'; + +interface Props { + width?: number | 'auto'; + height?: number; + defaultMin: number; + defaultMax: number; + units?: string; + data?: HistogramData; + onChange: (minMax: MinMax) => void; +} + +export function RangeHistogram({ + data, + width = 'auto', + height = 100, + onChange, + defaultMin, + defaultMax, + units, +}: Props) { + const [barChartMinMax, setBarChartMinMax] = useState({ + min: defaultMin, + max: defaultMax, + }); + + const [sliderMinMax, setSliderMinMax] = useState({ + min: defaultMin, + max: defaultMax, + }); + + const [finalMinMax, setFinalMinMax] = useState({ + min: defaultMin, + max: defaultMax, + }); + + useEffect(() => { + setFinalMinMax(barChartMinMax); + }, [barChartMinMax]); + + useEffect(() => { + setFinalMinMax(sliderMinMax); + }, [sliderMinMax]); + + useEffect(() => { + onChange(finalMinMax); + }, [onChange, finalMinMax]); + + const onSelectInBarChart = (fromTo: Range) => { + setBarChartMinMax({ + min: fromTo.from, + max: fromTo.to, + }); + }; + + const onChangeSlider = useCallback((minMax: MinMax) => { + setSliderMinMax(minMax); + }, []); + + return data ? ( +
+ +
+ +
+
+ +
+
+ ) : null; +} diff --git a/src/lib/components/RangeHistogram/components/Axis.module.css b/src/lib/components/RangeHistogram/components/Axis.module.css new file mode 100644 index 0000000..b464f6e --- /dev/null +++ b/src/lib/components/RangeHistogram/components/Axis.module.css @@ -0,0 +1,42 @@ +.axis { + display: flex; + align-items: flex-end; + justify-content: space-between; + font-size: 11px; + line-height: 18px; + column-gap: 1px; + margin: 0 calc(-1 * var(--histogram-padding-x)); + color: var(--histogram-color-active); +} + +.axis__item { + transition: 0.15s ease; + cursor: pointer; + text-align: center; + flex-basis: var(--axis-item-basis); + white-space: nowrap; +} + +.axis__item:hover { + opacity: 0.8; +} + +.axis__item:not(.axis__item_active) { + color: var(--histogram-color-disabled); +} + +.axis__item:not(.axis__item_active):hover { + color: var(--histogram-color-active); +} + +@media screen and (width >= 768px) { + .axis { + font-size: 13px; + } +} + +@media screen and (width >= 1200px) { + .axis { + font-size: 14px; + } +} diff --git a/src/lib/components/RangeHistogram/components/Axis.tsx b/src/lib/components/RangeHistogram/components/Axis.tsx new file mode 100644 index 0000000..3b1551b --- /dev/null +++ b/src/lib/components/RangeHistogram/components/Axis.tsx @@ -0,0 +1,67 @@ +import classNames from 'classnames'; +import { CSSProperties } from 'react'; +import { HistogramData, MinMax } from '../types'; +import axisStyles from './Axis.module.css'; + +interface Props { + data: HistogramData; + units?: string; + range: MinMax; + // onSelect?: (item: { from: HistogramDatum['from']; to: HistogramDatum['to'] }) => void; +} + +export function Axis({ data, units, range }: Props) { + const lastItem = data[data.length - 1]; + const labels = data + .map((item) => ({ + value: item.from, + isActive: item.from >= range.min && item.to - 1 <= range.max, + })) + .concat({ + value: lastItem.to, + isActive: lastItem.from >= range.min && lastItem.to <= range.max, + }); + + // const onClick = useCallback( + // (from: number) => { + // if (from === lastItem.to) { + // onSelect?.(lastItem); + // } else { + // const selectedItem = data.find((dataItem) => dataItem.from === from); + + // onSelect?.({ from, to: selectedItem.to }); + // } + // }, + // [data, lastItem, onSelect], + // ); + + return ( +
+ {labels.map((item, i) => { + const isFirst = i === 0; + const isLast = i === labels.length - 1; + return ( +
onClick?.(item.value)} + // onKeyUp={() => onClick?.(item.value)} + className={classNames(axisStyles.axis__item, { + [axisStyles.axis__item_active]: item.isActive, + })} + > + {item.value} + {(isFirst || isLast) && <> {units}} +
+ ); + })} +
+ ); +} diff --git a/src/lib/components/RangeHistogram/components/BarChart.module.css b/src/lib/components/RangeHistogram/components/BarChart.module.css new file mode 100644 index 0000000..5523029 --- /dev/null +++ b/src/lib/components/RangeHistogram/components/BarChart.module.css @@ -0,0 +1,65 @@ +.barchart { + position: relative; + display: flex; + justify-content: space-between; + align-items: flex-end; + font-size: 12px; + line-height: 1.2; + column-gap: 1px; + transition: 0.15s ease; +} + +.barchart:has(:active) .barchart__item { + opacity: 0.78; +} + +.barchart__itemWrapper { + height: 100%; + width: 100%; + display: flex; + align-items: flex-end; +} + +.barchart__item { + display: flex; + justify-content: center; + border-radius: 4px 4px 0 0; + width: 100%; + background-color: currentColor; + transition: 0.2s ease; + cursor: pointer; +} + +.barchart__item:hover { + opacity: 0.8; +} + +.barchart__item:not(.barchart__item_active) { + background-color: var(--histogram-color-disabled); +} + +.barchart__percent { + position: absolute; + top: -40px; + font-size: 11px; + white-space: nowrap; +} + +.barchart__value { + margin-top: -16px; +} + +.barchart__item:not(.barchart__item_active) .barchart__percent, +.barchart__item:not(.barchart__item_active) .barchart__value { + color: var(--histogram-color-disabled); +} + +@media screen and (width >= 1440px) { + .barchart { + font-size: 14px; + } + + .team-barchart__percent { + font-size: 11px; + } +} diff --git a/src/lib/components/RangeHistogram/components/BarChart.tsx b/src/lib/components/RangeHistogram/components/BarChart.tsx new file mode 100644 index 0000000..11354c0 --- /dev/null +++ b/src/lib/components/RangeHistogram/components/BarChart.tsx @@ -0,0 +1,119 @@ +import { useEffect, useRef, useState } from 'react'; +import classnames from 'classnames'; +import { getPercent } from '../utils'; +import { HistogramData, HistogramDatum, MinMax, Range } from '../types'; +import barchartStyles from './BarChart.module.css'; + +interface Props { + height: number; + data: HistogramData; + minValue: number; + maxValue: number; + onSelect?: (item: Range) => void; + sliderMinMax: MinMax; +} + +export function BarChart({ + data, + sliderMinMax, + height, + onSelect, + minValue, + maxValue, +}: Props) { + const [minMaxInternal, setMinMaxInternal] = useState(); + + const [minMax, setMinMax] = useState({ + min: minValue, + max: maxValue, + }); + + useEffect(() => { + if (minMaxInternal) { + setMinMax(minMaxInternal); + } + }, [minMaxInternal]); + + useEffect(() => { + setMinMax(sliderMinMax); + }, [sliderMinMax]); + + const total = data.reduce((acc, item) => acc + item.value, 0); + const max = Math.max(...data.map((item) => item.value)); + + const items = data.map((item) => ({ + ...item, + percent: getPercent(0, total, item.value), + height: getPercent(0, max, item.value), + isActive: item.from >= minMax.min && item.to <= minMax.max, + })); + + const selected = useRef(false); + + const onMouseDown = (item: HistogramDatum) => { + selected.current = true; + onSelect?.(item); + setMinMaxInternal({ + min: item.from, + max: item.to, + }); + }; + + const onMouseEnter = (item: HistogramDatum) => { + if (selected.current === true) { + onSelect?.({ + from: Math.min(minMax.min, item.from), + to: Math.max(minMax.max, item.to), + }); + setMinMaxInternal({ + min: Math.min(minMax.min, item.from), + max: Math.max(minMax.max, item.to), + }); + } + }; + + const onMouseUp = () => { + selected.current = false; + }; + + useEffect(() => { + window.addEventListener('mouseup', onMouseUp); + + return () => window.removeEventListener('mouseup', onMouseUp); + }, []); + + return ( +
+ {items.map((item) => ( +
{ + onMouseDown(item); + }} + onMouseEnter={() => { + onMouseEnter(item); + }} + > +
+
+ {Intl.NumberFormat('ru-RU').format(item.percent)} +  % +
+
{item.value}
+
+
+ ))} +
+ ); +} diff --git a/src/lib/components/RangeHistogram/components/Slider.helpers.ts b/src/lib/components/RangeHistogram/components/Slider.helpers.ts new file mode 100644 index 0000000..669b1ea --- /dev/null +++ b/src/lib/components/RangeHistogram/components/Slider.helpers.ts @@ -0,0 +1,36 @@ +import { HistogramData } from '../types'; + +// data - age +// percent = 80 +export function getValueFromPercent(data: HistogramData, percent: number) { + // 12,5% is width of one bar + const oneBarWidthInPercents = 100 / data.length; + + const index = Math.min( + Math.floor(percent / oneBarWidthInPercents), + data.length - 1 + ); + + // this bar includes the 80th percent + // from: 1991, to: 2010 + const dataValue = data[index]; + + // 1991 is located on the 75th percent of the range + const fromPositionInPercents = oneBarWidthInPercents * index; + + // 80 - 75 = 5% + const fromInitialDiffInPercents = percent - fromPositionInPercents; + + // 100 / 12,5 * 5 = 40% - diff between initial and from in current bar in percents + const percentsBetweenFromAndInitial = + (100 / oneBarWidthInPercents) * fromInitialDiffInPercents; + + // 2010 - 1991 = 19 - diff between from and to in current bar in absolute values + const fromToDiffInAbsoluteValues = dataValue.to - dataValue.from; + + // 19 / 100 * 40 = 7,6 - distance between initial and from in current bar in absolute values + const toAddInAbsoluteValues = + (fromToDiffInAbsoluteValues / 100) * percentsBetweenFromAndInitial; + + return dataValue.from + Math.round(toAddInAbsoluteValues); +} diff --git a/src/lib/components/RangeHistogram/components/Slider.module.css b/src/lib/components/RangeHistogram/components/Slider.module.css new file mode 100644 index 0000000..b8cf2b7 --- /dev/null +++ b/src/lib/components/RangeHistogram/components/Slider.module.css @@ -0,0 +1,85 @@ +.slider { + position: absolute; + width: calc(100% - var(--histogram-padding-x) * 2); +} + +.slider__track, +.slider__range { + height: 2px; +} + +.slider__track { + position: absolute; + background-color: var(--histogram-thumb-color-disabled); + width: 100%; + z-index: 1; +} + +.slider__range { + position: absolute; + background-color: var(--histogram-thumb-color-active); + z-index: 2; +} + +.thumb, +.thumb::-webkit-slider-thumb { + -webkit-appearance: none; + -webkit-tap-highlight-color: transparent; + outline: none; +} + +.thumb { + pointer-events: none; + position: absolute; + width: calc(100% - var(--histogram-padding-x)); + height: 0; +} + +.thumb_left { + z-index: 3; +} + +.thumb_right { + z-index: 4; +} + +.thumb_zindex_5 { + z-index: 5; +} + +/* For Chrome browsers */ +.thumb::-webkit-slider-thumb { + background-color: var(--histogram-thumb-color-active); + border: none; + border-radius: 50%; + cursor: pointer; + height: 12px; + width: 12px; + margin-bottom: 2px; + pointer-events: all; + position: relative; + transition: all 0.3s ease; + transform: translate(-50%, 0); +} + +.thumb:hover::-webkit-slider-thumb { + transform: scale(2); +} + +.thumb:focus::-webkit-slider-thumb { + transform: scale(2); +} + +/* For Firefox browsers */ +.thumb::-moz-range-thumb { + background-color: var(--histogram-thumb-color-active); + border: none; + border-radius: 50%; + cursor: pointer; + height: 12px; + width: 12px; + margin-bottom: 2px; + pointer-events: all; + position: relative; + transform: translate(-50%, 0); +} diff --git a/src/lib/components/RangeHistogram/components/Slider.tsx b/src/lib/components/RangeHistogram/components/Slider.tsx new file mode 100644 index 0000000..9f3f575 --- /dev/null +++ b/src/lib/components/RangeHistogram/components/Slider.tsx @@ -0,0 +1,150 @@ +import { ChangeEvent, useEffect, useState, useRef, useCallback } from 'react'; +import classnames from 'classnames'; + +import { HistogramData, MinMax } from '../types'; + +import { getValueFromPercent } from './Slider.helpers'; + +import sliderStyles from './Slider.module.css'; + +interface Props { + data: HistogramData; + + // minimal value of slider (in absolute units) + min: number; + // maximal value of slider (in absolute units) + max: number; + + // on manual movement of slider + onChange: (minMax: MinMax) => void; + barChartMinMax: MinMax; +} + +const ERROR = 0.15; + +export function Slider({ max, barChartMinMax, onChange, data }: Props) { + const [startValueInternal, setStartValueInternal] = useState(0); + const [endValueInternal, setEndValueInternal] = useState(100); + + const [startValue, setStartValue] = useState(0); + const [endValue, setEndValue] = useState(100); + + const leftSliderRef = useRef(null); + const rightSliderRef = useRef(null); + const rangeRef = useRef(null); + + // when left slider is moved - update startValue + useEffect(() => { + setStartValue(startValueInternal); + }, [startValueInternal]); + + // when right slider is moved - update endValue + useEffect(() => { + setEndValue(endValueInternal); + }, [endValueInternal]); + + // when slider is moved - lift up new state to parent components + useEffect(() => { + const minDataValue = getValueFromPercent(data, startValueInternal); + const maxDataValue = getValueFromPercent(data, endValueInternal); + onChange({ min: minDataValue, max: maxDataValue }); + }, [startValueInternal, endValueInternal, onChange, data]); + + // when barChartLeft updated - update startValue + useEffect(() => { + const minIndex = data.findIndex(({ from, to }) => { + const epsilon = ERROR * (to - from); + + return Math.abs(barChartMinMax.min - from) <= epsilon; + }); + const minPercent = !minIndex ? 0 : (minIndex / data.length) * 100; + + setStartValue(minPercent); + }, [barChartMinMax, data]); + + // when barChartRight updated - update endValue + useEffect(() => { + const maxIndex = data.findIndex(({ from, to }) => { + const epsilon = ERROR * (to - from); + + return Math.abs(barChartMinMax.max - to) <= epsilon; + }); + const maxPercent = ((maxIndex + 1) / data.length) * 100; + + setEndValue(maxPercent); + }, [barChartMinMax, data]); + + // when startValue is updated - change the position of left slider + useEffect(() => { + if (rightSliderRef.current) { + const minPercent = startValue; + const maxPercent = Number(rightSliderRef.current.value); + + if (rangeRef.current) { + rangeRef.current.style.left = `${minPercent}%`; + rangeRef.current.style.width = `${maxPercent - minPercent}%`; + } + } + }, [startValue]); + + // when endValue is updated - change the position of right slider + useEffect(() => { + if (leftSliderRef.current) { + const minPercent = Number(leftSliderRef.current.value); + + if (rangeRef.current) { + rangeRef.current.style.width = `${endValue - minPercent}%`; + } + } + }, [endValue]); + + // when starting movement of slider should update inner state with actual values + const setActualValuesToInnerState = useCallback(() => { + setStartValueInternal(startValue); + setEndValueInternal(endValue); + }, [startValue, endValue]); + + return ( +
+ max - 100, + })} + onMouseDown={setActualValuesToInnerState} + onChange={(event: ChangeEvent) => { + const newLeftSliderPositionInPercents = Math.min( + Number(event.target.value), + endValue - 1 + ); + setStartValueInternal(newLeftSliderPositionInPercents); + }} + /> + ) => { + const newRightSliderPositionInPercents = Math.max( + Number(event.target.value), + startValue + 1 + ); + setEndValueInternal(newRightSliderPositionInPercents); + }} + /> + +
+
+
+
+
+ ); +} diff --git a/src/lib/components/RangeHistogram/index.ts b/src/lib/components/RangeHistogram/index.ts new file mode 100644 index 0000000..4767441 --- /dev/null +++ b/src/lib/components/RangeHistogram/index.ts @@ -0,0 +1,9 @@ +export { RangeHistogram } from './RangeHistogram'; + +export type { + HistogramDatum, + HistogramData, + HistogramDataWithoutValues, + MinMax, + Range, +} from './types'; diff --git a/src/lib/components/RangeHistogram/types.ts b/src/lib/components/RangeHistogram/types.ts new file mode 100644 index 0000000..ed3e0e1 --- /dev/null +++ b/src/lib/components/RangeHistogram/types.ts @@ -0,0 +1,14 @@ +export interface HistogramDatum { + from: number; + to: number; + value: number; + color: string; +} +export type HistogramDatumWithoutValues = Omit; + +export type HistogramData = HistogramDatum[]; +export type HistogramDataWithoutValues = HistogramDatumWithoutValues[]; + +export type Range = { from: number; to: number }; + +export type MinMax = { min: number; max: number }; diff --git a/src/lib/components/RangeHistogram/utils/index.ts b/src/lib/components/RangeHistogram/utils/index.ts new file mode 100644 index 0000000..b0aa52a --- /dev/null +++ b/src/lib/components/RangeHistogram/utils/index.ts @@ -0,0 +1,23 @@ +export function round(num: number, decimalPlaces = 0) { + const multiplier = 10 ** decimalPlaces; + + return Math.round((num + Number.EPSILON) * multiplier) / multiplier; +} + +export function getPercent(min: number, max: number, value: number) { + return Math.round(((value - min) / (max - min)) * 1000) / 10; +} + +export function randomData(min: number, max: number) { + return Math.floor(Math.random() * (max - min + 1) + min); +} + +export function getAbsolutePartInBlock(percent: number, blockWidth: number) { + let absolutePartInBlock = round(percent % blockWidth, 4); + + if (percent !== 0 && !absolutePartInBlock) { + absolutePartInBlock = blockWidth; + } + + return absolutePartInBlock; +} diff --git a/src/lib/components/SheetModal/SheetModal.stories.tsx b/src/lib/components/SheetModal/SheetModal.stories.tsx new file mode 100644 index 0000000..5a3c62b --- /dev/null +++ b/src/lib/components/SheetModal/SheetModal.stories.tsx @@ -0,0 +1,16 @@ +import { StoryFn } from '@storybook/react'; +import { SheetModal, SheetModalProps } from '.'; + +export default { + title: 'Atoms/SheetModal', + component: SheetModal, +}; + +const Template: StoryFn = (args: SheetModalProps) => { + return 123123; +}; + +export const Default = Template.bind({}); +Default.args = { + isOpen: true, +}; diff --git a/src/lib/components/SheetModal/index.tsx b/src/lib/components/SheetModal/index.tsx new file mode 100644 index 0000000..e01ba84 --- /dev/null +++ b/src/lib/components/SheetModal/index.tsx @@ -0,0 +1,49 @@ +import { ReactNode, useRef } from 'react'; +import Sheet, { SheetRef } from 'react-modal-sheet'; +import { SheetDetent } from 'react-modal-sheet/dist/types'; +import './sheetModal.css'; + +export interface SheetModalProps { + snapPoints?: number[]; + fullHeight?: boolean; + children: ReactNode; + isOpen?: boolean; + onClose?: VoidFunction; +} + +export function SheetModal({ + children, + isOpen = false, + onClose, + fullHeight, + snapPoints, +}: SheetModalProps) { + const ref = useRef(); + + const fullHeightProps = fullHeight + ? { + detent: 'full-height' as SheetDetent, + } + : {}; + + const closeProps = onClose + ? { onClose } + : { onClose: () => ref.current?.snapTo(1) }; + + return ( + + + + + {children} + + + + ); +} diff --git a/src/lib/components/SheetModal/sheetModal.css b/src/lib/components/SheetModal/sheetModal.css new file mode 100644 index 0000000..f5d711c --- /dev/null +++ b/src/lib/components/SheetModal/sheetModal.css @@ -0,0 +1,20 @@ +/* Increase modal swipeable area */ +.react-modal-sheet-header:after { + content: ''; + position: absolute; + z-index: 1; + width: 100%; + height: 80px; +} + +.react-modal-sheet-container, +.react-modal-sheet-header, +.react-modal-sheet-content { + background-color: #1e2841 !important; +} + +.react-modal-sheet-header, +.react-modal-sheet-container, +.react-modal-sheet-content { + border-radius: 10px 10px 0 0 !important; +} diff --git a/src/lib/components/Switch/Switch.stories.tsx b/src/lib/components/Switch/Switch.stories.tsx new file mode 100644 index 0000000..2843abd --- /dev/null +++ b/src/lib/components/Switch/Switch.stories.tsx @@ -0,0 +1,16 @@ +import { StoryFn } from '@storybook/react'; +import { Switch, SwitchProps } from '.'; + +export default { + title: 'Atoms/Switch', + component: Switch, +}; + +const Template: StoryFn = (args: SwitchProps) => ( + +); + +export const Default = Template.bind({}); +Default.args = { + children: 'Label', +}; diff --git a/src/lib/components/Switch/index.tsx b/src/lib/components/Switch/index.tsx new file mode 100644 index 0000000..e5c80f8 --- /dev/null +++ b/src/lib/components/Switch/index.tsx @@ -0,0 +1,54 @@ +import styled from 'styled-components'; +import { useFocusRing, VisuallyHidden } from 'react-aria'; +import { ICheckboxState } from '../../types/ICheckboxState'; + +export interface SwitchProps extends ICheckboxState {} + +const Label = styled.label` + display: flex; + align-items: center; + user-select: none; + cursor: pointer; + gap: 4px; + rect, + circle { + transition: all 0.2s; + } +`; + +export function Switch({ isSelected, toggle }: SwitchProps) { + let { isFocusVisible, focusProps } = useFocusRing(); + + return ( + + ); +} + +export { useToggleState as useSwitchState } from 'react-stately'; diff --git a/src/lib/components/Tag/Tag.stories.tsx b/src/lib/components/Tag/Tag.stories.tsx new file mode 100644 index 0000000..722c45a --- /dev/null +++ b/src/lib/components/Tag/Tag.stories.tsx @@ -0,0 +1,21 @@ +import { StoryFn } from '@storybook/react'; +import { Tag, TagProps } from '.'; + +export default { + title: 'Atoms/Tag', + component: Tag, +}; + +const Template: StoryFn = (args: TagProps) => ( +
+ + + + +
+); + +export const Default = Template.bind({}); +Default.args = { + children: 'Tag', +}; diff --git a/src/lib/components/Tag/index.tsx b/src/lib/components/Tag/index.tsx new file mode 100644 index 0000000..14d8e66 --- /dev/null +++ b/src/lib/components/Tag/index.tsx @@ -0,0 +1,30 @@ +import styled, { css } from 'styled-components'; +import { rgba, getContrast } from 'polished'; + +export interface TagProps { + color?: string; +} + +function getColorStyles({ color = 'black' }: TagProps) { + const isWhite = getContrast(color, 'white') >= 4.5; + const bgColor = rgba(color, 0.32); + const textColor = isWhite ? 'white' : color; + return css` + color: ${textColor}; + background-color: ${bgColor}; + `; +} + +export const Tag = styled.div` + display: inline-flex; + padding: 2px 8px; + border-radius: 64px; + justify-content: center; + align-items: center; + gap: 4px; + font-size: 12px; + font-style: normal; + font-weight: 400; + line-height: 14px; + ${getColorStyles} +`; diff --git a/src/lib/components/index.ts b/src/lib/components/index.ts index 3dc1ed1..0ae2453 100644 --- a/src/lib/components/index.ts +++ b/src/lib/components/index.ts @@ -1,3 +1,13 @@ export * from './ProjectsPanel'; - export * from './AnimatedLogo'; + +export * from './Accordion'; +export * from './RangeHistogram'; +export * from './SheetModal'; + +export * from './Button'; +export * from './Checkbox'; +export * from './Switch'; +export * from './ListGrid'; +export * from './Link'; +export * from './Tag'; diff --git a/src/lib/index.ts b/src/lib/index.ts index 07635cb..ed1e02c 100644 --- a/src/lib/index.ts +++ b/src/lib/index.ts @@ -1 +1,4 @@ export * from './components'; +export * from './theme'; +export { getScrollStyles } from './utils/styled'; +export type { ICheckboxState } from './types/ICheckboxState'; diff --git a/src/lib/theme/index.ts b/src/lib/theme/index.ts new file mode 100644 index 0000000..540c959 --- /dev/null +++ b/src/lib/theme/index.ts @@ -0,0 +1,24 @@ +export default { + button: {}, + buttonGroup: {}, + card: { + title: {}, + info: {}, + }, + chart: { + rangeHistogram: {}, + }, + checkbox: {}, + checkboxGroup: {}, + colors: {}, + combobox: {}, + link: {}, + listView: {}, + palette: {}, + switch: {}, + tag: {}, + tagGroup: {}, + text: {}, + tooltip: {}, + sidebar: {}, +}; diff --git a/src/lib/types/ICheckboxState.ts b/src/lib/types/ICheckboxState.ts new file mode 100644 index 0000000..4957ff4 --- /dev/null +++ b/src/lib/types/ICheckboxState.ts @@ -0,0 +1,4 @@ +export interface ICheckboxState { + isSelected?: boolean; + toggle?: VoidFunction; +} diff --git a/src/lib/utils/styled.ts b/src/lib/utils/styled.ts new file mode 100644 index 0000000..d8f2b89 --- /dev/null +++ b/src/lib/utils/styled.ts @@ -0,0 +1,47 @@ +import { css } from 'styled-components'; + +export function getScrollStyles() { + // const background = '#1e2841'; + const color = '#455068'; + const colorActive = '#5b677d'; + + return css` + & { + overflow-y: auto; + } + + /* FF */ + @supports (scrollbar-width: thin) { + & { + scrollbar-color: ${color} transparent; + scrollbar-width: thin; + overflow-y: auto; + padding-right: 8px; + } + } + + /* Safari, Chrome */ + @supports not (scrollbar-width: thin) { + & { + overflow-y: scroll; + padding-right: 0; + } + + &::-webkit-scrollbar { + width: 8px; + } + + &::-webkit-scrollbar-thumb { + border-radius: 16px; + } + + &:hover::-webkit-scrollbar-thumb { + background: ${color}; + } + + &::-webkit-scrollbar-thumb:active { + background: ${colorActive}; + } + } + `; +} diff --git a/vite.config.ts b/vite.config.ts index cd8d9f5..fa33498 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -10,7 +10,19 @@ export default defineConfig({ insertTypesEntry: true, }), svgr(), - react(), + react({ + babel: { + plugins: [ + [ + 'babel-plugin-styled-components', + { + displayName: true, + fileName: false, + }, + ], + ], + }, + }), ], build: { sourcemap: true,