From 5379a6cde4d5f07de2c67fcf832476ecab00cd25 Mon Sep 17 00:00:00 2001 From: tchami <131756888+tchamianest@users.noreply.github.com> Date: Thu, 27 Jun 2024 23:26:03 +0200 Subject: [PATCH] Feat(Dashboard): The seller and admin dashboard --- package-lock.json | 4857 +++++++++++++++----- package.json | 4 +- public/dash1.png | Bin 0 -> 1002 bytes public/dash2.png | Bin 0 -> 1008 bytes public/instagram.svg | 1 + public/orderdash.png | Bin 0 -> 975 bytes public/orderdash1.png | Bin 0 -> 2212 bytes public/wishdash.png | Bin 0 -> 251 bytes src/__tests__/2FA_Authentication.test.tsx | 3 +- src/__tests__/CreateProdudash.test.tsx | 97 + src/__tests__/ProfileDashboard.test.tsx | 67 + src/__tests__/UserDashboard.test.tsx | 41 + src/__tests__/ZcartManagement.test.tsx | 430 +- src/__tests__/adminDashboard.test.tsx | 21 +- src/__tests__/homeDash.test.tsx | 88 + src/__tests__/productDashboard.test.tsx | 43 + src/__tests__/productList.test.tsx | 79 +- src/__tests__/singleProduct.test.tsx | 79 + src/__tests__/updatesDash.test.tsx | 100 + src/app/(profile)/profile/page.tsx | 41 +- src/app/dashboard/home/page.tsx | 67 + src/app/{admin => dashboard}/page.tsx | 0 src/app/dashboard/product/page.tsx | 34 + src/app/dashboard/product_/[id]/page.tsx | 43 + src/app/dashboard/productcreate/page.tsx | 32 + src/app/dashboard/products_/[id]/page.tsx | 28 + src/app/dashboard/profile/page.tsx | 25 + src/app/dashboard/users/page.tsx | 48 + src/app/page.tsx | 12 +- src/app/sellers/products_/page.tsx | 10 +- src/components/2faVerification.tsx | 10 +- src/components/AssigningRoles.tsx | 87 +- src/components/Button.tsx | 102 +- src/components/BuyerOrdersList.tsx | 2 - src/components/Card.tsx | 36 +- src/components/DashNavbar.tsx | 158 + src/components/DashboardHeader.tsx | 62 +- src/components/Footer.tsx | 2 +- src/components/Header.tsx | 131 +- src/components/HeroSection.tsx | 9 +- src/components/LatestCard.tsx | 2 +- src/components/LayoutDashboard.tsx | 60 + src/components/Product/AddProducts.tsx | 138 +- src/components/Product/editProduct.tsx | 355 +- src/components/ProductList.tsx | 95 +- src/components/SellerSummary.tsx | 85 + src/components/Table.tsx | 227 +- src/components/UsersAdmin.tsx | 167 +- src/components/allProducts.tsx | 11 +- src/components/chartssection.tsx | 113 + src/components/confirmDeletePopup.tsx | 86 +- src/components/headerDash.tsx | 57 + src/components/shortCard.tsx | 41 + src/components/singleproduct.tsx | 201 + src/hooks/useLogin.ts | 11 +- src/redux/slices/2faAuthenticationSlice.ts | 4 + src/redux/slices/productSlice.ts | 32 +- 57 files changed, 6608 insertions(+), 1926 deletions(-) create mode 100644 public/dash1.png create mode 100644 public/dash2.png create mode 100644 public/instagram.svg create mode 100644 public/orderdash.png create mode 100644 public/orderdash1.png create mode 100644 public/wishdash.png create mode 100644 src/__tests__/CreateProdudash.test.tsx create mode 100644 src/__tests__/ProfileDashboard.test.tsx create mode 100644 src/__tests__/UserDashboard.test.tsx create mode 100644 src/__tests__/homeDash.test.tsx create mode 100644 src/__tests__/productDashboard.test.tsx create mode 100644 src/__tests__/singleProduct.test.tsx create mode 100644 src/__tests__/updatesDash.test.tsx create mode 100644 src/app/dashboard/home/page.tsx rename src/app/{admin => dashboard}/page.tsx (100%) create mode 100644 src/app/dashboard/product/page.tsx create mode 100644 src/app/dashboard/product_/[id]/page.tsx create mode 100644 src/app/dashboard/productcreate/page.tsx create mode 100644 src/app/dashboard/products_/[id]/page.tsx create mode 100644 src/app/dashboard/profile/page.tsx create mode 100644 src/app/dashboard/users/page.tsx create mode 100644 src/components/DashNavbar.tsx create mode 100644 src/components/LayoutDashboard.tsx create mode 100644 src/components/SellerSummary.tsx create mode 100644 src/components/chartssection.tsx create mode 100644 src/components/headerDash.tsx create mode 100644 src/components/shortCard.tsx create mode 100644 src/components/singleproduct.tsx diff --git a/package-lock.json b/package-lock.json index 9fdfc67..7dd5bf6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "0.1.0", "dependencies": { "@hookform/resolvers": "^3.6.0", + "@nextui-org/react": "^2.4.2", "@reduxjs/toolkit": "^2.2.5", "@tanstack/react-query": "^5.40.1", "@tanstack/react-table": "^8.17.3", @@ -26,6 +27,7 @@ "npx": "^3.0.0", "react": "^18", "react-dom": "^18", + "react-google-charts": "^4.0.1", "react-hook-form": "^7.51.5", "react-icons": "^5.2.1", "react-query": "^3.39.3", @@ -117,7 +119,6 @@ "version": "5.2.0", "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", - "dev": true, "engines": { "node": ">=10" }, @@ -2282,9 +2283,9 @@ } }, "node_modules/@chromatic-com/storybook": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-1.5.0.tgz", - "integrity": "sha512-LkLKv7SWu/6kGep1ft2HA1T/cm14wU0zoW71gE4cZRcgUoRQJtyhITFTLHrjqAxz6bVqNgqzQtd5oBZ2nK3L3g==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@chromatic-com/storybook/-/storybook-1.6.0.tgz", + "integrity": "sha512-6sHj0l194KMBIZ0D5SeJ+Ys+zslehKHcC2d6Hd/YEn4cCl7p9mLuxrZjvf8xharGKy8vf9Q1tKrU2YdldzUBoQ==", "dev": true, "dependencies": { "chromatic": "^11.4.0", @@ -2312,7 +2313,7 @@ "version": "0.8.1", "resolved": "https://registry.npmjs.org/@cspotcode/source-map-support/-/source-map-support-0.8.1.tgz", "integrity": "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -2324,7 +2325,7 @@ "version": "0.3.9", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.9.tgz", "integrity": "sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==", - "dev": true, + "devOptional": true, "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -2749,9 +2750,9 @@ } }, "node_modules/@eslint-community/regexpp": { - "version": "4.10.1", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.1.tgz", - "integrity": "sha512-Zm2NGpWELsQAD1xsJzGQpYfvICSsFkEpU0jxBjfdC6uNEWXcHnfs9hScFWtXVDVl+rBQJGrl4g1vcKIejpH9dA==", + "version": "4.11.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.0.tgz", + "integrity": "sha512-G/M/tIiMrTAxEWRfLfQJMmGNX28IxBg4PBz8XqQhqUHLFI6TL2htpIB1iQCj144V5ee/JaKyT9/WZ0MGZWfA7A==", "dev": true, "engines": { "node": "^12.0.0 || ^14.0.0 || >=16.0.0" @@ -2862,10 +2863,79 @@ "integrity": "sha512-cEee/Z+I12mZcFJshKcCqC8tuX5hG3s+d+9nZ3LabqKF1vKdF41B92pJVCBggjAGORAeOzyyDDKrZwIkLffeOQ==", "dev": true }, + "node_modules/@formatjs/ecma402-abstract": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz", + "integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==", + "dependencies": { + "@formatjs/intl-localematcher": "0.5.4", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/ecma402-abstract/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@formatjs/fast-memoize": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz", + "integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/fast-memoize/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@formatjs/icu-messageformat-parser": { + "version": "2.7.8", + "resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz", + "integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/icu-skeleton-parser": "1.8.2", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-messageformat-parser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@formatjs/icu-skeleton-parser": { + "version": "1.8.2", + "resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz", + "integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/icu-skeleton-parser/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz", + "integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@formatjs/intl-localematcher/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, "node_modules/@hookform/resolvers": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.6.0.tgz", - "integrity": "sha512-UBcpyOX3+RR+dNnqBd0lchXpoL8p4xC21XP8H6Meb8uve5Br1GCnmg0PcBoKKqPKgGu9GHQ/oygcmPrQhetwqw==", + "version": "3.7.0", + "resolved": "https://registry.npmjs.org/@hookform/resolvers/-/resolvers-3.7.0.tgz", + "integrity": "sha512-42p5X18noBV3xqOpTlf2V5qJZwzNgO4eLzHzmKGh/w7z4+4XqRw5AsESVkqE+qwAuRRlg2QG12EVEjPkrRIbeg==", "peerDependencies": { "react-hook-form": "^7.0.0" } @@ -3378,37 +3448,37 @@ } }, "node_modules/@inquirer/confirm": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.10.tgz", - "integrity": "sha512-/aAHu83Njy6yf44T+ZrRPUkMcUqprrOiIKsyMvf9jOV+vF5BNb2ja1aLP33MK36W8eaf91MTL/mU/e6METuENg==", + "version": "3.1.13", + "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.1.13.tgz", + "integrity": "sha512-N9knAyc9w4E57vimoYWDalDwuLfDNrgJFJzfdiIIsB1jT4id/GGpwexXtM4fehkxqv8ob3YYWzGANt4cA+5hRw==", "dev": true, "dependencies": { - "@inquirer/core": "^8.2.3", - "@inquirer/type": "^1.3.3" + "@inquirer/core": "^9.0.1", + "@inquirer/type": "^1.4.0" }, "engines": { "node": ">=18" } }, "node_modules/@inquirer/core": { - "version": "8.2.3", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-8.2.3.tgz", - "integrity": "sha512-WrpDVPAaxJQjHid3Ra4FhUO70YBzkHSYVyW5X48L5zHYdudoPISJqTRRWSeamHfaXda7PNNaC5Py5MEo7QwBNA==", + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.0.1.tgz", + "integrity": "sha512-Kd3uUrkAoADpcocgk3Vk5DN2N6Yid+QlO8ceZWluFiLtVzUBdv/wK1GgZOq30OMDQNOZVTBsbSO3f/E0sOTk8w==", "dev": true, "dependencies": { "@inquirer/figures": "^1.0.3", - "@inquirer/type": "^1.3.3", + "@inquirer/type": "^1.4.0", "@types/mute-stream": "^0.0.4", - "@types/node": "^20.14.6", + "@types/node": "^20.14.9", "@types/wrap-ansi": "^3.0.0", "ansi-escapes": "^4.3.2", - "chalk": "^4.1.2", "cli-spinners": "^2.9.2", "cli-width": "^4.1.0", "mute-stream": "^1.0.0", "signal-exit": "^4.1.0", "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0" + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.1" }, "engines": { "node": ">=18" @@ -3429,37 +3499,12 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@inquirer/core/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, "node_modules/@inquirer/core/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/@inquirer/core/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/@inquirer/core/node_modules/is-fullwidth-code-point": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", @@ -3507,18 +3552,6 @@ "node": ">=8" } }, - "node_modules/@inquirer/core/node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/@inquirer/core/node_modules/wrap-ansi": { "version": "6.2.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", @@ -3543,14 +3576,50 @@ } }, "node_modules/@inquirer/type": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.3.3.tgz", - "integrity": "sha512-xTUt0NulylX27/zMx04ZYar/kr1raaiFTVvQ5feljQsiAgdm0WPj4S73/ye0fbslh+15QrIuDvfCXTek7pMY5A==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.4.0.tgz", + "integrity": "sha512-AjOqykVyjdJQvtfkNDGUyMYGF8xN50VUxftCQWsOyIo4DFRLr6VQhW0VItGI1JIyQGCGgIpKa7hMMwNhZb4OIw==", "dev": true, + "dependencies": { + "mute-stream": "^1.0.0" + }, "engines": { "node": ">=18" } }, + "node_modules/@internationalized/date": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@internationalized/date/-/date-3.5.4.tgz", + "integrity": "sha512-qoVJVro+O0rBaw+8HPjUB1iH8Ihf8oziEnqMnvhJUSuVIrHOuZ6eNLHNvzXJKUvAtaDiqMnRlg8Z2mgh09BlUw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@internationalized/message/-/message-3.1.4.tgz", + "integrity": "sha512-Dygi9hH1s7V9nha07pggCkvmRfDd3q2lWnMGvrJyrOwYMe1yj4D2T9BoH9I6MGR7xz0biQrtLPsqUkqXzIrBOw==", + "dependencies": { + "@swc/helpers": "^0.5.0", + "intl-messageformat": "^10.1.0" + } + }, + "node_modules/@internationalized/number": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@internationalized/number/-/number-3.5.3.tgz", + "integrity": "sha512-rd1wA3ebzlp0Mehj5YTuTI50AQEx80gWFyHcQu+u91/5NgdwBecO8BH6ipPfE+lmQ9d63vpB3H9SHoIUiupllw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@internationalized/string": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/@internationalized/string/-/string-3.2.3.tgz", + "integrity": "sha512-9kpfLoA8HegiWTeCbR2livhdVeKobCnVv8tlJ6M2jF+4tcMqDo94ezwlnrUANBWPgd8U7OXIHCk2Ov2qhk4KXw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -4043,9 +4112,9 @@ } }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.2.tgz", - "integrity": "sha512-1WUsZ9R1lA0HtBSohTkm39WTPlNKSJ5iFk7UwqXkBLoHQT+hfqPsfsTDVuZdKGaBwn7din9bS7SsnoAr943hvw==", + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", "dev": true, "dependencies": { "@babel/core": "^7.23.9", @@ -4313,7 +4382,6 @@ "version": "0.3.5", "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, "dependencies": { "@jridgewell/set-array": "^1.2.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -4327,7 +4395,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -4336,7 +4403,6 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, "engines": { "node": ">=6.0.0" } @@ -4354,14 +4420,12 @@ "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.25", "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -4610,450 +4674,2944 @@ "node": ">= 10" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, + "node_modules/@nextui-org/accordion": { + "version": "2.0.35", + "resolved": "https://registry.npmjs.org/@nextui-org/accordion/-/accordion-2.0.35.tgz", + "integrity": "sha512-42T8DAgpICKORry5h1UCgAQ71QJ3dCzvqrnnJQco3LICeIER2JT/wEdpxHUVT893MkL6z6CFsJmWNfFJPk59kA==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/divider": "2.0.28", + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-accordion": "2.0.6", + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-stately/tree": "3.8.1", + "@react-types/accordion": "3.0.0-alpha.21", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/aria-utils": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@nextui-org/aria-utils/-/aria-utils-2.0.21.tgz", + "integrity": "sha512-aQXFVm4qNrXrUAHhRtr363BgRDX+zgN3Vm+7bW1qtMbnMGOqTWApCD48FP59bka5JArd3K+85tFEhkdD+UfKbQ==", "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" + "@nextui-org/react-rsc-utils": "2.0.12", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/system": "2.2.2", + "@react-aria/utils": "3.24.1", + "@react-stately/collections": "3.10.7", + "@react-stately/overlays": "3.6.7", + "@react-types/overlays": "3.8.7", + "@react-types/shared": "3.23.1" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, - "engines": { - "node": ">= 8" + "node_modules/@nextui-org/autocomplete": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nextui-org/autocomplete/-/autocomplete-2.1.2.tgz", + "integrity": "sha512-3mtYQDBbSRLG8wZ+gDMsOsGH/0m2VG/RcwIiXoteZMyX7yhGl2JPp7ZjX6XWyUpUbq0w2QVprZ6Ld4ck3cuMKg==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/button": "2.0.34", + "@nextui-org/input": "2.2.2", + "@nextui-org/listbox": "2.1.22", + "@nextui-org/popover": "2.1.24", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/scroll-shadow": "2.1.17", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/spinner": "2.0.30", + "@nextui-org/use-aria-button": "2.0.9", + "@nextui-org/use-safe-layout-effect": "2.0.5", + "@react-aria/combobox": "3.9.1", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/combobox": "3.8.4", + "@react-types/combobox": "3.11.1", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, + "node_modules/@nextui-org/avatar": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@nextui-org/avatar/-/avatar-2.0.30.tgz", + "integrity": "sha512-FIrvdJE+dBkmU3YDR1AXTkcks/WXjbnQsojWBMAq+1oXDCcNiGMUvKBzsW0F5m5HVHhn+Edc+CbTzIZUTm78Bw==", "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-image": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1" }, - "engines": { - "node": ">= 8" + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@open-draft/deferred-promise": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", - "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", - "dev": true - }, - "node_modules/@open-draft/logger": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", - "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", - "dev": true, + "node_modules/@nextui-org/badge": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@nextui-org/badge/-/badge-2.0.29.tgz", + "integrity": "sha512-kd6BJ1BWkX6UuHttmySUgQBPOBJCrG1+eKwWDd1HL4YuBLayuYoTZuE5Q01HYTbXjFMqzsFX3A+jcJ3RYc0X7w==", "dependencies": { - "is-node-process": "^1.2.0", - "outvariant": "^1.4.0" + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@open-draft/until": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", - "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", - "dev": true - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", - "optional": true, - "engines": { - "node": ">=14" + "node_modules/@nextui-org/breadcrumbs": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@nextui-org/breadcrumbs/-/breadcrumbs-2.0.10.tgz", + "integrity": "sha512-TCrOHCH/gNrPwEQyd30mu6Y9x/ojJk3vUWZJSPuVhzG6WdpUFyqen4QCoDTUTvFJBL3TwqNYwOIxooizzFSK7g==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/breadcrumbs": "3.5.13", + "@react-aria/focus": "3.17.1", + "@react-aria/utils": "3.24.1", + "@react-types/breadcrumbs": "3.7.5", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", - "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", - "dev": true, + "node_modules/@nextui-org/button": { + "version": "2.0.34", + "resolved": "https://registry.npmjs.org/@nextui-org/button/-/button-2.0.34.tgz", + "integrity": "sha512-VeFpOs7trX6u6FqeGr0XCpuNqPhXTLqsmt4iaygvheZCbzrTKvWHd4QMqSh2CPsNH8UFUBSFJjr3oaf3a0SYWQ==", "dependencies": { - "ansi-html": "^0.0.9", - "core-js-pure": "^3.23.3", - "error-stack-parser": "^2.0.6", - "html-entities": "^2.1.0", - "loader-utils": "^2.0.4", - "schema-utils": "^4.2.0", - "source-map": "^0.7.3" - }, - "engines": { - "node": ">= 10.13" + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/ripple": "2.0.30", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/spinner": "2.0.30", + "@nextui-org/use-aria-button": "2.0.9", + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/button": "3.9.4", + "@react-types/shared": "3.23.1" }, "peerDependencies": { - "@types/webpack": "4.x || 5.x", - "react-refresh": ">=0.10.0 <1.0.0", - "sockjs-client": "^1.4.0", - "type-fest": ">=0.17.0 <5.0.0", - "webpack": ">=4.43.0 <6.0.0", - "webpack-dev-server": "3.x || 4.x || 5.x", - "webpack-hot-middleware": "2.x", - "webpack-plugin-serve": "0.x || 1.x" + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/calendar": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@nextui-org/calendar/-/calendar-2.0.7.tgz", + "integrity": "sha512-6mdgKJSl6tWo68FJQB1txSTRQ6/6+c3hipDYvzqDZRc+NbOJ3VevbFaPj5673JxeI2J5SyHLY2AEVw4q6HfaNw==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/button": "2.0.34", + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-button": "2.0.9", + "@react-aria/calendar": "3.5.8", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/calendar": "3.5.1", + "@react-stately/utils": "3.10.1", + "@react-types/button": "3.9.4", + "@react-types/calendar": "3.4.6", + "@react-types/shared": "3.23.1", + "@types/lodash.debounce": "^4.0.7", + "lodash.debounce": "^4.0.8", + "scroll-into-view-if-needed": "3.0.10" }, - "peerDependenciesMeta": { - "@types/webpack": { - "optional": true - }, - "sockjs-client": { - "optional": true - }, - "type-fest": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - }, - "webpack-hot-middleware": { - "optional": true - }, - "webpack-plugin-serve": { - "optional": true - } + "peerDependencies": { + "@nextui-org/system": ">=2.1.0", + "@nextui-org/theme": ">=2.2.0", + "react": ">=18", + "react-dom": ">=18" } }, - "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/loader-utils": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", - "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", - "dev": true, + "node_modules/@nextui-org/card": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/card/-/card-2.0.31.tgz", + "integrity": "sha512-KXeI4xu0HVOgC2sNBxv+OGbzYy+kA6HbsDB677j3R+MhyCrqCLsE5ahkn7FRWgIJAzoDkcHSunmc+q9ApoSWig==", "dependencies": { - "big.js": "^5.2.2", - "emojis-list": "^3.0.0", - "json5": "^2.1.2" + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/ripple": "2.0.30", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-button": "2.0.9", + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/shared": "3.23.1" }, - "engines": { - "node": ">=8.9.0" + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/checkbox": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nextui-org/checkbox/-/checkbox-2.1.2.tgz", + "integrity": "sha512-0C5xcYcBMM/iAva3/fFYIvUiy91guV+mehUwRcPIxEFLA9bIOdOdGTkoAXlVcGCLIuYvlPiqSH0gShXvscOlNQ==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-callback-ref": "2.0.5", + "@nextui-org/use-safe-layout-effect": "2.0.5", + "@react-aria/checkbox": "3.14.3", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/checkbox": "3.6.5", + "@react-stately/toggle": "3.7.4", + "@react-types/checkbox": "3.8.1", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/chip": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@nextui-org/chip/-/chip-2.0.30.tgz", + "integrity": "sha512-u/PbKFW8pGoPzBh8dDRvhBSdhX30lJbscQJvXzmCKHpSvK8rvBG1kHtOJEJ4fiuXbo/O0CYwZVAi03XloyOCdQ==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/checkbox": "3.8.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/code": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@nextui-org/code/-/code-2.0.29.tgz", + "integrity": "sha512-+aevUjVJxSkJ4Un/O3rBdI1NfHikatzDK6iD6nqWDCDR/I+9a5m+s3N8yuNt/Mt8jGKg0KEklPh3deYfCVCXdg==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/system-rsc": "2.1.2" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/date-input": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@nextui-org/date-input/-/date-input-2.1.1.tgz", + "integrity": "sha512-fts8R058AVN8dhkBGaJ/7F68ZwM/E3Imu5uhauHoXVoJhaXNft5fA23HJYpNkFrG0k/Tk7vGcGSPistiERQuKg==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/datepicker": "3.10.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/utils": "3.24.1", + "@react-stately/datepicker": "3.9.4", + "@react-types/datepicker": "3.7.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.1.0", + "@nextui-org/theme": ">=2.2.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/date-picker": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nextui-org/date-picker/-/date-picker-2.1.2.tgz", + "integrity": "sha512-gNqhyA85SDtGNdr2CUBJ5FSy/wCtj2AKJGs2yEvKtA9A66khOH2H0tdfGALOWoAQdxGgOvP7c+9U5Oadogoygg==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/button": "2.0.34", + "@nextui-org/calendar": "2.0.7", + "@nextui-org/date-input": "2.1.1", + "@nextui-org/popover": "2.1.24", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/datepicker": "3.10.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/utils": "3.24.1", + "@react-stately/datepicker": "3.9.4", + "@react-stately/overlays": "3.6.7", + "@react-stately/utils": "3.10.1", + "@react-types/datepicker": "3.7.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.1.0", + "@nextui-org/theme": ">=2.2.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/divider": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/@nextui-org/divider/-/divider-2.0.28.tgz", + "integrity": "sha512-IskKmDOO8qwmTO2WtDmrH8fZvnV2JebP3PFfwqpToAdDRbRUs78pls2e8/T9clbLLtNxjfCFAI/Yi9C+LPPEXw==", + "dependencies": { + "@nextui-org/react-rsc-utils": "2.0.12", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/system-rsc": "2.1.2", + "@react-types/shared": "3.22.1" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/divider/node_modules/@react-types/shared": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.22.1.tgz", + "integrity": "sha512-PCpa+Vo6BKnRMuOEzy5zAZ3/H5tnQg1e80khMhK2xys0j6ZqzkgQC+fHMNZ7VDFNLqqNMj/o0eVeSBDh2POjkw==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@nextui-org/dropdown": { + "version": "2.1.26", + "resolved": "https://registry.npmjs.org/@nextui-org/dropdown/-/dropdown-2.1.26.tgz", + "integrity": "sha512-rPrn8hN7v2nLm9OJKagvf7AivsCAT0EWUcgWGaf5GVdwGJ65TZpjR18eAOyKBZRe5cdZ+FV6qqnavGVhD3458w==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/menu": "2.0.25", + "@nextui-org/popover": "2.1.24", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/menu": "3.14.1", + "@react-aria/utils": "3.24.1", + "@react-stately/menu": "3.7.1", + "@react-types/menu": "3.9.9" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/framer-utils": { + "version": "2.0.21", + "resolved": "https://registry.npmjs.org/@nextui-org/framer-utils/-/framer-utils-2.0.21.tgz", + "integrity": "sha512-kZzkaAHbtuBl85mivZ1WKVCcwdk8Z2NDmJiIpaLy16yliLNV1tnhoDOzRrxhv+6cbkKftx21tRrpImB4AyeqLw==", + "dependencies": { + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/system": "2.2.2", + "@nextui-org/use-measure": "2.0.1" + }, + "peerDependencies": { + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/image": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@nextui-org/image/-/image-2.0.29.tgz", + "integrity": "sha512-w8MneV/JNUTCJUcIZcxtUYw1ZEZqlpezcCgGLr0cH3vp5pa+BZ9SdptwAL2wFoJAG8xk+et9fMXTROvF4h5W1g==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-image": "2.0.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/input": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@nextui-org/input/-/input-2.2.2.tgz", + "integrity": "sha512-mCcFsObJdlCWMuSutKTRniFIDX5+z4BAAtt/XI1uzOtUO6WXgT97BwVzMihC1l14WQsw9TCwFKAl8JWdolkNCA==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-safe-layout-effect": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/textfield": "3.14.5", + "@react-aria/utils": "3.24.1", + "@react-stately/utils": "3.10.1", + "@react-types/shared": "3.23.1", + "@react-types/textfield": "3.9.3", + "react-textarea-autosize": "^8.5.3" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/kbd": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@nextui-org/kbd/-/kbd-2.0.30.tgz", + "integrity": "sha512-rQw71noVUIRPf8N/Z5hdIGCtjFEVZO9xs2JVkiusKDxbGXFWKxJ3sTFzEY4VyLtORt2mEOQEWh26wbTnNjJzMw==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/system-rsc": "2.1.2", + "@react-aria/utils": "3.24.1" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/link": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@nextui-org/link/-/link-2.0.32.tgz", + "integrity": "sha512-NIG8Ay/WfFxwMYKB11xg0iVAzJR1jy0QrtKFGaZscyJ522beM+aMBZuourC9u7kwjucTvt5fuGRm86KBVDBXCQ==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-link": "2.0.18", + "@react-aria/focus": "3.17.1", + "@react-aria/link": "3.7.1", + "@react-aria/utils": "3.24.1", + "@react-types/link": "3.5.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/listbox": { + "version": "2.1.22", + "resolved": "https://registry.npmjs.org/@nextui-org/listbox/-/listbox-2.1.22.tgz", + "integrity": "sha512-VFULRE7BBpNnXulhySHlENRiRUP7KdpozJfKM3X2kIwWoFekO8DDUT8RiLj2PyDtGjKam74ghHhMuAFXFhVQ+g==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/divider": "2.0.28", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-is-mobile": "2.0.8", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/listbox": "3.12.1", + "@react-aria/utils": "3.24.1", + "@react-stately/list": "3.10.5", + "@react-types/menu": "3.9.9", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/menu": { + "version": "2.0.25", + "resolved": "https://registry.npmjs.org/@nextui-org/menu/-/menu-2.0.25.tgz", + "integrity": "sha512-VkCaaq19JKNjIgg4bmGebzHkSV1A3C1CRV5w5qRPg5AI59pdWlbMLpllm5mPqz+U0R0P5saGfCfEfcC0LrCFdQ==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/divider": "2.0.28", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-menu": "2.0.5", + "@nextui-org/use-is-mobile": "2.0.8", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/menu": "3.14.1", + "@react-aria/utils": "3.24.1", + "@react-stately/menu": "3.7.1", + "@react-stately/tree": "3.8.1", + "@react-types/menu": "3.9.9", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/modal": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@nextui-org/modal/-/modal-2.0.36.tgz", + "integrity": "sha512-ucWBobeoM8BVLpgXrtZ/H5TD9eFS2YF4W7vntWC05Q13A34LSHgBjNHJkfwW/OebGjJoaDoRiIBohWaiyyliTA==", + "dependencies": { + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-button": "2.0.9", + "@nextui-org/use-aria-modal-overlay": "2.0.10", + "@nextui-org/use-disclosure": "2.0.9", + "@react-aria/dialog": "3.5.14", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/overlays": "3.6.7", + "@react-types/overlays": "3.8.7" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/navbar": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/navbar/-/navbar-2.0.33.tgz", + "integrity": "sha512-WbPLEz6yE1vxKTqZDN85YPCWR/JSvpOO604xBpaaCf+OLfEsb+herz7+GDPnvHKaPDASoxU5WaSQJR9nrJ/YHg==", + "dependencies": { + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-toggle-button": "2.0.9", + "@nextui-org/use-scroll-position": "2.0.6", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/toggle": "3.7.4", + "@react-stately/utils": "3.10.1", + "react-remove-scroll": "^2.5.6" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/pagination": { + "version": "2.0.33", + "resolved": "https://registry.npmjs.org/@nextui-org/pagination/-/pagination-2.0.33.tgz", + "integrity": "sha512-LiDDTSTuC0Q9gSI1gc/b+lmKR8/zFiwSfYjLh7KDND3m+qE44waICWnK1U7P6Y999Nu1LwaGSGtqayd326aPrg==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-pagination": "2.0.7", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/popover": { + "version": "2.1.24", + "resolved": "https://registry.npmjs.org/@nextui-org/popover/-/popover-2.1.24.tgz", + "integrity": "sha512-PGbTxdcc06BMxEd/HYsL0sVa0fdGjHPYNSvcSSM0KA6Fh98pznO9DoQHjIEPAul87yEwl7cDDj7mANcdK9BVnA==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/button": "2.0.34", + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-aria-button": "2.0.9", + "@nextui-org/use-safe-layout-effect": "2.0.5", + "@react-aria/dialog": "3.5.14", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/overlays": "3.6.7", + "@react-types/button": "3.9.4", + "@react-types/overlays": "3.8.7", + "react-remove-scroll": "^2.5.6" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/progress": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/progress/-/progress-2.0.31.tgz", + "integrity": "sha512-ZFjV4068gYPe9S4R1e/8oqwtPFKd9ag8RB0JoToq55AM5aLItOA/Q/uwBnDz7ait3C7viWawcN4leW1C8dSurQ==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-is-mounted": "2.0.5", + "@react-aria/i18n": "3.11.1", + "@react-aria/progress": "3.4.13", + "@react-aria/utils": "3.24.1", + "@react-types/progress": "3.5.4" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/radio": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nextui-org/radio/-/radio-2.1.2.tgz", + "integrity": "sha512-JcWKRqXXRwQtz5ABzykuu+S4/8cO9GKa21Gget1fdo/iSDcUtGDHIf6wlpvWSNekpvIERZd9UdpwhaXWbD4pOg==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/radio": "3.10.4", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/radio": "3.10.4", + "@react-types/radio": "3.8.1", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/react": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/@nextui-org/react/-/react-2.4.2.tgz", + "integrity": "sha512-g7CqAX/x0DJsIUmD+Z6I4T1699uVmu5kbuY0n1PdA4IDjFSKzgkMCIogcIKu2iUV+LVlvfF1lDhs300OIpouig==", + "dependencies": { + "@nextui-org/accordion": "2.0.35", + "@nextui-org/autocomplete": "2.1.2", + "@nextui-org/avatar": "2.0.30", + "@nextui-org/badge": "2.0.29", + "@nextui-org/breadcrumbs": "2.0.10", + "@nextui-org/button": "2.0.34", + "@nextui-org/calendar": "2.0.7", + "@nextui-org/card": "2.0.31", + "@nextui-org/checkbox": "2.1.2", + "@nextui-org/chip": "2.0.30", + "@nextui-org/code": "2.0.29", + "@nextui-org/date-input": "2.1.1", + "@nextui-org/date-picker": "2.1.2", + "@nextui-org/divider": "2.0.28", + "@nextui-org/dropdown": "2.1.26", + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/image": "2.0.29", + "@nextui-org/input": "2.2.2", + "@nextui-org/kbd": "2.0.30", + "@nextui-org/link": "2.0.32", + "@nextui-org/listbox": "2.1.22", + "@nextui-org/menu": "2.0.25", + "@nextui-org/modal": "2.0.36", + "@nextui-org/navbar": "2.0.33", + "@nextui-org/pagination": "2.0.33", + "@nextui-org/popover": "2.1.24", + "@nextui-org/progress": "2.0.31", + "@nextui-org/radio": "2.1.2", + "@nextui-org/ripple": "2.0.30", + "@nextui-org/scroll-shadow": "2.1.17", + "@nextui-org/select": "2.2.2", + "@nextui-org/skeleton": "2.0.29", + "@nextui-org/slider": "2.2.12", + "@nextui-org/snippet": "2.0.38", + "@nextui-org/spacer": "2.0.29", + "@nextui-org/spinner": "2.0.30", + "@nextui-org/switch": "2.0.31", + "@nextui-org/system": "2.2.2", + "@nextui-org/table": "2.0.36", + "@nextui-org/tabs": "2.0.32", + "@nextui-org/theme": "2.2.6", + "@nextui-org/tooltip": "2.0.36", + "@nextui-org/user": "2.0.31", + "@react-aria/visually-hidden": "3.8.12" + }, + "peerDependencies": { + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/react-rsc-utils": { + "version": "2.0.12", + "resolved": "https://registry.npmjs.org/@nextui-org/react-rsc-utils/-/react-rsc-utils-2.0.12.tgz", + "integrity": "sha512-s2IG4pM1K+kbm6A2g3UpqrS592AExpGixtZNPJ2lV5+UQi1ld3vb4EiBIOViZMoSCNCoNdaeO5Yqo6cKghwCPA==" + }, + "node_modules/@nextui-org/react-utils": { + "version": "2.0.14", + "resolved": "https://registry.npmjs.org/@nextui-org/react-utils/-/react-utils-2.0.14.tgz", + "integrity": "sha512-fed97WSaHt8/sC5F4DFTVj25YQsepFGDyudommPGQsTksQ6GQkMITuHckzAyPiTTuWHSW/GZykvVVAlK9hS5Wg==", + "dependencies": { + "@nextui-org/react-rsc-utils": "2.0.12", + "@nextui-org/shared-utils": "2.0.5" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/ripple": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@nextui-org/ripple/-/ripple-2.0.30.tgz", + "integrity": "sha512-GmHwC+F2JIYQAeFuwtFbdE6av8lzOJVdA5yops9vhhzeBPT33dMjgazCn0HZT5TvP0gX+xxT/74ONE0ik0Kayg==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/scroll-shadow": { + "version": "2.1.17", + "resolved": "https://registry.npmjs.org/@nextui-org/scroll-shadow/-/scroll-shadow-2.1.17.tgz", + "integrity": "sha512-JOJc6nbdFHcMn/zpaf78AAZ8Vwo/iQO6iWJVHlN6ROjSKL7EImP/V78m14Y+kd0hkzU8CcHswdpmCefaioFlRA==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-data-scroll-overflow": "2.1.4" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/select": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@nextui-org/select/-/select-2.2.2.tgz", + "integrity": "sha512-bCk6/LJAhhSM5VXiny7rDTH5f7ri7mGKx4V+K83kY9uW01ioWWYId1EhbP6Crd9PSvmQL42mhId/5dLRxgUimA==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/listbox": "2.1.22", + "@nextui-org/popover": "2.1.24", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/scroll-shadow": "2.1.17", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/spinner": "2.0.30", + "@nextui-org/use-aria-button": "2.0.9", + "@nextui-org/use-aria-multiselect": "2.2.2", + "@nextui-org/use-safe-layout-effect": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/form": "3.0.5", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/shared-icons": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@nextui-org/shared-icons/-/shared-icons-2.0.8.tgz", + "integrity": "sha512-siKuw+CN03cB2N1eUpIleP+lTpjM4gSmcco7RXTpXiwXJXlxjKo4N8gQYS04HCBXm9QMWgyngvUEt2II9NYyrw==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/shared-utils": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/shared-utils/-/shared-utils-2.0.5.tgz", + "integrity": "sha512-aFc/CUL8RVfBh0IotIpxkpKjyUPc/zJaMJd5pRCQA1kIpKLdSrlh3//MLYMaP/fo/NQtE3DPeXqfKhHRr1fkEw==" + }, + "node_modules/@nextui-org/skeleton": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@nextui-org/skeleton/-/skeleton-2.0.29.tgz", + "integrity": "sha512-s/oQdUc1Ao7XRmUP82V2/hI3B644ZQzIYuPIgp+A6DyDLfyRUx8PLWN/EhN5Ku2M/s6WYTkwulDrKeo4dlMsrw==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/slider": { + "version": "2.2.12", + "resolved": "https://registry.npmjs.org/@nextui-org/slider/-/slider-2.2.12.tgz", + "integrity": "sha512-5+72YlWxV6bm9hGNpWN5G+6OeqU7S9N2ECwEdO4COQ1hvMiimiJ3lrTUHIS2AvKimEpw+MLkUoKIbqAV23zxuw==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/tooltip": "2.0.36", + "@react-aria/focus": "3.17.1", + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/slider": "3.7.8", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/slider": "3.5.4" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/snippet": { + "version": "2.0.38", + "resolved": "https://registry.npmjs.org/@nextui-org/snippet/-/snippet-2.0.38.tgz", + "integrity": "sha512-8lMqtB1KQtMkpZFb3x/T42zdZ+QqcGr6d/yVE+zKzyEd+xqzm2g/hDpPqy0Mf5JaC1Z+lXoRzF/6XbD99FCEbw==", + "dependencies": { + "@nextui-org/button": "2.0.34", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/tooltip": "2.0.36", + "@nextui-org/use-clipboard": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/utils": "3.24.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/spacer": { + "version": "2.0.29", + "resolved": "https://registry.npmjs.org/@nextui-org/spacer/-/spacer-2.0.29.tgz", + "integrity": "sha512-lcgzHIvTXXllnM6MMjti0ub8jEx9jmtzdd5+zgFAHLTeDS3pDffNZndmU+RkzpyGSyK20PCrMkV/sB4SCDN1KA==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/system-rsc": "2.1.2" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/spinner": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/@nextui-org/spinner/-/spinner-2.0.30.tgz", + "integrity": "sha512-+oygL2dewHZzJiSUEIvzL0tIx+G+98mvO3ToFAMXaH0N3bOQNSiFDPwUHUx6PgAQ9pr9RKtdnb4ywstcG9j+Gg==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/system-rsc": "2.1.2" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/switch": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/switch/-/switch-2.0.31.tgz", + "integrity": "sha512-WPHqWQfyISA8nmQ8ihaO5rIHm/K9nyfrV0Fxm6EcnFilTMZhh4Kt+p7FfJrZw+MMyzIEGFfMDySk1KVrMubc1g==", + "dependencies": { + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-safe-layout-effect": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/switch": "3.6.4", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/toggle": "3.7.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/system": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@nextui-org/system/-/system-2.2.2.tgz", + "integrity": "sha512-u30lWSIO4Q7DStiK5tJjDgKBQtmODeQZcC6llz973sJ9QlE4GeC1fgu0+/zXL8AZZ8o/iEXhHWXsZIJ26EquUQ==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/system-rsc": "2.1.2", + "@react-aria/i18n": "3.11.1", + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/utils": "3.10.1" + }, + "peerDependencies": { + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/system-rsc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@nextui-org/system-rsc/-/system-rsc-2.1.2.tgz", + "integrity": "sha512-3F7pG68Ikh1JsMtRQqmyXAojAV4lMPCKCy0n8RiIxJkEJg11RGTXhnABHF2jP6uxMH/0q5zVzuFubQJfW++ISQ==", + "dependencies": { + "clsx": "^1.2.1" + }, + "peerDependencies": { + "@nextui-org/theme": ">=2.1.0", + "react": ">=18" + } + }, + "node_modules/@nextui-org/system-rsc/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@nextui-org/table": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@nextui-org/table/-/table-2.0.36.tgz", + "integrity": "sha512-vpohZo5p3XmT6FLOKKwmm8SdCA/h2QPQz6Y66sAfHuoqAfkmfVfAeyKgYTe20pVJy3Whvyix6IA8e0eWETDTEw==", + "dependencies": { + "@nextui-org/checkbox": "2.1.2", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-icons": "2.0.8", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/spacer": "2.0.29", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/table": "3.14.1", + "@react-aria/utils": "3.24.1", + "@react-aria/visually-hidden": "3.8.12", + "@react-stately/table": "3.11.8", + "@react-stately/virtualizer": "3.7.1", + "@react-types/grid": "3.2.6", + "@react-types/table": "3.9.5" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/tabs": { + "version": "2.0.32", + "resolved": "https://registry.npmjs.org/@nextui-org/tabs/-/tabs-2.0.32.tgz", + "integrity": "sha512-TVCwm1GI7rkf/o7+eWpklRQBTg2Y/m3eNBLU1jA+Ppqs+Mr31y7BHoNLqTZ6jpj59DA1OcpwbJH5xhGk0pOvwA==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-is-mounted": "2.0.5", + "@nextui-org/use-update-effect": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/tabs": "3.9.1", + "@react-aria/utils": "3.24.1", + "@react-stately/tabs": "3.6.6", + "@react-types/shared": "3.23.1", + "@react-types/tabs": "3.3.7", + "scroll-into-view-if-needed": "3.0.10" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/theme": { + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@nextui-org/theme/-/theme-2.2.6.tgz", + "integrity": "sha512-FyDp5edpmjbvPzRx+D2+Km1oZ73wQOzKMSBPomOgP0h9OFnnTHqKlmtbGhWSk2cEyYN9VsaGvqJTw8X35/aChQ==", + "dependencies": { + "clsx": "^1.2.1", + "color": "^4.2.3", + "color2k": "^2.0.2", + "deepmerge": "4.3.1", + "flat": "^5.0.2", + "lodash.foreach": "^4.5.0", + "lodash.get": "^4.4.2", + "lodash.kebabcase": "^4.1.1", + "lodash.mapkeys": "^4.6.0", + "lodash.omit": "^4.5.0", + "tailwind-merge": "^1.14.0", + "tailwind-variants": "^0.1.20" + }, + "peerDependencies": { + "tailwindcss": ">=3.4.0" + } + }, + "node_modules/@nextui-org/theme/node_modules/clsx": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-1.2.1.tgz", + "integrity": "sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/@nextui-org/tooltip": { + "version": "2.0.36", + "resolved": "https://registry.npmjs.org/@nextui-org/tooltip/-/tooltip-2.0.36.tgz", + "integrity": "sha512-tV3BefTvmYzSC4TX+UPV7p3F5fs52sFzQ1/Try/Bkz5B1F9yXviO9dV2/pqXSfOJVvLVJS2RMi5wZkaYh1xtNw==", + "dependencies": { + "@nextui-org/aria-utils": "2.0.21", + "@nextui-org/framer-utils": "2.0.21", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@nextui-org/use-safe-layout-effect": "2.0.5", + "@react-aria/interactions": "3.21.3", + "@react-aria/overlays": "3.22.1", + "@react-aria/tooltip": "3.7.4", + "@react-aria/utils": "3.24.1", + "@react-stately/tooltip": "3.4.9", + "@react-types/overlays": "3.8.7", + "@react-types/tooltip": "3.4.9" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "framer-motion": ">=10.17.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-accordion": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-accordion/-/use-aria-accordion-2.0.6.tgz", + "integrity": "sha512-47+/gO67YufQUtL0f2TIdaa8++5EBtIK7Ltq1GpUat2qjbMFvIb6Ao/Jf3KHU5NicLLRnWPSK1vNaupkYwN/ew==", + "dependencies": { + "@react-aria/button": "3.9.5", + "@react-aria/focus": "3.17.1", + "@react-aria/selection": "3.18.1", + "@react-aria/utils": "3.24.1", + "@react-stately/tree": "3.8.1", + "@react-types/accordion": "3.0.0-alpha.21", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-button": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-button/-/use-aria-button-2.0.9.tgz", + "integrity": "sha512-5FjDl57/1Ey3MgJn+yB0/CPABsSVgXiE+jT7ZLnSqH9kmdXV/eMiuplF7fOOvaSMCA1cE3KCetaPVDIZoJI1/w==", + "dependencies": { + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/button": "3.9.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-link": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-link/-/use-aria-link-2.0.18.tgz", + "integrity": "sha512-6ZIIOfMMGbSOF9FcJTPrsVOm2LP7OV+QwF0vYelZeEK5zFXb5f8e2J/fEbCVWKLPFDB2VyoBUDWMzRfrizixzg==", + "dependencies": { + "@react-aria/focus": "3.17.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/utils": "3.24.1", + "@react-types/link": "3.5.5", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-menu": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-menu/-/use-aria-menu-2.0.5.tgz", + "integrity": "sha512-7bAwISb4vIGhAuvZEHpb/28u0k2/HxNhMJUcz/UxVJTMqSkbSJR2RKdm64WfhEq2A8ZtvED0BAJbDuPf4Q4avg==", + "dependencies": { + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/menu": "3.14.1", + "@react-aria/selection": "3.18.1", + "@react-aria/utils": "3.24.1", + "@react-stately/collections": "3.10.7", + "@react-stately/tree": "3.8.1", + "@react-types/menu": "3.9.9", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-modal-overlay": { + "version": "2.0.10", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-modal-overlay/-/use-aria-modal-overlay-2.0.10.tgz", + "integrity": "sha512-/VONX/beH4vu7SQjAtxcQoRhdAOro+QeBk9XOW+qcNvxZG4Em1vf1KFmpHRC40DtsrUk3I0cxaZezeIgfOZ41Q==", + "dependencies": { + "@react-aria/overlays": "3.22.1", + "@react-aria/utils": "3.24.1", + "@react-stately/overlays": "3.6.7", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-multiselect": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-multiselect/-/use-aria-multiselect-2.2.2.tgz", + "integrity": "sha512-iFw9CVRWTKBl+c1FbbHxp4K0B6aQTXSzXiIP09TJ1NQ10fk1GQXBIhFUIyvIwRJRGvYAL+vwkgj39Ac1p1esJQ==", + "dependencies": { + "@react-aria/i18n": "3.11.1", + "@react-aria/interactions": "3.21.3", + "@react-aria/label": "3.7.8", + "@react-aria/listbox": "3.12.1", + "@react-aria/menu": "3.14.1", + "@react-aria/selection": "3.18.1", + "@react-aria/utils": "3.24.1", + "@react-stately/form": "3.0.3", + "@react-stately/list": "3.10.5", + "@react-stately/menu": "3.7.1", + "@react-types/button": "3.9.4", + "@react-types/overlays": "3.8.7", + "@react-types/select": "3.9.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nextui-org/use-aria-toggle-button": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@nextui-org/use-aria-toggle-button/-/use-aria-toggle-button-2.0.9.tgz", + "integrity": "sha512-JpPD97tYpPwyhgXgJbWYgMDp5ZysM1LyvvmyHmq6BtvSpyYqQKU7V3LDXuirBEN6NwHHZRfXy4/mUid/L6W0wA==", + "dependencies": { + "@nextui-org/use-aria-button": "2.0.9", + "@react-aria/utils": "3.24.1", + "@react-stately/toggle": "3.7.4", + "@react-types/button": "3.9.4", + "@react-types/shared": "3.23.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-callback-ref": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/use-callback-ref/-/use-callback-ref-2.0.5.tgz", + "integrity": "sha512-lcjlV5yaDTiFSv06E5RtQNqy+O6XqH/Q/yz+ka1ZBlZF/FdzEPNRfJ0shN2D7Sh3DdbvV2lySbA2g/0d94geaw==", + "dependencies": { + "@nextui-org/use-safe-layout-effect": "2.0.5" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-clipboard": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/use-clipboard/-/use-clipboard-2.0.5.tgz", + "integrity": "sha512-1ExwXM8ENmc/kVDqKoiPGrBP/0B7rZ43iSv2MoWD1Qpc8GHg71Rv7NTIlBDoD/pfUfqkab6x66iKC7AVR8rifA==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-data-scroll-overflow": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@nextui-org/use-data-scroll-overflow/-/use-data-scroll-overflow-2.1.4.tgz", + "integrity": "sha512-0YqUAe/b9aZftUQOH7sWqBMJHGLyC2Q/ixFyjq8Q1TijrqEyGESGQ2tm0+FHytI04drV+mnsbf6+q2QIKyqGSg==", + "dependencies": { + "@nextui-org/shared-utils": "2.0.5" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-disclosure": { + "version": "2.0.9", + "resolved": "https://registry.npmjs.org/@nextui-org/use-disclosure/-/use-disclosure-2.0.9.tgz", + "integrity": "sha512-d1Pksmm6zleZAdNraD0s97E+sXHrzI0vZ8tLNzE9yGNOf/VRMBvjpfa9S4Zl7oR+StNbST3JofCqmSHtRNe7hg==", + "dependencies": { + "@nextui-org/use-callback-ref": "2.0.5", + "@react-aria/utils": "3.24.1", + "@react-stately/utils": "3.10.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-image": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/use-image/-/use-image-2.0.5.tgz", + "integrity": "sha512-FAMyvZS9XSNLqHEmU6xykMgwIFJj/V9/JpTiZAQziz2wqMiUONIBpYpGOlI+pPBNlhCkw62KHm/19vHW49FWhA==", + "dependencies": { + "@nextui-org/use-safe-layout-effect": "2.0.5" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-is-mobile": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@nextui-org/use-is-mobile/-/use-is-mobile-2.0.8.tgz", + "integrity": "sha512-fp6UgfmYTkdri3fKeFUapr0TuJGRTskrTZixh+r1aqTcEWtaeef+Nli5VKRTJb9nqYKkgJDRhC39Z5s/rgq0mA==", + "dependencies": { + "@react-aria/ssr": "3.9.4" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-is-mounted": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/use-is-mounted/-/use-is-mounted-2.0.5.tgz", + "integrity": "sha512-gk698Uwmj/XhchBsnI5Ups5uzEXuZvsPK45K6goi2/ADKXSYxHOcSgwoexytqJBb/7tpi+emi2CRTAjAFZDQqA==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-measure": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@nextui-org/use-measure/-/use-measure-2.0.1.tgz", + "integrity": "sha512-uEtdrdBdFz4Fgbfk2vmQ+rEb+eFa5o4yI90udasvfpaIrMBfrFOlRW5+yn3uXKB8JThET4Gf2on/wlJpo567Dg==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-pagination": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/@nextui-org/use-pagination/-/use-pagination-2.0.7.tgz", + "integrity": "sha512-a05vLp8YSk4nI+LmDUdjjKj2U1/d3Z1ZALUUrjWJVnTUckaiglHGeoYEh8nqcjDXj4sPC4OcK3ZnW+AGUXDGwA==", + "dependencies": { + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/i18n": "3.11.1" + }, + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-safe-layout-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/use-safe-layout-effect/-/use-safe-layout-effect-2.0.5.tgz", + "integrity": "sha512-YQQlqz82aYxMoEq23jQNG/JBPHF1x3opzyXRHAVxgBEFo9OJqBMZTm23ukpTXm2Ev98T6mpWiTHdfyHJ7IoRog==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-scroll-position": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@nextui-org/use-scroll-position/-/use-scroll-position-2.0.6.tgz", + "integrity": "sha512-dRwew37XnJOh8d35BuyqzRfnrmKsOUHqi0Owhk0tIGyqifQ/jw65udWpBfa6rwXcd4cKOOqXXHuNGsYTclzc6w==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/use-update-effect": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nextui-org/use-update-effect/-/use-update-effect-2.0.5.tgz", + "integrity": "sha512-4r2CXAD598xc2ifMu97kf8V/lj+NDct2oITbxgXeV4ezWaXHy5/26r1iyVnBzRN/VBz3fwHx3hHdftzcYSZxdA==", + "peerDependencies": { + "react": ">=18" + } + }, + "node_modules/@nextui-org/user": { + "version": "2.0.31", + "resolved": "https://registry.npmjs.org/@nextui-org/user/-/user-2.0.31.tgz", + "integrity": "sha512-PXWVLB2igKi3MwjVeI5auoK6fhBgT3nizPzabBa95m0/3dg8aex/4oexCRpjef+V5cRD/2z37VHqfelQWqOHjQ==", + "dependencies": { + "@nextui-org/avatar": "2.0.30", + "@nextui-org/react-utils": "2.0.14", + "@nextui-org/shared-utils": "2.0.5", + "@react-aria/focus": "3.17.1", + "@react-aria/utils": "3.24.1" + }, + "peerDependencies": { + "@nextui-org/system": ">=2.0.0", + "@nextui-org/theme": ">=2.1.0", + "react": ">=18", + "react-dom": ">=18" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.15.tgz", + "integrity": "sha512-LFWllMA55pzB9D34w/wXUCf8+c+IYKuJDgxiZ3qMhl64KRMBHYM1I3VdGaD2BV5FNPV2/S2596bppxHbv2ZydQ==", + "dev": true, + "dependencies": { + "ansi-html": "^0.0.9", + "core-js-pure": "^3.23.3", + "error-stack-parser": "^2.0.6", + "html-entities": "^2.1.0", + "loader-utils": "^2.0.4", + "schema-utils": "^4.2.0", + "source-map": "^0.7.3" + }, + "engines": { + "node": ">= 10.13" + }, + "peerDependencies": { + "@types/webpack": "4.x || 5.x", + "react-refresh": ">=0.10.0 <1.0.0", + "sockjs-client": "^1.4.0", + "type-fest": ">=0.17.0 <5.0.0", + "webpack": ">=4.43.0 <6.0.0", + "webpack-dev-server": "3.x || 4.x || 5.x", + "webpack-hot-middleware": "2.x", + "webpack-plugin-serve": "0.x || 1.x" + }, + "peerDependenciesMeta": { + "@types/webpack": { + "optional": true + }, + "sockjs-client": { + "optional": true + }, + "type-fest": { + "optional": true + }, + "webpack-dev-server": { + "optional": true + }, + "webpack-hot-middleware": { + "optional": true + }, + "webpack-plugin-serve": { + "optional": true + } + } + }, + "node_modules/@pmmmwh/react-refresh-webpack-plugin/node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", + "dev": true, + "dependencies": { + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" + }, + "engines": { + "node": ">=8.9.0" } }, "node_modules/@radix-ui/primitive": { "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", - "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", - "dev": true + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.0.tgz", + "integrity": "sha512-4Z8dn6Upk0qk4P74xBhZ6Hd/w0mPEzOOLxy4xiPXOXqjF7jZS0VAKk7/x/H6FyY2zCkYJqePf1G5KmkmNJ4RBA==", + "dev": true + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", + "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", + "dev": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", + "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", + "dev": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", + "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", + "dev": true, + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-dismissable-layer": "1.1.0", + "@radix-ui/react-focus-guards": "1.1.0", + "@radix-ui/react-focus-scope": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.7" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", + "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", + "dev": true, + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-escape-keydown": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", + "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", + "dev": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", + "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", + "dev": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", + "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", + "dev": true, + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", + "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", + "dev": true, + "dependencies": { + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", + "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", + "dev": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", + "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", + "dev": true, + "dependencies": { + "@radix-ui/react-slot": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", + "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", + "dev": true, + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", + "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", + "dev": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", + "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", + "dev": true, + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", + "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", + "dev": true, + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.0" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", + "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", + "dev": true, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@react-aria/breadcrumbs": { + "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@react-aria/breadcrumbs/-/breadcrumbs-3.5.13.tgz", + "integrity": "sha512-G1Gqf/P6kVdfs94ovwP18fTWuIxadIQgHsXS08JEVcFVYMjb9YjqnEBaohUxD1tq2WldMbYw53ahQblT4NTG+g==", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/link": "^3.7.1", + "@react-aria/utils": "^3.24.1", + "@react-types/breadcrumbs": "^3.7.5", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/button": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-aria/button/-/button-3.9.5.tgz", + "integrity": "sha512-dgcYR6j8WDOMLKuVrtxzx4jIC05cVKDzc+HnPO8lNkBAOfjcuN5tkGRtIjLtqjMvpZHhQT5aDbgFpIaZzxgFIg==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/toggle": "^3.7.4", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/calendar": { + "version": "3.5.8", + "resolved": "https://registry.npmjs.org/@react-aria/calendar/-/calendar-3.5.8.tgz", + "integrity": "sha512-Whlp4CeAA5/ZkzrAHUv73kgIRYjw088eYGSc+cvSOCxfrc/2XkBm9rNrnSBv0DvhJ8AG0Fjz3vYakTmF3BgZBw==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-stately/calendar": "^3.5.1", + "@react-types/button": "^3.9.4", + "@react-types/calendar": "^3.4.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/checkbox": { + "version": "3.14.3", + "resolved": "https://registry.npmjs.org/@react-aria/checkbox/-/checkbox-3.14.3.tgz", + "integrity": "sha512-EtBJL6iu0gvrw3A4R7UeVLR6diaVk/mh4kFBc7c8hQjpEJweRr4hmJT3hrNg3MBcTWLxFiMEXPGgWEwXDBygtA==", + "dependencies": { + "@react-aria/form": "^3.0.5", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/toggle": "^3.10.4", + "@react-aria/utils": "^3.24.1", + "@react-stately/checkbox": "^3.6.5", + "@react-stately/form": "^3.0.3", + "@react-stately/toggle": "^3.7.4", + "@react-types/checkbox": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/combobox": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/combobox/-/combobox-3.9.1.tgz", + "integrity": "sha512-SpK92dCmT8qn8aEcUAihRQrBb5LZUhwIbDExFII8PvUvEFy/PoQHXIo3j1V29WkutDBDpMvBv/6XRCHGXPqrhQ==", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/listbox": "^3.12.1", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/menu": "^3.14.1", + "@react-aria/overlays": "^3.22.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/textfield": "^3.14.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/combobox": "^3.8.4", + "@react-stately/form": "^3.0.3", + "@react-types/button": "^3.9.4", + "@react-types/combobox": "^3.11.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/datepicker": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-aria/datepicker/-/datepicker-3.10.1.tgz", + "integrity": "sha512-4HZL593nrNMa1GjBmWEN/OTvNS6d3/16G1YJWlqiUlv11ADulSbqBIjMmkgwrJVFcjrgqtXFy+yyrTA/oq94Zw==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/spinbutton": "^3.6.5", + "@react-aria/utils": "^3.24.1", + "@react-stately/datepicker": "^3.9.4", + "@react-stately/form": "^3.0.3", + "@react-types/button": "^3.9.4", + "@react-types/calendar": "^3.4.6", + "@react-types/datepicker": "^3.7.4", + "@react-types/dialog": "^3.5.10", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/dialog": { + "version": "3.5.14", + "resolved": "https://registry.npmjs.org/@react-aria/dialog/-/dialog-3.5.14.tgz", + "integrity": "sha512-oqDCjQ8hxe3GStf48XWBf2CliEnxlR9GgSYPHJPUc69WBj68D9rVcCW3kogJnLAnwIyf3FnzbX4wSjvUa88sAQ==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/overlays": "^3.22.1", + "@react-aria/utils": "^3.24.1", + "@react-types/dialog": "^3.5.10", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/focus": { + "version": "3.17.1", + "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.17.1.tgz", + "integrity": "sha512-FLTySoSNqX++u0nWZJPPN5etXY0WBxaIe/YuL/GTEeuqUIuC/2bJSaw5hlsM6T2yjy6Y/VAxBcKSdAFUlU6njQ==", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/form": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@react-aria/form/-/form-3.0.5.tgz", + "integrity": "sha512-n290jRwrrRXO3fS82MyWR+OKN7yznVesy5Q10IclSTVYHHI3VI53xtAPr/WzNjJR1um8aLhOcDNFKwnNIUUCsQ==", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/form": "^3.0.3", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/grid": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/grid/-/grid-3.9.1.tgz", + "integrity": "sha512-fGEZqAEaS8mqzV/II3N4ndoNWegIcbh+L3PmKbXdpKKUP8VgMs/WY5rYl5WAF0f5RoFwXqx3ibDLeR9tKj/bOg==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/grid": "^3.8.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/virtualizer": "^3.7.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/i18n": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-aria/i18n/-/i18n-3.11.1.tgz", + "integrity": "sha512-vuiBHw1kZruNMYeKkTGGnmPyMnM5T+gT8bz97H1FqIq1hQ6OPzmtBZ6W6l6OIMjeHI5oJo4utTwfZl495GALFQ==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/message": "^3.1.4", + "@internationalized/number": "^3.5.3", + "@internationalized/string": "^3.2.3", + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/interactions": { + "version": "3.21.3", + "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.21.3.tgz", + "integrity": "sha512-BWIuf4qCs5FreDJ9AguawLVS0lV9UU+sK4CCnbCNNmYqOWY+1+gRXCsnOM32K+oMESBxilAjdHW5n1hsMqYMpA==", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/label": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/label/-/label-3.7.8.tgz", + "integrity": "sha512-MzgTm5+suPA3KX7Ug6ZBK2NX9cin/RFLsv1BdafJ6CZpmUSpWnGE/yQfYUB7csN7j31OsZrD3/P56eShYWAQfg==", + "dependencies": { + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/link": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-aria/link/-/link-3.7.1.tgz", + "integrity": "sha512-a4IaV50P3fXc7DQvEIPYkJJv26JknFbRzFT5MJOMgtzuhyJoQdILEUK6XHYjcSSNCA7uLgzpojArVk5Hz3lCpw==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/link": "^3.5.5", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/listbox": { + "version": "3.12.1", + "resolved": "https://registry.npmjs.org/@react-aria/listbox/-/listbox-3.12.1.tgz", + "integrity": "sha512-7JiUp0NGykbv/HgSpmTY1wqhuf/RmjFxs1HZcNaTv8A+DlzgJYc7yQqFjP3ZA/z5RvJFuuIxggIYmgIFjaRYdA==", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/list": "^3.10.5", + "@react-types/listbox": "^3.4.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/live-announcer": { + "version": "3.3.4", + "resolved": "https://registry.npmjs.org/@react-aria/live-announcer/-/live-announcer-3.3.4.tgz", + "integrity": "sha512-w8lxs35QrRrn6pBNzVfyGOeqWdxeVKf9U6bXIVwhq7rrTqRULL8jqy8RJIMfIs1s8G5FpwWYjyBOjl2g5Cu1iA==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } + }, + "node_modules/@react-aria/menu": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@react-aria/menu/-/menu-3.14.1.tgz", + "integrity": "sha512-BYliRb38uAzq05UOFcD5XkjA5foQoXRbcH3ZufBsc4kvh79BcP1PMW6KsXKGJ7dC/PJWUwCui6QL1kUg8PqMHA==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/overlays": "^3.22.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/collections": "^3.10.7", + "@react-stately/menu": "^3.7.1", + "@react-stately/tree": "^3.8.1", + "@react-types/button": "^3.9.4", + "@react-types/menu": "^3.9.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/overlays": { + "version": "3.22.1", + "resolved": "https://registry.npmjs.org/@react-aria/overlays/-/overlays-3.22.1.tgz", + "integrity": "sha512-GHiFMWO4EQ6+j6b5QCnNoOYiyx1Gk8ZiwLzzglCI4q1NY5AG2EAmfU4Z1+Gtrf2S5Y0zHbumC7rs9GnPoGLUYg==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/ssr": "^3.9.4", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/overlays": "^3.6.7", + "@react-types/button": "^3.9.4", + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/progress": { + "version": "3.4.13", + "resolved": "https://registry.npmjs.org/@react-aria/progress/-/progress-3.4.13.tgz", + "integrity": "sha512-YBV9bOO5JzKvG8QCI0IAA00o6FczMgIDiK8Q9p5gKorFMatFUdRayxlbIPoYHMi+PguLil0jHgC7eOyaUcrZ0g==", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-types/progress": "^3.5.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/radio": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-aria/radio/-/radio-3.10.4.tgz", + "integrity": "sha512-3fmoMcQtCpgjTwJReFjnvIE/C7zOZeCeWUn4JKDqz9s1ILYsC3Rk5zZ4q66tFn6v+IQnecrKT52wH6+hlVLwTA==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/radio": "^3.10.4", + "@react-types/radio": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/selection": { + "version": "3.18.1", + "resolved": "https://registry.npmjs.org/@react-aria/selection/-/selection-3.18.1.tgz", + "integrity": "sha512-GSqN2jX6lh7v+ldqhVjAXDcrWS3N4IsKXxO6L6Ygsye86Q9q9Mq9twWDWWu5IjHD6LoVZLUBCMO+ENGbOkyqeQ==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/selection": "^3.15.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/slider": { + "version": "3.7.8", + "resolved": "https://registry.npmjs.org/@react-aria/slider/-/slider-3.7.8.tgz", + "integrity": "sha512-MYvPcM0K8jxEJJicUK2+WxUkBIM/mquBxOTOSSIL3CszA80nXIGVnLlCUnQV3LOUzpWtabbWaZokSPtGgOgQOw==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/slider": "^3.5.4", + "@react-types/shared": "^3.23.1", + "@react-types/slider": "^3.7.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/spinbutton": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@react-aria/spinbutton/-/spinbutton-3.6.5.tgz", + "integrity": "sha512-0aACBarF/Xr/7ixzjVBTQ0NBwwwsoGkf5v6AVFVMTC0uYMXHTALvRs+ULHjHMa5e/cX/aPlEvaVT7jfSs+Xy9Q==", + "dependencies": { + "@react-aria/i18n": "^3.11.1", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-types/button": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/ssr": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.4.tgz", + "integrity": "sha512-4jmAigVq409qcJvQyuorsmBR4+9r3+JEC60wC+Y0MZV0HCtTmm8D9guYXlJMdx0SSkgj0hHAyFm/HvPNFofCoQ==", + "dependencies": { + "@swc/helpers": "^0.5.0" + }, + "engines": { + "node": ">= 12" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/switch": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@react-aria/switch/-/switch-3.6.4.tgz", + "integrity": "sha512-2nVqz4ZuJyof47IpGSt3oZRmp+EdS8wzeDYgf42WHQXrx4uEOk1mdLJ20+NnsYhj/2NHZsvXVrjBeKMjlMs+0w==", + "dependencies": { + "@react-aria/toggle": "^3.10.4", + "@react-stately/toggle": "^3.7.4", + "@react-types/switch": "^3.5.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/table": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/@react-aria/table/-/table-3.14.1.tgz", + "integrity": "sha512-WaPgQe4zQF5OaluO5rm+Y2nEoFR63vsLd4BT4yjK1uaFhKhDY2Zk+1SCVQvBLLKS4WK9dhP05nrNzT0vp/ZPOw==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/grid": "^3.9.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/live-announcer": "^3.3.4", + "@react-aria/utils": "^3.24.1", + "@react-aria/visually-hidden": "^3.8.12", + "@react-stately/collections": "^3.10.7", + "@react-stately/flags": "^3.0.3", + "@react-stately/table": "^3.11.8", + "@react-stately/virtualizer": "^3.7.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@react-types/table": "^3.9.5", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/tabs": { + "version": "3.9.1", + "resolved": "https://registry.npmjs.org/@react-aria/tabs/-/tabs-3.9.1.tgz", + "integrity": "sha512-S5v/0sRcOaSXaJYZuuy1ZVzYc7JD4sDyseG1133GjyuNjJOFHgoWMb+b4uxNIJbZxnLgynn/ZDBZSO+qU+fIxw==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/i18n": "^3.11.1", + "@react-aria/selection": "^3.18.1", + "@react-aria/utils": "^3.24.1", + "@react-stately/tabs": "^3.6.6", + "@react-types/shared": "^3.23.1", + "@react-types/tabs": "^3.3.7", + "@swc/helpers": "^0.5.0" + }, + "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" + } + }, + "node_modules/@react-aria/textfield": { + "version": "3.14.5", + "resolved": "https://registry.npmjs.org/@react-aria/textfield/-/textfield-3.14.5.tgz", + "integrity": "sha512-hj7H+66BjB1iTKKaFXwSZBZg88YT+wZboEXZ0DNdQB2ytzoz/g045wBItUuNi4ZjXI3P+0AOZznVMYadWBAmiA==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/form": "^3.0.5", + "@react-aria/label": "^3.7.8", + "@react-aria/utils": "^3.24.1", + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@react-types/textfield": "^3.9.3", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/toggle": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-aria/toggle/-/toggle-3.10.4.tgz", + "integrity": "sha512-bRk+CdB8QzrSyGNjENXiTWxfzYKRw753iwQXsEAU7agPCUdB8cZJyrhbaUoD0rwczzTp2zDbZ9rRbUPdsBE2YQ==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/toggle": "^3.7.4", + "@react-types/checkbox": "^3.8.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/tooltip": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-aria/tooltip/-/tooltip-3.7.4.tgz", + "integrity": "sha512-+XRx4HlLYqWY3fB8Z60bQi/rbWDIGlFUtXYbtoa1J+EyRWfhpvsYImP8qeeNO/vgjUtDy1j9oKa8p6App9mBMQ==", + "dependencies": { + "@react-aria/focus": "^3.17.1", + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-stately/tooltip": "^3.4.9", + "@react-types/shared": "^3.23.1", + "@react-types/tooltip": "^3.4.9", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/utils": { + "version": "3.24.1", + "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.24.1.tgz", + "integrity": "sha512-O3s9qhPMd6n42x9sKeJ3lhu5V1Tlnzhu6Yk8QOvDuXf7UGuUjXf9mzfHJt1dYzID4l9Fwm8toczBzPM9t0jc8Q==", + "dependencies": { + "@react-aria/ssr": "^3.9.4", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0", + "clsx": "^2.0.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-aria/visually-hidden": { + "version": "3.8.12", + "resolved": "https://registry.npmjs.org/@react-aria/visually-hidden/-/visually-hidden-3.8.12.tgz", + "integrity": "sha512-Bawm+2Cmw3Xrlr7ARzl2RLtKh0lNUdJ0eNqzWcyx4c0VHUAWtThmH5l+HRqFUGzzutFZVo89SAy40BAbd0gjVw==", + "dependencies": { + "@react-aria/interactions": "^3.21.3", + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/calendar": { + "version": "3.5.1", + "resolved": "https://registry.npmjs.org/@react-stately/calendar/-/calendar-3.5.1.tgz", + "integrity": "sha512-7l7QhqGUJ5AzWHfvZzbTe3J4t72Ht5BmhW4hlVI7flQXtfrmYkVtl3ZdytEZkkHmWGYZRW9b4IQTQGZxhtlElA==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-stately/utils": "^3.10.1", + "@react-types/calendar": "^3.4.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/checkbox": { + "version": "3.6.5", + "resolved": "https://registry.npmjs.org/@react-stately/checkbox/-/checkbox-3.6.5.tgz", + "integrity": "sha512-IXV3f9k+LtmfQLE+DKIN41Q5QB/YBLDCB1YVx5PEdRp52S9+EACD5683rjVm8NVRDwjMi2SP6RnFRk7fVb5Azg==", + "dependencies": { + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/checkbox": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/collections": { + "version": "3.10.7", + "resolved": "https://registry.npmjs.org/@react-stately/collections/-/collections-3.10.7.tgz", + "integrity": "sha512-KRo5O2MWVL8n3aiqb+XR3vP6akmHLhLWYZEmPKjIv0ghQaEebBTrN3wiEjtd6dzllv0QqcWvDLM1LntNfJ2TsA==", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/combobox": { + "version": "3.8.4", + "resolved": "https://registry.npmjs.org/@react-stately/combobox/-/combobox-3.8.4.tgz", + "integrity": "sha512-iLVGvKRRz0TeJXZhZyK783hveHpYA6xovOSdzSD+WGYpiPXo1QrcrNoH3AE0Z2sHtorU+8nc0j58vh5PB+m2AA==", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/form": "^3.0.3", + "@react-stately/list": "^3.10.5", + "@react-stately/overlays": "^3.6.7", + "@react-stately/select": "^3.6.4", + "@react-stately/utils": "^3.10.1", + "@react-types/combobox": "^3.11.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/datepicker": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-stately/datepicker/-/datepicker-3.9.4.tgz", + "integrity": "sha512-yBdX01jn6gq4NIVvHIqdjBUPo+WN8Bujc4OnPw+ZnfA4jI0eIgq04pfZ84cp1LVXW0IB0VaCu1AlQ/kvtZjfGA==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@internationalized/string": "^3.2.3", + "@react-stately/form": "^3.0.3", + "@react-stately/overlays": "^3.6.7", + "@react-stately/utils": "^3.10.1", + "@react-types/datepicker": "^3.7.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/flags": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.0.3.tgz", + "integrity": "sha512-/ha7XFA0RZTQsbzSPwu3KkbNMgbvuM0GuMTYLTBWpgBrovBNTM+QqI/PfZTdHg8PwCYF4H5Y8gjdSpdulCvJFw==", + "dependencies": { + "@swc/helpers": "^0.5.0" + } }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.0.tgz", - "integrity": "sha512-b4inOtiaOnYf9KWyO3jAeeCG6FeyfY6ldiEPanbUjWd+xIk5wZeHa8yVwmrJ2vderhu/BQvzCrJI0lHd+wIiqw==", - "dev": true, + "node_modules/@react-stately/form": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@react-stately/form/-/form-3.0.3.tgz", + "integrity": "sha512-92YYBvlHEWUGUpXgIaQ48J50jU9XrxfjYIN8BTvvhBHdD63oWgm8DzQnyT/NIAMzdLnhkg7vP+fjG8LjHeyIAg==", + "dependencies": { + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/grid": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-stately/grid/-/grid-3.8.7.tgz", + "integrity": "sha512-he3TXCLAhF5C5z1/G4ySzcwyt7PEiWcVIupxebJQqRyFrNWemSuv+7tolnStmG8maMVIyV3P/3j4eRBbdSlOIg==", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.0.tgz", - "integrity": "sha512-OKrckBy+sMEgYM/sMmqmErVn0kZqrHPJze+Ql3DzYsDDp0hl0L62nx/2122/Bvps1qz645jlcu2tD9lrRSdf8A==", - "dev": true, + "node_modules/@react-stately/list": { + "version": "3.10.5", + "resolved": "https://registry.npmjs.org/@react-stately/list/-/list-3.10.5.tgz", + "integrity": "sha512-fV9plO+6QDHiewsYIhboxcDhF17GO95xepC5ki0bKXo44gr14g/LSo/BMmsaMnV+1BuGdBunB05bO4QOIaigXA==", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/menu": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-stately/menu/-/menu-3.7.1.tgz", + "integrity": "sha512-mX1w9HHzt+xal1WIT2xGrTQsoLvDwuB2R1Er1MBABs//MsJzccycatcgV/J/28m6tO5M9iuFQQvLV+i1dCtodg==", + "dependencies": { + "@react-stately/overlays": "^3.6.7", + "@react-types/menu": "^3.9.9", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.1.tgz", - "integrity": "sha512-zysS+iU4YP3STKNS6USvFVqI4qqx8EpiwmT5TuCApVEBca+eRCbONi4EgzfNSuVnOXvC5UPHHMjs8RXO6DH9Bg==", - "dev": true, + "node_modules/@react-stately/overlays": { + "version": "3.6.7", + "resolved": "https://registry.npmjs.org/@react-stately/overlays/-/overlays-3.6.7.tgz", + "integrity": "sha512-6zp8v/iNUm6YQap0loaFx6PlvN8C0DgWHNlrlzMtMmNuvjhjR0wYXVaTfNoUZBWj25tlDM81ukXOjpRXg9rLrw==", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-context": "1.1.0", - "@radix-ui/react-dismissable-layer": "1.1.0", - "@radix-ui/react-focus-guards": "1.1.0", - "@radix-ui/react-focus-scope": "1.1.0", - "@radix-ui/react-id": "1.1.0", - "@radix-ui/react-portal": "1.1.1", - "@radix-ui/react-presence": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-slot": "1.1.0", - "@radix-ui/react-use-controllable-state": "1.1.0", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.7" + "@react-stately/utils": "^3.10.1", + "@react-types/overlays": "^3.8.7", + "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/radio": { + "version": "3.10.4", + "resolved": "https://registry.npmjs.org/@react-stately/radio/-/radio-3.10.4.tgz", + "integrity": "sha512-kCIc7tAl4L7Hu4Wt9l2jaa+MzYmAJm0qmC8G8yPMbExpWbLRu6J8Un80GZu+JxvzgDlqDyrVvyv9zFifwH/NkQ==", + "dependencies": { + "@react-stately/form": "^3.0.3", + "@react-stately/utils": "^3.10.1", + "@react-types/radio": "^3.8.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.0.tgz", - "integrity": "sha512-/UovfmmXGptwGcBQawLzvn2jOfM0t4z3/uKffoBlj724+n3FvBbZ7M0aaBOmkp6pqFYpO4yx8tSVJjx3Fl2jig==", - "dev": true, + "node_modules/@react-stately/select": { + "version": "3.6.4", + "resolved": "https://registry.npmjs.org/@react-stately/select/-/select-3.6.4.tgz", + "integrity": "sha512-whZgF1N53D0/dS8tOFdrswB0alsk5Q5620HC3z+5f2Hpi8gwgAZ8TYa+2IcmMYRiT+bxVuvEc/NirU9yPmqGbA==", "dependencies": { - "@radix-ui/primitive": "1.1.0", - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0", - "@radix-ui/react-use-escape-keydown": "1.1.0" + "@react-stately/form": "^3.0.3", + "@react-stately/list": "^3.10.5", + "@react-stately/overlays": "^3.6.7", + "@react-types/select": "^3.9.4", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/selection": { + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/@react-stately/selection/-/selection-3.15.1.tgz", + "integrity": "sha512-6TQnN9L0UY9w19B7xzb1P6mbUVBtW840Cw1SjgNXCB3NPaCf59SwqClYzoj8O2ZFzMe8F/nUJtfU1NS65/OLlw==", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.0.tgz", - "integrity": "sha512-w6XZNUPVv6xCpZUqb/yN9DL6auvpGX3C/ee6Hdi16v2UUy25HV2Q5bcflsiDyT/g5RwbPQ/GIT1vLkeRb+ITBw==", - "dev": true, + "node_modules/@react-stately/slider": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-stately/slider/-/slider-3.5.4.tgz", + "integrity": "sha512-Jsf7K17dr93lkNKL9ij8HUcoM1sPbq8TvmibD6DhrK9If2lje+OOL8y4n4qreUnfMT56HCAeS9wCO3fg3eMyrw==", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@react-types/slider": "^3.7.3", + "@swc/helpers": "^0.5.0" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/table": { + "version": "3.11.8", + "resolved": "https://registry.npmjs.org/@react-stately/table/-/table-3.11.8.tgz", + "integrity": "sha512-EdyRW3lT1/kAVDp5FkEIi1BQ7tvmD2YgniGdLuW/l9LADo0T+oxZqruv60qpUS6sQap+59Riaxl91ClDxrJnpg==", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/flags": "^3.0.3", + "@react-stately/grid": "^3.8.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1", + "@react-types/table": "^3.9.5", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.0.tgz", - "integrity": "sha512-200UD8zylvEyL8Bx+z76RJnASR2gRMuxlgFCPAe/Q/679a/r0eK3MBVYMb7vZODZcffZBdob1EGnky78xmVvcA==", - "dev": true, + "node_modules/@react-stately/tabs": { + "version": "3.6.6", + "resolved": "https://registry.npmjs.org/@react-stately/tabs/-/tabs-3.6.6.tgz", + "integrity": "sha512-sOLxorH2uqjAA+v1ppkMCc2YyjgqvSGeBDgtR/lyPSDd4CVMoTExszROX2dqG0c8il9RQvzFuufUtQWMY6PgSA==", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-callback-ref": "1.1.0" + "@react-stately/list": "^3.10.5", + "@react-types/shared": "^3.23.1", + "@react-types/tabs": "^3.3.7", + "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/toggle": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-stately/toggle/-/toggle-3.7.4.tgz", + "integrity": "sha512-CoYFe9WrhLkDP4HGDpJYQKwfiYCRBAeoBQHv+JWl5eyK61S8xSwoHsveYuEZ3bowx71zyCnNAqWRrmNOxJ4CKA==", + "dependencies": { + "@react-stately/utils": "^3.10.1", + "@react-types/checkbox": "^3.8.1", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.0.tgz", - "integrity": "sha512-EJUrI8yYh7WOjNOqpoJaf1jlFIH2LvtgAl+YcFqNCa+4hj64ZXmPkAKOFs/ukjz3byN6bdb/AVUqHkI8/uWWMA==", - "dev": true, + "node_modules/@react-stately/tooltip": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-stately/tooltip/-/tooltip-3.4.9.tgz", + "integrity": "sha512-P7CDJsdoKarz32qFwf3VNS01lyC+63gXpDZG31pUu+EO5BeQd4WKN/AH1Beuswpr4GWzxzFc1aXQgERFGVzraA==", "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.0" + "@react-stately/overlays": "^3.6.7", + "@react-types/tooltip": "^3.4.9", + "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/tree": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-stately/tree/-/tree-3.8.1.tgz", + "integrity": "sha512-LOdkkruJWch3W89h4B/bXhfr0t0t1aRfEp+IMrrwdRAl23NaPqwl5ILHs4Xu5XDHqqhg8co73pHrJwUyiTWEjw==", + "dependencies": { + "@react-stately/collections": "^3.10.7", + "@react-stately/selection": "^3.15.1", + "@react-stately/utils": "^3.10.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.1.tgz", - "integrity": "sha512-A3UtLk85UtqhzFqtoC8Q0KvR2GbXF3mtPgACSazajqq6A41mEQgo53iPzY4i6BwDxlIFqWIhiQ2G729n+2aw/g==", - "dev": true, + "node_modules/@react-stately/utils": { + "version": "3.10.1", + "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.1.tgz", + "integrity": "sha512-VS/EHRyicef25zDZcM/ClpzYMC5i2YGN6uegOeQawmgfGjb02yaCX0F0zR69Pod9m2Hr3wunTbtpgVXvYbZItg==", "dependencies": { - "@radix-ui/react-primitive": "2.0.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@swc/helpers": "^0.5.0" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-stately/virtualizer": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/@react-stately/virtualizer/-/virtualizer-3.7.1.tgz", + "integrity": "sha512-voHgE6EQ+oZaLv6u2umKxakvIKNkCQuUihqKACTjdslp7SJh4Mvs3oLBI0hf0JOh+rCcFIKDvQtFwy1fXFRYBA==", + "dependencies": { + "@react-aria/utils": "^3.24.1", + "@react-types/shared": "^3.23.1", + "@swc/helpers": "^0.5.0" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.0.tgz", - "integrity": "sha512-Gq6wuRN/asf9H/E/VzdKoUtT8GC9PQc9z40/vEr0VCJ4u5XvvhWIrSsCB6vD2/cH7ugTdSfYq9fLJCcM00acrQ==", - "dev": true, + "node_modules/@react-types/accordion": { + "version": "3.0.0-alpha.21", + "resolved": "https://registry.npmjs.org/@react-types/accordion/-/accordion-3.0.0-alpha.21.tgz", + "integrity": "sha512-cbE06jH/ZoI+1898xd7ocQ/A/Rtkz8wTJAVOYgc8VRY1SYNQ/XZTGH5T6dD6aERAmiDwL/kjD7xhsE80DyaEKA==", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0", - "@radix-ui/react-use-layout-effect": "1.1.0" + "@react-types/shared": "^3.23.1" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/breadcrumbs": { + "version": "3.7.5", + "resolved": "https://registry.npmjs.org/@react-types/breadcrumbs/-/breadcrumbs-3.7.5.tgz", + "integrity": "sha512-lV9IDYsMiu2TgdMIjEmsOE0YWwjb3jhUNK1DCZZfq6uWuiHLgyx2EncazJBUWSjHJ4ta32j7xTuXch+8Ai6u/A==", + "dependencies": { + "@react-types/link": "^3.5.5", + "@react-types/shared": "^3.23.1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/button": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/button/-/button-3.9.4.tgz", + "integrity": "sha512-raeQBJUxBp0axNF74TXB8/H50GY8Q3eV6cEKMbZFP1+Dzr09Ngv0tJBeW0ewAxAguNH5DRoMUAUGIXtSXskVdA==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/calendar": { + "version": "3.4.6", + "resolved": "https://registry.npmjs.org/@react-types/calendar/-/calendar-3.4.6.tgz", + "integrity": "sha512-WSntZPwtvsIYWvBQRAPvuCn55UTJBZroTvX0vQvWykJRQnPAI20G1hMQ3dNsnAL+gLZUYxBXn66vphmjUuSYew==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/checkbox": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/checkbox/-/checkbox-3.8.1.tgz", + "integrity": "sha512-5/oVByPw4MbR/8QSdHCaalmyWC71H/QGgd4aduTJSaNi825o+v/hsN2/CH7Fq9atkLKsC8fvKD00Bj2VGaKriQ==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/combobox": { + "version": "3.11.1", + "resolved": "https://registry.npmjs.org/@react-types/combobox/-/combobox-3.11.1.tgz", + "integrity": "sha512-UNc3OHt5cUt5gCTHqhQIqhaWwKCpaNciD8R7eQazmHiA9fq8ROlV+7l3gdNgdhJbTf5Bu/V5ISnN7Y1xwL3zqQ==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/datepicker": { + "version": "3.7.4", + "resolved": "https://registry.npmjs.org/@react-types/datepicker/-/datepicker-3.7.4.tgz", + "integrity": "sha512-ZfvgscvNzBJpYyVWg3nstJtA/VlWLwErwSkd1ivZYam859N30w8yH+4qoYLa6FzWLCFlrsRHyvtxlEM7lUAt5A==", + "dependencies": { + "@internationalized/date": "^3.5.4", + "@react-types/calendar": "^3.4.6", + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/dialog": { + "version": "3.5.10", + "resolved": "https://registry.npmjs.org/@react-types/dialog/-/dialog-3.5.10.tgz", + "integrity": "sha512-S9ga+edOLNLZw7/zVOnZdT5T40etpzUYBXEKdFPbxyPYnERvRxJAsC1/ASuBU9fQAXMRgLZzADWV+wJoGS/X9g==", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/grid": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/@react-types/grid/-/grid-3.2.6.tgz", + "integrity": "sha512-XfHenL2jEBUYrhKiPdeM24mbLRXUn79wVzzMhrNYh24nBwhsPPpxF+gjFddT3Cy8dt6tRInfT6pMEu9nsXwaHw==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/link": { + "version": "3.5.5", + "resolved": "https://registry.npmjs.org/@react-types/link/-/link-3.5.5.tgz", + "integrity": "sha512-G6P5WagHDR87npN7sEuC5IIgL1GsoY4WFWKO4734i2CXRYx24G9P0Su3AX4GA3qpspz8sK1AWkaCzBMmvnunfw==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/listbox": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-types/listbox/-/listbox-3.4.9.tgz", + "integrity": "sha512-S5G+WmNKUIOPZxZ4svWwWQupP3C6LmVfnf8QQmPDvwYXGzVc0WovkqUWyhhjJirFDswTXRCO9p0yaTHHIlkdwQ==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/menu": { + "version": "3.9.9", + "resolved": "https://registry.npmjs.org/@react-types/menu/-/menu-3.9.9.tgz", + "integrity": "sha512-FamUaPVs1Fxr4KOMI0YcR2rYZHoN7ypGtgiEiJ11v/tEPjPPGgeKDxii0McCrdOkjheatLN1yd2jmMwYj6hTDg==", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/overlays": { + "version": "3.8.7", + "resolved": "https://registry.npmjs.org/@react-types/overlays/-/overlays-3.8.7.tgz", + "integrity": "sha512-zCOYvI4at2DkhVpviIClJ7bRrLXYhSg3Z3v9xymuPH3mkiuuP/dm8mUCtkyY4UhVeUTHmrQh1bzaOP00A+SSQA==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/progress": { + "version": "3.5.4", + "resolved": "https://registry.npmjs.org/@react-types/progress/-/progress-3.5.4.tgz", + "integrity": "sha512-JNc246sTjasPyx5Dp7/s0rp3Bz4qlu4LrZTulZlxWyb53WgBNL7axc26CCi+I20rWL9+c7JjhrRxnLl/1cLN5g==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.0.0.tgz", - "integrity": "sha512-ZSpFm0/uHa8zTvKBDjLFWLo8dkr4MBsiDLz0g3gMUwqgLHz9rTaRRGYDgvZPtBJgYCBKXkS9fzmoySgr8CO6Cw==", - "dev": true, + "node_modules/@react-types/radio": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@react-types/radio/-/radio-3.8.1.tgz", + "integrity": "sha512-bK0gio/qj1+0Ldu/3k/s9BaOZvnnRgvFtL3u5ky479+aLG5qf1CmYed3SKz8ErZ70JkpuCSrSwSCFf0t1IHovw==", "dependencies": { - "@radix-ui/react-slot": "1.1.0" + "@react-types/shared": "^3.23.1" }, "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-slot": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.1.0.tgz", - "integrity": "sha512-FUCf5XMfmW4dtYl69pdS4DbxKy8nj4M7SafBgPllysxmdachynNflAdp/gCsnYWNDnge6tI9onzMp5ARYc1KNw==", - "dev": true, + "node_modules/@react-types/select": { + "version": "3.9.4", + "resolved": "https://registry.npmjs.org/@react-types/select/-/select-3.9.4.tgz", + "integrity": "sha512-xI7dnOW2st91fPPcv6hdtrTdcfetYiqZuuVPZ5TRobY7Q10/Zqqe/KqtOw1zFKUj9xqNJe4Ov3xP5GSdcO60Eg==", "dependencies": { - "@radix-ui/react-compose-refs": "1.1.0" + "@react-types/shared": "^3.23.1" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.0.tgz", - "integrity": "sha512-CasTfvsy+frcFkbXtSJ2Zu9JHpN8TYKxkgJGWbjiZhFivxaeW7rMeZt7QELGVLaYVfFMsKHjb7Ak0nMEe+2Vfw==", - "dev": true, + "node_modules/@react-types/shared": { + "version": "3.23.1", + "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.23.1.tgz", + "integrity": "sha512-5d+3HbFDxGZjhbMBeFHRQhexMFt4pUce3okyRtUVKbbedQFUrtXSBg9VszgF2RTeQDKDkMCIQDtz5ccP/Lk1gw==", "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.1.0.tgz", - "integrity": "sha512-MtfMVJiSr2NjzS0Aa90NPTnvTSg6C/JLCV7ma0W6+OMV78vd8OyRpID+Ng9LxzsPbLeuBnWBA1Nq30AtBIDChw==", - "dev": true, + "node_modules/@react-types/slider": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@react-types/slider/-/slider-3.7.3.tgz", + "integrity": "sha512-F8qFQaD2mqug2D0XeWMmjGBikiwbdERFlhFzdvNGbypPLz3AZICBKp1ZLPWdl0DMuy03G/jy6Gl4mDobl7RT2g==", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" + "@react-types/shared": "^3.23.1" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/switch": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/@react-types/switch/-/switch-3.5.3.tgz", + "integrity": "sha512-Nb6+J5MrPaFa8ZNFKGMzAsen/NNzl5UG/BbC65SLGPy7O0VDa/sUpn7dcu8V2xRpRwwIN/Oso4v63bt2sgdkgA==", + "dependencies": { + "@react-types/shared": "^3.23.1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.0.tgz", - "integrity": "sha512-L7vwWlR1kTTQ3oh7g1O0CBF3YCyyTj8NmhLR+phShpyA50HCfBFKVJTpshm9PzLiKmehsrQzTYTpX9HvmC9rhw==", - "dev": true, + "node_modules/@react-types/table": { + "version": "3.9.5", + "resolved": "https://registry.npmjs.org/@react-types/table/-/table-3.9.5.tgz", + "integrity": "sha512-fgM2j9F/UR4Anmd28CueghCgBwOZoCVyN8fjaIFPd2MN4gCwUUfANwxLav65gZk4BpwUXGoQdsW+X50L3555mg==", "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.0" + "@react-types/grid": "^3.2.6", + "@react-types/shared": "^3.23.1" }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/tabs": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/@react-types/tabs/-/tabs-3.3.7.tgz", + "integrity": "sha512-ZdLe5xOcFX6+/ni45Dl2jO0jFATpTnoSqj6kLIS/BYv8oh0n817OjJkLf+DS3CLfNjApJWrHqAk34xNh6nRnEg==", + "dependencies": { + "@react-types/shared": "^3.23.1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.0.tgz", - "integrity": "sha512-+FPE0rOdziWSrH9athwI1R0HDVbWlEhd+FR+aSDk4uWGmSJ9Z54sdZVDQPZAinJhJXwfT+qnj969mCsT2gfm5w==", - "dev": true, + "node_modules/@react-types/textfield": { + "version": "3.9.3", + "resolved": "https://registry.npmjs.org/@react-types/textfield/-/textfield-3.9.3.tgz", + "integrity": "sha512-DoAY6cYOL0pJhgNGI1Rosni7g72GAt4OVr2ltEx2S9ARmFZ0DBvdhA9lL2nywcnKMf27PEJcKMXzXc10qaHsJw==", + "dependencies": { + "@react-types/shared": "^3.23.1" + }, "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + } + }, + "node_modules/@react-types/tooltip": { + "version": "3.4.9", + "resolved": "https://registry.npmjs.org/@react-types/tooltip/-/tooltip-3.4.9.tgz", + "integrity": "sha512-wZ+uF1+Zc43qG+cOJzioBmLUNjRa7ApdcT0LI1VvaYvH5GdfjzUJOorLX9V/vAci0XMJ50UZ+qsh79aUlw2yqg==", + "dependencies": { + "@react-types/overlays": "^3.8.7", + "@react-types/shared": "^3.23.1" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" } }, "node_modules/@reduxjs/toolkit": { - "version": "2.2.5", - "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.5.tgz", - "integrity": "sha512-aeFA/s5NCG7NoJe/MhmwREJxRkDs0ZaSqt0MxhWUrwCf1UQXpwR87RROJEql0uAkLI6U7snBOYOcKw83ew3FPg==", + "version": "2.2.6", + "resolved": "https://registry.npmjs.org/@reduxjs/toolkit/-/toolkit-2.2.6.tgz", + "integrity": "sha512-kH0r495c5z1t0g796eDQAkYbEQ3a1OLYN9o8jQQVZyKyw367pfRGS+qZLkHYvFHiUUdafpoSlQ2QYObIApjPWA==", "dependencies": { "immer": "^10.0.3", "redux": "^5.0.1", @@ -5074,9 +7632,9 @@ } }, "node_modules/@remix-run/router": { - "version": "1.17.0", - "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.17.0.tgz", - "integrity": "sha512-2D6XaHEVvkCn682XBnipbJjgZUU7xjLtA4dGJRBVUKpEaDYOZMENZoZjAOSb7qirxt5RupjzZxz4fK2FO+EFPw==", + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.17.1.tgz", + "integrity": "sha512-mCOMec4BKd6BRGBZeSnGiIgwsbLGp3yhVqAD8H+PxiRNEHgDpZb8J1TnrSDlg97t0ySKMQJTHCWBCmBpSmkF6Q==", "engines": { "node": ">=14.0.0" } @@ -5124,12 +7682,12 @@ } }, "node_modules/@storybook/addon-actions": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.1.10.tgz", - "integrity": "sha512-1MjncuynvkT3rJtrkWPHLo92Pfno+LUWtaHiNDt9nXYowclTN2cT4a4gNDh6eKkB9dITHxkD7/4mxjHpFUvyrA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-8.1.11.tgz", + "integrity": "sha512-jqYXgBgOVInStOCk//AA+dGkrfN8R7rDXA4lyu82zM59kvICtG9iqgmkSRDn0Z3zUkM+lIHZGoz0aLVQ8pxsgw==", "dev": true, "dependencies": { - "@storybook/core-events": "8.1.10", + "@storybook/core-events": "8.1.11", "@storybook/global": "^5.0.0", "@types/uuid": "^9.0.1", "dequal": "^2.0.2", @@ -5142,9 +7700,9 @@ } }, "node_modules/@storybook/addon-backgrounds": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.10.tgz", - "integrity": "sha512-nX9Hmcq5U/13S2ETcjGaLqfDcaSKTNPD3RBzWUoNQuZB/bB1q4qLLncQnQfaa6uruP9k6GIFZvtXeJAs9r0POw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-8.1.11.tgz", + "integrity": "sha512-naGf1ovmsU2pSWb270yRO1IidnO+0YCZ5Tcb8I4rPhZ0vsdXNURYKS1LPSk1OZkvaUXdeB4Im9HhHfUBJOW9oQ==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -5157,12 +7715,12 @@ } }, "node_modules/@storybook/addon-controls": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.1.10.tgz", - "integrity": "sha512-98uLezKv6W/1byJL+Zri5kA1Cfi+DUBsbdjz7fFJl8xMtAGwuv9cnOueQl0ouDhqqwnZ4LWHYQsSsPPMz1Lmkg==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-8.1.11.tgz", + "integrity": "sha512-q/Vt4meNVlFlBWIMCJhx6r+bqiiYocCta2RoUK5nyIZUiLzHncKHX6JnCU36EmJzRyah9zkwjfCb2G1r9cjnoQ==", "dev": true, "dependencies": { - "@storybook/blocks": "8.1.10", + "@storybook/blocks": "8.1.11", "dequal": "^2.0.2", "lodash": "^4.17.21", "ts-dedent": "^2.0.0" @@ -5173,24 +7731,24 @@ } }, "node_modules/@storybook/addon-docs": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.1.10.tgz", - "integrity": "sha512-jzmIeCoykiHg/KLPrYEDtXO/+dcQaEOqyJHS77eTzAO2iSXJlE+yva5Uwc8apG7UxDVa4Ycc1lPwMzB5GaHsGQ==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-8.1.11.tgz", + "integrity": "sha512-69dv+CE4R5wFU7xnJmhuyEbLN2PEVDV3N/BbgJqeucIYPmm6zDV83Q66teCHKYtRln3BFUqPH5mxsjiHobxfJQ==", "dev": true, "dependencies": { "@babel/core": "^7.24.4", "@mdx-js/react": "^3.0.0", - "@storybook/blocks": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/components": "8.1.10", - "@storybook/csf-plugin": "8.1.10", - "@storybook/csf-tools": "8.1.10", + "@storybook/blocks": "8.1.11", + "@storybook/client-logger": "8.1.11", + "@storybook/components": "8.1.11", + "@storybook/csf-plugin": "8.1.11", + "@storybook/csf-tools": "8.1.11", "@storybook/global": "^5.0.0", - "@storybook/node-logger": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/react-dom-shim": "8.1.10", - "@storybook/theming": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/node-logger": "8.1.11", + "@storybook/preview-api": "8.1.11", + "@storybook/react-dom-shim": "8.1.11", + "@storybook/theming": "8.1.11", + "@storybook/types": "8.1.11", "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", "fs-extra": "^11.1.0", "react": "^16.8.0 || ^17.0.0 || ^18.0.0", @@ -5205,24 +7763,24 @@ } }, "node_modules/@storybook/addon-essentials": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.1.10.tgz", - "integrity": "sha512-xgAXdl/MaKWmwqJJpw4z1YaD1V/r74VHHLqY3Z4YaU9DmlApkCa+FmZSS9QVAf7g6JNUcD1Dbtw5j62uNn+YyA==", - "dev": true, - "dependencies": { - "@storybook/addon-actions": "8.1.10", - "@storybook/addon-backgrounds": "8.1.10", - "@storybook/addon-controls": "8.1.10", - "@storybook/addon-docs": "8.1.10", - "@storybook/addon-highlight": "8.1.10", - "@storybook/addon-measure": "8.1.10", - "@storybook/addon-outline": "8.1.10", - "@storybook/addon-toolbars": "8.1.10", - "@storybook/addon-viewport": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/manager-api": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/preview-api": "8.1.10", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-8.1.11.tgz", + "integrity": "sha512-uRTpcIZQnflML8H+2onicUNIIssKfuviW8Lyrs/KFwSZ1rMcYzhwzCNbGlIbAv04tgHe5NqEyNhb+DVQcZQBzg==", + "dev": true, + "dependencies": { + "@storybook/addon-actions": "8.1.11", + "@storybook/addon-backgrounds": "8.1.11", + "@storybook/addon-controls": "8.1.11", + "@storybook/addon-docs": "8.1.11", + "@storybook/addon-highlight": "8.1.11", + "@storybook/addon-measure": "8.1.11", + "@storybook/addon-outline": "8.1.11", + "@storybook/addon-toolbars": "8.1.11", + "@storybook/addon-viewport": "8.1.11", + "@storybook/core-common": "8.1.11", + "@storybook/manager-api": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/preview-api": "8.1.11", "ts-dedent": "^2.0.0" }, "funding": { @@ -5231,9 +7789,9 @@ } }, "node_modules/@storybook/addon-highlight": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.1.10.tgz", - "integrity": "sha512-s9QKGtU6WGB/+CggNWg940NIi+u0tcxpPxqg/ltg3EOHr8J0NAZur6mibs3Z4Q5CXkAuNdWrvopLu+/27i1rQQ==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-8.1.11.tgz", + "integrity": "sha512-Iu8FCAd4ETsB6QF4xDE/OLLZY3HOFopuLM5KE0f58jnccF5zAVGr1Rj/54p6TeK0PEou0tLRPFuZs+LPlEzrSw==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -5244,15 +7802,15 @@ } }, "node_modules/@storybook/addon-interactions": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.1.10.tgz", - "integrity": "sha512-GGU66TxYv6Bis10mmlgMhLOyai1am1amKVvX7ML8XYfsi6lA9zCnfQSVXulYLfjfzyIR6Ld8Kxe5awvjucPxSw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-8.1.11.tgz", + "integrity": "sha512-nkc01z61mYM1kxf0ncBQLlFnnwW4RAVPfRSxK9BdbFN3AAvFiHCwVZdn71mi+C3L8oTqYR6o32e0RlXk+AjhHA==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", - "@storybook/instrumenter": "8.1.10", - "@storybook/test": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/instrumenter": "8.1.11", + "@storybook/test": "8.1.11", + "@storybook/types": "8.1.11", "polished": "^4.2.2", "ts-dedent": "^2.2.0" }, @@ -5262,9 +7820,9 @@ } }, "node_modules/@storybook/addon-links": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.1.10.tgz", - "integrity": "sha512-SxCuK7k7A0/qIPzV68u25qfye3Fb0PkC1izlRbt7u64wIUIxGzgfjM3dFRWK2VaJzCsEQWSmIdv7YHi7Wv5y3w==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-8.1.11.tgz", + "integrity": "sha512-HlV2RQSrZyi+55W1B1a9eWNuJdNpWx0g3j7s2arNlNmbd6/kfWAp84axBstI1tL0nW4svut7bWlCsMSOIden+A==", "dev": true, "dependencies": { "@storybook/csf": "^0.1.7", @@ -5285,9 +7843,9 @@ } }, "node_modules/@storybook/addon-measure": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.1.10.tgz", - "integrity": "sha512-akhdg3WBOBvDsolzSSvW4TIdZLMVlL9DS6rpZvhydXeX8pG0sjb+sON6VUL4h8Gs7qa8QumauXCr+Y4q1FhZhw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-8.1.11.tgz", + "integrity": "sha512-LkQD3SiLWaWt53aLB3EnmhD9Im8EOO+HKSUE+XGnIJRUcHHRqHfvDkN9KX7T1DCWbfRE5WzMHF5o23b3UiAANw==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -5299,9 +7857,9 @@ } }, "node_modules/@storybook/addon-onboarding": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.1.10.tgz", - "integrity": "sha512-DVIt2YaBFY7JT4OwjP7+2paz6a1juqDuGwTjS2XIbH00Yo58l+DYuWZgFx4x3J7v0Bw/CdXwHcgfKXbsSvBf2Q==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-8.1.11.tgz", + "integrity": "sha512-oU9Tfnu3PlF71SC0chcDJs/i1MnpfQlB8GTN3TrlMzHXTwKJGz8XTdk2DQ0DB+YPo44Mhg2EavBXeBw6W2EF2g==", "dev": true, "dependencies": { "react-confetti": "^6.1.0" @@ -5312,9 +7870,9 @@ } }, "node_modules/@storybook/addon-outline": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.1.10.tgz", - "integrity": "sha512-Edn5TWpV1DcumOjx0qG9bBKja6vz210ip7O47JbRDu7IDR8lguaM2X9xbmhXhBQq4fmqvobZmfRnrSeCtSYeyQ==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-8.1.11.tgz", + "integrity": "sha512-vco3RLVjkcS25dNtj1lxmjq4fC0Nq08KNLMS5cbNPVJWNTuSUi/2EthSTQQCdpfMV/p6u+D5uF20A9Pl0xJFXw==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0", @@ -5326,9 +7884,9 @@ } }, "node_modules/@storybook/addon-toolbars": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.1.10.tgz", - "integrity": "sha512-5bRcCWrhaTX5Y91EWmHilPZ7kZaneaY414Gn5a6gsaNgaVPkSx9KD9j8M9DyXJ4yQNs265TiPWQqWrPB3Q2VgA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-8.1.11.tgz", + "integrity": "sha512-reIKB0+JTiP+GNzynlDcRf4xmv9+j/DQ94qiXl2ZG5+ufKilH8DiRZpVA/i0x+4+TxdGdOJr1/pOf8tAmhNEoQ==", "dev": true, "funding": { "type": "opencollective", @@ -5336,9 +7894,9 @@ } }, "node_modules/@storybook/addon-viewport": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.1.10.tgz", - "integrity": "sha512-rJpyAwTVQa+6yqjdMDeqNKoW5aPoSzBAtMywtNMP5lHwF6NpJUvm67c/ox0//d5dPPPjlJDz2QC2COWqjviQyw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-8.1.11.tgz", + "integrity": "sha512-qk4IcGnAgiAUQxt8l5PIQ293Za+w6wxlJQIpxr7+QM8OVkADPzXY0MmQfYWU9EQplrxAC2MSx3/C1gZeq+MDOQ==", "dev": true, "dependencies": { "memoizerific": "^1.11.3" @@ -5349,23 +7907,23 @@ } }, "node_modules/@storybook/blocks": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.1.10.tgz", - "integrity": "sha512-8ZGgLIUBdSafcyaKR5Zs0CFisFCPoxZBVt3GMUCZtN+G17YhEg4+OnZs5aMZknfnh28BUnZS2STjWTGStAE5Rw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-8.1.11.tgz", + "integrity": "sha512-eMed7PpL/hAVM6tBS7h70bEAyzbiSU9I/kye4jZ7DkCbAsrX6OKmC7pcHSDn712WTcf3vVqxy5jOKUmOXpc0eg==", "dev": true, "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/components": "8.1.10", - "@storybook/core-events": "8.1.10", + "@storybook/channels": "8.1.11", + "@storybook/client-logger": "8.1.11", + "@storybook/components": "8.1.11", + "@storybook/core-events": "8.1.11", "@storybook/csf": "^0.1.7", - "@storybook/docs-tools": "8.1.10", + "@storybook/docs-tools": "8.1.11", "@storybook/global": "^5.0.0", "@storybook/icons": "^1.2.5", - "@storybook/manager-api": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/theming": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/manager-api": "8.1.11", + "@storybook/preview-api": "8.1.11", + "@storybook/theming": "8.1.11", + "@storybook/types": "8.1.11", "@types/lodash": "^4.14.167", "color-convert": "^2.0.1", "dequal": "^2.0.2", @@ -5397,15 +7955,15 @@ } }, "node_modules/@storybook/builder-manager": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.1.10.tgz", - "integrity": "sha512-dhg54zpaglR9XKNAiwMqm5/IONMCEG/hO/iTfNHJI1rAGeWhvM71cmhF+VlKUcjpTlIfHe7J19+TL+sWQJNgtg==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-8.1.11.tgz", + "integrity": "sha512-U7bmed4Ayg+OlJ8HPmLeGxLTHzDY7rxmxM4aAs4YL01fufYfBcjkIP9kFhJm+GJOvGm+YJEUAPe5mbM1P/bn0Q==", "dev": true, "dependencies": { "@fal-works/esbuild-plugin-global-externals": "^2.1.2", - "@storybook/core-common": "8.1.10", - "@storybook/manager": "8.1.10", - "@storybook/node-logger": "8.1.10", + "@storybook/core-common": "8.1.11", + "@storybook/manager": "8.1.11", + "@storybook/node-logger": "8.1.11", "@types/ejs": "^3.1.1", "@yarnpkg/esbuild-plugin-pnp": "^3.0.0-rc.10", "browser-assert": "^1.2.1", @@ -5423,19 +7981,19 @@ } }, "node_modules/@storybook/builder-webpack5": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.1.10.tgz", - "integrity": "sha512-Ume7NN9s7JYAKkVsbw1rDE/T40E4TnUpVvE0wPtSlAwcVh3IJ62MdbLyOmULhVTliKtKlQpxTTAedXtFCLUxiw==", - "dev": true, - "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/core-webpack": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/preview": "8.1.10", - "@storybook/preview-api": "8.1.10", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-8.1.11.tgz", + "integrity": "sha512-3/aKmnZu+mHj5LB4VyvzrlHzn2iVjH5y8EUPtFYOkjc2KBkPpF39jBHecfDVCWeO/6kgvAI41t7LLnYB6DZqhw==", + "dev": true, + "dependencies": { + "@storybook/channels": "8.1.11", + "@storybook/client-logger": "8.1.11", + "@storybook/core-common": "8.1.11", + "@storybook/core-events": "8.1.11", + "@storybook/core-webpack": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/preview": "8.1.11", + "@storybook/preview-api": "8.1.11", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "browser-assert": "^1.2.1", @@ -5495,13 +8053,13 @@ } }, "node_modules/@storybook/channels": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.10.tgz", - "integrity": "sha512-CxZE4XrQoe+F+S2mo8Z9HTvFZKfKHIIiwYfoXKCryVp2U/z7ZKrely2PbfxWsrQvF3H0+oegfYYhYRHRiM21Zw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-8.1.11.tgz", + "integrity": "sha512-fu5FTqo6duOqtJFa6gFzKbiSLJoia+8Tibn3xFfB6BeifWrH81hc+AZq0lTmHo5qax2G5t8ZN8JooHjMw6k2RA==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", + "@storybook/client-logger": "8.1.11", + "@storybook/core-events": "8.1.11", "@storybook/global": "^5.0.0", "telejson": "^7.2.0", "tiny-invariant": "^1.3.1" @@ -5512,22 +8070,22 @@ } }, "node_modules/@storybook/cli": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.1.10.tgz", - "integrity": "sha512-7Fm2Qgk33sHayZ0QABqwe1Jto4yyVRVW6kTrSeP5IuLh+mn244RgxBvWtGCyL1EcWDFI7PYUFa0HxgTCq7C+OA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-8.1.11.tgz", + "integrity": "sha512-4U48w9C7mVEKrykcPcfHwJkRyCqJ28XipbElACbjIIkQEqaHaOVtP3GeKIrgkoOXe/HK3O4zKWRP2SqlVS0r4A==", "dev": true, "dependencies": { "@babel/core": "^7.24.4", "@babel/types": "^7.24.0", "@ndelangen/get-tarball": "^3.0.7", - "@storybook/codemod": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/core-server": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/telemetry": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/codemod": "8.1.11", + "@storybook/core-common": "8.1.11", + "@storybook/core-events": "8.1.11", + "@storybook/core-server": "8.1.11", + "@storybook/csf-tools": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/telemetry": "8.1.11", + "@storybook/types": "8.1.11", "@types/semver": "^7.3.4", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", @@ -5604,9 +8162,9 @@ } }, "node_modules/@storybook/cli/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", @@ -5681,9 +8239,9 @@ } }, "node_modules/@storybook/client-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.10.tgz", - "integrity": "sha512-sVXCOo7jnlCgRPOcMlQGODAEt6ipPj+8xGkRUws0kie77qiDld1drLSB6R380dWc9lUrbv9E1GpxCd/Y4ZzSJQ==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-8.1.11.tgz", + "integrity": "sha512-DVMh2usz3yYmlqCLCiCKy5fT8/UR9aTh+gSqwyNFkGZrIM4otC5A8eMXajXifzotQLT5SaOEnM3WzHwmpvMIEA==", "dev": true, "dependencies": { "@storybook/global": "^5.0.0" @@ -5694,18 +8252,18 @@ } }, "node_modules/@storybook/codemod": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.1.10.tgz", - "integrity": "sha512-HZ/vrseP/sHfbO2RZpImP5eeqOakJ0X31BIiD4uxDBIKGltMXhlPKHTI93O2YGR+vbB33otoTVRjE+ZpPmC6SA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-8.1.11.tgz", + "integrity": "sha512-/LCozjH1IQ1TOs9UQV59BE0X6UZ9q+C0NEUz7qmJZPrwAii3FkW4l7D/fwxblpMExaoxv0oE8NQfUz49U/5Ymg==", "dev": true, "dependencies": { "@babel/core": "^7.24.4", "@babel/preset-env": "^7.24.4", "@babel/types": "^7.24.0", "@storybook/csf": "^0.1.7", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/csf-tools": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/types": "8.1.11", "@types/cross-spawn": "^6.0.2", "cross-spawn": "^7.0.3", "globby": "^14.0.1", @@ -5721,9 +8279,9 @@ } }, "node_modules/@storybook/codemod/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", @@ -5765,19 +8323,19 @@ } }, "node_modules/@storybook/components": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.1.10.tgz", - "integrity": "sha512-fL2odC3Ct3NiFJEiGLmMNB3Tw3CdUDA/+va3Ka/JEhjaRhbsND2JgriHYmED8SnX9CCqwXoxl5QA8qwl+Oyolw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-8.1.11.tgz", + "integrity": "sha512-iXKsNu7VmrLBtjMfPj7S4yJ6T13GU6joKcVcrcw8wfrQJGlPFp4YaURPBUEDxvCt1XWi5JkaqJBvb48kIrROEQ==", "dev": true, "dependencies": { "@radix-ui/react-dialog": "^1.0.5", "@radix-ui/react-slot": "^1.0.2", - "@storybook/client-logger": "8.1.10", + "@storybook/client-logger": "8.1.11", "@storybook/csf": "^0.1.7", "@storybook/global": "^5.0.0", "@storybook/icons": "^1.2.5", - "@storybook/theming": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/theming": "8.1.11", + "@storybook/types": "8.1.11", "memoizerific": "^1.11.3", "util-deprecate": "^1.0.2" }, @@ -5791,15 +8349,15 @@ } }, "node_modules/@storybook/core-common": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.10.tgz", - "integrity": "sha512-+0GhgDRQwUlXu1lY77NdLnVBVycCEW0DG7eu7rvLYYkTyNRxbdl2RWsQpjr/j4sxqT6u82l9/b+RWpmsl4MgMQ==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-8.1.11.tgz", + "integrity": "sha512-Ix0nplD4I4DrV2t9B+62jaw1baKES9UbR/Jz9LVKFF9nsua3ON0aVe73dOjMxFWBngpzBYWe+zYBTZ7aQtDH4Q==", "dev": true, "dependencies": { - "@storybook/core-events": "8.1.10", - "@storybook/csf-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/core-events": "8.1.11", + "@storybook/csf-tools": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/types": "8.1.11", "@yarnpkg/fslib": "2.10.3", "@yarnpkg/libzip": "2.3.0", "chalk": "^4.1.0", @@ -5904,9 +8462,9 @@ } }, "node_modules/@storybook/core-events": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.10.tgz", - "integrity": "sha512-aS4zsBVyJds74+rAW0IfTEjULDCQwXecVpQfv11B8/89/07s3bOPssGGoTtCTaN4pHbduywE6MxbmFvTmXOFCA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-8.1.11.tgz", + "integrity": "sha512-vXaNe2KEW9BGlLrg0lzmf5cJ0xt+suPjWmEODH5JqBbrdZ67X6ApA2nb6WcxDQhykesWCuFN5gp1l+JuDOBi7A==", "dev": true, "dependencies": { "@storybook/csf": "^0.1.7", @@ -5918,29 +8476,29 @@ } }, "node_modules/@storybook/core-server": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.1.10.tgz", - "integrity": "sha512-jNL5/daNyo7Rcu+y/bOmSB1P65pmcaLwvpr31EUEIISaAqvgruaneS3GKHg2TR0wcxEoHaM4abqhW6iwkI/XYQ==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-8.1.11.tgz", + "integrity": "sha512-L6dzQTmR0np/kagNONvvlm6lSvF1FNc9js3vxsEEPnEypLbhx8bDZaHmuhmBpYUzKyUMpRVQTE/WgjHLuBBuxA==", "dev": true, "dependencies": { "@aw-web-design/x-default-browser": "1.4.126", "@babel/core": "^7.24.4", "@babel/parser": "^7.24.4", "@discoveryjs/json-ext": "^0.5.3", - "@storybook/builder-manager": "8.1.10", - "@storybook/channels": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", + "@storybook/builder-manager": "8.1.11", + "@storybook/channels": "8.1.11", + "@storybook/core-common": "8.1.11", + "@storybook/core-events": "8.1.11", "@storybook/csf": "^0.1.7", - "@storybook/csf-tools": "8.1.10", + "@storybook/csf-tools": "8.1.11", "@storybook/docs-mdx": "3.1.0-next.0", "@storybook/global": "^5.0.0", - "@storybook/manager": "8.1.10", - "@storybook/manager-api": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/telemetry": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/manager": "8.1.11", + "@storybook/manager-api": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/preview-api": "8.1.11", + "@storybook/telemetry": "8.1.11", + "@storybook/types": "8.1.11", "@types/detect-port": "^1.3.0", "@types/diff": "^5.0.9", "@types/node": "^18.0.0", @@ -6015,9 +8573,9 @@ } }, "node_modules/@storybook/core-server/node_modules/globby": { - "version": "14.0.1", - "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.1.tgz", - "integrity": "sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==", + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", "dev": true, "dependencies": { "@sindresorhus/merge-streams": "^2.1.0", @@ -6092,14 +8650,14 @@ } }, "node_modules/@storybook/core-webpack": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.1.10.tgz", - "integrity": "sha512-5CPiGtOyomHYFlH7nhjZtWLQ+EVMf2dG8vsqBfjSVddfspgEA8wKj4Oqal1Juj8Uop2ZdyzlcrFwOgXuwqxgCA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-8.1.11.tgz", + "integrity": "sha512-UQY+t0BDb408OuxW6jQN1ghXcejZlFNgprgvuKlhY3MSv1XwmjrxBDwnLDat4QfBJHFbjdn4eR7pSBzrfE6tKA==", "dev": true, "dependencies": { - "@storybook/core-common": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/core-common": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/types": "8.1.11", "@types/node": "^18.0.0", "ts-dedent": "^2.0.0" }, @@ -6118,21 +8676,21 @@ } }, "node_modules/@storybook/csf": { - "version": "0.1.9", - "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.9.tgz", - "integrity": "sha512-JlZ6v/iFn+iKohKGpYXnMeNeTiiAMeFoDhYnPLIC8GnyyIWqEI9wJYrOK9i9rxlJ8NZAH/ojGC/u/xVC41qSgQ==", + "version": "0.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.11.tgz", + "integrity": "sha512-dHYFQH3mA+EtnCkHXzicbLgsvzYjcDJ1JWsogbItZogkPHgSJM/Wr71uMkcvw8v9mmCyP4NpXJuu6bPoVsOnzg==", "dev": true, "dependencies": { "type-fest": "^2.19.0" } }, "node_modules/@storybook/csf-plugin": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.1.10.tgz", - "integrity": "sha512-EwW9Olw85nKamUH/2YrkD+bxDvDP4TJ2MqS1qR3UU+lBP/HMQA2zFAgiW1TUmmdHmhAeiDOXbDhijxMa30sppQ==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-8.1.11.tgz", + "integrity": "sha512-hkA8gjFtSN/tabG0cuvmEqanMXtxPr3qTkp4UNSt1R6jBEgFHRG2y/KYLl367kDwOSFTT987ZgRfJJruU66Fvw==", "dev": true, "dependencies": { - "@storybook/csf-tools": "8.1.10", + "@storybook/csf-tools": "8.1.11", "unplugin": "^1.3.1" }, "funding": { @@ -6141,9 +8699,9 @@ } }, "node_modules/@storybook/csf-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.10.tgz", - "integrity": "sha512-bm/J1jAJf1YaKhcXgOlsNN02sf8XvILXuVAvr9cFC3aFkxVoGbC2AKCss4cgXAd8EQxUNtyETkOcheB5mJ5IlA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-8.1.11.tgz", + "integrity": "sha512-6qMWAg/dBwCVIHzANM9lSHoirwqSS+wWmv+NwAs0t9S94M75IttHYxD3IyzwaSYCC5llp0EQFvtXXAuSfFbibg==", "dev": true, "dependencies": { "@babel/generator": "^7.24.4", @@ -6151,7 +8709,7 @@ "@babel/traverse": "^7.24.1", "@babel/types": "^7.24.0", "@storybook/csf": "^0.1.7", - "@storybook/types": "8.1.10", + "@storybook/types": "8.1.11", "fs-extra": "^11.1.0", "recast": "^0.23.5", "ts-dedent": "^2.0.0" @@ -6168,15 +8726,15 @@ "dev": true }, "node_modules/@storybook/docs-tools": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.1.10.tgz", - "integrity": "sha512-FsO/+L9CrUfAIbm9cdH9UpjTusT7L5RZxN4WCXkiF5SpAVyBoY8kar3RzTZVoh4aQxt1yGWYC+SZGjgf++xa4g==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-8.1.11.tgz", + "integrity": "sha512-mEXtR9rS7Y+OdKtT/QG6JBGYR1L41mcDhIqhnk7RmYl9qJstVAegrCKWR53sPKFdTVOHU7dmu6k+BD+TqHpyyw==", "dev": true, "dependencies": { - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/core-common": "8.1.11", + "@storybook/core-events": "8.1.11", + "@storybook/preview-api": "8.1.11", + "@storybook/types": "8.1.11", "@types/doctrine": "^0.0.3", "assert": "^2.1.0", "doctrine": "^3.0.0", @@ -6207,16 +8765,16 @@ } }, "node_modules/@storybook/instrumenter": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.1.10.tgz", - "integrity": "sha512-/TZ3JpTCorbhThCfaR5k4Vs0Svp6xz6t+FVaim/v7N9VErEfmtn+d76CqYLfvmo68DzkEzvArOFBdh2MXtscsw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/instrumenter/-/instrumenter-8.1.11.tgz", + "integrity": "sha512-r/U9hcqnodNMHuzRt1g56mWrVsDazR85Djz64M3KOwBhrTj5d46DF4/EE80w/5zR5JOrT7p8WmjJRowiVteOCQ==", "dev": true, "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", + "@storybook/channels": "8.1.11", + "@storybook/client-logger": "8.1.11", + "@storybook/core-events": "8.1.11", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "8.1.10", + "@storybook/preview-api": "8.1.11", "@vitest/utils": "^1.3.1", "util": "^0.12.4" }, @@ -6226,9 +8784,9 @@ } }, "node_modules/@storybook/manager": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.1.10.tgz", - "integrity": "sha512-dQmRBfT4CABIPhv0kL25qKcQk2SiU5mIZ1DuVzckIbZW+iYEOAusyJ/0HExM9leCrymaW3BgZGlHbIXL7EvZtw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-8.1.11.tgz", + "integrity": "sha512-e02y9dmxowo7cTKYm9am7UO6NOHoHy6Xi7xZf/UA932qLwFZUtk5pnwIEFaZWI3OQsRUCGhP+FL5zizU7uVZeg==", "dev": true, "funding": { "type": "opencollective", @@ -6236,20 +8794,20 @@ } }, "node_modules/@storybook/manager-api": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.1.10.tgz", - "integrity": "sha512-9aZ+zoNrTo1BJskVmCKE/yqlBXmWaKVZh1W/+/xu3WL9wdm/tBlozRvQwegIZlRVvUOxtjOg28Vd2hySYL58zg==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-8.1.11.tgz", + "integrity": "sha512-QSgwKfAw01K9YvvZj30iGBMgQ4YaCT3vojmttuqdH5ukyXkiO7pENLJj4Y+alwUeSi0g+SJeadCI3PXySBHOGg==", "dev": true, "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", + "@storybook/channels": "8.1.11", + "@storybook/client-logger": "8.1.11", + "@storybook/core-events": "8.1.11", "@storybook/csf": "^0.1.7", "@storybook/global": "^5.0.0", "@storybook/icons": "^1.2.5", - "@storybook/router": "8.1.10", - "@storybook/theming": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/router": "8.1.11", + "@storybook/theming": "8.1.11", + "@storybook/types": "8.1.11", "dequal": "^2.0.2", "lodash": "^4.17.21", "memoizerific": "^1.11.3", @@ -6263,9 +8821,9 @@ } }, "node_modules/@storybook/nextjs": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.1.10.tgz", - "integrity": "sha512-0crOEEXjicj5QRAknH1k3mrnmx+2yUVNmXHwMKb8Jkh4bBb9W+dYsMpTUmiTcL2p5zA0y8UMmM8lb5xF34eqdw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/nextjs/-/nextjs-8.1.11.tgz", + "integrity": "sha512-pY83TdMn/TdIPFBV9k6H3Gn1wMQW9rJ3flWVBJcgAt346bJB8fEgHIGJ8XHMlQe2Zyg5B+Is0TsSrIs9VT/bCg==", "dev": true, "dependencies": { "@babel/core": "^7.24.4", @@ -6282,15 +8840,15 @@ "@babel/preset-typescript": "^7.24.1", "@babel/runtime": "^7.24.4", "@pmmmwh/react-refresh-webpack-plugin": "^0.5.11", - "@storybook/builder-webpack5": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/preset-react-webpack": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@storybook/react": "8.1.10", - "@storybook/test": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/builder-webpack5": "8.1.11", + "@storybook/core-common": "8.1.11", + "@storybook/core-events": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/preset-react-webpack": "8.1.11", + "@storybook/preview-api": "8.1.11", + "@storybook/react": "8.1.11", + "@storybook/test": "8.1.11", + "@storybook/types": "8.1.11", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", "babel-loader": "^9.1.3", @@ -6360,9 +8918,9 @@ } }, "node_modules/@storybook/node-logger": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.10.tgz", - "integrity": "sha512-djgbAROgGAvz/gr49egBxCHn1+rui57e76qa9aOMPzEBcxsGrnnKKp0uNdiNt4M7Xv6S2QHbJ2SfOlHhWmMeaA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-8.1.11.tgz", + "integrity": "sha512-wdzFo7B2naGhS52L3n1qBkt5BfvQjs8uax6B741yKRpiGgeAN8nz8+qelkD25MbSukxvbPgDot7WJvsMU/iCzg==", "dev": true, "funding": { "type": "opencollective", @@ -6370,15 +8928,15 @@ } }, "node_modules/@storybook/preset-react-webpack": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.1.10.tgz", - "integrity": "sha512-nnTU9UuFL7zfrNnsXrxiArxU3ZoVfYfHrRzmfPBgM9lDSZI7k0RCxoU3zlhWuQRGnYpXPtakDNBBT88FU/l5+g==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-8.1.11.tgz", + "integrity": "sha512-2a+1TyztCOlwZAcfBUinzjTpaqsWNrco9Vfq5ueJTmNl/EwtN33sxoAu2bBaUkka8MvPZl5a1VP1b5e2GXHFEQ==", "dev": true, "dependencies": { - "@storybook/core-webpack": "8.1.10", - "@storybook/docs-tools": "8.1.10", - "@storybook/node-logger": "8.1.10", - "@storybook/react": "8.1.10", + "@storybook/core-webpack": "8.1.11", + "@storybook/docs-tools": "8.1.11", + "@storybook/node-logger": "8.1.11", + "@storybook/react": "8.1.11", "@storybook/react-docgen-typescript-plugin": "1.0.6--canary.9.0c3f3b7.0", "@types/node": "^18.0.0", "@types/semver": "^7.3.4", @@ -6430,9 +8988,9 @@ } }, "node_modules/@storybook/preview": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.1.10.tgz", - "integrity": "sha512-Ch7SJQ8/vm4o7ZPwPeL3nGOCKx1Aul7VcvOVkDs+K2lZusJjUROHVTBYlbs71DTTmCo2gS7WhSq+HOpD59BPDg==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-8.1.11.tgz", + "integrity": "sha512-K/9NZmjnL0D1BROkTNWNoPqgL2UaocALRSqCARmkBLgU2Rn/FuZgEclHkWlYo6pUrmLNK+bZ+XzpNMu12iTbpg==", "dev": true, "funding": { "type": "opencollective", @@ -6440,17 +8998,17 @@ } }, "node_modules/@storybook/preview-api": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.10.tgz", - "integrity": "sha512-0Gl8WHDtp/srrA5uBYXl7YbC8kFQA7IxVmwWN7dIS7HAXu63JZ6JfxaFcfy+kCBfZSBD7spFG4J0f5JXRDYbpg==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-8.1.11.tgz", + "integrity": "sha512-8ZChmFV56GKppCJ0hnBd/kNTfGn2gWVq1242kuet13pbJtBpvOhyq4W01e/Yo14tAPXvgz8dSnMvWLbJx4QfhQ==", "dev": true, "dependencies": { - "@storybook/channels": "8.1.10", - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", + "@storybook/channels": "8.1.11", + "@storybook/client-logger": "8.1.11", + "@storybook/core-events": "8.1.11", "@storybook/csf": "^0.1.7", "@storybook/global": "^5.0.0", - "@storybook/types": "8.1.10", + "@storybook/types": "8.1.11", "@types/qs": "^6.9.5", "dequal": "^2.0.2", "lodash": "^4.17.21", @@ -6466,17 +9024,17 @@ } }, "node_modules/@storybook/react": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.1.10.tgz", - "integrity": "sha512-y0ycq19tTLLk+4rB+nfCPCtoFBWC0QvmMaJY32dbAjWPk+UNFGhWdqjg0oP1NwXYL18WnhRzlyz1Rojw0aXk1w==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-8.1.11.tgz", + "integrity": "sha512-t+EYXOkgwg3ropLGS9y8gGvX5/Okffu/6JYL3YWksrBGAZSqVV4NkxCnVJZepS717SyhR0tN741gv/SxxFPJMg==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/docs-tools": "8.1.10", + "@storybook/client-logger": "8.1.11", + "@storybook/docs-tools": "8.1.11", "@storybook/global": "^5.0.0", - "@storybook/preview-api": "8.1.10", - "@storybook/react-dom-shim": "8.1.10", - "@storybook/types": "8.1.10", + "@storybook/preview-api": "8.1.11", + "@storybook/react-dom-shim": "8.1.11", + "@storybook/types": "8.1.11", "@types/escodegen": "^0.0.6", "@types/estree": "^0.0.51", "@types/node": "^18.0.0", @@ -6537,9 +9095,9 @@ "dev": true }, "node_modules/@storybook/react-dom-shim": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.1.10.tgz", - "integrity": "sha512-+HS75Pq8jb3xkVq0hK33D84aGfbJCURRB+GN2vfTMmmjguQt7z2+MnGqRgrUCt6h2rxU3VdPg9OBnYi/UC0Zrg==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-8.1.11.tgz", + "integrity": "sha512-KVDSuipqkFjpGfldoRM5xR/N1/RNmbr+sVXqMmelr0zV2jGnexEZnoa7wRHk7IuXuivLWe8BxMxzvQWqjIa4GA==", "dev": true, "funding": { "type": "opencollective", @@ -6572,12 +9130,12 @@ } }, "node_modules/@storybook/router": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.1.10.tgz", - "integrity": "sha512-JDEgZ0vVDx0GLz+dKD+R1xqWwjqsCdA2F+s3/si7upHqkFRWU5ocextZ63oKsRnCoaeUh6OavAU4EdkrKiQtQw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-8.1.11.tgz", + "integrity": "sha512-nU5lsBvy0L8wBYOkjagh29ztZicDATpZNYrHuavlhQ2jznmmHdJvXKYk+VrMAbthjQ6ZBqfeeMNPR1UlnqR5Rw==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.1.10", + "@storybook/client-logger": "8.1.11", "memoizerific": "^1.11.3", "qs": "^6.10.0" }, @@ -6587,14 +9145,14 @@ } }, "node_modules/@storybook/telemetry": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.1.10.tgz", - "integrity": "sha512-pwiMWrq85D0AnaAgYNfB2w2BDgqnetQ+tXwsUAw4fUEFwA4oPU6r0uqekRbNNE6wmSSYjiiFP3JgknBFqjd2hg==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-8.1.11.tgz", + "integrity": "sha512-Jqvm7HcZismKzPuebhyLECO6KjGiSk4ycbca1WUM/TUvifxCXqgoUPlHHQEEfaRdHS63/MSqtMNjLsQRLC/vNQ==", "dev": true, "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-common": "8.1.10", - "@storybook/csf-tools": "8.1.10", + "@storybook/client-logger": "8.1.11", + "@storybook/core-common": "8.1.11", + "@storybook/csf-tools": "8.1.11", "chalk": "^4.1.0", "detect-package-manager": "^2.0.1", "fetch-retry": "^5.0.2", @@ -6659,20 +9217,20 @@ } }, "node_modules/@storybook/test": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.1.10.tgz", - "integrity": "sha512-uskw/xb/GkGLRTEKPao/5xUKxjP1X3DnDpE52xDF46ZmTvM+gPQbkex97qdG6Mfv37/0lhVhufAsV3g5+CrYKQ==", - "dev": true, - "dependencies": { - "@storybook/client-logger": "8.1.10", - "@storybook/core-events": "8.1.10", - "@storybook/instrumenter": "8.1.10", - "@storybook/preview-api": "8.1.10", - "@testing-library/dom": "^9.3.4", - "@testing-library/jest-dom": "^6.4.2", - "@testing-library/user-event": "^14.5.2", - "@vitest/expect": "1.3.1", - "@vitest/spy": "^1.3.1", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/test/-/test-8.1.11.tgz", + "integrity": "sha512-k+V3HemF2/I8fkRxRqM8uH8ULrpBSAAdBOtWSHWLvHguVcb2YA4g4kKo6tXBB9256QfyDW4ZiaAj0/9TMxmJPQ==", + "dev": true, + "dependencies": { + "@storybook/client-logger": "8.1.11", + "@storybook/core-events": "8.1.11", + "@storybook/instrumenter": "8.1.11", + "@storybook/preview-api": "8.1.11", + "@testing-library/dom": "10.1.0", + "@testing-library/jest-dom": "6.4.5", + "@testing-library/user-event": "14.5.2", + "@vitest/expect": "1.6.0", + "@vitest/spy": "1.6.0", "util": "^0.12.4" }, "funding": { @@ -6681,24 +9239,88 @@ } }, "node_modules/@storybook/test/node_modules/@testing-library/dom": { - "version": "9.3.4", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.4.tgz", - "integrity": "sha512-FlS4ZWlp97iiNWig0Muq8p+3rVDjRiYE+YKGbAqXOu9nwJFFOdL00kFpz42M+4huzYi86vAK1sOOfyOG45muIQ==", + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.1.0.tgz", + "integrity": "sha512-wdsYKy5zupPyLCW2Je5DLHSxSfbIp6h80WoHOQc+RPtmPGA52O9x5MJEkv92Sjonpq+poOAtUKhh1kBGAXBrNA==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", "@types/aria-query": "^5.0.1", - "aria-query": "5.1.3", + "aria-query": "5.3.0", "chalk": "^4.1.0", "dom-accessibility-api": "^0.5.9", "lz-string": "^1.5.0", "pretty-format": "^27.0.2" }, "engines": { - "node": ">=14" + "node": ">=18" + } + }, + "node_modules/@storybook/test/node_modules/@testing-library/jest-dom": { + "version": "6.4.5", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-6.4.5.tgz", + "integrity": "sha512-AguB9yvTXmCnySBP1lWjfNNUwpbElsaQ567lt2VdGqAdHtpieLgjmcVyv1q7PMIvLbgpDdkWV5Ydv3FEejyp2A==", + "dev": true, + "dependencies": { + "@adobe/css-tools": "^4.3.2", + "@babel/runtime": "^7.9.2", + "aria-query": "^5.0.0", + "chalk": "^3.0.0", + "css.escape": "^1.5.1", + "dom-accessibility-api": "^0.6.3", + "lodash": "^4.17.21", + "redent": "^3.0.0" + }, + "engines": { + "node": ">=14", + "npm": ">=6", + "yarn": ">=1" + }, + "peerDependencies": { + "@jest/globals": ">= 28", + "@types/bun": "latest", + "@types/jest": ">= 28", + "jest": ">= 28", + "vitest": ">= 0.32" + }, + "peerDependenciesMeta": { + "@jest/globals": { + "optional": true + }, + "@types/bun": { + "optional": true + }, + "@types/jest": { + "optional": true + }, + "jest": { + "optional": true + }, + "vitest": { + "optional": true + } + } + }, + "node_modules/@storybook/test/node_modules/@testing-library/jest-dom/node_modules/chalk": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=8" } }, + "node_modules/@storybook/test/node_modules/@testing-library/jest-dom/node_modules/dom-accessibility-api": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.6.3.tgz", + "integrity": "sha512-7ZgogeTnjuHbo+ct10G9Ffp0mif17idi0IyWNVA/wcwcm7NPOD/WEHVP3n7n3MhXqxoIYm8d6MuZohYWIZ4T3w==", + "dev": true + }, "node_modules/@storybook/test/node_modules/ansi-styles": { "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", @@ -6714,15 +9336,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/@storybook/test/node_modules/aria-query": { - "version": "5.1.3", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", - "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", - "dev": true, - "dependencies": { - "deep-equal": "^2.0.5" - } - }, "node_modules/@storybook/test/node_modules/chalk": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", @@ -6761,13 +9374,13 @@ } }, "node_modules/@storybook/theming": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.10.tgz", - "integrity": "sha512-W7mth4hwdTqWLneqYCyUnIEiDg4vSokoad8HEodPz6JC9XUPUX3Yi2W4W3xFvqrW4Z5RXfuJ53iG2HN+0AgaQw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-8.1.11.tgz", + "integrity": "sha512-Chn/opjO6Rl1isNobutYqAH2PjKNkj09YBw/8noomk6gElSa3JbUTyaG/+JCHA6OG/9kUsqoKDb5cZmAKNq/jA==", "dev": true, "dependencies": { "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", - "@storybook/client-logger": "8.1.10", + "@storybook/client-logger": "8.1.11", "@storybook/global": "^5.0.0", "memoizerific": "^1.11.3" }, @@ -6789,12 +9402,12 @@ } }, "node_modules/@storybook/types": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.10.tgz", - "integrity": "sha512-UJ97iqI+0Mk13I6ayd3TaBfSFBkWnEauwTnFMQe1dN/L3wTh8laOBaLa0Vr3utRSnt2b5hpcw/nq7azB/Gx4Yw==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-8.1.11.tgz", + "integrity": "sha512-k9N5iRuY2+t7lVRL6xeu6diNsxO3YI3lS4Juv3RZ2K4QsE/b3yG5ElfJB8DjHDSHwRH4ORyrU71KkOCUVfvtnw==", "dev": true, "dependencies": { - "@storybook/channels": "8.1.10", + "@storybook/channels": "8.1.11", "@types/express": "^4.7.0", "file-system-cache": "2.3.0" }, @@ -6823,18 +9436,18 @@ "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/@tanstack/query-core": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.48.0.tgz", - "integrity": "sha512-lZAfPPeVIqXCswE9SSbG33B6/91XOWt/Iq41bFeWb/mnHwQSIfFRbkS4bfs+WhIk9abRArF9Id2fp0Mgo+hq6Q==", + "version": "5.49.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-core/-/query-core-5.49.1.tgz", + "integrity": "sha512-JnC9ndmD1KKS01Rt/ovRUB1tmwO7zkyXAyIxN9mznuJrcNtOrkmOnQqdJF2ib9oHzc2VxHomnEG7xyfo54Npkw==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" } }, "node_modules/@tanstack/query-devtools": { - "version": "5.47.0", - "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.47.0.tgz", - "integrity": "sha512-oo10s7Nqaf/Q3QF4vuSwS0xw7zuYr5nXef4RHQIXVJKvRQeo9WowPLAnB0SF/voB0c4GTX6Vq8wfQ1G72ezEdw==", + "version": "5.49.1", + "resolved": "https://registry.npmjs.org/@tanstack/query-devtools/-/query-devtools-5.49.1.tgz", + "integrity": "sha512-9mBtuq76fp+OE780ImoNG109bM7lucZ9MLPLzAkQ2OMx+X6s3BfVATySTxm1Mrtui3qJIFo05ZI4zv9A44+GAg==", "dev": true, "funding": { "type": "github", @@ -6842,11 +9455,11 @@ } }, "node_modules/@tanstack/react-query": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.48.0.tgz", - "integrity": "sha512-GDExbjYWzvDokyRqMSWXdrPiYpp95Aig0oeMIrxTaruOJJgWiWfUP//OAaowm2RrRkGVsavSZdko/XmIrrV2Nw==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query/-/react-query-5.49.2.tgz", + "integrity": "sha512-6rfwXDK9BvmHISbNFuGd+wY3P44lyW7lWiA9vIFGT/T0P9aHD1VkjTvcM4SDAIbAQ9ygEZZoLt7dlU1o3NjMVA==", "dependencies": { - "@tanstack/query-core": "5.48.0" + "@tanstack/query-core": "5.49.1" }, "funding": { "type": "github", @@ -6857,28 +9470,28 @@ } }, "node_modules/@tanstack/react-query-devtools": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.48.0.tgz", - "integrity": "sha512-0xvk8KDvEfQuLz3dy9jqtP0f6iR724d57Br7KtrtClbyqB53cy3Iy6BiTsiHaSsYnex/+cxWJZIX1UJWeV8Amw==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-query-devtools/-/react-query-devtools-5.49.2.tgz", + "integrity": "sha512-ARQ8GXaTcwXyXIv215sfFqT9s87Jj8vP8jAc9LlC28M+4RbexfBRvm+cra3Cn/xlXJrUEjijf+vUf1Ju9F1XJQ==", "dev": true, "dependencies": { - "@tanstack/query-devtools": "5.47.0" + "@tanstack/query-devtools": "5.49.1" }, "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" }, "peerDependencies": { - "@tanstack/react-query": "^5.48.0", + "@tanstack/react-query": "^5.49.2", "react": "^18 || ^19" } }, "node_modules/@tanstack/react-table": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.17.3.tgz", - "integrity": "sha512-5gwg5SvPD3lNAXPuJJz1fOCEZYk9/GeBFH3w/hCgnfyszOIzwkwgp5I7Q4MJtn0WECp84b5STQUDdmvGi8m3nA==", + "version": "8.19.2", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.19.2.tgz", + "integrity": "sha512-itoSIAkA/Vsg+bjY23FSemcTyPhc5/1YjYyaMsr9QSH/cdbZnQxHVWrpWn0Sp2BWN71qkzR7e5ye8WuMmwyOjg==", "dependencies": { - "@tanstack/table-core": "8.17.3" + "@tanstack/table-core": "8.19.2" }, "engines": { "node": ">=12" @@ -6893,9 +9506,9 @@ } }, "node_modules/@tanstack/table-core": { - "version": "8.17.3", - "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.17.3.tgz", - "integrity": "sha512-mPBodDGVL+fl6d90wUREepHa/7lhsghg2A3vFpakEhrhtbIlgNAZiMr7ccTgak5qbHqF14Fwy+W1yFWQt+WmYQ==", + "version": "8.19.2", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.19.2.tgz", + "integrity": "sha512-KpRjhgehIhbfH78ARm/GJDXGnpdw4bCg3qas6yjWSi7czJhI/J6pWln7NHtmBkGE9ZbohiiNtLqwGzKmBfixig==", "engines": { "node": ">=12" }, @@ -6905,9 +9518,9 @@ } }, "node_modules/@testing-library/dom": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.2.0.tgz", - "integrity": "sha512-CytIvb6tVOADRngTHGWNxH8LPgO/3hi/BdCEHOf7Qd2GvZVClhVP0Wo/QHzWhpki49Bk0b4VT6xpt3fx8HTSIw==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-10.3.0.tgz", + "integrity": "sha512-pT/TYB2+IyMYkkB6lqpkzD7VFbsR0JBJtflK3cS68sCNWxmOhWwRm1XvVHlseNEorsNcxkYsb4sRDV3aNIpttg==", "dev": true, "dependencies": { "@babel/code-frame": "^7.10.4", @@ -7128,25 +9741,25 @@ "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.11.tgz", "integrity": "sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==", - "dev": true + "devOptional": true }, "node_modules/@tsconfig/node12": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/@tsconfig/node12/-/node12-1.0.11.tgz", "integrity": "sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==", - "dev": true + "devOptional": true }, "node_modules/@tsconfig/node14": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node14/-/node14-1.0.3.tgz", "integrity": "sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==", - "dev": true + "devOptional": true }, "node_modules/@tsconfig/node16": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.4.tgz", "integrity": "sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==", - "dev": true + "devOptional": true }, "node_modules/@types/aria-query": { "version": "5.0.4", @@ -7444,9 +10057,17 @@ "dev": true }, "node_modules/@types/lodash": { - "version": "4.17.5", - "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.5.tgz", - "integrity": "sha512-MBIOHVZqVqgfro1euRDWX7OO0fBVUUMrN6Pwm8LQsz8cWhEpihlvR70ENj3f40j58TNxZaWv2ndSkInykNBBJw==" + "version": "4.17.6", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.6.tgz", + "integrity": "sha512-OpXEVoCKSS3lQqjx9GGGOapBeuW5eUboYHRlHP9urXPX25IKZ6AnP5ZRxtVf63iieUbsHxLn8NQ5Nlftc6yzAA==" + }, + "node_modules/@types/lodash.debounce": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.9.tgz", + "integrity": "sha512-Ma5JcgTREwpLRwMM+XwBR7DaWe96nC38uCBDFKZWbNKD+osjVzdpnUSwBcqCptrp16sSOLBAUb50Car5I0TCsQ==", + "dependencies": { + "@types/lodash": "*" + } }, "node_modules/@types/mdx": { "version": "2.0.13", @@ -7473,7 +10094,7 @@ "version": "20.14.9", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.9.tgz", "integrity": "sha512-06OCtnTXtWOZBJlRApleWndH4JsRVs1pDCc8dLSQp+7PpUpX3ePdHyeNSFTeSe7FtKyQkrlPvHwJOW3SLd8Oyg==", - "dev": true, + "devOptional": true, "dependencies": { "undici-types": "~5.26.4" } @@ -7690,16 +10311,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.14.1.tgz", - "integrity": "sha512-aAJd6bIf2vvQRjUG3ZkNXkmBpN+J7Wd0mfQiiVCJMu9Z5GcZZdcc0j8XwN/BM97Fl7e3SkTXODSk4VehUv7CGw==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.15.0.tgz", + "integrity": "sha512-uiNHpyjZtFrLwLDpHnzaDlP3Tt6sGMqTCiqmxaN4n4RP0EfYZDODJyddiFDF44Hjwxr5xAcaYxVKm9QKQFJFLA==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.10.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/type-utils": "7.14.1", - "@typescript-eslint/utils": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/type-utils": "7.15.0", + "@typescript-eslint/utils": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "graphemer": "^1.4.0", "ignore": "^5.3.1", "natural-compare": "^1.4.0", @@ -7723,15 +10344,15 @@ } }, "node_modules/@typescript-eslint/parser": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.14.1.tgz", - "integrity": "sha512-8lKUOebNLcR0D7RvlcloOacTOWzOqemWEWkKSVpMZVF/XVcwjPR+3MD08QzbW9TCGJ+DwIc6zUSGZ9vd8cO1IA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.15.0.tgz", + "integrity": "sha512-k9fYuQNnypLFcqORNClRykkGOMOj+pV6V91R4GO/l1FDGwpqmSwoOQrOHo3cGaH63e+D3ZiCAOsuS/D2c99j/A==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "debug": "^4.3.4" }, "engines": { @@ -7751,13 +10372,13 @@ } }, "node_modules/@typescript-eslint/scope-manager": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.14.1.tgz", - "integrity": "sha512-gPrFSsoYcsffYXTOZ+hT7fyJr95rdVe4kGVX1ps/dJ+DfmlnjFN/GcMxXcVkeHDKqsq6uAcVaQaIi3cFffmAbA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.15.0.tgz", + "integrity": "sha512-Q/1yrF/XbxOTvttNVPihxh1b9fxamjEoz2Os/Pe38OHwxC24CyCqXxGTOdpb4lt6HYtqw9HetA/Rf6gDGaMPlw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1" + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7768,13 +10389,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.14.1.tgz", - "integrity": "sha512-/MzmgNd3nnbDbOi3LfasXWWe292+iuo+umJ0bCCMCPc1jLO/z2BQmWUUUXvXLbrQey/JgzdF/OV+I5bzEGwJkQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.15.0.tgz", + "integrity": "sha512-SkgriaeV6PDvpA6253PDVep0qCqgbO1IOBiycjnXsszNTVQe5flN5wR5jiczoEoDEnAqYFSFFc9al9BSGVltkg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "7.14.1", - "@typescript-eslint/utils": "7.14.1", + "@typescript-eslint/typescript-estree": "7.15.0", + "@typescript-eslint/utils": "7.15.0", "debug": "^4.3.4", "ts-api-utils": "^1.3.0" }, @@ -7795,9 +10416,9 @@ } }, "node_modules/@typescript-eslint/types": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.14.1.tgz", - "integrity": "sha512-mL7zNEOQybo5R3AavY+Am7KLv8BorIv7HCYS5rKoNZKQD9tsfGUpO4KdAn3sSUvTiS4PQkr2+K0KJbxj8H9NDg==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.15.0.tgz", + "integrity": "sha512-aV1+B1+ySXbQH0pLK0rx66I3IkiZNidYobyfn0WFsdGhSXw+P3YOqeTq5GED458SfB24tg+ux3S+9g118hjlTw==", "dev": true, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7808,13 +10429,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.14.1.tgz", - "integrity": "sha512-k5d0VuxViE2ulIO6FbxxSZaxqDVUyMbXcidC8rHvii0I56XZPv8cq+EhMns+d/EVIL41sMXqRbK3D10Oza1bbA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.15.0.tgz", + "integrity": "sha512-gjyB/rHAopL/XxfmYThQbXbzRMGhZzGw6KpcMbfe8Q3nNQKStpxnUKeXb0KiN/fFDR42Z43szs6rY7eHk0zdGQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/visitor-keys": "7.14.1", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/visitor-keys": "7.15.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -7848,15 +10469,15 @@ } }, "node_modules/@typescript-eslint/utils": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.14.1.tgz", - "integrity": "sha512-CMmVVELns3nak3cpJhZosDkm63n+DwBlDX8g0k4QUa9BMnF+lH2lr3d130M1Zt1xxmB3LLk3NV7KQCq86ZBBhQ==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.15.0.tgz", + "integrity": "sha512-hfDMDqaqOqsUVGiEPSMLR/AjTSCsmJwjpKkYQRo1FNbmW4tBwBspYDwO9eh7sKSTwMQgBw9/T4DHudPaqshRWA==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", - "@typescript-eslint/scope-manager": "7.14.1", - "@typescript-eslint/types": "7.14.1", - "@typescript-eslint/typescript-estree": "7.14.1" + "@typescript-eslint/scope-manager": "7.15.0", + "@typescript-eslint/types": "7.15.0", + "@typescript-eslint/typescript-estree": "7.15.0" }, "engines": { "node": "^18.18.0 || >=20.0.0" @@ -7870,12 +10491,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "7.14.1", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.14.1.tgz", - "integrity": "sha512-Crb+F75U1JAEtBeQGxSKwI60hZmmzaqA3z9sYsVm8X7W5cwLEm5bRe0/uXS6+MR/y8CVpKSR/ontIAIEPFcEkA==", + "version": "7.15.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.15.0.tgz", + "integrity": "sha512-Hqgy/ETgpt2L5xueA/zHHIl4fJI2O4XUE9l4+OIfbJIRSnTJb/QscncdqqZzofQegIJugRIF57OJea1khw2SDw==", "dev": true, "dependencies": { - "@typescript-eslint/types": "7.14.1", + "@typescript-eslint/types": "7.15.0", "eslint-visitor-keys": "^3.4.3" }, "engines": { @@ -7893,78 +10514,19 @@ "dev": true }, "node_modules/@vitest/expect": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.3.1.tgz", - "integrity": "sha512-xofQFwIzfdmLLlHa6ag0dPV8YsnKOCP1KdAeVVh34vSjN2dcUiXYCD9htu/9eM7t8Xln4v03U9HLxLpPlsXdZw==", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-1.6.0.tgz", + "integrity": "sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==", "dev": true, "dependencies": { - "@vitest/spy": "1.3.1", - "@vitest/utils": "1.3.1", + "@vitest/spy": "1.6.0", + "@vitest/utils": "1.6.0", "chai": "^4.3.10" }, "funding": { "url": "https://opencollective.com/vitest" } }, - "node_modules/@vitest/expect/node_modules/@vitest/spy": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.3.1.tgz", - "integrity": "sha512-xAcW+S099ylC9VLU7eZfdT9myV67Nor9w9zhf0mGCYJSO+zM2839tOeROTdikOi/8Qeusffvxb/MyBSOja1Uig==", - "dev": true, - "dependencies": { - "tinyspy": "^2.2.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/@vitest/utils": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-1.3.1.tgz", - "integrity": "sha512-d3Waie/299qqRyHTm2DjADeTaNdNSVsnwHPWrs20JMpjh6eiVq7ggggweO8rc4arhf6rRkWuHKwvxGvejUXZZQ==", - "dev": true, - "dependencies": { - "diff-sequences": "^29.6.3", - "estree-walker": "^3.0.3", - "loupe": "^2.3.7", - "pretty-format": "^29.7.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/@vitest/expect/node_modules/ansi-styles": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", - "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@vitest/expect/node_modules/pretty-format": { - "version": "29.7.0", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", - "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", - "dev": true, - "dependencies": { - "@jest/schemas": "^29.6.3", - "ansi-styles": "^5.0.0", - "react-is": "^18.0.0" - }, - "engines": { - "node": "^14.15.0 || ^16.10.0 || >=18.0.0" - } - }, - "node_modules/@vitest/expect/node_modules/react-is": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", - "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", - "dev": true - }, "node_modules/@vitest/spy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-1.6.0.tgz", @@ -8283,9 +10845,9 @@ } }, "node_modules/acorn-globals/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -8499,6 +11061,7 @@ "version": "3.2.1", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, "dependencies": { "color-convert": "^1.9.0" }, @@ -8510,6 +11073,7 @@ "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, "dependencies": { "color-name": "1.1.3" } @@ -8517,19 +11081,18 @@ "node_modules/ansi-styles/node_modules/color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true }, "node_modules/any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "node_modules/anymatch": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", - "dev": true, "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -8547,8 +11110,7 @@ "node_modules/arg": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==", - "dev": true + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" }, "node_modules/argparse": { "version": "1.0.10", @@ -9090,9 +11652,9 @@ } }, "node_modules/babel-loader/node_modules/yocto-queue": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.0.0.tgz", - "integrity": "sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", "dev": true, "engines": { "node": ">=12.20" @@ -9267,7 +11829,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, "engines": { "node": ">=8" }, @@ -9414,7 +11975,6 @@ "version": "3.0.3", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, "dependencies": { "fill-range": "^7.1.1" }, @@ -9738,15 +12298,14 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==", - "dev": true, "engines": { "node": ">= 6" } }, "node_modules/caniuse-lite": { - "version": "1.0.30001637", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001637.tgz", - "integrity": "sha512-1x0qRI1mD1o9e+7mBI7XtzFAP4XszbHaVWsMiGbSPLYekKTJF7K+FNk6AsXH4sUpc+qrsI3pVgf1Jdl/uGkuSQ==", + "version": "1.0.30001640", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001640.tgz", + "integrity": "sha512-lA4VMpW0PSUrFnkmVuEKBUovSWKhj7puyCg8StBChgu298N1AtuF1sKWEvfDuimSEDbhlb/KqPKC3fs1HbuQUA==", "funding": [ { "type": "opencollective", @@ -9793,6 +12352,7 @@ "version": "2.4.2", "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, "dependencies": { "ansi-styles": "^3.2.1", "escape-string-regexp": "^1.0.5", @@ -9827,7 +12387,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", - "dev": true, "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -9851,7 +12410,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -9863,6 +12421,7 @@ "version": "2.0.0", "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", + "dev": true, "engines": { "node": ">=10" } @@ -9903,6 +12462,7 @@ "version": "3.9.0", "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, "funding": [ { "type": "github", @@ -10070,9 +12630,9 @@ "dev": true }, "node_modules/cli-truncate/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -10250,8 +12810,6 @@ "version": "4.2.3", "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "dev": true, - "optional": true, "dependencies": { "color-convert": "^2.0.1", "color-string": "^1.9.0" @@ -10280,13 +12838,16 @@ "version": "1.9.1", "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "dev": true, - "optional": true, "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" } }, + "node_modules/color2k": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/color2k/-/color2k-2.0.3.tgz", + "integrity": "sha512-zW190nQTIoXcGCaU08DvVNFTmQhUpnJfVuAKfWqUQkflXKpaDdpaYoM0iluLS9lgJNHyBF58KKA2FBEwkD7wog==" + }, "node_modules/colorette": { "version": "2.0.20", "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", @@ -10385,11 +12946,22 @@ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "dev": true }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.0.tgz", + "integrity": "sha512-rj8l8pD4bJ1nx+dAkMhV1xB5RuZEyVysfxJqB1pRchh1KVvwOv9b7CGB8ZfjTImVv2oF+sYMUkMZq6Na5Ftmbg==" + }, "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, + "node_modules/confbox": { + "version": "0.1.7", + "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.7.tgz", + "integrity": "sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==", + "dev": true + }, "node_modules/confusing-browser-globals": { "version": "1.0.11", "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", @@ -10636,7 +13208,7 @@ "version": "1.1.1", "resolved": "https://registry.npmjs.org/create-require/-/create-require-1.1.1.tgz", "integrity": "sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==", - "dev": true + "devOptional": true }, "node_modules/cross-spawn": { "version": "7.0.3", @@ -10791,7 +13363,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -10979,7 +13550,6 @@ "version": "4.3.1", "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -11141,8 +13711,7 @@ "node_modules/detect-node-es": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", - "dev": true + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, "node_modules/detect-package-manager": { "version": "2.0.1", @@ -11176,8 +13745,7 @@ "node_modules/didyoumean": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", - "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==", - "dev": true + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" }, "node_modules/diff": { "version": "5.2.0", @@ -11229,8 +13797,7 @@ "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", - "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==", - "dev": true + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" }, "node_modules/doctrine": { "version": "3.0.0", @@ -11459,9 +14026,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.4.812", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.812.tgz", - "integrity": "sha512-7L8fC2Ey/b6SePDFKR2zHAy4mbdp1/38Yk5TsARO66W3hC5KEaeKMMHoxwtuH+jcu2AYLSn9QX04i95t6Fl1Hg==", + "version": "1.4.816", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.816.tgz", + "integrity": "sha512-EKH5X5oqC6hLmiS7/vYtZHZFTNdhsYG5NVPRN6Yn0kQHNBlT59+xSM8HBy66P5fxWpKgZbPqb+diC64ng295Jw==", "dev": true }, "node_modules/elliptic": { @@ -11862,6 +14429,7 @@ "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, "engines": { "node": ">=0.8.0" } @@ -13038,9 +15606,9 @@ } }, "node_modules/espree/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -13295,7 +15863,6 @@ "version": "3.3.2", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", - "dev": true, "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -13311,7 +15878,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "dependencies": { "is-glob": "^4.0.1" }, @@ -13341,7 +15907,6 @@ "version": "1.17.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", - "dev": true, "dependencies": { "reusify": "^1.0.4" } @@ -13431,7 +15996,6 @@ "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, "dependencies": { "to-regex-range": "^5.0.1" }, @@ -13578,6 +16142,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, "node_modules/flat-cache": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", @@ -13599,9 +16171,9 @@ "dev": true }, "node_modules/flow-parser": { - "version": "0.238.2", - "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.238.2.tgz", - "integrity": "sha512-fs7FSnzzKF6oSzjk14JlBHt82DPchYHVsXtPi4Fkn+qrunVjWaBZY7nSO/mC9X4l9+wRah/R69DRd5NGDOrWqw==", + "version": "0.239.0", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.239.0.tgz", + "integrity": "sha512-U5dgOsS6cg4FGNzzTD/zHRDM4bliL6laUgD0LUCSMzI2zEfKMnRV2/wgDv8nKmO2Z1R8ri5pE1YoldmrSV7FOw==", "dev": true, "engines": { "node": ">=0.4.0" @@ -13828,6 +16400,37 @@ "node": ">= 0.6" } }, + "node_modules/framer-motion": { + "version": "11.2.13", + "resolved": "https://registry.npmjs.org/framer-motion/-/framer-motion-11.2.13.tgz", + "integrity": "sha512-AyIeegfkXlkX1lWEudRYsJlC+0A59cE8oFK9IsN9bUQzxLwcvN3AEaYaznkELiWlHC7a0eD7pxsYQo7BC05S5A==", + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + }, + "peerDependencies": { + "@emotion/is-prop-valid": "*", + "react": "^18.0.0", + "react-dom": "^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/is-prop-valid": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/framer-motion/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", + "peer": true + }, "node_modules/fresh": { "version": "0.5.2", "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", @@ -13861,6 +16464,7 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", + "dev": true, "dependencies": { "minipass": "^3.0.0" }, @@ -13872,6 +16476,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -13882,7 +16487,8 @@ "node_modules/fs-minipass/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/fs-monkey": { "version": "1.0.6", @@ -13899,7 +16505,6 @@ "version": "2.3.3", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -14003,7 +16608,6 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "dev": true, "engines": { "node": ">=6" } @@ -14117,7 +16721,6 @@ "version": "6.0.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", - "dev": true, "dependencies": { "is-glob": "^4.0.3" }, @@ -14286,6 +16889,7 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, "engines": { "node": ">=4" } @@ -14439,7 +17043,8 @@ "node_modules/hosted-git-info": { "version": "2.8.9", "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==" + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/html-encoding-sniffer": { "version": "3.0.0", @@ -14841,6 +17446,7 @@ "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, "engines": { "node": ">=0.8.19" } @@ -14890,11 +17496,26 @@ "node": ">= 0.4" } }, + "node_modules/intl-messageformat": { + "version": "10.5.14", + "resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz", + "integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==", + "dependencies": { + "@formatjs/ecma402-abstract": "2.0.0", + "@formatjs/fast-memoize": "2.2.0", + "@formatjs/icu-messageformat-parser": "2.7.8", + "tslib": "^2.4.0" + } + }, + "node_modules/intl-messageformat/node_modules/tslib": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, "node_modules/invariant": { "version": "2.2.4", "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", - "dev": true, "dependencies": { "loose-envify": "^1.0.0" } @@ -14987,7 +17608,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "dependencies": { "binary-extensions": "^2.0.0" }, @@ -15110,7 +17730,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -15167,7 +17786,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "dependencies": { "is-extglob": "^2.1.1" }, @@ -15242,7 +17860,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "engines": { "node": ">=0.12.0" } @@ -17437,7 +20054,6 @@ "version": "1.21.6", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", - "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -17619,9 +20235,9 @@ } }, "node_modules/jsdom/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -17651,7 +20267,8 @@ "node_modules/json-parse-even-better-errors": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true }, "node_modules/json-schema-traverse": { "version": "0.4.1", @@ -17806,7 +20423,6 @@ "version": "3.1.2", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.2.tgz", "integrity": "sha512-eop+wDAvpItUys0FWkHIKeC9ybYrTGbU41U5K7+bttZZeohvnY7M9dZ5kB21GNWiFT2q1OoPTvncPCgSOVO5ow==", - "dev": true, "engines": { "node": ">=14" }, @@ -17817,8 +20433,7 @@ "node_modules/lines-and-columns": { "version": "1.2.4", "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/lint-staged": { "version": "15.2.7", @@ -18050,9 +20665,9 @@ "dev": true }, "node_modules/listr2/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -18127,11 +20742,31 @@ "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, + "node_modules/lodash.foreach": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.foreach/-/lodash.foreach-4.5.0.tgz", + "integrity": "sha512-aEXTF4d+m05rVOAUG3z4vZZ4xVexLKZGF0lIxuHZ1Hplpk/3B6Z1+/ICICYRLm7c41Z2xiejbkCkJoTlypoXhQ==" + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://registry.npmjs.org/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, "node_modules/lodash.isplainobject": { "version": "4.0.6", "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==" + }, + "node_modules/lodash.mapkeys": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/lodash.mapkeys/-/lodash.mapkeys-4.6.0.tgz", + "integrity": "sha512-0Al+hxpYvONWtg+ZqHpa/GaVzxuN3V7Xeo2p+bY06EaK/n+Y9R7nBePPN2o1LxmL0TWQSwP8LYZ008/hc9JzhA==" + }, "node_modules/lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -18144,6 +20779,11 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "node_modules/lodash.omit": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.omit/-/lodash.omit-4.5.0.tgz", + "integrity": "sha512-XeqSp49hNGmlkj2EJlfrQFIzQ6lXdNro9sddtQzcJY8QaoC2GO0DT7xaIokHeyM+mIT0mPMlPvkYzg2xCuHdZg==" + }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -18293,9 +20933,9 @@ } }, "node_modules/log-update/node_modules/string-width": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.1.0.tgz", - "integrity": "sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", "dev": true, "dependencies": { "emoji-regex": "^10.3.0", @@ -18415,7 +21055,7 @@ "version": "1.3.6", "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true + "devOptional": true }, "node_modules/makeerror": { "version": "1.0.12", @@ -18521,7 +21161,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "engines": { "node": ">= 8" } @@ -18539,7 +21178,6 @@ "version": "4.0.7", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.7.tgz", "integrity": "sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==", - "dev": true, "dependencies": { "braces": "^3.0.3", "picomatch": "^2.3.1" @@ -18667,6 +21305,7 @@ "version": "2.1.2", "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", + "dev": true, "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -18679,6 +21318,7 @@ "version": "3.3.6", "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", + "dev": true, "dependencies": { "yallist": "^4.0.0" }, @@ -18689,12 +21329,14 @@ "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mkdirp": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", + "dev": true, "bin": { "mkdirp": "bin/cmd.js" }, @@ -18708,10 +21350,35 @@ "integrity": "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==", "dev": true }, + "node_modules/mlly": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.1.tgz", + "integrity": "sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==", + "dev": true, + "dependencies": { + "acorn": "^8.11.3", + "pathe": "^1.1.2", + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" + } + }, + "node_modules/mlly/node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, "node_modules/msw": { "version": "2.3.1", @@ -18815,9 +21482,9 @@ } }, "node_modules/msw/node_modules/type-fest": { - "version": "4.20.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.20.1.tgz", - "integrity": "sha512-R6wDsVsoS9xYOpy8vgeBlqpdOyzJ12HNfQhC/aAKWM3YoCV9TtunJzh/QpkMgeDhkoynDcw5f1y+qF9yc/HHyg==", + "version": "4.21.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.21.0.tgz", + "integrity": "sha512-ADn2w7hVPcK6w1I0uWnM//y1rLXZhzB9mr0a3OirzclKF1Wp6VzevUmzz/NRAWunOT6E8HrnpGY7xOfc6K57fA==", "dev": true, "engines": { "node": ">=16" @@ -18839,7 +21506,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "dependencies": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -19127,6 +21793,7 @@ "version": "2.5.0", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "dev": true, "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -19138,6 +21805,7 @@ "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, "bin": { "semver": "bin/semver" } @@ -19146,7 +21814,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -22826,16 +25493,17 @@ "dev": true }, "node_modules/nypm": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.8.tgz", - "integrity": "sha512-IGWlC6So2xv6V4cIDmoV0SwwWx7zLG086gyqkyumteH2fIgCAM4nDVFB2iDRszDvmdSVW9xb1N+2KjQ6C7d4og==", + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/nypm/-/nypm-0.3.9.tgz", + "integrity": "sha512-BI2SdqqTHg2d4wJh8P9A1W+bslg33vOE9IZDY6eR2QC+Pu1iNBVZUqczrd43rJb+fMzHU7ltAYKsEFY/kHMFcw==", "dev": true, "dependencies": { "citty": "^0.1.6", "consola": "^3.2.3", "execa": "^8.0.1", "pathe": "^1.1.2", - "ufo": "^1.4.0" + "pkg-types": "^1.1.1", + "ufo": "^1.5.3" }, "bin": { "nypm": "dist/cli.mjs" @@ -22982,7 +25650,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -22991,7 +25658,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==", - "dev": true, "engines": { "node": ">= 6" } @@ -23549,9 +26215,9 @@ } }, "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.2.2", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", - "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.3.0.tgz", + "integrity": "sha512-CQl19J/g+Hbjbv4Y3mFNNXFEL/5t/KCg8POCuUqd4rMKjGG+j1ybER83hxV58zL+dFI1PTkt3GNFSHRt+d8qEQ==", "engines": { "node": "14 || >=16.14" } @@ -23622,7 +26288,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "engines": { "node": ">=8.6" }, @@ -23646,7 +26311,6 @@ "version": "2.3.0", "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -23655,7 +26319,6 @@ "version": "4.0.6", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", - "dev": true, "engines": { "node": ">= 6" } @@ -23672,6 +26335,17 @@ "node": ">=10" } }, + "node_modules/pkg-types": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.1.3.tgz", + "integrity": "sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==", + "dev": true, + "dependencies": { + "confbox": "^0.1.7", + "mlly": "^1.7.1", + "pathe": "^1.1.2" + } + }, "node_modules/pnp-webpack-plugin": { "version": "1.7.0", "resolved": "https://registry.npmjs.org/pnp-webpack-plugin/-/pnp-webpack-plugin-1.7.0.tgz", @@ -23705,10 +26379,9 @@ } }, "node_modules/postcss": { - "version": "8.4.38", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", - "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", - "dev": true, + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", "funding": [ { "type": "opencollective", @@ -23725,7 +26398,7 @@ ], "dependencies": { "nanoid": "^3.3.7", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "source-map-js": "^1.2.0" }, "engines": { @@ -23736,7 +26409,6 @@ "version": "15.1.0", "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", - "dev": true, "dependencies": { "postcss-value-parser": "^4.0.0", "read-cache": "^1.0.0", @@ -23753,7 +26425,6 @@ "version": "4.0.1", "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", - "dev": true, "dependencies": { "camelcase-css": "^2.0.1" }, @@ -23772,7 +26443,6 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", - "dev": true, "funding": [ { "type": "opencollective", @@ -23807,7 +26477,6 @@ "version": "2.4.5", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.5.tgz", "integrity": "sha512-aBx2bnqDzVOyNKfsysjA2ms5ZlnjSAW2eG3/L5G/CSujfjLJTJsEw1bGw8kCf04KodQWk1pxlGnZ56CRxiawmg==", - "dev": true, "bin": { "yaml": "bin.mjs" }, @@ -23965,7 +26634,6 @@ "version": "6.0.1", "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", - "dev": true, "dependencies": { "postcss-selector-parser": "^6.0.11" }, @@ -23984,7 +26652,6 @@ "version": "6.1.0", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.0.tgz", "integrity": "sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -23996,8 +26663,7 @@ "node_modules/postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" }, "node_modules/prelude-ls": { "version": "1.2.1", @@ -24229,9 +26895,9 @@ ] }, "node_modules/qs": { - "version": "6.12.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.1.tgz", - "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "version": "6.12.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.12.2.tgz", + "integrity": "sha512-x+NLUpx9SYrcwXtX7ob1gnkSems4i/mGZX5SlYxwIau6RrUSODO89TR/XDGGpn5RPWSYIB+aSfuSlV5+CmbTBg==", "dev": true, "dependencies": { "side-channel": "^1.0.6" @@ -24271,7 +26937,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -24445,10 +27110,19 @@ "integrity": "sha512-Fl7FuabXsJnV5Q1qIOQwx/sagGF18kogb4gpfcG4gjLBWO0WDiiz1ko/ExayuxE7InyQkBLkxRFG5oxY6Uu3Kg==", "dev": true }, + "node_modules/react-google-charts": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/react-google-charts/-/react-google-charts-4.0.1.tgz", + "integrity": "sha512-V/hcMcNuBgD5w49BYTUDye+bUKaPmsU5vy/9W/Nj2xEeGn+6/AuH9IvBkbDcNBsY00cV9OeexdmgfI5RFHgsXQ==", + "peerDependencies": { + "react": ">=16.3.0", + "react-dom": ">=16.3.0" + } + }, "node_modules/react-hook-form": { - "version": "7.52.0", - "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.52.0.tgz", - "integrity": "sha512-mJX506Xc6mirzLsmXUJyqlAI3Kj9Ph2RhplYhUVffeOQSnubK2uVqBFOBJmvKikvbFV91pxVXmDiR+QMF19x6A==", + "version": "7.52.1", + "resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.52.1.tgz", + "integrity": "sha512-uNKIhaoICJ5KQALYZ4TOaOLElyM+xipord+Ha3crEFhTntdLvWZqVY49Wqd/0GiVCA/f9NjemLeiNPjG7Hpurg==", "engines": { "node": ">=12.22.0" }, @@ -24563,7 +27237,6 @@ "version": "2.5.7", "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.7.tgz", "integrity": "sha512-FnrTWO4L7/Bhhf3CYBNArEG/yROV0tKmTv7/3h9QCFvH6sndeFf1wPqOcbFVu5VAulS5dV1wGT3GZZ/1GawqiA==", - "dev": true, "dependencies": { "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", @@ -24588,7 +27261,6 @@ "version": "2.3.6", "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", - "dev": true, "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" @@ -24609,21 +27281,19 @@ "node_modules/react-remove-scroll-bar/node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/react-remove-scroll/node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/react-router": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.0.tgz", - "integrity": "sha512-sQrgJ5bXk7vbcC4BxQxeNa5UmboFm35we1AFK0VvQaz9g0LzxEIuLOhHIoZ8rnu9BO21ishGeL9no1WB76W/eg==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.24.1.tgz", + "integrity": "sha512-PTXFXGK2pyXpHzVo3rR9H7ip4lSPZZc0bHG5CARmj65fTT6qG7sTngmb6lcYu1gf3y/8KxORoy9yn59pGpCnpg==", "dependencies": { - "@remix-run/router": "1.17.0" + "@remix-run/router": "1.17.1" }, "engines": { "node": ">=14.0.0" @@ -24633,12 +27303,12 @@ } }, "node_modules/react-router-dom": { - "version": "6.24.0", - "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.24.0.tgz", - "integrity": "sha512-960sKuau6/yEwS8e+NVEidYQb1hNjAYM327gjEyXlc6r3Skf2vtwuJ2l7lssdegD2YjoKG5l8MsVyeTDlVeY8g==", + "version": "6.24.1", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.24.1.tgz", + "integrity": "sha512-U19KtXqooqw967Vw0Qcn5cOvrX5Ejo9ORmOtJMzYWtCT4/WOfFLIZGGsVLxcd9UkBO0mSTZtXqhZBsWlHr7+Sg==", "dependencies": { - "@remix-run/router": "1.17.0", - "react-router": "6.24.0" + "@remix-run/router": "1.17.1", + "react-router": "6.24.1" }, "engines": { "node": ">=14.0.0" @@ -24681,7 +27351,6 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", - "dev": true, "dependencies": { "get-nonce": "^1.0.0", "invariant": "^2.2.4", @@ -24703,8 +27372,7 @@ "node_modules/react-style-singleton/node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/react-test-renderer": { "version": "18.3.1", @@ -24726,6 +27394,22 @@ "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", "dev": true }, + "node_modules/react-textarea-autosize": { + "version": "8.5.3", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", + "dependencies": { + "@babel/runtime": "^7.20.13", + "use-composed-ref": "^1.3.0", + "use-latest": "^1.2.1" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-toastify": { "version": "10.0.5", "resolved": "https://registry.npmjs.org/react-toastify/-/react-toastify-10.0.5.tgz", @@ -24742,7 +27426,6 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", - "dev": true, "dependencies": { "pify": "^2.3.0" } @@ -24868,7 +27551,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "dependencies": { "picomatch": "^2.2.1" }, @@ -25304,7 +27986,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -25385,7 +28066,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -25585,10 +28265,19 @@ "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.0.10.tgz", + "integrity": "sha512-t44QCeDKAPf1mtQH3fYpWz8IM/DyvHLjs8wUvvwMYxk5moOqCzrMSxK6HQVD0QVmVjXFavoFIPRVrMuJPKAvtg==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, "node_modules/semver": { "version": "6.3.1", "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, "bin": { "semver": "bin/semver.js" } @@ -25822,14 +28511,13 @@ "node_modules/signal-exit": { "version": "3.0.7", "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "dev": true, - "optional": true, "dependencies": { "is-arrayish": "^0.3.1" } @@ -25837,9 +28525,7 @@ "node_modules/simple-swizzle/node_modules/is-arrayish": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "dev": true, - "optional": true + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/sisteransi": { "version": "1.0.5", @@ -25942,6 +28628,7 @@ "version": "3.2.0", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -25950,12 +28637,14 @@ "node_modules/spdx-exceptions": { "version": "2.5.0", "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", - "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==" + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -25964,7 +28653,8 @@ "node_modules/spdx-license-ids": { "version": "3.0.18", "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.18.tgz", - "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==" + "integrity": "sha512-xxRs31BqRYHwiMzudOrpSiHtZ8i/GeionCBDSilhYRj+9gIcI8wCZTlXZKu9vZIVqViP3dcp9qE5G6AlIaD+TQ==", + "dev": true }, "node_modules/sprintf-js": { "version": "1.0.3", @@ -26027,12 +28717,12 @@ "dev": true }, "node_modules/storybook": { - "version": "8.1.10", - "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.1.10.tgz", - "integrity": "sha512-HHlZibyc/QkcQj8aEnYnYwEl+ItNZ/uRbCdkvJzu/vIWYon5jUg30mHFIGZprgLSt27CxOs30Et8yT9z4VhwjA==", + "version": "8.1.11", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-8.1.11.tgz", + "integrity": "sha512-3KjIhF8lczXhKKHyHbOqV30dvuRYJSxc0d1as/C8kybuwE7cLaydhWGma7VBv5bTSPv0rDzucx7KcO+achArPg==", "dev": true, "dependencies": { - "@storybook/cli": "8.1.10" + "@storybook/cli": "8.1.11" }, "bin": { "sb": "index.js", @@ -26441,7 +29131,6 @@ "version": "3.35.0", "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", - "dev": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", @@ -26463,7 +29152,6 @@ "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "engines": { "node": ">= 6" } @@ -26472,6 +29160,7 @@ "version": "5.5.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, "dependencies": { "has-flag": "^3.0.0" }, @@ -26523,11 +29212,34 @@ "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", "dev": true }, + "node_modules/tailwind-merge": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-1.14.0.tgz", + "integrity": "sha512-3mFKyCo/MBcgyOTlrY8T7odzZFx+w+qKSMAmdFzRvqBfLlSigU6TZnlFHK0lkMwj9Bj8OYU+9yW9lmGuS0QEnQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwind-variants": { + "version": "0.1.20", + "resolved": "https://registry.npmjs.org/tailwind-variants/-/tailwind-variants-0.1.20.tgz", + "integrity": "sha512-AMh7x313t/V+eTySKB0Dal08RHY7ggYK0MSn/ad8wKWOrDUIzyiWNayRUm2PIJ4VRkvRnfNuyRuKbLV3EN+ewQ==", + "dependencies": { + "tailwind-merge": "^1.14.0" + }, + "engines": { + "node": ">=16.x", + "pnpm": ">=7.x" + }, + "peerDependencies": { + "tailwindcss": "*" + } + }, "node_modules/tailwindcss": { "version": "3.4.4", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.4.tgz", "integrity": "sha512-ZoyXOdJjISB7/BcLTR6SEsLgKtDStYyYZVLsUtWChO4Ps20CBad7lfJKVDiejocV4ME1hLmyY0WJE3hSDcmQ2A==", - "dev": true, "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -26564,7 +29276,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", - "dev": true, "engines": { "node": ">=10" } @@ -26582,6 +29293,7 @@ "version": "6.2.1", "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.1.tgz", "integrity": "sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==", + "dev": true, "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -26646,6 +29358,7 @@ "version": "5.0.0", "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", + "dev": true, "engines": { "node": ">=8" } @@ -26653,7 +29366,8 @@ "node_modules/tar/node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/telejson": { "version": "7.2.0", @@ -26880,9 +29594,9 @@ } }, "node_modules/terser/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -27010,13 +29724,13 @@ "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/thenify": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "dependencies": { "any-promise": "^1.0.0" } @@ -27025,7 +29739,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "dependencies": { "thenify": ">= 3.1.0 < 4" }, @@ -27125,7 +29838,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -27208,8 +29920,7 @@ "node_modules/ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, "node_modules/ts-jest": { "version": "29.1.5", @@ -27274,7 +29985,7 @@ "version": "10.9.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, + "devOptional": true, "dependencies": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -27314,10 +30025,10 @@ } }, "node_modules/ts-node/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", - "dev": true, + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "devOptional": true, "bin": { "acorn": "bin/acorn" }, @@ -27329,7 +30040,7 @@ "version": "8.3.3", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.3.tgz", "integrity": "sha512-MxXdReSRhGO7VlFe1bRG/oI7/mdLV9B9JJT0N8vZOhF7gFRR5l3M8W9G8JxmKV+JC5mGqJ0QvqfSOLsCPa4nUw==", - "dev": true, + "devOptional": true, "dependencies": { "acorn": "^8.11.0" }, @@ -27341,13 +30052,13 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "devOptional": true }, "node_modules/ts-node/node_modules/diff": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.2.tgz", "integrity": "sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==", - "dev": true, + "devOptional": true, "engines": { "node": ">=0.3.1" } @@ -27603,10 +30314,10 @@ } }, "node_modules/typescript": { - "version": "5.5.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.2.tgz", - "integrity": "sha512-NcRtPEOsPFFWjobJEtfihkLCZCXZt/os3zf8nTxjVH3RvTSxjrCamJpbExGvYOF+tFHc3pA65qpdwPbzjohhew==", - "dev": true, + "version": "5.5.3", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.3.tgz", + "integrity": "sha512-/hreyEujaB0w76zKo6717l3L0o/qEUtRgdvUBvlkhoWeOVMjMuHNHk0BRBzikzuGDqNmPQbg5ifMEqsHLiIUcQ==", + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -27652,7 +30363,7 @@ "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true + "devOptional": true }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -27791,9 +30502,9 @@ } }, "node_modules/unplugin": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.10.1.tgz", - "integrity": "sha512-d6Mhq8RJeGA8UfKCu54Um4lFA0eSaRa3XxdAJg8tIdxbu1ubW0hBCZUL7yI2uGyYCRndvbK8FLHzqy2XKfeMsg==", + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.11.0.tgz", + "integrity": "sha512-3r7VWZ/webh0SGgJScpWl2/MRCZK5d3ZYFcNaeci/GQ7Teop7zf0Nl2pUuz7G21BwPd9pcUPOC5KmJ2L3WgC5g==", "dev": true, "dependencies": { "acorn": "^8.11.3", @@ -27806,9 +30517,9 @@ } }, "node_modules/unplugin/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -27833,9 +30544,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.16.tgz", - "integrity": "sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "dev": true, "funding": [ { @@ -27901,7 +30612,6 @@ "version": "1.3.2", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", - "dev": true, "dependencies": { "tslib": "^2.0.0" }, @@ -27921,14 +30631,49 @@ "node_modules/use-callback-ref/node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" + }, + "node_modules/use-composed-ref": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/use-isomorphic-layout-effect": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-latest": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", + "dependencies": { + "use-isomorphic-layout-effect": "^1.1.1" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, "node_modules/use-sidecar": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", - "dev": true, "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -27949,8 +30694,7 @@ "node_modules/use-sidecar/node_modules/tslib": { "version": "2.6.3", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.3.tgz", - "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==", - "dev": true + "integrity": "sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==" }, "node_modules/use-sync-external-store": { "version": "1.2.2", @@ -27976,8 +30720,7 @@ "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", - "dev": true + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", @@ -28011,7 +30754,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "devOptional": true }, "node_modules/v8-to-istanbul": { "version": "9.3.0", @@ -28031,6 +30774,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -28223,9 +30967,9 @@ "dev": true }, "node_modules/webpack/node_modules/acorn": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.0.tgz", - "integrity": "sha512-RTvkC4w+KNXrM39/lWCUaG0IbRkWdCv7W/IOW9oU6SawyxulvkQy5HQPVTKxEjczcUvapcrw3cFx/60VN/NRNw==", + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", "dev": true, "bin": { "acorn": "bin/acorn" @@ -28539,6 +31283,7 @@ "version": "4.0.2", "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -28548,9 +31293,9 @@ } }, "node_modules/ws": { - "version": "8.17.1", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", - "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", + "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -28688,7 +31433,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, + "devOptional": true, "engines": { "node": ">=6" } @@ -28705,6 +31450,18 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/yoctocolors-cjs": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", + "integrity": "sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/zod": { "version": "3.23.8", "resolved": "https://registry.npmjs.org/zod/-/zod-3.23.8.tgz", diff --git a/package.json b/package.json index e5dacb0..30ca019 100644 --- a/package.json +++ b/package.json @@ -3,7 +3,7 @@ "version": "0.1.0", "private": true, "scripts": { - "dev": "next dev", + "dev": "next dev ", "build": "next build", "start": "next start", "lint": "next lint", @@ -14,6 +14,7 @@ }, "dependencies": { "@hookform/resolvers": "^3.6.0", + "@nextui-org/react": "^2.4.2", "@reduxjs/toolkit": "^2.2.5", "@tanstack/react-query": "^5.40.1", "@tanstack/react-table": "^8.17.3", @@ -31,6 +32,7 @@ "npx": "^3.0.0", "react": "^18", "react-dom": "^18", + "react-google-charts": "^4.0.1", "react-hook-form": "^7.51.5", "react-icons": "^5.2.1", "react-query": "^3.39.3", diff --git a/public/dash1.png b/public/dash1.png new file mode 100644 index 0000000000000000000000000000000000000000..f5aee4f80d7e8a9b2da75107abbdbebfea9ababb GIT binary patch literal 1002 zcmVXWA15JQ%lz%|VUr@MU;zjTvH^G~sByuv|SVC*O zQ4d)3LX8I+jiG2#v_JMaZ)-PgDchZ8EqoG6r@PaB^JeDFo9`mHB$^r52)iN(G>QNb zLhu8LKL#NWL|O4BD?a-GVCc#4x(+TtnVYqp`~GsDIs>4@EHMrtfGi;C6{9r&KD?22 z+Ru?d7FN0Ji<1E{@Bl(ubt<&2zlbCa@xBIoYtU*Vhw0c|`(}y?m%~zCGw+nHbofF4kq#BTuoDj&v${nEN zpf<9{zuoj{ePbju@sJQ#;2a^tm`x3>FV@hD2K|*@U)*Z(3rDYv#y(si)Z^kcj-nYsjvibv%9ng*{#DHu!YFve6{Qa%y+bhI zy9xd3br|Tr0l$m_to&GqT>FG3P~KFlFkC4kB%ctF1p^XyjK6xGa5;UhfyIuBBi zF(!ss(ZB=j#MQ3LLIe>-R2FAW%B{pL94x~^?zz>L8eR+3R74!)(!xt|%+B#{LpxXc z2GS^amlsI@Tw*t@F9J^*+6OKoD5`b8>bA~nH|MU3)m+cppIaag`W0|NJ8{iC&Mmu& zAfuQE90}Zrdvm0NJ4oy#1|G?D>6|zQvm(tHX{Wby^g1Vw^E7?oM6EmRz`4vxKJ!8x zBT`^mL8>^8Aj8|0ok*|5RZ(=a+=_mhJd{Z{1OFCE^Y-PXI6ju9LTkZlnlWHWrZcCE z=16)QIpAtWH~;aAwl9vEe|(1^2}kmFPXN+|U9+U}k}?&8>^xX!lIY%qIH=$ZTmaY_ zN!>|I^LuM2QF}^rvPt`Yz;lm%n_Alvs0TOlM22KV={@Y%)SF5TdvPkn=TVYcFrH%2 zQnQ)V(whY zZ0kW0@)#0LBipxLBQgg2Fm~dYwgv09n6zD_j3L2G@Cp$%wNMP!n?$D}XQH#g#4dz5 z=u7)JoMXk7s{Sr6wlXSD@8*(dW=a#G5RW2|A4LSjHw`vCh7g4?RTr9$gz04Xl@2cW Y3yVR7=OZ2QeETHbVAE@X8Yz?SIFrYYPsoDzK4YmLiEESzV3~>ia z2M{R}0|;kDf;d}BtC;sLNl8-I@i}hNk7UI^&i2>u-MxG7A`lXD7KR3-ATR;`1@y+o zI4)od+FTdgv~QWqun+>F(%8&E7jeu8flP~-Kr{qfwO!=Q71%-V3nY+*;Uuz}D}_Zt zKB&-Gw+7i+WMVO_(U%yAjugFl(ila>`iP=mLtlaBJv^ZXChZO(V(5c)p<#03GIZ+$ z-ubli5LWMNYt+{a^a1LhMRylza=FuaP4l`zoIs&p;^h0t<@C-quWJWf%x)#sljt)f zGU?^+Hi7eZaf2+kfB``wN3V{dvayM+mUDHe-z7D2E$t>TSR4vLBhCJ}-v?<>m>9e` zM#kLcfwW-5dOvZDAS))=iqe7&>m4gdlbp5U@}NH9N5ZKg9m5w4=!vA<&LoDhQ+2TM zK8H%#4*VR_G($h8kXeb4gQI88kf5ns1?Xp!2d>#aEWCV{h6*(oX)UTb)=wOB*m*xV zonwJ1^oWRx`q&R6W7W5t7)>JjWDo4N9Bev;Ac#+P?r>7ERU`s>V1HT(qb>ghl=S^$mM_RYXjl-20q&_Gc0* zoJ}YO?W2JE9$7EfJl-!m*^22g?2yy1VSrF@zGE)_4}EQQae?a5Fs_aY61QqDwb$jI zsbFr7mOjwGr4NSJXR=GU)Op@Bo1y-A-Bk?WJ+i@zM_w0vlWDT#3N@I)5yEaI%N@Ef z>bpK@ZQ^Zu93}dU<{EUAIHc}DcG+Laan0000 \ No newline at end of file diff --git a/public/orderdash.png b/public/orderdash.png new file mode 100644 index 0000000000000000000000000000000000000000..924c691a00b24db7d2b0c8a2b3316dbd2408dcd0 GIT binary patch literal 975 zcmV;=12FuFP)#wfG?74R0jY@uC4!+>Qp8AvSU^Hd zhz)|ojKTs;5C+78)Rao4DD4^BmrK$#AHGvA?Qgi`&d+y$J=@REkKhuXnTmi@7&~wR z9AWW42tv?mL=nUb;=TZrJ^^NqV(A=QKu(PLTs(+C&m>G1uZYp_T@atkp=72gkuK== z(h{hI`Fm%Cc^sV~t1GmvK)x^?7sEH>++%IuEQX(_=vq44%8J^Eo9m$0ntjEf=)FX< z)`kMhL;6ZIN6-~`9;Ls-lrW0*Ev%uvzxQ4D#7RUnP!8G5CV}N)4WsK&#QJvK)7l&U zaOyG`dx9-xEkV)yhJ9BN$mga)@RJgN-Kl*eDqZw`zWa`ZucHw_4cPO07HkN55-j^u?1S*)8zQ5o-mt% zy+Yg(A#w~jbWFdWuPljnrz2le_9Cgl%PSqUhFPSecGyR>)A zpwuQ735&oB2KE6zzXM-C0?UiQpGE8Wa#8;sL}4ae=}k}`Ia~Fj6e@)|5vSl0IR_8I z3+&ZC=w$WQ!;bo_`N!c2Qsn5^#%IprV^9d>?(@8-530i^#az6O4ijY9=Exx~y7uCw z8}OJS1LsTFz7%{S%;e#ACD+bDn~u&!^9NH$!R-oXc^~+C9^`VZcs>VNj#(#u(hu?f zR?!tiRf1x7a+d2jpV#jA`xjjE?Xwf>oV-{9*8+xix3@3dc~SQH@LJ!VnJM)nFO*0Y z#crqPMVXbnSP|)&fcROXFHWTZ(-144xn>VrB11 zD$7@S5lCU{N!i|$Y=|!uy=!O>wHI)6p03VjYacbP%`8lJx%8owe#gy0r7O zxaQF+)OXreUA1JVOp^EZwxk*K&`e*sLt|PN7sh&@7oC6*Qwrn;6={KnyCO2}=488!#ax1SCrlY=gp<@dqtT zYRlSfe3WVeX;PX2MW{j>sIw3ogi*R8^-DEr1j$mTY3=#@^S%Af^?Qz;#p$zaC;LfP z_ddUS@B5u|&pG$pYe98_ap=(@GSop*^}ETSK{AAo1o;XtDNMqc!Sf91;tY}Q7bE-p zR0jyU2^a^)eB^9?2&Be9&{yT~85BQd^(VyceKS-eY7&5n>ss@;BIqHi51y-4kg5eR z4(}O*NjzSI#&0w;%*%K}jP84`no+g|FbsqA!+Q?aQR^#0H}s#XBm2he_O~T~v~`F3 z_vk)EYXB(gOe7ZmnD4vKhHlhXp&LUOn%lotZ(1dubBYQv* z;yzk?y!ZQ`y0cxq{Sz5`RZoj2>lvW5jWdcA#epVGl z+(mZ5WU7JFz105r=dp5I>crA~TAb<-H3A)7M01ykF8rG)iVZemZnDv^?J3+2=itD=fPdGnT?zt?&c79<86F-M zU0q$OLsdUWjlexSmsWuVVd7PgXSg)&u5;(kso2<TRj5MtVLxg19#VHTq( z0E(jPIsy>2Qmy#)lS^j7WFPo8)f0k5TPPHgkqAD(8*aH1M-DP5&CTlB zvu6eGTT%cxFilQQ3XjL5=mtel}p;}Pt0~YG&3+Y^L4wbli^{R|QoEyn_ zx_$e0T3lR|Sza)jn4)(m!im&*GP6O~Ergo|c4fcVvR~G+i zHjA9CsKZhj@pxSS%+DsK^12ZvyGW;KEs)OV-}vmWj{gHqqqDP9^5vV7G64{UxYjRU z3;o9S%!~6>Gp5hk?s`3ud@Y?$bN-_v3K>H~L+k^F6oA7hzkrA5QRhdG{l&fjCx2Vp zD)5-Uov_{gz{!6-gG#pw(ut*HZtK>qMqgi_VZO}$>3rbLnZ?NSwr1w6^4MW$^SrI@ zk~k-G6NhXkb8~M-|M=veU;V$^?asHix96EFC!hSzN{YDFIyyR<5RIDA_TD>iYuAad z?L46>!b|H2w*7~X`@j0s%Tt#SWFqj>IRA{o)}qT5klug?kk6scHZ?WnUJlHJUY`yA zg4P*-zdZL#kpCa^0(WWRRG=)wsT9CGEL$d&Po+{BAp7B;9DP2p5T2lQLSW(A#3!Gg z_yd|*vt&$;e7&+HfC=_&mM)8gi97N#W%_^k%>HZfFewCO15?{~J>?^Vdz{$+osOuCu7E zFj_>V%Uzk+;q)VGKIo{xQ~s&f?%2}3(Czc~J5f9S_Yk1$zH(^C0- zK8bb$8yK%b4o6<;z+^)JGWP{ia7F`nf>X=KiPIPU`$jnW%C??PkI(Jur#j%mm8&n@ zcVyywKYD5E6qJ>5I-N;;F9DND!i=Q$$&5bB$5y)Bl}F5;o*w7y?5q=QH_XY6=)`*j zUoALL)Gyt!t$TdOM<49;whX!*+GeT(tnvTMExa%~`Qqd&)3baA$vGSj_F2|ClTKjM zO5zA9wNLUq^Y+W#6$RiBD+)bTc)k-$=YTev5Qq6%jf;!qEr+IBhwMYc_ulrA-tNJ! zR&Srj<=E_YIyP&H@K|JXxqK{?Oa}ssq1VsM1_L9LFP_GD9piPAdAvRkoV zrwW>04c1j2r`;|jdro|iSAti;iI1`%Dg-VH0#bywb#G&s&r&b6WCD5#`7BI^_Z=p0 z2_Ve|VLfL?M#EI9Z4+AF#}a}~heB3F@8D9$N6DS%Y6t6-HN*i|Vji@_O z_#Dl*dVJm7hr$u6AHv;gw)@cT z(ocA=wR9zaY*_1CYN7u!Q#e_Fgf+7$uWF0g>4xRU*<`TaG8_D#3Gu|X#Sqz zsm^zf?vo13o0msbZZBi^+`{B(?X*J2>*mEJu36SjF1nX)eViSBW!?da+X>#!@0gx^ rK7Vd&5ufA_rrGrlo!SNMeQn$?zO{+1J^Jqy&}|H!u6{1-oD!M ({ + get: jest.fn(), +})); + +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), +})); + +// Mock components +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); +jest.mock('@/components/headerDash', () => () => ( +
Mock HeaderDash
+)); +jest.mock('@/components/Product/AddProducts', () => () => ( +
Mock AddProducts
+)); + +const queryClient = new QueryClient(); + +describe('Page Component', () => { + beforeEach(() => { + (request.get as jest.Mock).mockImplementation((url) => { + if (url.includes('/categories')) { + return Promise.resolve({ + data: [ + { id: 1, name: 'Category 1' }, + { id: 2, name: 'Category 2' }, + ], + }); + } + return Promise.resolve({ data: [] }); + }); + + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); + + test('renders data after loading', async () => { + render( + + + , + ); + + await waitFor(() => { + expect(screen.getByTestId('mock-dashnavbar')).toBeInTheDocument(); + }); + + expect(screen.getByTestId('mock-headerdash')).toBeInTheDocument(); + expect(screen.getByTestId('mock-addproducts')).toBeInTheDocument(); + }); + + test('redirects to /dashboard/home if user is not a seller', async () => { + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + + render( + + + , + ); + + await waitFor(() => { + expect(useRouter().push).toHaveBeenCalledWith('/dashboard/home'); + }); + }); +}); diff --git a/src/__tests__/ProfileDashboard.test.tsx b/src/__tests__/ProfileDashboard.test.tsx new file mode 100644 index 0000000..3fd190d --- /dev/null +++ b/src/__tests__/ProfileDashboard.test.tsx @@ -0,0 +1,67 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import Page from '@/app/dashboard/profile/page'; +import request from '@/utils/axios'; +import { useRouter } from 'next/navigation'; + +jest.mock('@/utils/axios', () => ({ + get: jest.fn(), +})); + +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), +})); + +// Mock components +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); +jest.mock('@/components/headerDash', () => () => ( +
Mock HeaderDash
+)); +jest.mock('@/components/Product/AddProducts', () => () => ( +
Mock AddProducts
+)); +const queryClient = new QueryClient(); +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); + +describe('Page Component', () => { + beforeEach(() => { + (request.get as jest.Mock).mockImplementation((url) => { + if (url.includes('/categories')) { + return Promise.resolve({ + data: [ + { id: 1, name: 'Category 1' }, + { id: 2, name: 'Category 2' }, + ], + }); + } + return Promise.resolve({ data: [] }); + }); + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); + + test('renders loading state initially', () => { + render( + + + , + ); + }); +}); diff --git a/src/__tests__/UserDashboard.test.tsx b/src/__tests__/UserDashboard.test.tsx new file mode 100644 index 0000000..f008f5c --- /dev/null +++ b/src/__tests__/UserDashboard.test.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import Page from '@/app/dashboard/users/page'; +import request from '@/utils/axios'; +import { useRouter } from 'next/navigation'; + +const queryClient = new QueryClient(); +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), +})); +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); + +describe('render user page on dashboard', () => { + beforeAll(() => { + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'test User', + }, + }), + ); + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); + + test('render the user page', () => { + render( + + + , + ); + }); +}); diff --git a/src/__tests__/ZcartManagement.test.tsx b/src/__tests__/ZcartManagement.test.tsx index 77cb048..41a42c4 100644 --- a/src/__tests__/ZcartManagement.test.tsx +++ b/src/__tests__/ZcartManagement.test.tsx @@ -1,46 +1,32 @@ -import userCartSlice, { handleCartCount, handleChangeCartQuantity, handleRemoveAllCart, handleRemoveItemInCart, handleUserAddCart } from "@/redux/slices/userCartSlice"; -import { configureStore } from "@reduxjs/toolkit"; -import { act } from "@testing-library/react"; +import userCartSlice, { + handleCartCount, + handleChangeCartQuantity, + handleRemoveAllCart, + handleRemoveItemInCart, + handleUserAddCart, +} from '@/redux/slices/userCartSlice'; +import { configureStore } from '@reduxjs/toolkit'; +import { act } from '@testing-library/react'; import axios from 'axios'; import { showToast } from '@/helpers/toast'; -import MockAdapter from "axios-mock-adapter"; -import request from "@/utils/axios"; -jest.mock("@/utils/axios"); +import MockAdapter from 'axios-mock-adapter'; +import request from '@/utils/axios'; +jest.mock('@/utils/axios'); jest.mock('@/helpers/toast'); const URL = process.env.URL; const mockedRequest = request as jest.Mocked; // Mock localStorage -const localStorageMock = (function () { - let store:any = {}; - return { - getItem(key) { - return store[key] || null; - }, - setItem(key, value) { - store[key] = value.toString(); - }, - clear() { - store = {}; - }, - removeItem(key) { - delete store[key]; - }, - }; -})(); -Object.defineProperty(window, 'localStorage', { value: localStorageMock }); - const store: any = configureStore({ reducer: { - cartReducer:userCartSlice, + cartReducer: userCartSlice, }, }); type RootState = ReturnType; type AppDispatch = typeof store.dispatch; describe('userCartSlice', () => { - let mockedAxios: MockAdapter; beforeEach(() => { mockedAxios = new MockAdapter(axios); @@ -53,8 +39,6 @@ describe('userCartSlice', () => { productPrice: 100, }; - - it('should add a new product to the cart when the cart is initially empty', async () => { const payload = { productId: 'product1', @@ -75,7 +59,6 @@ describe('userCartSlice', () => { expect(result.payload).toEqual({ data: 'success' }); }); - it('should add a new product to an existing cart', async () => { const initialState = { loading: false, @@ -90,10 +73,13 @@ describe('userCartSlice', () => { productPrice: 150, }; - localStorage.setItem('productCart', JSON.stringify({ - userId: 'user1', - product: [{ product: 'product1', quantity: 1, totalPrice: 100 }], - })); + localStorage.setItem( + 'productCart', + JSON.stringify({ + userId: 'user1', + product: [{ product: 'product1', quantity: 1, totalPrice: 100 }], + }), + ); (request.put as jest.Mock).mockResolvedValue({ data: 'success' }); @@ -108,29 +94,37 @@ describe('userCartSlice', () => { { productId: 'product2', Quantity: 1 }, ]); expect(result.payload).toEqual({ data: 'success' }); - + // Dispatch the handleRemoveItemInCart action - const result2=await store.dispatch(handleUserAddCart({ productId: 'product2', quantity: 1 })); - await handleUserAddCart({ productId: 'product2', quantity: 1 })(dispatch, () => initialState, undefined); - + const result2 = await store.dispatch( + handleUserAddCart({ productId: 'product2', quantity: 1 }), + ); + await handleUserAddCart({ productId: 'product2', quantity: 1 })( + dispatch, + () => initialState, + undefined, + ); + // Assertions - const actions = dispatch.mock.calls.map(call => call[0]); + const actions = dispatch.mock.calls.map((call) => call[0]); expect(result2.payload).toEqual({ data: 'success' }); expect(actions[0].type).toBe(handleUserAddCart.pending.type); expect(actions[1].type).toBe(handleUserAddCart.fulfilled.type); }); - it('should handle product already exists in the cart', async () => { const payload = { productId: 'product1', productPrice: 100, }; - localStorage.setItem('productCart', JSON.stringify({ - userId: 'user1', - product: [{ product: 'product1', quantity: 1, totalPrice: 100 }], - })); + localStorage.setItem( + 'productCart', + JSON.stringify({ + userId: 'user1', + product: [{ product: 'product1', quantity: 1, totalPrice: 100 }], + }), + ); const thunk = handleUserAddCart(payload); const dispatch = jest.fn(); @@ -140,16 +134,18 @@ describe('userCartSlice', () => { }); it('should handle errors during request', async () => { - const payload = { productId: 'product1', productPrice: 100, }; - localStorage.setItem('productCart', JSON.stringify({ - userId: 'user1', - product: [{ product: 'product2', quantity: 1, totalPrice: 150 }], - })); + localStorage.setItem( + 'productCart', + JSON.stringify({ + userId: 'user1', + product: [{ product: 'product2', quantity: 1, totalPrice: 150 }], + }), + ); (request.put as jest.Mock).mockRejectedValue({ response: { data: { error: 'Network error' } }, @@ -162,197 +158,209 @@ describe('userCartSlice', () => { const result = await thunk(dispatch, getState, undefined); expect(showToast).toHaveBeenCalledWith('Network error', 'error'); - // expect(result.payload).toEqual('Network error'); + // expect(result.payload).toEqual('Network error'); }); + //-------------------------- test handle cart number update ================================================================= -//-------------------------- test handle cart number update ================================================================= - -it('should update the quantity of a product in the cart successfully', async () => { - const initialState = { - loading: false, - allProduct: [], - cart: { userId: '', product: [] }, - productInCart: [], - error: null, - }; - - const payload = { - productId: 'product1', - quantity: 3, - }; + it('should update the quantity of a product in the cart successfully', async () => { + const initialState = { + loading: false, + allProduct: [], + cart: { userId: '', product: [] }, + productInCart: [], + error: null, + }; - localStorage.setItem( - 'productCart', - JSON.stringify({ - userId: 'user1', - product: [{ product: 'product1', quantity: 1 }], - }), - ); - - (request.put as jest.Mock).mockResolvedValue({ data: 'success' }); - - const thunk = handleChangeCartQuantity(payload); - const dispatch = jest.fn(); - const getState = jest.fn(); - - const result = await thunk(dispatch, getState, undefined); - - const expectedItems = [ - { productId: 'product1', Quantity: 3 }, - ]; - - expect(request.put).toHaveBeenCalledWith('/carts', expectedItems); - expect(result.payload).toEqual({ data: 'success' }); - // Dispatch the handleRemoveItemInCart action - const result2=await store.dispatch(handleChangeCartQuantity({ productId: 'product2', quantity: 1 })); - await handleChangeCartQuantity({ productId: 'product2', quantity: 1 })(dispatch, () => initialState, undefined); - - // Assertions - const actions = dispatch.mock.calls.map(call => call[0]); - expect(result2.payload).toEqual({ data: 'success' }); - expect(actions[0].type).toBe(handleChangeCartQuantity.pending.type); - expect(actions[1].type).toBe(handleChangeCartQuantity.fulfilled.type); -}); + const payload = { + productId: 'product1', + quantity: 3, + }; + localStorage.setItem( + 'productCart', + JSON.stringify({ + userId: 'user1', + product: [{ product: 'product1', quantity: 1 }], + }), + ); + (request.put as jest.Mock).mockResolvedValue({ data: 'success' }); -it('should handle errors during the request', async () => { - const payload = { - productId: 'product1', - quantity: 3, - }; + const thunk = handleChangeCartQuantity(payload); + const dispatch = jest.fn(); + const getState = jest.fn(); - localStorage.setItem( - 'productCart', - JSON.stringify({ - userId: 'user1', - product: [{ product: 'product1', quantity: 1 }], - }), - ); + const result = await thunk(dispatch, getState, undefined); - const errorResponse = { response: { data: { error: 'Network error' } } }; - (request.put as jest.Mock).mockRejectedValue(errorResponse); + const expectedItems = [{ productId: 'product1', Quantity: 3 }]; - const thunk = handleChangeCartQuantity(payload); - const dispatch = jest.fn(); - const getState = jest.fn(); + expect(request.put).toHaveBeenCalledWith('/carts', expectedItems); + expect(result.payload).toEqual({ data: 'success' }); + // Dispatch the handleRemoveItemInCart action + const result2 = await store.dispatch( + handleChangeCartQuantity({ productId: 'product2', quantity: 1 }), + ); + await handleChangeCartQuantity({ productId: 'product2', quantity: 1 })( + dispatch, + () => initialState, + undefined, + ); - const result = await thunk(dispatch, getState, undefined); + // Assertions + const actions = dispatch.mock.calls.map((call) => call[0]); + expect(result2.payload).toEqual({ data: 'success' }); + expect(actions[0].type).toBe(handleChangeCartQuantity.pending.type); + expect(actions[1].type).toBe(handleChangeCartQuantity.fulfilled.type); + }); - expect(request.put).toHaveBeenCalledWith('/carts', [ - { productId: 'product1', Quantity: 3 }, - ]); - expect(result.payload).toEqual(errorResponse.response.data); - // expect(result.error.message).toBe('Rejected'); + it('should handle errors during the request', async () => { + const payload = { + productId: 'product1', + quantity: 3, + }; -}); + localStorage.setItem( + 'productCart', + JSON.stringify({ + userId: 'user1', + product: [{ product: 'product1', quantity: 1 }], + }), + ); -//-------------------------- test handle delete a single cart item ================================================================= + const errorResponse = { response: { data: { error: 'Network error' } } }; + (request.put as jest.Mock).mockRejectedValue(errorResponse); -it('should remove a product from the cart successfully', async () => { - const initialState = { - loading: false, - allProduct: [], - cart: { userId: '', product: [] }, - productInCart: [], - error: null, - }; - const productId = 'product1'; - - // Mock localStorage data - localStorage.setItem('productCart', JSON.stringify({ - userId: 'user1', - product: [{ product: 'product1', quantity: 2 }, { product: 'product2', quantity: 1 }] - })); - - // Mock Axios response for the PUT request - const expectedItems = [ - { productId: 'product2', Quantity: 1 }, - ]; - - mockedRequest.put.mockResolvedValue({ data: 'success' }); - const dispatch = jest.fn(); - // Dispatch the handleRemoveItemInCart action - const result=await store.dispatch(handleRemoveItemInCart(productId)); - await handleRemoveItemInCart(productId)(dispatch, () => initialState, undefined); - - // Assertions - expect(mockedRequest.put).toHaveBeenCalledWith('/carts', expectedItems); - const actions = dispatch.mock.calls.map(call => call[0]); - console.log("1111111111111111111111111111111111111111111111111111111111111111111111111111111",result) - expect(result.payload).toEqual({ data: 'success' }); - expect(actions[0].type).toBe(handleRemoveItemInCart.pending.type); - expect(actions[1].type).toBe(handleRemoveItemInCart.rejected.type); + const thunk = handleChangeCartQuantity(payload); + const dispatch = jest.fn(); + const getState = jest.fn(); -}); + const result = await thunk(dispatch, getState, undefined); + expect(request.put).toHaveBeenCalledWith('/carts', [ + { productId: 'product1', Quantity: 3 }, + ]); + expect(result.payload).toEqual(errorResponse.response.data); + // expect(result.error.message).toBe('Rejected'); + }); -//-------------------------- test handle delete a single cart item ================================================================= + //-------------------------- test handle delete a single cart item ================================================================= -it('should remove all product from the cart successfully', async () => { - const initialState = { - loading: false, - allProduct: [], - cart: { userId: '', product: [] }, - productInCart: [], - error: null, - }; - - - // Mock localStorage data - localStorage.setItem('productCart', JSON.stringify({ - userId: 'user1', - product: [{ product: 'product1', quantity: 2 }, { product: 'product2', quantity: 1 }] - })); - - // Mock Axios response for the PUT request - const expectedItems:any= []; - - mockedRequest.put.mockResolvedValue({ data: 'success' }); - const dispatch = jest.fn(); - // Dispatch the handleRemoveItemInCart action - const result=await store.dispatch(handleRemoveAllCart()); - await handleRemoveAllCart()(dispatch, () => initialState, undefined); - - // Assertions - expect(mockedRequest.put).toHaveBeenCalledWith('/carts', expectedItems); - const actions = dispatch.mock.calls.map(call => call[0]); - expect(result.payload).toEqual({ data: 'success' }); - expect(actions[0].type).toBe(handleRemoveAllCart.pending.type); - expect(actions[1].type).toBe(handleRemoveAllCart.fulfilled.type); + it('should remove a product from the cart successfully', async () => { + const initialState = { + loading: false, + allProduct: [], + cart: { userId: '', product: [] }, + productInCart: [], + error: null, + }; + const productId = 'product1'; + + // Mock localStorage data + localStorage.setItem( + 'productCart', + JSON.stringify({ + userId: 'user1', + product: [ + { product: 'product1', quantity: 2 }, + { product: 'product2', quantity: 1 }, + ], + }), + ); + + // Mock Axios response for the PUT request + const expectedItems = [{ productId: 'product2', Quantity: 1 }]; + + mockedRequest.put.mockResolvedValue({ data: 'success' }); + const dispatch = jest.fn(); + // Dispatch the handleRemoveItemInCart action + const result = await store.dispatch(handleRemoveItemInCart(productId)); + await handleRemoveItemInCart(productId)( + dispatch, + () => initialState, + undefined, + ); -}); + // Assertions + expect(mockedRequest.put).toHaveBeenCalledWith('/carts', expectedItems); + const actions = dispatch.mock.calls.map((call) => call[0]); + console.log( + '1111111111111111111111111111111111111111111111111111111111111111111111111111111', + result, + ); + expect(result.payload).toEqual({ data: 'success' }); + expect(actions[0].type).toBe(handleRemoveItemInCart.pending.type); + expect(actions[1].type).toBe(handleRemoveItemInCart.rejected.type); + }); + //-------------------------- test handle delete a single cart item ================================================================= + it('should remove all product from the cart successfully', async () => { + const initialState = { + loading: false, + allProduct: [], + cart: { userId: '', product: [] }, + productInCart: [], + error: null, + }; + // Mock localStorage data + localStorage.setItem( + 'productCart', + JSON.stringify({ + userId: 'user1', + product: [ + { product: 'product1', quantity: 2 }, + { product: 'product2', quantity: 1 }, + ], + }), + ); + + // Mock Axios response for the PUT request + const expectedItems: any = []; + + mockedRequest.put.mockResolvedValue({ data: 'success' }); + const dispatch = jest.fn(); + // Dispatch the handleRemoveItemInCart action + const result = await store.dispatch(handleRemoveAllCart()); + await handleRemoveAllCart()(dispatch, () => initialState, undefined); -it('should update the cart and save to localStorage when result.cart is provided', () => { - const actionPayload = { - cart: { userId: 'user1', product: [{ productId: 'product1', quantity: 2 }] }, - }; + // Assertions + expect(mockedRequest.put).toHaveBeenCalledWith('/carts', expectedItems); + const actions = dispatch.mock.calls.map((call) => call[0]); + expect(result.payload).toEqual({ data: 'success' }); + expect(actions[0].type).toBe(handleRemoveAllCart.pending.type); + expect(actions[1].type).toBe(handleRemoveAllCart.fulfilled.type); + }); - store.dispatch(handleCartCount(actionPayload)); - const state: RootState = store.getState(); - //const newState = userCartReducer(initialState, action); + it('should update the cart and save to localStorage when result.cart is provided', () => { + const actionPayload = { + cart: { + userId: 'user1', + product: [{ productId: 'product1', quantity: 2 }], + }, + }; - expect(state.cartReducer.cart).toEqual(actionPayload.cart); - expect(state.cartReducer.error).toBe(''); - expect(localStorage.getItem('productCart')).toBe(JSON.stringify(actionPayload.cart)); -}); + store.dispatch(handleCartCount(actionPayload)); + const state: RootState = store.getState(); + //const newState = userCartReducer(initialState, action); -it('should update the error and clear the cart when result.cart is not provided', () => { - const actionPayload = { - error: 'Error occurred', - }; + expect(state.cartReducer.cart).toEqual(actionPayload.cart); + expect(state.cartReducer.error).toBe(''); + expect(localStorage.getItem('productCart')).toBe( + JSON.stringify(actionPayload.cart), + ); + }); + it('should update the error and clear the cart when result.cart is not provided', () => { + const actionPayload = { + error: 'Error occurred', + }; store.dispatch(handleCartCount(actionPayload)); const state: RootState = store.getState(); - expect(state.cartReducer.error).toBe(actionPayload.error); - expect(state.cartReducer.cart).toEqual({ userId: '', product: [] }); - expect(localStorage.getItem('productCart')).toBe(null); -}); - - + expect(state.cartReducer.error).toBe(actionPayload.error); + expect(state.cartReducer.cart).toEqual({ userId: '', product: [] }); + expect(localStorage.getItem('productCart')).toBe(null); + }); }); diff --git a/src/__tests__/adminDashboard.test.tsx b/src/__tests__/adminDashboard.test.tsx index 038e150..e8cbb49 100644 --- a/src/__tests__/adminDashboard.test.tsx +++ b/src/__tests__/adminDashboard.test.tsx @@ -1,16 +1,20 @@ import React, { useEffect } from 'react'; import { render, screen, fireEvent } from '@testing-library/react'; import { useRouter } from 'next/navigation'; -import Dashboard from '@/app/admin/page'; +import Dashboard from '@/app/dashboard/page'; import AdminDashboard from '@/hooks/useAdminDashboard'; import { useQuery } from '@tanstack/react-query'; import ReactQueryProvider from '@/utils/ReactQueryProvider'; import '@testing-library/jest-dom'; -import userEvent from '@testing-library/user-event' +import userEvent from '@testing-library/user-event'; import Providers from '@/app/providers'; -jest.mock('../components/DashboardHeader', () => jest.fn(() =>
Mocked DashboardHeader
)); -jest.mock('../components/UsersAdmin', () => jest.fn(() =>
Mocked UsersPageAdmin
)); +jest.mock('../components/DashboardHeader', () => + jest.fn(() =>
Mocked DashboardHeader
), +); +jest.mock('../components/UsersAdmin', () => + jest.fn(() =>
Mocked UsersPageAdmin
), +); const Test = () => { const { data } = useQuery({ @@ -25,8 +29,8 @@ jest.mock('next/navigation', () => ({ push: jest.fn(), })), useSearchParams: () => ({ - get: () => { } - }) + get: () => {}, + }), })); describe('Testing ReactQueryProvider', () => { @@ -42,17 +46,16 @@ describe('Testing ReactQueryProvider', () => { const { findByText } = render( - + , ); expect(await findByText('test')).toBeInTheDocument(); }); }); - describe('Dashboard', () => { it('renders Dashboard with mocked components', () => { const { getByText } = render(); - expect(getByText('Mocked DashboardHeader')).toBeInTheDocument() + expect(getByText('Mocked DashboardHeader')).toBeInTheDocument(); expect(getByText('Dashboard')).toBeInTheDocument(); }); diff --git a/src/__tests__/homeDash.test.tsx b/src/__tests__/homeDash.test.tsx new file mode 100644 index 0000000..b24457a --- /dev/null +++ b/src/__tests__/homeDash.test.tsx @@ -0,0 +1,88 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import Page from '@/app/dashboard/home/page'; +import request from '@/utils/axios'; +import { useRouter } from 'next/navigation'; + +jest.mock('@/utils/axios', () => ({ + get: jest.fn(), +})); + +jest.mock('next/cache', () => ({ + unstable_noStore: jest.fn(), +})); + +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), +})); + +const queryClient = new QueryClient(); +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); +describe('Page Component', () => { + beforeEach(() => { + (request.get as jest.Mock).mockImplementation((url) => { + if (url.includes('/stats')) { + return Promise.resolve({ + data: { + stats: {}, + }, + }); + } + if (url.includes('/categories')) { + return Promise.resolve({ + categories: [ + { id: 1, name: 'Category 1' }, + { id: 2, name: 'Category 2' }, + ], + }); + } + if (url.includes('/users')) { + return Promise.resolve({ + users: [ + { id: 1, name: 'User 1', role: 'admin' }, + { id: 2, name: 'User 2', role: 'seller' }, + ], + }); + } + return Promise.resolve({ data: [] }); + }); + + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); + + test('renders loading state initially', () => { + render( + + + , + ); + }); + + test('renders data after loading', async () => { + render( + + + , + ); + + await waitFor(() => { + expect(screen.getByText(/Dashboard/i)).toBeInTheDocument(); + }); + }); +}); diff --git a/src/__tests__/productDashboard.test.tsx b/src/__tests__/productDashboard.test.tsx new file mode 100644 index 0000000..3274c83 --- /dev/null +++ b/src/__tests__/productDashboard.test.tsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import Page from '@/app/dashboard/product/page'; +import request from '@/utils/axios'; +import { useRouter } from 'next/navigation'; + +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), +})); +const queryClient = new QueryClient(); +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); +jest.mock('@/components/Table', () => () => ( +
Mock Product Table
+)); +describe('Page Component', () => { + beforeEach(() => { + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); + + test('renders loading state initially', () => { + render( + + + , + ); + }); +}); diff --git a/src/__tests__/productList.test.tsx b/src/__tests__/productList.test.tsx index b710431..88a0534 100644 --- a/src/__tests__/productList.test.tsx +++ b/src/__tests__/productList.test.tsx @@ -1,10 +1,15 @@ import React from 'react'; import { render } from '@testing-library/react'; import '@testing-library/jest-dom'; -import { QueryClient, QueryClientProvider, useQuery } from '@tanstack/react-query'; -import SideBar from "@/components/Side" +import { + QueryClient, + QueryClientProvider, + useQuery, +} from '@tanstack/react-query'; +import SideBar from '@/components/Side'; import Provider from '@/app/providers'; import Page from '@/app/products/page'; +import { useRouter } from 'next/navigation'; const queryClient = new QueryClient(); const ProductListTest = () => { @@ -14,39 +19,59 @@ const ProductListTest = () => { }); return
{data}
; }; - +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), + useParams: jest.fn(), +})); describe('ProductList', () => { + beforeEach(() => { + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + const { useParams } = jest.requireMock('next/navigation'); + useParams.mockReturnValue({ id: '123' }); + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); it('renders without crashing', async () => { const { findByText } = render( - - - + + + , ); expect(await findByText('test')).toBeInTheDocument(); -}); -it('renders Page without crashing', async () => { - const { findByText } = render( + }); + it('renders Page without crashing', async () => { + const { findByText } = render( - - ); - expect(await findByText('All Products')).toBeInTheDocument(); -}); -it('renders single Page without crashing', async () => { - const { findByText } = render( + , + ); + expect(await findByText('All Products')).toBeInTheDocument(); + }); + it('renders single Page without crashing', async () => { + const { findByText } = render( - - ); - expect(await findByText('All Products')).toBeInTheDocument(); -}); -it('should render productList', async ()=> { - const { getByText } = render( - - - - ); - expect(getByText('Filter Product')).toBeInTheDocument() -}) + , + ); + expect(await findByText('All Products')).toBeInTheDocument(); + }); + it('should render productList', async () => { + const { getByText } = render( + + + , + ); + expect(getByText('Filter Product')).toBeInTheDocument(); + }); }); diff --git a/src/__tests__/singleProduct.test.tsx b/src/__tests__/singleProduct.test.tsx new file mode 100644 index 0000000..b2db6b1 --- /dev/null +++ b/src/__tests__/singleProduct.test.tsx @@ -0,0 +1,79 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import Page from '@/app/dashboard/products_/[id]/page'; +import request from '@/utils/axios'; +import { useRouter } from 'next/navigation'; + +jest.mock('@/utils/axios', () => ({ + get: jest.fn(), +})); + +jest.mock('next/cache', () => ({ + unstable_noStore: jest.fn(), +})); + +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), +})); + +const queryClient = new QueryClient(); +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); +jest.mock('@/components/singleproduct', () => () => ( +
Product Page
+)); +describe('Page Component', () => { + beforeEach(() => { + (request.get as jest.Mock).mockImplementation((url) => { + if (url.includes('/stats')) { + return Promise.resolve({ + data: { + stats: {}, + }, + }); + } + if (url.includes('/categories')) { + return Promise.resolve({ + categories: [ + { id: 1, name: 'Category 1' }, + { id: 2, name: 'Category 2' }, + ], + }); + } + if (url.includes('/users')) { + return Promise.resolve({ + users: [ + { id: 1, name: 'User 1', role: 'admin' }, + { id: 2, name: 'User 2', role: 'seller' }, + ], + }); + } + return Promise.resolve({ data: [] }); + }); + + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); + + test('renders loading state initially', () => { + render( + + + , + ); + }); +}); diff --git a/src/__tests__/updatesDash.test.tsx b/src/__tests__/updatesDash.test.tsx new file mode 100644 index 0000000..7f48462 --- /dev/null +++ b/src/__tests__/updatesDash.test.tsx @@ -0,0 +1,100 @@ +import React from 'react'; +import { render, screen, waitFor } from '@testing-library/react'; +import '@testing-library/jest-dom'; +import { QueryClient, QueryClientProvider } from '@tanstack/react-query'; +import Page from '@/app/dashboard/product_/[id]/page'; +import request from '@/utils/axios'; +import { useRouter } from 'next/navigation'; + +jest.mock('@/utils/axios', () => ({ + get: jest.fn(), +})); + +jest.mock('next/navigation', () => ({ + useRouter: jest.fn(), + useParams: jest.fn(), +})); + +// Mock components +jest.mock('@/components/DashNavbar', () => () => ( +
Mock DashNavbar
+)); +jest.mock('@/components/headerDash', () => () => ( +
Mock HeaderDash
+)); +jest.mock('@/components/Product/AddProducts', () => () => ( +
Mock AddProducts
+)); + +const queryClient = new QueryClient(); + +describe('Page Component', () => { + beforeEach(() => { + (request.get as jest.Mock).mockImplementation((url) => { + if (url.includes('/categories')) { + return Promise.resolve({ + data: [ + { id: 1, name: 'Category 1' }, + { id: 2, name: 'Category 2' }, + ], + }); + } + return Promise.resolve({ data: [] }); + }); + + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + const { useParams } = jest.requireMock('next/navigation'); + useParams.mockReturnValue({ id: '123' }); + + (useRouter as jest.Mock).mockReturnValue({ + push: jest.fn(), + }); + }); + + test('renders data after loading', async () => { + render( + + + , + ); + + await waitFor(() => { + expect(screen.getByTestId('mock-dashnavbar')).toBeInTheDocument(); + }); + + expect(screen.getByTestId('mock-headerdash')).toBeInTheDocument(); + expect(screen.getByTestId('mock-addproducts')).toBeInTheDocument(); + }); + + test('redirects to /dashboard/home if user is not a seller', async () => { + Storage.prototype.getItem = jest.fn(() => + JSON.stringify({ + User: { + Role: { + name: 'admin', + }, + name: 'Test User', + }, + }), + ); + + render( + + + , + ); + + await waitFor(() => { + expect(useRouter().push).toHaveBeenCalledWith('/dashboard/home'); + }); + }); +}); diff --git a/src/app/(profile)/profile/page.tsx b/src/app/(profile)/profile/page.tsx index 6544813..33dc345 100644 --- a/src/app/(profile)/profile/page.tsx +++ b/src/app/(profile)/profile/page.tsx @@ -1,3 +1,4 @@ +'use client'; // pages/profile.tsx import About from '@/components/profile/About'; import ActiveUser from '@/components/profile/ActiveUsers'; @@ -8,26 +9,26 @@ import Header from '@/components/Header'; import Footer from '@/components/Footer'; import React from 'react'; const ProfilePage = () => { - return ( -
-
- -
-
-
- -
-
- -
-
- - -
-
-
-
+ return ( +
+
+ +
+
+
+ +
+
+ +
+
+ + +
- ); +
+
+
+ ); }; export default ProfilePage; diff --git a/src/app/dashboard/home/page.tsx b/src/app/dashboard/home/page.tsx new file mode 100644 index 0000000..4243d4d --- /dev/null +++ b/src/app/dashboard/home/page.tsx @@ -0,0 +1,67 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import { unstable_noStore as noStore } from 'next/cache'; +import SellerSummary from '@/components/SellerSummary'; +import Chartssection from '@/components/chartssection'; +import request from '@/utils/axios'; +import { useQuery } from '@tanstack/react-query'; +import LayoutDashboard from '@/components/LayoutDashboard'; + +function Page() { + const [categories, setcategoris] = useState([]); + const [users, setUsers] = useState(); + const [user, setUser] = useState(); + + const { data, isLoading, error } = useQuery({ + queryKey: ['data'], + queryFn: async () => { + noStore(); + let data; + const date = new Date(); + const dataDateNow = date + .toLocaleDateString() + .replaceAll('/', '-') + .split('-'); + const response: any = await request.get( + `/stats?start=2023-02-06&end=${dataDateNow[2]}-${dataDateNow[0].length > 1 ? dataDateNow[0] : '0' + dataDateNow[0]}-${dataDateNow[1].length > 1 ? dataDateNow[1] : '0' + dataDateNow[1]}`, + ); + data = response.data; + + return data; + }, + }); + + useEffect(() => { + const categ = async () => { + const responsecat: any = await request.get('/categories'); + const user = localStorage.getItem('profile') || 'no'; + const finalUser = JSON.parse(user); + setUser(finalUser.User); + if (finalUser.User.Role.name === 'admin') { + const responseUsers: any = await request.get('/users'); + setUsers(responseUsers.users); + } + setcategoris(responsecat.categories); + }; + categ(); + }, []); + + return ( + + + + + ); +} + +export default Page; diff --git a/src/app/admin/page.tsx b/src/app/dashboard/page.tsx similarity index 100% rename from src/app/admin/page.tsx rename to src/app/dashboard/page.tsx diff --git a/src/app/dashboard/product/page.tsx b/src/app/dashboard/product/page.tsx new file mode 100644 index 0000000..168e487 --- /dev/null +++ b/src/app/dashboard/product/page.tsx @@ -0,0 +1,34 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import ProductsTable from '@/components/Table'; +import { useRouter } from 'next/navigation'; +import LayoutDashboard from '@/components/LayoutDashboard'; + +function page() { + const [user, setUser] = useState(); + const router = useRouter(); + useEffect(() => { + const categ = async () => { + const user = localStorage.getItem('profile') || 'no'; + const finalUser = JSON.parse(user); + + setUser(finalUser.User); + }; + categ(); + }, []); + + // if (!user) { + // return ( + //
+ //
+ //
+ // ); + // } + return ( + + + + ); +} + +export default page; diff --git a/src/app/dashboard/product_/[id]/page.tsx b/src/app/dashboard/product_/[id]/page.tsx new file mode 100644 index 0000000..fc52a0d --- /dev/null +++ b/src/app/dashboard/product_/[id]/page.tsx @@ -0,0 +1,43 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import request from '@/utils/axios'; +import ProductPopup from '@/components/Product/editProduct'; +import { useRouter, useParams } from 'next/navigation'; +import LayoutDashboard from '@/components/LayoutDashboard'; + +function page() { + const [user, setUser] = useState(); + const [product, setProduct] = useState(); + const router = useRouter(); + const { id } = useParams(); + + const productId: any = id; + + useEffect(() => { + const categ = async () => { + const responsecat: any = await request.get(`/products/${productId}`); + const user = localStorage.getItem('profile') || 'no'; + const finalUser = JSON.parse(user); + setProduct(responsecat.product); + + setUser(finalUser.User); + if (finalUser?.User?.Role.name !== 'seller') { + router.push('/dashboard/home'); + } + }; + categ(); + }, []); + + return ( + + console.log('nothing')} + /> + ; + + ); +} + +export default page; diff --git a/src/app/dashboard/productcreate/page.tsx b/src/app/dashboard/productcreate/page.tsx new file mode 100644 index 0000000..b88b859 --- /dev/null +++ b/src/app/dashboard/productcreate/page.tsx @@ -0,0 +1,32 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import request from '@/utils/axios'; +import ProductPopup from '@/components/Product/AddProducts'; +import { useRouter } from 'next/navigation'; +import LayoutDashboard from '@/components/LayoutDashboard'; + +function page() { + const [user, setUser] = useState(); + const router = useRouter(); + useEffect(() => { + const categ = async () => { + const responsecat: any = await request.get('/categories'); + const user = localStorage.getItem('profile') || 'no'; + const finalUser = JSON.parse(user); + + setUser(finalUser.User); + if (finalUser?.User?.Role.name !== 'seller') { + router.push('/dashboard/home'); + } + }; + categ(); + }, []); + + return ( + + console.log('nothing')} />; + + ); +} + +export default page; diff --git a/src/app/dashboard/products_/[id]/page.tsx b/src/app/dashboard/products_/[id]/page.tsx new file mode 100644 index 0000000..fcd885c --- /dev/null +++ b/src/app/dashboard/products_/[id]/page.tsx @@ -0,0 +1,28 @@ +// BuyerProductView +'use client'; +import React, { useEffect, useState } from 'react'; +import Singleproduct from '@/components/singleproduct'; +import LayoutDashboard from '@/components/LayoutDashboard'; + +function Page() { + const [user, setUser] = useState(); + useEffect(() => { + const categ = async () => { + const user = localStorage.getItem('profile') || 'no'; + const finalUser = JSON.parse(user); + setUser(finalUser.User); + }; + categ(); + }, []); + + return ( + + + + ); +} + +export default Page; diff --git a/src/app/dashboard/profile/page.tsx b/src/app/dashboard/profile/page.tsx new file mode 100644 index 0000000..dd24a24 --- /dev/null +++ b/src/app/dashboard/profile/page.tsx @@ -0,0 +1,25 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import request from '@/utils/axios'; +import LayoutDashboard from '@/components/LayoutDashboard'; + +function page() { + const [user, setUser] = useState(); + useEffect(() => { + const categ = async () => { + const user = localStorage.getItem('profile') || 'no'; + const finalUser = await JSON.parse(user); + + setUser(finalUser?.User); + }; + categ(); + }, []); + + return ( + +

Profile page

+
+ ); +} + +export default page; diff --git a/src/app/dashboard/users/page.tsx b/src/app/dashboard/users/page.tsx new file mode 100644 index 0000000..d60302f --- /dev/null +++ b/src/app/dashboard/users/page.tsx @@ -0,0 +1,48 @@ +'use client'; +import React, { use, useEffect, useState } from 'react'; +import DashNavbar from '@/components/DashNavbar'; +import HeaderDash from '@/components/headerDash'; +import UsersPageAdmin from '@/components/UsersAdmin'; + +function page() { + const [user, setUser] = useState(); + useEffect(() => { + const categ = async () => { + const user = localStorage.getItem('profile') || ''; + const finalUser = JSON.parse(user); + + setUser(finalUser?.User); + console.log(finalUser); + }; + categ(); + }, []); + + if (!user) { + return ( +
+
+
+ ); + } + return ( +
+
+ +
+
+
+ +
+ {/* body section */} +
+ {/* Statistic section */} +
+ +
+
+
+
+ ); +} + +export default page; diff --git a/src/app/page.tsx b/src/app/page.tsx index 496ccfe..d4f9365 100644 --- a/src/app/page.tsx +++ b/src/app/page.tsx @@ -16,6 +16,7 @@ import Footer from '@/components/Footer'; import { HomeAds } from '@/components/HomeAds'; import { ProductWithFilter } from '@/components/allProducts'; +import Link from 'next/link'; export interface FormDataType { confirmPassword: string; @@ -24,8 +25,6 @@ export interface FormDataType { } export default function Home() { - - const [showlModal, setShowmodal] = useState(false); const { register, @@ -119,10 +118,11 @@ export default function Home() {

Get 25% off with our sponsor promo code

- - + + +
{/* Footer Sections */} diff --git a/src/app/sellers/products_/page.tsx b/src/app/sellers/products_/page.tsx index 9d313e4..352b7b5 100644 --- a/src/app/sellers/products_/page.tsx +++ b/src/app/sellers/products_/page.tsx @@ -14,16 +14,16 @@ function SellerProductView() { }; return ( <> -
-
+
+

Seller products view

- +
-
- +
+
diff --git a/src/components/2faVerification.tsx b/src/components/2faVerification.tsx index 974d755..729d336 100644 --- a/src/components/2faVerification.tsx +++ b/src/components/2faVerification.tsx @@ -13,7 +13,6 @@ import { resendOTPCode, } from '@/redux/slices/2faAuthenticationSlice'; import GlobarPopUp from './UsablePopUp'; -import request from '@/utils/axios'; interface OtpVerifyInterface { isOpen: boolean; @@ -32,7 +31,7 @@ const OtpVerify: React.FC = ({ isOpen }) => { useEffect(() => { if (isAuthenticated) { - router.push('/seller/dashboard/products'); + router.push('/dashboard/home'); } }, [isAuthenticated]); @@ -45,12 +44,7 @@ const OtpVerify: React.FC = ({ isOpen }) => { const VerifyOtp = async () => { var otp = input.join(''); const result = otpValidation.safeParse({ otp }); - const result1 = await dispatch(handleOTPVerification(otp)); - if (result1) { - const profile = await request.get(`${URL}/users/profile`); - const userData = JSON.stringify(profile); - localStorage.setItem('profile', userData); - } + await dispatch(handleOTPVerification(otp)); }; const HandleInput = ( index: number, diff --git a/src/components/AssigningRoles.tsx b/src/components/AssigningRoles.tsx index 26bb93a..d78ea20 100644 --- a/src/components/AssigningRoles.tsx +++ b/src/components/AssigningRoles.tsx @@ -1,62 +1,81 @@ -"use client" +'use client'; import React, { useEffect, useRef, useState } from 'react'; import request from '@/utils/axios'; -import { useQuery, useMutation, RefetchOptions, QueryObserverResult, useQueryClient } from "@tanstack/react-query"; -import Swal from 'sweetalert2' +import { + useQuery, + useMutation, + RefetchOptions, + QueryObserverResult, + useQueryClient, +} from '@tanstack/react-query'; +import Swal from 'sweetalert2'; interface AssignRoleInterface { - id: string, - currentRole: string, - refetch: (options?: RefetchOptions) => Promise> + id: string; + currentRole: string; + refetch: ( + options?: RefetchOptions, + ) => Promise>; } -const AssigningRole: React.FC = ({ id, currentRole, refetch }) => { +const AssigningRole: React.FC = ({ + id, + currentRole, + refetch, +}) => { const select = useRef(null); const { isLoading, error, data } = useQuery({ queryKey: ['RolesList'], queryFn: () => request.get('/roles'), }); - var roles = data + var roles = data; const mutation = useMutation({ mutationFn: (roleId: string) => { - return request.patch(`/users/${id}/roles`, { roleId }) + return request.patch(`/users/${id}/roles`, { roleId }); }, onError: (error) => console.log(error), onSuccess: () => { - refetch() + refetch(); Swal.fire({ - title: "Success", - text: "Successfully Changed Role", - icon: "success" + title: 'Success', + text: 'Successfully Changed Role', + icon: 'success', }); - }, - }) + }, + }); const Assign = async () => { - var role = select.current?.value as string - mutation.mutate(role) + var role = select.current?.value as string; + mutation.mutate(role); }; return ( <> - { - isLoading || mutation.isPending ? ( -
-
-
- ) : ( - - ) - } + {isLoading || mutation.isPending ? ( +
+
+
+ ) : ( + + )} ); }; diff --git a/src/components/Button.tsx b/src/components/Button.tsx index 899b49b..996fec1 100644 --- a/src/components/Button.tsx +++ b/src/components/Button.tsx @@ -1,7 +1,7 @@ 'use client'; import React from 'react'; import { IoChevronBack } from 'react-icons/io5'; -import { IoMdClose } from "react-icons/io"; +import { IoMdClose } from 'react-icons/io'; interface Properties { name?: string; handle?: () => void; @@ -10,12 +10,20 @@ interface Properties { rotate?: boolean; background?: string; border?: string; - btnColor?:string; - className?:string; + btnColor?: string; + className?: string; } -export const Button: React.FC = ({ name, handle, loading, isDisabled, rotate, background, btnColor }) => { - const buttonClassName = ` relative min-h-[40px] min-w-[100%] bg-${background?background:'primaryBlue'}-600 ${btnColor? btnColor : ''} text-white p-1.5 px-8 border rounded-b-sm rounded-s-sm hover:bg-${background?background:'primaryBlue'}-700` +export const Button: React.FC = ({ + name, + handle, + loading, + isDisabled, + rotate, + background, + btnColor, +}) => { + const buttonClassName = ` relative min-h-[40px] min-w-[100%] bg-${background ? background : 'primaryBlue'}-600 ${btnColor ? btnColor : ''} text-white p-1.5 px-8 border rounded-b-sm rounded-s-sm hover:bg-${background ? background : 'primaryBlue'}-700`; return (
- ) -} + ); +}; -export const CloseButton: React.FC = ({ handle, isDisabled, rotate }) => { +export const CloseButton: React.FC = ({ + handle, + isDisabled, + rotate, +}) => { return ( <> - - ) -} + ); +}; -export const DisableButton: React.FC = ({ name, handle, loading, border, btnColor}) => { +export const DisableButton: React.FC = ({ + name, + handle, + loading, + border, + btnColor, +}) => { return (
); }; -export const ReviewButton: React.FC = ({ name, handle, loading, border, btnColor, className}) => { +export const ReviewButton: React.FC = ({ + name, + handle, + loading, + border, + btnColor, + className, +}) => { return (
-
); }; -export const BlueBorderButton: React.FC = ({ name, handle, loading, border, btnColor, className}) => { +export const BlueBorderButton: React.FC = ({ + name, + handle, + loading, + border, + btnColor, + className, +}) => { return (
-
); }; -export const DeleteButton: React.FC = ({ name, handle, loading}) => { +export const DeleteButton: React.FC = ({ + name, + handle, + loading, +}) => { return (
+ + + + + {userdata.User.Role.name == 'buyer' ? ( +

+ + Profile +

+ ) : ( +

+ + Dashboard +

+ )} +
+
+ + +

+ {' '} + Logout +

+
+
+
+ + )}
@@ -213,5 +269,4 @@ const Header = () => { ); }; - -export default Header; \ No newline at end of file +export default Header; diff --git a/src/components/HeroSection.tsx b/src/components/HeroSection.tsx index 40bd221..e9de1a1 100644 --- a/src/components/HeroSection.tsx +++ b/src/components/HeroSection.tsx @@ -2,6 +2,7 @@ import React from 'react'; import Slider from 'react-slick'; import 'slick-carousel/slick/slick.css'; import 'slick-carousel/slick/slick-theme.css'; +import Link from 'next/link'; const sliderData = [ { @@ -48,9 +49,11 @@ const HeroSection = () => {

{items.description}

- + + + →
diff --git a/src/components/LatestCard.tsx b/src/components/LatestCard.tsx index 0cf4261..59303e4 100644 --- a/src/components/LatestCard.tsx +++ b/src/components/LatestCard.tsx @@ -18,7 +18,7 @@ const LatestCard: React.FC = ({
diff --git a/src/components/LayoutDashboard.tsx b/src/components/LayoutDashboard.tsx new file mode 100644 index 0000000..9a68f96 --- /dev/null +++ b/src/components/LayoutDashboard.tsx @@ -0,0 +1,60 @@ +'use client'; +import React, { FC, useEffect, useState } from 'react'; +import DashNavbar from '@/components/DashNavbar'; +import HeaderDash from '@/components/headerDash'; +import { useRouter } from 'next/navigation'; +interface Properties { + children: React.ReactNode; + pageName: string; + isLoading?: boolean; +} +const LayoutDashboard: React.FC = ({ + children, + pageName, + isLoading, +}) => { + const [user, setUser] = useState(); + const router = useRouter(); + useEffect(() => { + const categ = async () => { + const user = localStorage.getItem('profile') || 'no'; + const finalUser = JSON.parse(user); + if ( + finalUser.User.Role.name !== 'seller' && + finalUser.User.Role.name !== 'admin' + ) { + router.push('/'); + } + + setUser(finalUser.User); + }; + categ(); + }, []); + + return ( +
+
+ +
+
+
+ +
+
+ {/* Statistic section */} +
+ {!isLoading ? ( + children + ) : ( +
+
+
+ )} +
+
+
+
+ ); +}; + +export default LayoutDashboard; diff --git a/src/components/Product/AddProducts.tsx b/src/components/Product/AddProducts.tsx index 55c4bb3..205938d 100644 --- a/src/components/Product/AddProducts.tsx +++ b/src/components/Product/AddProducts.tsx @@ -1,4 +1,4 @@ -"use client"; +'use client'; import React, { useState, useEffect } from 'react'; import { useForm, SubmitHandler } from 'react-hook-form'; @@ -31,22 +31,36 @@ interface ProductPopupProps { onClose: () => void; } -const ProductPopup: React.FC = ({ isOpen, onClose }) => { +const ProductPopup: React.FC = ({ + isOpen = true, + onClose, +}) => { const dispatch = useDispatch(); - const { register, handleSubmit, setValue, formState: { errors }, getValues, trigger } = useForm({ + const { + register, + handleSubmit, + setValue, + formState: { errors }, + getValues, + trigger, + } = useForm({ resolver: zodResolver(productSchema), }); const [pictures, setPictures] = useState([]); const [files, setFiles] = useState([]); const [uploadError, setUploadError] = useState(null); - const { categories, status } = useSelector((state: RootState) => state.productsAddReducers); + const { categories, status } = useSelector( + (state: RootState) => state.productsAddReducers, + ); const [loading, setLoading] = useState(false); useEffect(() => { - if (isOpen) { - dispatch(fetchCategories()); - } - }, [dispatch, isOpen]); + const cath = async () => { + const data = await dispatch(fetchCategories()); + console.log('dada', data); + }; + cath(); + }, []); useEffect(() => { document.body.style.overflow = 'hidden'; @@ -55,8 +69,7 @@ const ProductPopup: React.FC = ({ isOpen, onClose }) => { }; }, []); - const onSubmit: SubmitHandler = async data => { - console.log("data received", data); + const onSubmit: SubmitHandler = async (data) => { if (files.length < 4) { setUploadError('You must upload at least 4 pictures.'); return; @@ -73,7 +86,7 @@ const ProductPopup: React.FC = ({ isOpen, onClose }) => { try { const resultAction = await dispatch(createProduct(data as IProduct)); const result = unwrapResult(resultAction); - showToast(result.message, 'success'); + showToast(result.message, 'success'); console.log(result); console.log(result.message); onClose(); @@ -93,8 +106,8 @@ const ProductPopup: React.FC = ({ isOpen, onClose }) => { } else if (error.message) { errorMessage = error.message; } - - showToast(errorMessage, 'error'); + + showToast(errorMessage, 'error'); } finally { setLoading(false); } @@ -104,34 +117,37 @@ const ProductPopup: React.FC = ({ isOpen, onClose }) => { if (e.target.files && e.target.files.length === 1) { const file = e.target.files[0]; const totalFiles = files.length + 1; - + // Check for maximum file limit if (totalFiles > 8) { setUploadError('You can upload a maximum of 8 pictures.'); return; } - + // Validate file type const allowedTypes = ['image/jpeg', 'image/jpg', 'image/png']; if (!allowedTypes.includes(file.type)) { setUploadError('Only jpeg, jpg, and png files are allowed.'); return; } - + // Validate file size (maximum size of 1MB) const maxSizeInBytes = 1 * 1024 * 1024; if (file.size > maxSizeInBytes) { setUploadError('Image size must be less than 1MB.'); return; } - + const filePreview = URL.createObjectURL(file); - setPictures(prevPictures => [...prevPictures, filePreview]); - setFiles(prevFiles => [...prevFiles, file]); - setValue('productPictures', [...getValues('productPictures') || [], file]); + setPictures((prevPictures) => [...prevPictures, filePreview]); + setFiles((prevFiles) => [...prevFiles, file]); + setValue('productPictures', [ + ...(getValues('productPictures') || []), + file, + ]); trigger('productPictures'); setUploadError(null); - + const updatedFiles = getValues('productPictures') || []; if (updatedFiles.length < 4) { setUploadError('You must upload at least 4 pictures.'); @@ -142,21 +158,21 @@ const ProductPopup: React.FC = ({ isOpen, onClose }) => { setUploadError('Please upload one picture at a time.'); } }; - + const handleDeletePicture = (index: number) => { - setPictures(prevPictures => prevPictures.filter((_, i) => i !== index)); + setPictures((prevPictures) => prevPictures.filter((_, i) => i !== index)); const updatedFiles = files.filter((_, i) => i !== index); setFiles(updatedFiles); setValue('productPictures', updatedFiles); trigger('productPictures'); - + if (updatedFiles.length < 4) { setUploadError('You must upload at least 4 pictures.'); } else { setUploadError(null); } }; - + const getCurrentDate = () => { const today = new Date(); const year = today.getFullYear(); @@ -165,19 +181,25 @@ const ProductPopup: React.FC = ({ isOpen, onClose }) => { return `${year}-${month}-${day}`; }; - if (!isOpen) return null; + // if (!isOpen) return null; return ( -
-
e.stopPropagation()}> +
+
e.stopPropagation()} + > -

Add New Product

+

Add New Product

= ({ isOpen, onClose }) => { error={errors.productName?.message} />
-
@@ -253,7 +284,10 @@ const ProductPopup: React.FC = ({ isOpen, onClose }) => { error={errors.stockLevel?.message} />
-
{pictures.map((picture, index) => (
- {`Preview + {`Preview
-

update Product

+
+
e.stopPropagation()} + > +

update Product

-
@@ -359,12 +380,13 @@ console.log('DATA.PROD',product) error={errors.stockLevel?.message} />
- -
- {isImageLoading?( -
-
{reuploadStatus}
-
-
- ):( - <> - {pictures.map((picture, index) => ( -
- {`Preview - + {isImageLoading ? ( +
+
{reuploadStatus}
+
- ))} - - )} + ) : ( + <> + {pictures.map((picture, index) => ( +
+ {`Preview + +
+ ))} + + )}
- -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • -
  • - -
  • - - + {pages && pages > 1 && ( + + )}
    ); }; diff --git a/src/components/SellerSummary.tsx b/src/components/SellerSummary.tsx new file mode 100644 index 0000000..627610a --- /dev/null +++ b/src/components/SellerSummary.tsx @@ -0,0 +1,85 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import ShortCard from '@/components/shortCard'; + +interface Params { + user: any; + data: any; + categories: any; + users: []; +} +const SellerSummary: React.FC = ({ user, data, categories, users }) => { + return ( +
    +
    +
    +
    +

    Today Summary

    +

    seller summary

    +
    +
    + +
    + {user && user.Role.name === 'seller' ? ( + <> + + + + + + + ) : ( + <> + + + + )} +
    +
    +
    + ); +}; + +export default SellerSummary; diff --git a/src/components/Table.tsx b/src/components/Table.tsx index 7469134..7f10eff 100644 --- a/src/components/Table.tsx +++ b/src/components/Table.tsx @@ -1,11 +1,38 @@ 'use client'; -import React from 'react'; -import { useQuery } from '@tanstack/react-query'; +import React, { useState } from 'react'; +import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query'; import Link from 'next/link'; import request from '@/utils/axios'; import { ProductType, ProductObj } from '@/types/Product'; -import { Button, GreenButton } from "./Button" -const ProductsTable = () => { +import { Button, GreenButton } from './Button'; +import ConfirmDelete from './confirmDeletePopup'; +interface Properties { + Role: string; +} +const updateStatus = async ({ + id, + status, +}: { + id: string; + status: boolean; +}) => { + const newStatus = !status; + await request.patch(`/products/${id}/status`, { + isAvailable: newStatus, + }); +}; + +const ProductsTable: React.FC = ({ Role }) => { + const [Confirm, setConfirm] = useState(false); + const queryClient = useQueryClient(); + const [id, setID] = useState(); + + const toggleConfirmPopup = (prodid?: String) => { + console.log(prodid, 'Product id'); + setID(prodid as string); + setConfirm(!Confirm); + }; + const { data, isLoading, error } = useQuery({ queryKey: ['products'], queryFn: async () => { @@ -16,70 +43,144 @@ const ProductsTable = () => { return data; }, }); + + const mutation = useMutation({ + mutationFn: updateStatus, + onSuccess: () => { + queryClient.invalidateQueries({ queryKey: ['products'] }); + }, + }); + + const handleStatus = async (id: string, status: boolean) => { + mutation.mutate({ id, status }); + }; + if (isLoading) return Loading...; if (error) return Error: {error.message}; return ( -
    -
    - - - - - - - - - - - - {data.map((product:{ - id: string; - productName: string; - stockLevel: string; - productCurrency: string; - productPrice: number; - productDiscount: number; - }, - index: number) => ( - - + {data.map( + ( + product: { + id: string; + productName: string; + stockLevel: string; + productCurrency: string; + productPrice: number; + productDiscount: number; + isAvailable: boolean; + }, + index: number, + ) => ( + + + + + + + + {Role === 'seller' && ( + <> + + + + + )} + + ), + )} + +
    - No - - Product name - - Stock Level - - Price - - Discount - - Action -
    - {index + 1} + <> +
    + + + + + + + + + - - - - - + {Role === 'seller' && ( + <> + {' '} + + + + + )} - ))} - -
    + No + + Product name + + Stock Level + + Price + + Discount + + View {product.productName}{product.stockLevel} - {product.productPrice} {product.productCurrency} - {product.productDiscount} - - + Delete + + Update + + Status +
    -
    + +
    + {index + 1} + {product.productName}{product.stockLevel} + {product.productPrice} {product.productCurrency} + {product.productDiscount} + + + + + + + + + + + +
    +
    + {Confirm ? ( + + ) : ( + '' + )} + ); }; -export default ProductsTable; \ No newline at end of file +export default ProductsTable; diff --git a/src/components/UsersAdmin.tsx b/src/components/UsersAdmin.tsx index 8e7a3c7..60642fa 100644 --- a/src/components/UsersAdmin.tsx +++ b/src/components/UsersAdmin.tsx @@ -1,39 +1,38 @@ -"use client" +'use client'; import React, { useState } from 'react'; import { BackButton, DisableButton } from '@/components/Button'; import AssigningRole from '@/components/AssigningRoles'; import requestAxios from '@/utils/axios'; -import { useQuery } from "@tanstack/react-query"; +import { useQuery } from '@tanstack/react-query'; import { ColumnDef, flexRender, getCoreRowModel, getPaginationRowModel, useReactTable, -} from '@tanstack/react-table' +} from '@tanstack/react-table'; import DeactivateUser from './DeactivateUser'; type usersTable = { - No: number, - id: string, - firstName: string, - email: string, - roleId: string, - phone: string, - isActive:boolean -} + No: number; + id: string; + firstName: string; + email: string; + roleId: string; + phone: string; + isActive: boolean; +}; type PaginationState = { - pageIndex: number - pageSize: number -} - + pageIndex: number; + pageSize: number; +}; const UsersPageAdmin = () => { const [isUserActive, setIsUserActive] = useState(false); const [userId, setUserId] = useState(null); - const [isDeactivateUserModalOpen, setIsDeactivateUserModalOpen] = useState(false); - + const [isDeactivateUserModalOpen, setIsDeactivateUserModalOpen] = + useState(false); const { isLoading, refetch, error, data } = useQuery({ queryKey: ['AdminUserList'], @@ -41,46 +40,55 @@ const UsersPageAdmin = () => { }); const [pagination, setPagination] = useState({ pageIndex: 0, - pageSize: 7 - }) + pageSize: 7, + }); var usersData = data?.users ?? []; const columns: ColumnDef[] = [ { header: 'No', accessorFn: (val: any, index: number) => index + 1, - cell: (val: any) => {val.getValue()} + cell: (val: any) => {val.getValue()}, }, { header: 'Username', - accessorFn: row => row.firstName, - cell: (val: any) => {val.getValue()} + accessorFn: (row) => row.firstName, + cell: (val: any) => {val.getValue()}, }, { header: 'Email', - accessorFn: row => row.email, - cell: (val: any) => {val.getValue()} + accessorFn: (row) => row.email, + cell: (val: any) => {val.getValue()}, }, { header: 'Phone', - accessorFn: row => row.phone, - cell: (val: any) => {val.getValue()} + accessorFn: (row) => row.phone, + cell: (val: any) => {val.getValue()}, }, { id: 'Action', - header: () =>
    Action
    , - accessorFn: row => row.id, + header: () =>
    Action
    , + accessorFn: (row) => row.id, cell: (row: any) => ( -
    - +
    + handleOpenDeactivatePopup(row.row.original.id, row.row.original.isActive)} - border={row.row.original.isActive ? 'red' : "green"} + name={row.row.original.isActive ? 'Disable' : 'Activate'} + handle={() => + handleOpenDeactivatePopup( + row.row.original.id, + row.row.original.isActive, + ) + } + border={row.row.original.isActive ? 'red' : 'green'} />
    - ) + ), }, - ] + ]; const table = useReactTable({ data: usersData, @@ -89,66 +97,91 @@ const UsersPageAdmin = () => { onPaginationChange: setPagination, getCoreRowModel: getCoreRowModel(), state: { - pagination - } - }) - const handleOpenDeactivatePopup = (id: string, isActive:boolean) => { + pagination, + }, + }); + const handleOpenDeactivatePopup = (id: string, isActive: boolean) => { setIsUserActive(isActive); setUserId(id); setIsDeactivateUserModalOpen(true); }; - + const handleClosePopup = () => { setIsDeactivateUserModalOpen(false); setUserId(null); }; - return ( + return ( <> -
    +
    {isLoading ? ( -
    +
    ) : ( -
    +
    {!data ? ( -
    - Not found +
    + Not found Users not found
    ) : ( <> -

    Users:{Object.keys(usersData).length}

    -
    - - - {table.getHeaderGroups().map(headerGroup => ( +

    + Users: + + {Object.keys(usersData).length} + +

    +
    +
    + + {table.getHeaderGroups().map((headerGroup) => ( - {headerGroup.headers.map(header => ( - ))} ))} - {table.getRowModel().rows.map(row => ( - - {row.getVisibleCells().map(cell => ( + {table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( ))} ))}
    - {header.isPlaceholder ? null : flexRender(header.column.columnDef.header, header.getContext())} + {headerGroup.headers.map((header) => ( + + {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.header, + header.getContext(), + )}
    - {flexRender(cell.column.columnDef.cell, cell.getContext())} + {flexRender( + cell.column.columnDef.cell, + cell.getContext(), + )}
    -
    -
    - table.previousPage()} isDisabled={!table.getCanPreviousPage()} /> - {table.getState().pagination.pageIndex + 1} of {table.getPageCount()} - table.nextPage()} isDisabled={!table.getCanNextPage()} rotate /> +
    +
    + table.previousPage()} + isDisabled={!table.getCanPreviousPage()} + /> + {table.getState().pagination.pageIndex + 1} of{' '} + {table.getPageCount()} + table.nextPage()} + isDisabled={!table.getCanNextPage()} + rotate + + />
    @@ -158,7 +191,13 @@ const UsersPageAdmin = () => { )}
    {isDeactivateUserModalOpen && ( - + )} ); diff --git a/src/components/allProducts.tsx b/src/components/allProducts.tsx index ba7eceb..8acc560 100644 --- a/src/components/allProducts.tsx +++ b/src/components/allProducts.tsx @@ -12,8 +12,9 @@ export const ProductWithFilter = () => { ]; useEffect(() => { if (typeof window !== 'undefined') { - const storedToken = localStorage.getItem('token'); - SetLocal(storedToken as any); + const storedToken: string | any = localStorage.getItem('profile'); + const ifuser = JSON.parse(storedToken); + SetLocal(ifuser?.User?.Role.name as any); } }, []); const handleSelect = (event: React.ChangeEvent) => { @@ -32,7 +33,7 @@ export const ProductWithFilter = () => {
    {/* Filter with search */}
    - {locarstorage && ( + {locarstorage === 'buyer' && ( <>
    - {locarstorage && ( + {locarstorage === 'buyer' && ( <>
    ); -}; \ No newline at end of file +}; diff --git a/src/components/chartssection.tsx b/src/components/chartssection.tsx new file mode 100644 index 0000000..56f0f31 --- /dev/null +++ b/src/components/chartssection.tsx @@ -0,0 +1,113 @@ +'use client'; +import React, { useEffect, useState } from 'react'; +import { Chart } from 'react-google-charts'; +import { unstable_noStore as noStore } from 'next/cache'; +import { useQuery } from '@tanstack/react-query'; +import request from '@/utils/axios'; +interface Params { + user: any; + data: any; + categories: any; + users: any; +} +export const options = { + title: '', +}; +const Chartssection: React.FC = ({ user, data, categories, users }) => { + const data1 = [ + ['Task', 'Hours per Day'], + [ + 'availableProducts', + data?.availableProducts > 1 ? data?.availableProducts : 0.2, + ], + [ + 'expiredProducts', + data?.expiredProducts > 1 ? data?.expiredProducts : 0.2, + ], + ['wishesStats', data?.wishesStats > 1 ? data?.wishesStats : 0.2], + ['productsStats', data?.productsStats > 1 ? data?.productsStats : 0.2], + ]; + + return ( +
    + {user && user?.Role?.name === 'seller' ? ( +
    +

    Seller statistics

    + +
    + ) : ( +
    +

    + All Markert Users +

    +
    +
      + {users && + users?.map((el: any) => ( + <> +
    • +
      +
      +
      +

      + Names : +

      +

      {el.firstName}

      +
      +
      +

      + email : +

      +

      {el.email}

      +
      +
      +
      + +
      +
      +
    • + + ))} +
    +
    +
    + )} +
    +
    +

    + All Categolie On Market +

    +
    +
      + {categories && + categories?.map((el: any) => ( + <> +
    • +
      +

      + Names : +

      +

      {el.categoryName}

      +
      +
    • + + ))} +
    +
    +
    +
    +
    + ); +}; + +export default Chartssection; diff --git a/src/components/confirmDeletePopup.tsx b/src/components/confirmDeletePopup.tsx index 79415da..a712b6b 100644 --- a/src/components/confirmDeletePopup.tsx +++ b/src/components/confirmDeletePopup.tsx @@ -1,62 +1,84 @@ import React, { useEffect, useRef } from 'react'; import { Button, CloseButton, DeleteButton } from './Button'; import request from '@/utils/axios'; -import { useMutation, useQueryClient, RefetchOptions, QueryObserverResult } from "@tanstack/react-query"; +import { + useMutation, + useQueryClient, + RefetchOptions, + QueryObserverResult, +} from '@tanstack/react-query'; import { showToast } from '@/helpers/toast'; -import { useRouter } from 'next/navigation'; +import { useRouter } from 'next/navigation'; interface DeleteProductInterface { - isOpen: boolean, - productId: string ; - toggleConfirmPopup: () => void - refetch?: (options?: RefetchOptions | undefined) => Promise>; - + isOpen: boolean; + productId: string; + toggleConfirmPopup: () => void; + refetch?: ( + options?: RefetchOptions | undefined, + ) => Promise>; } -const ConfirmDelete: React.FC = ({ productId, isOpen, toggleConfirmPopup, refetch}) => { +const ConfirmDelete: React.FC = ({ + productId, + isOpen, + toggleConfirmPopup, + refetch, +}) => { const dialogRef = useRef(null); const router = useRouter(); useEffect(() => { if (isOpen && dialogRef.current) { - dialogRef.current.showModal(); + dialogRef.current.showModal(); } else if (dialogRef.current) { dialogRef.current.close(); } }, [isOpen]); - const mutation = useMutation({ mutationFn: () => { - return request.delete(`/products/${productId}`) + return request.delete(`/products/${productId}`); }, onError: (error) => console.log(error), onSuccess: async () => { - showToast('Product has been deleted','success') - // await refetch(); + showToast('Product has been deleted', 'success'); + // await refetch(); toggleConfirmPopup(); - router.push('/sellers?page=Products') - + window.location.reload(); }, - }) - const handleDelete= ()=>{ - return mutation.mutate(); - - } + }); + const handleDelete = () => { + return mutation.mutate(); + }; return ( - e.stopPropagation()} className='z-50 bg-white backdrop-filter backdrop-brightness-75 rounded shadow-lg w-[80%] py-6 px-4 sm:w-[30%] mx-auto'> - -
    -

    Delete Product

    - -
    - Are you sure you want to delete this product? -
    - - + e.stopPropagation()} + className="z-50 bg-white backdrop-filter backdrop-brightness-75 rounded shadow-lg w-[80%] py-6 px-4 sm:w-[30%] mx-auto" + > + +
    +

    + {' '} + Delete Product +

    + +
    + + Are you sure you want to delete this product? + +
    + +
    -
    +
    ); }; -export default ConfirmDelete; \ No newline at end of file +export default ConfirmDelete; diff --git a/src/components/headerDash.tsx b/src/components/headerDash.tsx new file mode 100644 index 0000000..19edb7d --- /dev/null +++ b/src/components/headerDash.tsx @@ -0,0 +1,57 @@ +'use client'; +import React, { useState, useEffect } from 'react'; +import { useRouter } from 'next/navigation'; +interface HeaderInterface { + pageName: string; +} +const HeaderDash: React.FC = ({ pageName }) => { + const route = useRouter(); + const [userdata, setUserdata] = useState(null); + useEffect(() => { + const user = localStorage.getItem('profile'); + if (!user) { + route.push('/'); + return; + } + const userData = JSON.parse(user as string); + setUserdata(userData.User); + + if ( + userData?.User?.Role.name !== 'seller' && + userData?.User?.Role.name !== 'admin' + ) { + route.push('/'); + } + }, []); + return ( +
    +
    +

    + {pageName} +

    +
    +
    + Logo { + e.currentTarget.src = '/unknown.jpg'; + }} + className=" object-cover border border-black rounded-full w-[40px] sm:w-[60px] h-[40px] sm:h-[60px]" + /> +
    +

    + {userdata?.firstName ? userdata?.firstName : 'waiting...'} +

    +

    + {userdata?.Role?.name} +

    +
    +
    +
    + ); +}; + +export default HeaderDash; diff --git a/src/components/shortCard.tsx b/src/components/shortCard.tsx new file mode 100644 index 0000000..41b7b40 --- /dev/null +++ b/src/components/shortCard.tsx @@ -0,0 +1,41 @@ +import React from 'react'; +interface Carddata { + name: string; + number: string; + bgcolor?: string; + imagelink?: string; + numbercolor?: string; + namecolor?: string; +} +const ShortCard: React.FC = ({ + name, + number, + bgcolor, + imagelink, + namecolor, + numbercolor, +}) => { + return ( +
    + wishImage +

    + {number} +

    +

    + {name} +

    +
    + ); +}; + +export default ShortCard; diff --git a/src/components/singleproduct.tsx b/src/components/singleproduct.tsx new file mode 100644 index 0000000..e140007 --- /dev/null +++ b/src/components/singleproduct.tsx @@ -0,0 +1,201 @@ +// BuyerProductView +'use client'; + +import React, { useEffect, useState } from 'react'; +import { Swiper, SwiperSlide } from 'swiper/react'; +import 'swiper/css'; +import 'swiper/css/free-mode'; +import 'swiper/css/navigation'; +import 'swiper/css/thumbs'; +import { FreeMode, Navigation, Thumbs } from 'swiper/modules'; +import { MdOutlineShoppingCart } from 'react-icons/md'; +import { FaRegHeart } from 'react-icons/fa6'; +import { useParams, useRouter } from 'next/navigation'; +import { Product } from '@/utils/requests'; +import { useQuery } from '@tanstack/react-query'; +import { ProductType, ReviewType, Cards, imageType } from '@/types/Product'; +import produ from '/product.png'; +import Review from '@/components/ReviewProduct'; +import { Key } from 'react'; //@ts-ignore +import ReactStars from 'react-rating-stars-component'; + +import { + BackButton, + Button, + GreenButton, + BlueBorderButton, + DeleteButton, +} from '@/components/Button'; +import { averageReviews } from '@/utils/averageReviews'; +import request from '@/utils/axios'; +import ConfirmDelete from './confirmDeletePopup'; +import Link from 'next/link'; +interface Properties { + role: any; +} +const Singleproduct: React.FC = ({ role }) => { + const [thumbsSwiper, setThumbsSwiper] = useState(null); + const [Confirm, setConfirm] = useState(false); + const { id } = useParams(); + const [user, setUser] = useState(); + const router = useRouter(); + useEffect(() => { + const categ = async () => { + const responsecat: any = await request.get('/categories'); + const user = localStorage.getItem('profile') || 'no'; + const finalUser = JSON.parse(user); + + setUser(finalUser.User); + }; + categ(); + }, []); + const toggleConfirmPopup = (prodid?: String) => { + console.log(prodid, 'Product id'); + setConfirm(!Confirm); + }; + if (!id) { + return Error: Invalid product ID; + } + const _id: string = id.toString(); + const { data, isLoading, error } = useQuery({ + queryKey: ['product', id], + queryFn: async () => { + try { + const response = (await Product.single(_id)) as ProductType; + return response; + } catch (error) { + throw new Error('Error fetching product data'); + } + }, + }); + if (isLoading) return Loading...; + + if (error) return Error: {error.message}; + const handleSwiper = (swiper: any) => { + setThumbsSwiper(swiper); + }; + const { + productThumbnail, + productPictures, + productName, + productPrice, + productDescription, + reviews, + } = data?.product; + + return ( + <> +
    +
    +
    +
    +
    + {productPictures && productPictures.length > 0 ? ( + + {productPictures.map((image: imageType) => { + return ( + + image + + ); + })} + + ) : ( + {'no + )} +
    +
    + {productPictures && productPictures.length > 0 ? ( +
    + + {productPictures.map((image: imageType) => { + return ( + + image + + ); + })} + +
    + ) : ( +

    no image found!

    + )} +
    +
    +
    +
    +

    {productName}

    +
    +
    + {role === 'buyer' && ( +
    +
    + +
    +
    + +
    +
    + )} + + ${productPrice} + +
    +
    + +
    +
    +

    Description:

    +

    {productDescription}

    +
    + {role === 'seller' && ( +
    + + + + +
    + )} +
    +
    +
    +
    + {Confirm ? ( + + ) : ( + '' + )} + + ); +}; + +export default Singleproduct; diff --git a/src/hooks/useLogin.ts b/src/hooks/useLogin.ts index 178c3f4..683e252 100644 --- a/src/hooks/useLogin.ts +++ b/src/hooks/useLogin.ts @@ -40,13 +40,18 @@ function useLogin() { return; } localStorage.setItem('token', res.data.token); - const profile = await request.get(`${URL}/users/profile`); + const profile: any = await request.get(`${URL}/users/profile`); const userData = JSON.stringify(profile); - localStorage.setItem('profile', userData); - await router.push('/'); + localStorage.setItem('profile', userData); + if (profile?.User?.Role.name === 'admin') { + router.push('/dashboard/home'); + } else { + router.push('/'); + } } catch (error: any) { setLoading(false); + console.log(error); setErrorMessage(`Invalid Email or Password`); return; } diff --git a/src/redux/slices/2faAuthenticationSlice.ts b/src/redux/slices/2faAuthenticationSlice.ts index fe18cc4..8e7c31c 100644 --- a/src/redux/slices/2faAuthenticationSlice.ts +++ b/src/redux/slices/2faAuthenticationSlice.ts @@ -25,6 +25,10 @@ export const handleOTPVerification = createAsyncThunk( try { const res = await axios.post(`${URL}/users/otp/${otpToken}`, { otp }); + localStorage.setItem('token', res.data.token); + const profile = await request.get(`${URL}/users/profile`); + const userData = JSON.stringify(profile); + localStorage.setItem('profile', userData); return res.data.token; } catch (error: any) { return error.response.data; diff --git a/src/redux/slices/productSlice.ts b/src/redux/slices/productSlice.ts index 47c4197..7e9404a 100644 --- a/src/redux/slices/productSlice.ts +++ b/src/redux/slices/productSlice.ts @@ -1,5 +1,6 @@ import { createAsyncThunk, createSlice, PayloadAction } from '@reduxjs/toolkit'; import axios from 'axios'; +import request from '@/utils/axios'; interface IProduct { id: string; @@ -38,12 +39,8 @@ export const fetchCategories = createAsyncThunk( 'products/fetchCategories', async (_, { rejectWithValue }) => { try { - const response = await axios.get(`${URL}/categories`, { - headers: { - Authorization: `Bearer ${localStorage.getItem('token')}`, - }, - }); - return response.data.categories; + const response: any = await request.get(`/categories`); + return response.categories; } catch (error: any) { if (error.response && error.response.data.error) { return rejectWithValue(error.response.data); @@ -51,17 +48,17 @@ export const fetchCategories = createAsyncThunk( return rejectWithValue(error.message); } } - } + }, ); export const createProduct = createAsyncThunk( 'products/createProduct', async (data: ICreateProductInput, { rejectWithValue }) => { try { - const token = localStorage.getItem('token'); - if (!token) { - throw new Error('No token found'); - } + // const token = localStorage.getItem('token'); + // if (!token) { + // throw new Error('No token found'); + // } const formData = new FormData(); formData.append('productName', data.productName); @@ -76,13 +73,8 @@ export const createProduct = createAsyncThunk( formData.append('productImage', picture); } - const response = await axios.post(`${URL}/products`, formData, { - headers: { - Authorization: `Bearer ${token}`, - 'Content-Type': 'multipart/form-data', - }, - }); - return response.data; + const response: any = await request.post(`/products`, formData); + return response; } catch (error: any) { if (error.response && error.response.data) { return rejectWithValue(error.response.data); @@ -90,7 +82,7 @@ export const createProduct = createAsyncThunk( return rejectWithValue(error.message); } } - } + }, ); export const productsSlice = createSlice({ @@ -136,4 +128,4 @@ export const productsSlice = createSlice({ export const { addProduct } = productsSlice.actions; const productsAddReducers = productsSlice.reducer; -export default productsAddReducers; \ No newline at end of file +export default productsAddReducers;