From 9d775342641e765ccdec87735c640b947b7094e1 Mon Sep 17 00:00:00 2001 From: Daniel K Date: Sun, 8 Sep 2024 21:23:17 -0700 Subject: [PATCH] refactor(WIP): dashboard stack to shacdn|tailwind|radix|tanstack --- apps/api/package.json | 16 +- apps/dashboard/next-env.d.ts | 2 +- apps/dashboard/package.json | 1 + .../app/(dashboard)/apps/development/page.tsx | 4 - .../src/app/(dashboard)/apps/page.tsx | 1 - .../(dashboard)/apps/development/page.tsx | 4 - .../app/[domain]/(dashboard)/apps/page.tsx | 1 - .../(dashboard)/apps/development/page.tsx | 4 - .../[domain]/test/(dashboard)/apps/page.tsx | 1 - .../app/admin/carrier_connections/page.tsx | 4 - .../app/admin/organization_accounts/page.tsx | 4 - apps/dashboard/src/app/admin/page.tsx | 1 - .../src/app/admin/surcharges/page.tsx | 4 - .../src/app/admin/user_accounts/page.tsx | 4 - .../(dashboard)/apps/development/page.tsx | 4 - .../src/app/test/(dashboard)/apps/page.tsx | 1 - apps/platform/.editorconfig | 11 + apps/platform/.env.sample | 19 + apps/platform/.eslintrc | 4 + apps/platform/.gitattributes | 2 + apps/platform/.gitignore | 36 + apps/platform/README.md | 36 + apps/platform/next.config.mjs | 44 + apps/platform/package.json | 27 + apps/platform/postcss.config.mjs | 8 + .../public/android-chrome-192x192.png | Bin 0 -> 7005 bytes .../public/android-chrome-512x512.png | Bin 0 -> 21062 bytes apps/platform/public/browserconfig.xml | 9 + apps/platform/public/carriers/aramex_icon.svg | 1 + apps/platform/public/carriers/aramex_logo.svg | 28 + .../public/carriers/australiapost_icon.svg | 1 + .../public/carriers/australiapost_logo.svg | 43 + .../public/carriers/bokknight_icon.svg | 66 + .../public/carriers/boxknight_logo.svg | 61 + .../public/carriers/canadapost_icon.svg | 1 + .../public/carriers/canadapost_logo.svg | 75 + apps/platform/public/carriers/canpar_icon.svg | 1 + apps/platform/public/carriers/canpar_logo.svg | 42 + .../public/carriers/dhl_express_icon.svg | 1 + .../public/carriers/dhl_express_logo.svg | 20 + apps/platform/public/carriers/dhl_icon.svg | 1 + apps/platform/public/carriers/dhl_logo.svg | 20 + .../public/carriers/dhl_poland_icon.svg | 1 + .../public/carriers/dhl_poland_logo.svg | 20 + .../public/carriers/dhl_universal_icon.svg | 1 + .../public/carriers/dhl_universal_logo.svg | 20 + apps/platform/public/carriers/dicom_icon.svg | 211 + apps/platform/public/carriers/dicom_logo.svg | 50 + apps/platform/public/carriers/dpd_icon.svg | 182 + apps/platform/public/carriers/dpd_logo.svg | 417 ++ apps/platform/public/carriers/dpdhl_icon.svg | 25 + apps/platform/public/carriers/dpdhl_logo.svg | 68 + .../public/carriers/easypost_icon.svg | 1 + .../public/carriers/easypost_logo.svg | 1 + .../public/carriers/eshipper_logo.svg | 67 + apps/platform/public/carriers/fedex_icon.svg | 32 + apps/platform/public/carriers/fedex_logo.svg | 22 + .../public/carriers/freightcom_logo.svg | 47 + .../platform/public/carriers/generic_icon.svg | 3 + .../platform/public/carriers/generic_logo.svg | 57 + apps/platform/public/carriers/geodis_icon.svg | 65 + apps/platform/public/carriers/geodis_logo.svg | 62 + .../platform/public/carriers/laposte_icon.svg | 40 + .../platform/public/carriers/laposte_logo.svg | 39 + .../public/carriers/nationex_icon.svg | 53 + .../public/carriers/nationex_logo.svg | 36 + .../public/carriers/purolator_icon.svg | 1 + .../public/carriers/purolator_logo.svg | 37 + apps/platform/public/carriers/roadie_icon.svg | 41 + apps/platform/public/carriers/roadie_logo.svg | 39 + .../public/carriers/royalmail_icon.svg | 111 + .../public/carriers/royalmail_logo.svg | 47 + apps/platform/public/carriers/sendle_icon.svg | 1 + apps/platform/public/carriers/sendle_logo.svg | 32 + .../public/carriers/sf_express_icon.svg | 1 + .../public/carriers/sf_express_logo.svg | 21 + apps/platform/public/carriers/tnt_icon.svg | 1 + apps/platform/public/carriers/tnt_logo.svg | 21 + apps/platform/public/carriers/ups_icon.svg | 27 + apps/platform/public/carriers/ups_logo.svg | 23 + apps/platform/public/carriers/usps_icon.svg | 1 + .../carriers/usps_international_icon.svg | 1 + .../carriers/usps_international_logo.svg | 53 + apps/platform/public/carriers/usps_logo.svg | 53 + apps/platform/public/carriers/yanwen_icon.svg | 1 + apps/platform/public/carriers/yanwen_logo.svg | 19 + .../public/carriers/yunexpress_icon.svg | 1 + .../public/carriers/yunexpress_logo.svg | 48 + apps/platform/public/favicon-16x16.png | Bin 0 -> 1085 bytes apps/platform/public/favicon-32x32.png | Bin 0 -> 1717 bytes apps/platform/public/favicon.ico | Bin 0 -> 15086 bytes apps/platform/public/favicon.svg | 79 + apps/platform/public/icon-inverted.svg | 76 + apps/platform/public/icon.svg | 79 + apps/platform/public/logo-inverted.svg | 29 + apps/platform/public/logo.png | Bin 0 -> 15475 bytes apps/platform/public/logo.svg | 29 + apps/platform/public/manifest.json | 22 + apps/platform/public/unfold.svg | 1 + apps/platform/sentry.client.config.js | 24 + apps/platform/sentry.edge.config.js | 11 + apps/platform/sentry.server.config.js | 25 + .../src/app/(auth)/connections/page.tsx | 4 + .../src/app/(auth)/developers/page.tsx | 1 + apps/platform/src/app/(auth)/layout.tsx | 1 + .../src/app/(auth)/manifests/page.tsx | 1 + apps/platform/src/app/(auth)/orders/page.tsx | 1 + apps/platform/src/app/(auth)/page.tsx | 1 + .../platform/src/app/(auth)/settings/page.tsx | 1 + .../src/app/(auth)/shipments/page.tsx | 1 + apps/platform/src/app/(auth)/store/page.tsx | 1 + .../platform/src/app/(auth)/trackers/page.tsx | 1 + .../src/app/(auth)/workflows/page.tsx | 1 + .../app/admin/carrier_connections/page.tsx | 1 + .../app/admin/organization_accounts/page.tsx | 1 + apps/platform/src/app/admin/page.tsx | 1 + .../src/app/admin/surcharges/page.tsx | 1 + .../src/app/admin/user_accounts/page.tsx | 1 + .../src/app/api/auth/[...nextauth]/route.ts | 2 + .../src/app/api/images/[name]/route.ts | 1 + apps/platform/src/app/error.tsx | 2 + apps/platform/src/app/global-error.tsx | 2 + apps/platform/src/app/layout.tsx | 2 + apps/platform/src/middleware.ts | 14 + apps/platform/src/styles/dashboard.scss | 805 ++++ apps/platform/src/styles/globals.css | 85 + .../src/styles/plex/abstracts/_mixins.scss | 4 + .../src/styles/plex/abstracts/_variables.scss | 64 + apps/platform/src/styles/plex/base/_base.scss | 11 + .../src/styles/plex/base/_helpers.scss | 66 + .../platform/src/styles/plex/base/_utils.scss | 24 + .../src/styles/plex/components/_alert.scss | 103 + .../src/styles/plex/components/_buttons.scss | 26 + .../src/styles/plex/components/_cards.scss | 10 + .../styles/plex/components/_dropdowns.scss | 405 ++ .../src/styles/plex/components/_forms.scss | 110 + .../src/styles/plex/components/_modals.scss | 3 + .../styles/plex/components/_pageloader.scss | 149 + .../src/styles/plex/components/_switch.scss | 78 + .../src/styles/plex/layout/_layout.scss | 330 ++ .../src/styles/plex/layout/_navbar.scss | 510 ++ .../src/styles/plex/layout/_responsive.scss | 303 ++ apps/platform/src/styles/plex/main.scss | 26 + .../src/styles/plex/pages/_dashboard.scss | 565 +++ apps/platform/src/styles/theme.scss | 231 + apps/platform/tailwind.config.ts | 80 + apps/platform/tsconfig.json | 32 + package-lock.json | 4289 ++++++++++++++--- package.json | 3 + packages/core/context/image.ts | 43 + packages/core/modules/Apps/development.tsx | 116 - packages/core/modules/Apps/index.tsx | 112 - .../core/modules/Labels/create_labels.tsx | 3141 ++++++------ .../modules/Manifests/create_manifests.tsx | 2 +- packages/core/modules/Orders/index.tsx | 21 +- packages/core/modules/Shipments/index.tsx | 4 +- packages/hooks/system-usage.ts | 2 +- packages/hooks/usage.ts | 2 +- packages/insiders/.eslintrc.js | 3 + packages/insiders/.gitignore | 1 + packages/insiders/components.json | 20 + packages/insiders/components/navbar.tsx | 163 + packages/insiders/components/sidebar.tsx | 60 + packages/insiders/components/ui/badge.tsx | 36 + packages/insiders/components/ui/button.tsx | 57 + packages/insiders/components/ui/calendar.tsx | 72 + packages/insiders/components/ui/card.tsx | 76 + packages/insiders/components/ui/checkbox.tsx | 30 + .../insiders/components/ui/dropdown-menu.tsx | 205 + packages/insiders/components/ui/input.tsx | 25 + packages/insiders/components/ui/label.tsx | 26 + packages/insiders/components/ui/popover.tsx | 33 + packages/insiders/components/ui/select.tsx | 164 + packages/insiders/components/ui/sheet.tsx | 140 + packages/insiders/components/ui/switch.tsx | 29 + packages/insiders/components/ui/table.tsx | 120 + packages/insiders/components/ui/tabs.tsx | 55 + packages/insiders/fonts/GeistMonoVF.woff | Bin 0 -> 67864 bytes packages/insiders/fonts/GeistVF.woff | Bin 0 -> 66268 bytes packages/insiders/index.tsx | 0 .../insiders/layouts/dashboard-layout.tsx | 45 + packages/insiders/layouts/root-layout.tsx | 34 + packages/insiders/lib/utils.ts | 6 + .../insiders/modules/connections/index.tsx | 115 + packages/insiders/modules/dashboard/index.tsx | 147 + packages/insiders/modules/orders/index.tsx | 164 + packages/insiders/modules/shipments/index.tsx | 234 + packages/insiders/modules/store/index.tsx | 124 + packages/insiders/modules/trackers/index.tsx | 169 + packages/insiders/package.json | 49 + packages/insiders/tailwind.config.ts | 79 + packages/insiders/tsconfig.json | 17 + packages/types/base.ts | 2 + turbo.json | 45 +- 194 files changed, 14923 insertions(+), 2507 deletions(-) delete mode 100644 apps/dashboard/src/app/(dashboard)/apps/development/page.tsx delete mode 100644 apps/dashboard/src/app/(dashboard)/apps/page.tsx delete mode 100644 apps/dashboard/src/app/[domain]/(dashboard)/apps/development/page.tsx delete mode 100644 apps/dashboard/src/app/[domain]/(dashboard)/apps/page.tsx delete mode 100644 apps/dashboard/src/app/[domain]/test/(dashboard)/apps/development/page.tsx delete mode 100644 apps/dashboard/src/app/[domain]/test/(dashboard)/apps/page.tsx delete mode 100644 apps/dashboard/src/app/admin/carrier_connections/page.tsx delete mode 100644 apps/dashboard/src/app/admin/organization_accounts/page.tsx delete mode 100644 apps/dashboard/src/app/admin/page.tsx delete mode 100644 apps/dashboard/src/app/admin/surcharges/page.tsx delete mode 100644 apps/dashboard/src/app/admin/user_accounts/page.tsx delete mode 100644 apps/dashboard/src/app/test/(dashboard)/apps/development/page.tsx delete mode 100644 apps/dashboard/src/app/test/(dashboard)/apps/page.tsx create mode 100644 apps/platform/.editorconfig create mode 100644 apps/platform/.env.sample create mode 100644 apps/platform/.eslintrc create mode 100644 apps/platform/.gitattributes create mode 100644 apps/platform/.gitignore create mode 100644 apps/platform/README.md create mode 100644 apps/platform/next.config.mjs create mode 100644 apps/platform/package.json create mode 100644 apps/platform/postcss.config.mjs create mode 100644 apps/platform/public/android-chrome-192x192.png create mode 100644 apps/platform/public/android-chrome-512x512.png create mode 100644 apps/platform/public/browserconfig.xml create mode 100644 apps/platform/public/carriers/aramex_icon.svg create mode 100644 apps/platform/public/carriers/aramex_logo.svg create mode 100644 apps/platform/public/carriers/australiapost_icon.svg create mode 100644 apps/platform/public/carriers/australiapost_logo.svg create mode 100644 apps/platform/public/carriers/bokknight_icon.svg create mode 100644 apps/platform/public/carriers/boxknight_logo.svg create mode 100644 apps/platform/public/carriers/canadapost_icon.svg create mode 100644 apps/platform/public/carriers/canadapost_logo.svg create mode 100644 apps/platform/public/carriers/canpar_icon.svg create mode 100644 apps/platform/public/carriers/canpar_logo.svg create mode 100644 apps/platform/public/carriers/dhl_express_icon.svg create mode 100644 apps/platform/public/carriers/dhl_express_logo.svg create mode 100644 apps/platform/public/carriers/dhl_icon.svg create mode 100644 apps/platform/public/carriers/dhl_logo.svg create mode 100644 apps/platform/public/carriers/dhl_poland_icon.svg create mode 100644 apps/platform/public/carriers/dhl_poland_logo.svg create mode 100644 apps/platform/public/carriers/dhl_universal_icon.svg create mode 100644 apps/platform/public/carriers/dhl_universal_logo.svg create mode 100644 apps/platform/public/carriers/dicom_icon.svg create mode 100644 apps/platform/public/carriers/dicom_logo.svg create mode 100644 apps/platform/public/carriers/dpd_icon.svg create mode 100644 apps/platform/public/carriers/dpd_logo.svg create mode 100644 apps/platform/public/carriers/dpdhl_icon.svg create mode 100644 apps/platform/public/carriers/dpdhl_logo.svg create mode 100644 apps/platform/public/carriers/easypost_icon.svg create mode 100644 apps/platform/public/carriers/easypost_logo.svg create mode 100644 apps/platform/public/carriers/eshipper_logo.svg create mode 100644 apps/platform/public/carriers/fedex_icon.svg create mode 100644 apps/platform/public/carriers/fedex_logo.svg create mode 100644 apps/platform/public/carriers/freightcom_logo.svg create mode 100644 apps/platform/public/carriers/generic_icon.svg create mode 100644 apps/platform/public/carriers/generic_logo.svg create mode 100644 apps/platform/public/carriers/geodis_icon.svg create mode 100644 apps/platform/public/carriers/geodis_logo.svg create mode 100644 apps/platform/public/carriers/laposte_icon.svg create mode 100644 apps/platform/public/carriers/laposte_logo.svg create mode 100644 apps/platform/public/carriers/nationex_icon.svg create mode 100644 apps/platform/public/carriers/nationex_logo.svg create mode 100644 apps/platform/public/carriers/purolator_icon.svg create mode 100644 apps/platform/public/carriers/purolator_logo.svg create mode 100644 apps/platform/public/carriers/roadie_icon.svg create mode 100644 apps/platform/public/carriers/roadie_logo.svg create mode 100644 apps/platform/public/carriers/royalmail_icon.svg create mode 100644 apps/platform/public/carriers/royalmail_logo.svg create mode 100644 apps/platform/public/carriers/sendle_icon.svg create mode 100644 apps/platform/public/carriers/sendle_logo.svg create mode 100644 apps/platform/public/carriers/sf_express_icon.svg create mode 100644 apps/platform/public/carriers/sf_express_logo.svg create mode 100644 apps/platform/public/carriers/tnt_icon.svg create mode 100644 apps/platform/public/carriers/tnt_logo.svg create mode 100644 apps/platform/public/carriers/ups_icon.svg create mode 100644 apps/platform/public/carriers/ups_logo.svg create mode 100644 apps/platform/public/carriers/usps_icon.svg create mode 100644 apps/platform/public/carriers/usps_international_icon.svg create mode 100644 apps/platform/public/carriers/usps_international_logo.svg create mode 100644 apps/platform/public/carriers/usps_logo.svg create mode 100644 apps/platform/public/carriers/yanwen_icon.svg create mode 100644 apps/platform/public/carriers/yanwen_logo.svg create mode 100644 apps/platform/public/carriers/yunexpress_icon.svg create mode 100644 apps/platform/public/carriers/yunexpress_logo.svg create mode 100644 apps/platform/public/favicon-16x16.png create mode 100644 apps/platform/public/favicon-32x32.png create mode 100644 apps/platform/public/favicon.ico create mode 100644 apps/platform/public/favicon.svg create mode 100644 apps/platform/public/icon-inverted.svg create mode 100644 apps/platform/public/icon.svg create mode 100644 apps/platform/public/logo-inverted.svg create mode 100644 apps/platform/public/logo.png create mode 100644 apps/platform/public/logo.svg create mode 100644 apps/platform/public/manifest.json create mode 100644 apps/platform/public/unfold.svg create mode 100644 apps/platform/sentry.client.config.js create mode 100644 apps/platform/sentry.edge.config.js create mode 100644 apps/platform/sentry.server.config.js create mode 100644 apps/platform/src/app/(auth)/connections/page.tsx create mode 100644 apps/platform/src/app/(auth)/developers/page.tsx create mode 100644 apps/platform/src/app/(auth)/layout.tsx create mode 100644 apps/platform/src/app/(auth)/manifests/page.tsx create mode 100644 apps/platform/src/app/(auth)/orders/page.tsx create mode 100644 apps/platform/src/app/(auth)/page.tsx create mode 100644 apps/platform/src/app/(auth)/settings/page.tsx create mode 100644 apps/platform/src/app/(auth)/shipments/page.tsx create mode 100644 apps/platform/src/app/(auth)/store/page.tsx create mode 100644 apps/platform/src/app/(auth)/trackers/page.tsx create mode 100644 apps/platform/src/app/(auth)/workflows/page.tsx create mode 100644 apps/platform/src/app/admin/carrier_connections/page.tsx create mode 100644 apps/platform/src/app/admin/organization_accounts/page.tsx create mode 100644 apps/platform/src/app/admin/page.tsx create mode 100644 apps/platform/src/app/admin/surcharges/page.tsx create mode 100644 apps/platform/src/app/admin/user_accounts/page.tsx create mode 100644 apps/platform/src/app/api/auth/[...nextauth]/route.ts create mode 100644 apps/platform/src/app/api/images/[name]/route.ts create mode 100644 apps/platform/src/app/error.tsx create mode 100644 apps/platform/src/app/global-error.tsx create mode 100644 apps/platform/src/app/layout.tsx create mode 100644 apps/platform/src/middleware.ts create mode 100644 apps/platform/src/styles/dashboard.scss create mode 100644 apps/platform/src/styles/globals.css create mode 100644 apps/platform/src/styles/plex/abstracts/_mixins.scss create mode 100644 apps/platform/src/styles/plex/abstracts/_variables.scss create mode 100644 apps/platform/src/styles/plex/base/_base.scss create mode 100644 apps/platform/src/styles/plex/base/_helpers.scss create mode 100644 apps/platform/src/styles/plex/base/_utils.scss create mode 100644 apps/platform/src/styles/plex/components/_alert.scss create mode 100644 apps/platform/src/styles/plex/components/_buttons.scss create mode 100644 apps/platform/src/styles/plex/components/_cards.scss create mode 100644 apps/platform/src/styles/plex/components/_dropdowns.scss create mode 100644 apps/platform/src/styles/plex/components/_forms.scss create mode 100644 apps/platform/src/styles/plex/components/_modals.scss create mode 100644 apps/platform/src/styles/plex/components/_pageloader.scss create mode 100644 apps/platform/src/styles/plex/components/_switch.scss create mode 100644 apps/platform/src/styles/plex/layout/_layout.scss create mode 100644 apps/platform/src/styles/plex/layout/_navbar.scss create mode 100644 apps/platform/src/styles/plex/layout/_responsive.scss create mode 100644 apps/platform/src/styles/plex/main.scss create mode 100644 apps/platform/src/styles/plex/pages/_dashboard.scss create mode 100644 apps/platform/src/styles/theme.scss create mode 100644 apps/platform/tailwind.config.ts create mode 100644 apps/platform/tsconfig.json create mode 100644 packages/core/context/image.ts delete mode 100644 packages/core/modules/Apps/development.tsx delete mode 100644 packages/core/modules/Apps/index.tsx create mode 100644 packages/insiders/.eslintrc.js create mode 100644 packages/insiders/.gitignore create mode 100644 packages/insiders/components.json create mode 100644 packages/insiders/components/navbar.tsx create mode 100644 packages/insiders/components/sidebar.tsx create mode 100644 packages/insiders/components/ui/badge.tsx create mode 100644 packages/insiders/components/ui/button.tsx create mode 100644 packages/insiders/components/ui/calendar.tsx create mode 100644 packages/insiders/components/ui/card.tsx create mode 100644 packages/insiders/components/ui/checkbox.tsx create mode 100644 packages/insiders/components/ui/dropdown-menu.tsx create mode 100644 packages/insiders/components/ui/input.tsx create mode 100644 packages/insiders/components/ui/label.tsx create mode 100644 packages/insiders/components/ui/popover.tsx create mode 100644 packages/insiders/components/ui/select.tsx create mode 100644 packages/insiders/components/ui/sheet.tsx create mode 100644 packages/insiders/components/ui/switch.tsx create mode 100644 packages/insiders/components/ui/table.tsx create mode 100644 packages/insiders/components/ui/tabs.tsx create mode 100644 packages/insiders/fonts/GeistMonoVF.woff create mode 100644 packages/insiders/fonts/GeistVF.woff create mode 100644 packages/insiders/index.tsx create mode 100644 packages/insiders/layouts/dashboard-layout.tsx create mode 100644 packages/insiders/layouts/root-layout.tsx create mode 100644 packages/insiders/lib/utils.ts create mode 100644 packages/insiders/modules/connections/index.tsx create mode 100644 packages/insiders/modules/dashboard/index.tsx create mode 100644 packages/insiders/modules/orders/index.tsx create mode 100644 packages/insiders/modules/shipments/index.tsx create mode 100644 packages/insiders/modules/store/index.tsx create mode 100644 packages/insiders/modules/trackers/index.tsx create mode 100644 packages/insiders/package.json create mode 100644 packages/insiders/tailwind.config.ts create mode 100644 packages/insiders/tsconfig.json diff --git a/apps/api/package.json b/apps/api/package.json index 2602398b9d..833be618d7 100644 --- a/apps/api/package.json +++ b/apps/api/package.json @@ -1,7 +1,9 @@ -{ - "name": "api", - "version": "1.0.0", - "scripts": { - "dev": "cd ../..; ./bin/start-server" - } -} +{ + "name": "@karrio/api", + "version": "1.0.0", + "scripts": { + "dev": "cd ../..; ./bin/start-server", + "dev:oss": "cd ../..; ./bin/start-server", + "dev:platform": "cd ../..; ./bin/start-server" + } +} diff --git a/apps/dashboard/next-env.d.ts b/apps/dashboard/next-env.d.ts index 4f11a03dc6..40c3d68096 100644 --- a/apps/dashboard/next-env.d.ts +++ b/apps/dashboard/next-env.d.ts @@ -2,4 +2,4 @@ /// // NOTE: This file should not be edited -// see https://nextjs.org/docs/basic-features/typescript for more information. +// see https://nextjs.org/docs/app/building-your-application/configuring/typescript for more information. diff --git a/apps/dashboard/package.json b/apps/dashboard/package.json index edadcf76e5..933ed994a4 100644 --- a/apps/dashboard/package.json +++ b/apps/dashboard/package.json @@ -3,6 +3,7 @@ "version": "1.0.0", "scripts": { "dev": "next dev", + "dev:oss": "next dev", "build": "next build", "start": "next start", "lint": "next lint", diff --git a/apps/dashboard/src/app/(dashboard)/apps/development/page.tsx b/apps/dashboard/src/app/(dashboard)/apps/development/page.tsx deleted file mode 100644 index 231f6410f1..0000000000 --- a/apps/dashboard/src/app/(dashboard)/apps/development/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Apps/development"; diff --git a/apps/dashboard/src/app/(dashboard)/apps/page.tsx b/apps/dashboard/src/app/(dashboard)/apps/page.tsx deleted file mode 100644 index c79541e6fd..0000000000 --- a/apps/dashboard/src/app/(dashboard)/apps/page.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default, generateMetadata } from "@karrio/core/modules/Apps"; diff --git a/apps/dashboard/src/app/[domain]/(dashboard)/apps/development/page.tsx b/apps/dashboard/src/app/[domain]/(dashboard)/apps/development/page.tsx deleted file mode 100644 index 231f6410f1..0000000000 --- a/apps/dashboard/src/app/[domain]/(dashboard)/apps/development/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Apps/development"; diff --git a/apps/dashboard/src/app/[domain]/(dashboard)/apps/page.tsx b/apps/dashboard/src/app/[domain]/(dashboard)/apps/page.tsx deleted file mode 100644 index c79541e6fd..0000000000 --- a/apps/dashboard/src/app/[domain]/(dashboard)/apps/page.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default, generateMetadata } from "@karrio/core/modules/Apps"; diff --git a/apps/dashboard/src/app/[domain]/test/(dashboard)/apps/development/page.tsx b/apps/dashboard/src/app/[domain]/test/(dashboard)/apps/development/page.tsx deleted file mode 100644 index 231f6410f1..0000000000 --- a/apps/dashboard/src/app/[domain]/test/(dashboard)/apps/development/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Apps/development"; diff --git a/apps/dashboard/src/app/[domain]/test/(dashboard)/apps/page.tsx b/apps/dashboard/src/app/[domain]/test/(dashboard)/apps/page.tsx deleted file mode 100644 index c79541e6fd..0000000000 --- a/apps/dashboard/src/app/[domain]/test/(dashboard)/apps/page.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default, generateMetadata } from "@karrio/core/modules/Apps"; diff --git a/apps/dashboard/src/app/admin/carrier_connections/page.tsx b/apps/dashboard/src/app/admin/carrier_connections/page.tsx deleted file mode 100644 index 0c08ac3830..0000000000 --- a/apps/dashboard/src/app/admin/carrier_connections/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Admin/carrier_connections"; diff --git a/apps/dashboard/src/app/admin/organization_accounts/page.tsx b/apps/dashboard/src/app/admin/organization_accounts/page.tsx deleted file mode 100644 index 2763dcea30..0000000000 --- a/apps/dashboard/src/app/admin/organization_accounts/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Admin/organization_accounts"; diff --git a/apps/dashboard/src/app/admin/page.tsx b/apps/dashboard/src/app/admin/page.tsx deleted file mode 100644 index 0186705f6b..0000000000 --- a/apps/dashboard/src/app/admin/page.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default, generateMetadata } from "@karrio/core/modules/Admin"; diff --git a/apps/dashboard/src/app/admin/surcharges/page.tsx b/apps/dashboard/src/app/admin/surcharges/page.tsx deleted file mode 100644 index 1f2bf54c55..0000000000 --- a/apps/dashboard/src/app/admin/surcharges/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Admin/surcharges"; diff --git a/apps/dashboard/src/app/admin/user_accounts/page.tsx b/apps/dashboard/src/app/admin/user_accounts/page.tsx deleted file mode 100644 index 380a94ef83..0000000000 --- a/apps/dashboard/src/app/admin/user_accounts/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Admin/user_accounts"; diff --git a/apps/dashboard/src/app/test/(dashboard)/apps/development/page.tsx b/apps/dashboard/src/app/test/(dashboard)/apps/development/page.tsx deleted file mode 100644 index 231f6410f1..0000000000 --- a/apps/dashboard/src/app/test/(dashboard)/apps/development/page.tsx +++ /dev/null @@ -1,4 +0,0 @@ -export { - default, - generateMetadata, -} from "@karrio/core/modules/Apps/development"; diff --git a/apps/dashboard/src/app/test/(dashboard)/apps/page.tsx b/apps/dashboard/src/app/test/(dashboard)/apps/page.tsx deleted file mode 100644 index c79541e6fd..0000000000 --- a/apps/dashboard/src/app/test/(dashboard)/apps/page.tsx +++ /dev/null @@ -1 +0,0 @@ -export { default, generateMetadata } from "@karrio/core/modules/Apps"; diff --git a/apps/platform/.editorconfig b/apps/platform/.editorconfig new file mode 100644 index 0000000000..2e691dc3ea --- /dev/null +++ b/apps/platform/.editorconfig @@ -0,0 +1,11 @@ +[*] +indent_style = space +end_of_line = lf +indent_size = 2 +charset = utf-8 +trim_trailing_whitespace = true +insert_final_newline = true + +[*.md] +max_line_length = 0 +trim_trailing_whitespace = false diff --git a/apps/platform/.env.sample b/apps/platform/.env.sample new file mode 100644 index 0000000000..55da83873a --- /dev/null +++ b/apps/platform/.env.sample @@ -0,0 +1,19 @@ +# karrio dashboard environment variables +NEXT_PUBLIC_DASHBOARD_VERSION=2024.X + +# karrio server +# KARRIO_URL=http://localhost:5002 +NEXT_PUBLIC_KARRIO_PUBLIC_URL=http://localhost:5002 + +# Required for MULTI_TENANT +NEXT_PUBLIC_MULTI_TENANT=false +KARRIO_ADMIN_API_KEY=XXX + +# next-auth config +NEXTAUTH_URL=http://localhost:3002 +# NEXTAUTH_URL=http://localhost:3000 +NEXTAUTH_SECRET="n*s-ex6@ex_r1i%bk=3jd)p+lsick5bi*90!mbk7rc3iy_op1r" + +# Sentry +# NEXT_PUBLIC_SENTRY_DSN=https://xxxxx +SENTRY_IGNORE_API_RESOLUTION_ERROR=1 diff --git a/apps/platform/.eslintrc b/apps/platform/.eslintrc new file mode 100644 index 0000000000..4b1fb6a2bd --- /dev/null +++ b/apps/platform/.eslintrc @@ -0,0 +1,4 @@ +{ + "root": true, + "extends": ["next", "next/core-web-vitals"], +} diff --git a/apps/platform/.gitattributes b/apps/platform/.gitattributes new file mode 100644 index 0000000000..dfe0770424 --- /dev/null +++ b/apps/platform/.gitattributes @@ -0,0 +1,2 @@ +# Auto detect text files and perform LF normalization +* text=auto diff --git a/apps/platform/.gitignore b/apps/platform/.gitignore new file mode 100644 index 0000000000..fd3dbb571a --- /dev/null +++ b/apps/platform/.gitignore @@ -0,0 +1,36 @@ +# See https://help.github.com/articles/ignoring-files/ for more about ignoring files. + +# dependencies +/node_modules +/.pnp +.pnp.js +.yarn/install-state.gz + +# testing +/coverage + +# next.js +/.next/ +/out/ + +# production +/build + +# misc +.DS_Store +*.pem + +# debug +npm-debug.log* +yarn-debug.log* +yarn-error.log* + +# local env files +.env*.local + +# vercel +.vercel + +# typescript +*.tsbuildinfo +next-env.d.ts diff --git a/apps/platform/README.md b/apps/platform/README.md new file mode 100644 index 0000000000..e215bc4ccf --- /dev/null +++ b/apps/platform/README.md @@ -0,0 +1,36 @@ +This is a [Next.js](https://nextjs.org) project bootstrapped with [`create-next-app`](https://nextjs.org/docs/app/api-reference/cli/create-next-app). + +## Getting Started + +First, run the development server: + +```bash +npm run dev +# or +yarn dev +# or +pnpm dev +# or +bun dev +``` + +Open [http://localhost:3000](http://localhost:3000) with your browser to see the result. + +You can start editing the page by modifying `app/page.tsx`. The page auto-updates as you edit the file. + +This project uses [`next/font`](https://nextjs.org/docs/app/building-your-application/optimizing/fonts) to automatically optimize and load [Geist](https://vercel.com/font), a new font family for Vercel. + +## Learn More + +To learn more about Next.js, take a look at the following resources: + +- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js features and API. +- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. + +You can check out [the Next.js GitHub repository](https://github.com/vercel/next.js) - your feedback and contributions are welcome! + +## Deploy on Vercel + +The easiest way to deploy your Next.js app is to use the [Vercel Platform](https://vercel.com/new?utm_medium=default-template&filter=next.js&utm_source=create-next-app&utm_campaign=create-next-app-readme) from the creators of Next.js. + +Check out our [Next.js deployment documentation](https://nextjs.org/docs/app/building-your-application/deploying) for more details. diff --git a/apps/platform/next.config.mjs b/apps/platform/next.config.mjs new file mode 100644 index 0000000000..23ecc09077 --- /dev/null +++ b/apps/platform/next.config.mjs @@ -0,0 +1,44 @@ +import { withSentryConfig } from "@sentry/nextjs"; +import path from "path"; + +const BASE_PATH = process.env.NEXT_PUBLIC_BASE_PATH || ""; + +/** @type {import('next').NextConfig} */ +const nextConfig = { + basePath: BASE_PATH, + reactStrictMode: true, + transpilePackages: [ + "@karrio/core", + "@karrio/hooks", + "@karrio/ui", + "@karrio/lib", + "@karrio/types", + "@karrio/insiders", + ], + sentry: { + disableServerWebpackPlugin: true, + disableClientWebpackPlugin: true, + }, + sassOptions: { + includePaths: [path.join("src", "app", "styles")], + }, + webpack: (config) => { + config.resolve.fallback = { fs: false, net: false, tls: false }; + config.externals.push("pino-pretty", "encoding"); + return config; + }, +}; + +const sentryWebpackPluginOptions = { + // Additional config options for the Sentry Webpack plugin. Keep in mind that + // the following options are set automatically, and overriding them is not + // recommended: + // release, url, org, project, authToken, configFile, stripPrefix, + // urlPrefix, include, ignore + + silent: true, // Suppresses all logs + // For all available options, see: + // https://github.com/getsentry/sentry-webpack-plugin#options. +}; + +export default withSentryConfig(nextConfig, sentryWebpackPluginOptions); diff --git a/apps/platform/package.json b/apps/platform/package.json new file mode 100644 index 0000000000..c4c06b64ba --- /dev/null +++ b/apps/platform/package.json @@ -0,0 +1,27 @@ +{ + "name": "@karrio/platform", + "version": "0.1.0", + "private": true, + "scripts": { + "dev": "next dev --port 3002", + "dev:platform": "next dev --port 3002", + "build": "next build", + "start": "next start", + "lint": "next lint" + }, + "dependencies": { + "@karrio/core": "*", + "@karrio/hooks": "*", + "@karrio/lib": "*", + "@karrio/types": "*", + "@karrio/ui": "*", + "@karrio/insiders": "*" + }, + "devDependencies": { + "postcss": "^8", + "tailwindcss": "^3.4.1", + "eslint": "^8", + "eslint-config-next": "14.2.8", + "tsconfig": "*" + } +} diff --git a/apps/platform/postcss.config.mjs b/apps/platform/postcss.config.mjs new file mode 100644 index 0000000000..1a69fd2a45 --- /dev/null +++ b/apps/platform/postcss.config.mjs @@ -0,0 +1,8 @@ +/** @type {import('postcss-load-config').Config} */ +const config = { + plugins: { + tailwindcss: {}, + }, +}; + +export default config; diff --git a/apps/platform/public/android-chrome-192x192.png b/apps/platform/public/android-chrome-192x192.png new file mode 100644 index 0000000000000000000000000000000000000000..f9dd4f1df93762becbc4cc419d65a598f8aafcfe GIT binary patch literal 7005 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 literal 0 HcmV?d00001 diff --git a/apps/platform/public/android-chrome-512x512.png b/apps/platform/public/android-chrome-512x512.png new file mode 100644 index 0000000000000000000000000000000000000000..69e9d3ee6c7a18eb076f5e3ada8f7f6e73da54ea GIT binary patch literal 21062 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�HQvlxYKniCo*U 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 + + + + + #da532c + + + diff --git a/apps/platform/public/carriers/aramex_icon.svg b/apps/platform/public/carriers/aramex_icon.svg new file mode 100644 index 0000000000..1e2df79545 --- /dev/null +++ b/apps/platform/public/carriers/aramex_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/aramex_logo.svg b/apps/platform/public/carriers/aramex_logo.svg new file mode 100644 index 0000000000..a6abd3a51f --- /dev/null +++ b/apps/platform/public/carriers/aramex_logo.svg @@ -0,0 +1,28 @@ + + + + + + + diff --git a/apps/platform/public/carriers/australiapost_icon.svg b/apps/platform/public/carriers/australiapost_icon.svg new file mode 100644 index 0000000000..86a5512988 --- /dev/null +++ b/apps/platform/public/carriers/australiapost_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/australiapost_logo.svg b/apps/platform/public/carriers/australiapost_logo.svg new file mode 100644 index 0000000000..a913c1ebc6 --- /dev/null +++ b/apps/platform/public/carriers/australiapost_logo.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/bokknight_icon.svg b/apps/platform/public/carriers/bokknight_icon.svg new file mode 100644 index 0000000000..dff22d8c96 --- /dev/null +++ b/apps/platform/public/carriers/bokknight_icon.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/boxknight_logo.svg b/apps/platform/public/carriers/boxknight_logo.svg new file mode 100644 index 0000000000..1b7b4e8ba4 --- /dev/null +++ b/apps/platform/public/carriers/boxknight_logo.svg @@ -0,0 +1,61 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/canadapost_icon.svg b/apps/platform/public/carriers/canadapost_icon.svg new file mode 100644 index 0000000000..3ab9647d1b --- /dev/null +++ b/apps/platform/public/carriers/canadapost_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/canadapost_logo.svg b/apps/platform/public/carriers/canadapost_logo.svg new file mode 100644 index 0000000000..25ec30d166 --- /dev/null +++ b/apps/platform/public/carriers/canadapost_logo.svg @@ -0,0 +1,75 @@ + + + + +Created with Sketch. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/canpar_icon.svg b/apps/platform/public/carriers/canpar_icon.svg new file mode 100644 index 0000000000..bc7965bf07 --- /dev/null +++ b/apps/platform/public/carriers/canpar_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/canpar_logo.svg b/apps/platform/public/carriers/canpar_logo.svg new file mode 100644 index 0000000000..bb39f0b77c --- /dev/null +++ b/apps/platform/public/carriers/canpar_logo.svg @@ -0,0 +1,42 @@ + + + + + + + + + + diff --git a/apps/platform/public/carriers/dhl_express_icon.svg b/apps/platform/public/carriers/dhl_express_icon.svg new file mode 100644 index 0000000000..cf3f4bf6dd --- /dev/null +++ b/apps/platform/public/carriers/dhl_express_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/dhl_express_logo.svg b/apps/platform/public/carriers/dhl_express_logo.svg new file mode 100644 index 0000000000..85a2c9c1ff --- /dev/null +++ b/apps/platform/public/carriers/dhl_express_logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/apps/platform/public/carriers/dhl_icon.svg b/apps/platform/public/carriers/dhl_icon.svg new file mode 100644 index 0000000000..cf3f4bf6dd --- /dev/null +++ b/apps/platform/public/carriers/dhl_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/dhl_logo.svg b/apps/platform/public/carriers/dhl_logo.svg new file mode 100644 index 0000000000..85a2c9c1ff --- /dev/null +++ b/apps/platform/public/carriers/dhl_logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/apps/platform/public/carriers/dhl_poland_icon.svg b/apps/platform/public/carriers/dhl_poland_icon.svg new file mode 100644 index 0000000000..cf3f4bf6dd --- /dev/null +++ b/apps/platform/public/carriers/dhl_poland_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/dhl_poland_logo.svg b/apps/platform/public/carriers/dhl_poland_logo.svg new file mode 100644 index 0000000000..85a2c9c1ff --- /dev/null +++ b/apps/platform/public/carriers/dhl_poland_logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/apps/platform/public/carriers/dhl_universal_icon.svg b/apps/platform/public/carriers/dhl_universal_icon.svg new file mode 100644 index 0000000000..cf3f4bf6dd --- /dev/null +++ b/apps/platform/public/carriers/dhl_universal_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/dhl_universal_logo.svg b/apps/platform/public/carriers/dhl_universal_logo.svg new file mode 100644 index 0000000000..85a2c9c1ff --- /dev/null +++ b/apps/platform/public/carriers/dhl_universal_logo.svg @@ -0,0 +1,20 @@ + + + + + + + + + + diff --git a/apps/platform/public/carriers/dicom_icon.svg b/apps/platform/public/carriers/dicom_icon.svg new file mode 100644 index 0000000000..a669d54bc6 --- /dev/null +++ b/apps/platform/public/carriers/dicom_icon.svg @@ -0,0 +1,211 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/dicom_logo.svg b/apps/platform/public/carriers/dicom_logo.svg new file mode 100644 index 0000000000..04015d67fc --- /dev/null +++ b/apps/platform/public/carriers/dicom_logo.svg @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/dpd_icon.svg b/apps/platform/public/carriers/dpd_icon.svg new file mode 100644 index 0000000000..2cfac1e945 --- /dev/null +++ b/apps/platform/public/carriers/dpd_icon.svg @@ -0,0 +1,182 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/dpd_logo.svg b/apps/platform/public/carriers/dpd_logo.svg new file mode 100644 index 0000000000..ed8b8bfec9 --- /dev/null +++ b/apps/platform/public/carriers/dpd_logo.svg @@ -0,0 +1,417 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/dpdhl_icon.svg b/apps/platform/public/carriers/dpdhl_icon.svg new file mode 100644 index 0000000000..4f06f87147 --- /dev/null +++ b/apps/platform/public/carriers/dpdhl_icon.svg @@ -0,0 +1,25 @@ + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/dpdhl_logo.svg b/apps/platform/public/carriers/dpdhl_logo.svg new file mode 100644 index 0000000000..b5ef5593b6 --- /dev/null +++ b/apps/platform/public/carriers/dpdhl_logo.svg @@ -0,0 +1,68 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/easypost_icon.svg b/apps/platform/public/carriers/easypost_icon.svg new file mode 100644 index 0000000000..eec8b11a6e --- /dev/null +++ b/apps/platform/public/carriers/easypost_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/easypost_logo.svg b/apps/platform/public/carriers/easypost_logo.svg new file mode 100644 index 0000000000..47d8650fb0 --- /dev/null +++ b/apps/platform/public/carriers/easypost_logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/eshipper_logo.svg b/apps/platform/public/carriers/eshipper_logo.svg new file mode 100644 index 0000000000..f1d7fa67f6 --- /dev/null +++ b/apps/platform/public/carriers/eshipper_logo.svg @@ -0,0 +1,67 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/fedex_icon.svg b/apps/platform/public/carriers/fedex_icon.svg new file mode 100644 index 0000000000..6eb8db217f --- /dev/null +++ b/apps/platform/public/carriers/fedex_icon.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + diff --git a/apps/platform/public/carriers/fedex_logo.svg b/apps/platform/public/carriers/fedex_logo.svg new file mode 100644 index 0000000000..7d272ae3ea --- /dev/null +++ b/apps/platform/public/carriers/fedex_logo.svg @@ -0,0 +1,22 @@ + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/freightcom_logo.svg b/apps/platform/public/carriers/freightcom_logo.svg new file mode 100644 index 0000000000..fa8a78a68f --- /dev/null +++ b/apps/platform/public/carriers/freightcom_logo.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/generic_icon.svg b/apps/platform/public/carriers/generic_icon.svg new file mode 100644 index 0000000000..da5236b59e --- /dev/null +++ b/apps/platform/public/carriers/generic_icon.svg @@ -0,0 +1,3 @@ + + + diff --git a/apps/platform/public/carriers/generic_logo.svg b/apps/platform/public/carriers/generic_logo.svg new file mode 100644 index 0000000000..8d65679eac --- /dev/null +++ b/apps/platform/public/carriers/generic_logo.svg @@ -0,0 +1,57 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/geodis_icon.svg b/apps/platform/public/carriers/geodis_icon.svg new file mode 100644 index 0000000000..104fe040ef --- /dev/null +++ b/apps/platform/public/carriers/geodis_icon.svg @@ -0,0 +1,65 @@ + + + + + + + + + + diff --git a/apps/platform/public/carriers/geodis_logo.svg b/apps/platform/public/carriers/geodis_logo.svg new file mode 100644 index 0000000000..90f5302993 --- /dev/null +++ b/apps/platform/public/carriers/geodis_logo.svg @@ -0,0 +1,62 @@ + + + + + + + + + + + diff --git a/apps/platform/public/carriers/laposte_icon.svg b/apps/platform/public/carriers/laposte_icon.svg new file mode 100644 index 0000000000..5d1d684ac8 --- /dev/null +++ b/apps/platform/public/carriers/laposte_icon.svg @@ -0,0 +1,40 @@ + + + + + + + diff --git a/apps/platform/public/carriers/laposte_logo.svg b/apps/platform/public/carriers/laposte_logo.svg new file mode 100644 index 0000000000..b52a404fca --- /dev/null +++ b/apps/platform/public/carriers/laposte_logo.svg @@ -0,0 +1,39 @@ + + + + + + + + diff --git a/apps/platform/public/carriers/nationex_icon.svg b/apps/platform/public/carriers/nationex_icon.svg new file mode 100644 index 0000000000..0e2ecb012a --- /dev/null +++ b/apps/platform/public/carriers/nationex_icon.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/nationex_logo.svg b/apps/platform/public/carriers/nationex_logo.svg new file mode 100644 index 0000000000..020c376b39 --- /dev/null +++ b/apps/platform/public/carriers/nationex_logo.svg @@ -0,0 +1,36 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/purolator_icon.svg b/apps/platform/public/carriers/purolator_icon.svg new file mode 100644 index 0000000000..f958ec9447 --- /dev/null +++ b/apps/platform/public/carriers/purolator_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/purolator_logo.svg b/apps/platform/public/carriers/purolator_logo.svg new file mode 100644 index 0000000000..3fc9b1441b --- /dev/null +++ b/apps/platform/public/carriers/purolator_logo.svg @@ -0,0 +1,37 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/roadie_icon.svg b/apps/platform/public/carriers/roadie_icon.svg new file mode 100644 index 0000000000..a2c2cf8be3 --- /dev/null +++ b/apps/platform/public/carriers/roadie_icon.svg @@ -0,0 +1,41 @@ + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/roadie_logo.svg b/apps/platform/public/carriers/roadie_logo.svg new file mode 100644 index 0000000000..e5dd794d7a --- /dev/null +++ b/apps/platform/public/carriers/roadie_logo.svg @@ -0,0 +1,39 @@ + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/royalmail_icon.svg b/apps/platform/public/carriers/royalmail_icon.svg new file mode 100644 index 0000000000..8be4346864 --- /dev/null +++ b/apps/platform/public/carriers/royalmail_icon.svg @@ -0,0 +1,111 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/royalmail_logo.svg b/apps/platform/public/carriers/royalmail_logo.svg new file mode 100644 index 0000000000..8981186efb --- /dev/null +++ b/apps/platform/public/carriers/royalmail_logo.svg @@ -0,0 +1,47 @@ + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/sendle_icon.svg b/apps/platform/public/carriers/sendle_icon.svg new file mode 100644 index 0000000000..a21de9b5c2 --- /dev/null +++ b/apps/platform/public/carriers/sendle_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/sendle_logo.svg b/apps/platform/public/carriers/sendle_logo.svg new file mode 100644 index 0000000000..8cfdc2870b --- /dev/null +++ b/apps/platform/public/carriers/sendle_logo.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/sf_express_icon.svg b/apps/platform/public/carriers/sf_express_icon.svg new file mode 100644 index 0000000000..c6ef040011 --- /dev/null +++ b/apps/platform/public/carriers/sf_express_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/sf_express_logo.svg b/apps/platform/public/carriers/sf_express_logo.svg new file mode 100644 index 0000000000..35c8be30a0 --- /dev/null +++ b/apps/platform/public/carriers/sf_express_logo.svg @@ -0,0 +1,21 @@ + + + + + + +E +X +P +RESS + diff --git a/apps/platform/public/carriers/tnt_icon.svg b/apps/platform/public/carriers/tnt_icon.svg new file mode 100644 index 0000000000..52a93b5cbb --- /dev/null +++ b/apps/platform/public/carriers/tnt_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/tnt_logo.svg b/apps/platform/public/carriers/tnt_logo.svg new file mode 100644 index 0000000000..1be3d42615 --- /dev/null +++ b/apps/platform/public/carriers/tnt_logo.svg @@ -0,0 +1,21 @@ + + + + + + + + + + diff --git a/apps/platform/public/carriers/ups_icon.svg b/apps/platform/public/carriers/ups_icon.svg new file mode 100644 index 0000000000..dff9cb6cd6 --- /dev/null +++ b/apps/platform/public/carriers/ups_icon.svg @@ -0,0 +1,27 @@ + + + + + + + + + + + diff --git a/apps/platform/public/carriers/ups_logo.svg b/apps/platform/public/carriers/ups_logo.svg new file mode 100644 index 0000000000..3a6c6c03d3 --- /dev/null +++ b/apps/platform/public/carriers/ups_logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + diff --git a/apps/platform/public/carriers/usps_icon.svg b/apps/platform/public/carriers/usps_icon.svg new file mode 100644 index 0000000000..2ca180422c --- /dev/null +++ b/apps/platform/public/carriers/usps_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/usps_international_icon.svg b/apps/platform/public/carriers/usps_international_icon.svg new file mode 100644 index 0000000000..2ca180422c --- /dev/null +++ b/apps/platform/public/carriers/usps_international_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/usps_international_logo.svg b/apps/platform/public/carriers/usps_international_logo.svg new file mode 100644 index 0000000000..cb4b49a23c --- /dev/null +++ b/apps/platform/public/carriers/usps_international_logo.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/usps_logo.svg b/apps/platform/public/carriers/usps_logo.svg new file mode 100644 index 0000000000..cb4b49a23c --- /dev/null +++ b/apps/platform/public/carriers/usps_logo.svg @@ -0,0 +1,53 @@ + + + + + + + + + + + + + + + diff --git a/apps/platform/public/carriers/yanwen_icon.svg b/apps/platform/public/carriers/yanwen_icon.svg new file mode 100644 index 0000000000..2b4dd4c560 --- /dev/null +++ b/apps/platform/public/carriers/yanwen_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/yanwen_logo.svg b/apps/platform/public/carriers/yanwen_logo.svg new file mode 100644 index 0000000000..083f3efcd3 --- /dev/null +++ b/apps/platform/public/carriers/yanwen_logo.svg @@ -0,0 +1,19 @@ + + + + + + + + + + + diff --git a/apps/platform/public/carriers/yunexpress_icon.svg b/apps/platform/public/carriers/yunexpress_icon.svg new file mode 100644 index 0000000000..ff5c4d598e --- /dev/null +++ b/apps/platform/public/carriers/yunexpress_icon.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/public/carriers/yunexpress_logo.svg b/apps/platform/public/carriers/yunexpress_logo.svg new file mode 100644 index 0000000000..f1891a885b --- /dev/null +++ b/apps/platform/public/carriers/yunexpress_logo.svg @@ -0,0 +1,48 @@ + + + + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/favicon-16x16.png b/apps/platform/public/favicon-16x16.png new file mode 100644 index 0000000000000000000000000000000000000000..13ec66424783fd1a74711ad296d901c86271b84c GIT binary patch literal 1085 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbKJOS+@4BLl<6e(pbstU$g(vPY0F z14ES>14Ba#1H&(%P{RubhEf9thF1v;3|2E37{m+a>|@U;6Sf zkn!J*Vdt!p@)r+53ZC8l6ec?9#1h(QGhJ!#C0@NZkt{H z{6Y2OTNTgl|NsBL*Tk4h5vkd2qyM@{Q+ouU{9;w=Y zn;Z4n%KqD3O@mi=6ina$%3*2!k?e0=%zr(Q@$YC$> z^mS!_#v~}F$CtI^ln+qoo~Mgrh{R>vQ{U~I3Pp~7{2jASk}ELHTcvvPPl=T|PMgdZ z_WhOkUtK%(T>kv;uLY(~ovo$i`B-c7(p_z)i=whut(!L^x6H&uDlPvFISr@h zwln!lKgfMv|3c$SWuqT|w&jQNQf5E)=L?sMzu3I;oYVgU3I--?e(}$9cZ)YLvlA3J zdFZvYfu*UfvGwxqrk~&Y{dIKoB;5)uRa_pPxNaU6cD?7!HS?A(v+Z>aZ|5#(da*9x z2C2sj4rxu-4zZW6vp>b@?qnzMU(YpKwuLZvG_3i2OC7#SED=^7a68k&a~8CjW_Ss9vW8yHv_7-*QEkw(#wo1c=I zR*73fWLC*?poZ|Okcg6?#Bzm#qWrYXoK%I9%7Rpd%z~0+28N0`k3aEn6ozSNobo?? z#`9?q1G6%>UNX0^vat7L5oTcpmj;u=Da^{7LljQmxN_pinIkes*iScjEb!7}cqJ}a U^2y0`D$oiBPgg&ebxsLQ05>S*4gdfE literal 0 HcmV?d00001 diff --git a/apps/platform/public/favicon-32x32.png b/apps/platform/public/favicon-32x32.png new file mode 100644 index 0000000000000000000000000000000000000000..c637bde706babdc85a15a4f24baf705929841c82 GIT binary patch literal 1717 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 literal 0 HcmV?d00001 diff --git a/apps/platform/public/favicon.svg b/apps/platform/public/favicon.svg new file mode 100644 index 0000000000..de1c1ccfe7 --- /dev/null +++ b/apps/platform/public/favicon.svg @@ -0,0 +1,79 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/apps/platform/public/icon-inverted.svg b/apps/platform/public/icon-inverted.svg new file mode 100644 index 0000000000..8dcc4bb4b3 --- /dev/null +++ b/apps/platform/public/icon-inverted.svg @@ -0,0 +1,76 @@ + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/apps/platform/public/icon.svg b/apps/platform/public/icon.svg new file mode 100644 index 0000000000..de1c1ccfe7 --- /dev/null +++ b/apps/platform/public/icon.svg @@ -0,0 +1,79 @@ + + + + + + image/svg+xml + + + + + + + + + + + + + diff --git a/apps/platform/public/logo-inverted.svg b/apps/platform/public/logo-inverted.svg new file mode 100644 index 0000000000..463e7e6d90 --- /dev/null +++ b/apps/platform/public/logo-inverted.svg @@ -0,0 +1,29 @@ + + + + + + + + + + + + + + + + diff --git a/apps/platform/public/logo.png b/apps/platform/public/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ebbe34cbdea8bf6fd68f3fba060e8fe09f1f6aeb GIT binary patch literal 15475 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 + + + + + + + + + + + + + + + diff --git a/apps/platform/public/manifest.json b/apps/platform/public/manifest.json new file mode 100644 index 0000000000..1231b3f562 --- /dev/null +++ b/apps/platform/public/manifest.json @@ -0,0 +1,22 @@ +{ + "short_name": "karrio", + "name": "Karrio Board", + "icons": [ + { + "src": "android-chrome-192x192.png", + "sizes": "192x192", + "type": "image/png", + "density": "4.0" + }, + { + "src": "android-chrome-512x512.png", + "sizes": "512x512", + "type": "image/png", + "density": "4.0" + } + ], + "start_url": "", + "display": "standalone", + "theme_color": "#9504af", + "background_color": "#9504af" +} diff --git a/apps/platform/public/unfold.svg b/apps/platform/public/unfold.svg new file mode 100644 index 0000000000..3e245d2090 --- /dev/null +++ b/apps/platform/public/unfold.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/apps/platform/sentry.client.config.js b/apps/platform/sentry.client.config.js new file mode 100644 index 0000000000..de9060524c --- /dev/null +++ b/apps/platform/sentry.client.config.js @@ -0,0 +1,24 @@ +// This file configures the initialization of Sentry on the browser. +// The config you add here will be used whenever a page is visited. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs'; + +const SENTRY_DSN = process.env.SENTRY_DSN; +const API_URL = process.env.KARRIO_PUBLIC_URL; + +Sentry.init({ + dsn: SENTRY_DSN, + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps + initialScope: scope => { + scope.setTags({ + API: API_URL, + }); + return scope; + }, +}); diff --git a/apps/platform/sentry.edge.config.js b/apps/platform/sentry.edge.config.js new file mode 100644 index 0000000000..8e4b9bbdb0 --- /dev/null +++ b/apps/platform/sentry.edge.config.js @@ -0,0 +1,11 @@ +// sentry.edge.config.js or sentry.edge.config.ts + +import * as Sentry from "@sentry/nextjs"; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; + + +Sentry.init({ + dsn: SENTRY_DSN, + tracesSampleRate: 1.0, +}); diff --git a/apps/platform/sentry.server.config.js b/apps/platform/sentry.server.config.js new file mode 100644 index 0000000000..1500866037 --- /dev/null +++ b/apps/platform/sentry.server.config.js @@ -0,0 +1,25 @@ +// This file configures the initialization of Sentry on the server. +// The config you add here will be used whenever the server handles a request. +// https://docs.sentry.io/platforms/javascript/guides/nextjs/ + +import * as Sentry from '@sentry/nextjs'; + +const SENTRY_DSN = process.env.SENTRY_DSN || process.env.NEXT_PUBLIC_SENTRY_DSN; +const API_URL = process.env.KARRIO_PUBLIC_URL; + +Sentry.init({ + dsn: SENTRY_DSN, + // Adjust this value in production, or use tracesSampler for greater control + tracesSampleRate: 1.0, + // ... + // Note: if you want to override the automatic release value, do not set a + // `release` value here - use the environment variable `SENTRY_RELEASE`, so + // that it will also get attached to your source maps + initialScope: scope => { + scope.setTags({ + API: API_URL, + }); + return scope; + }, +}); + diff --git a/apps/platform/src/app/(auth)/connections/page.tsx b/apps/platform/src/app/(auth)/connections/page.tsx new file mode 100644 index 0000000000..6c75687164 --- /dev/null +++ b/apps/platform/src/app/(auth)/connections/page.tsx @@ -0,0 +1,4 @@ +export { + default, + generateMetadata, +} from "@karrio/insiders/modules/connections"; diff --git a/apps/platform/src/app/(auth)/developers/page.tsx b/apps/platform/src/app/(auth)/developers/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/(auth)/developers/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/(auth)/layout.tsx b/apps/platform/src/app/(auth)/layout.tsx new file mode 100644 index 0000000000..1ee82b603f --- /dev/null +++ b/apps/platform/src/app/(auth)/layout.tsx @@ -0,0 +1 @@ +export { default } from "@karrio/insiders/layouts/dashboard-layout"; diff --git a/apps/platform/src/app/(auth)/manifests/page.tsx b/apps/platform/src/app/(auth)/manifests/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/(auth)/manifests/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/(auth)/orders/page.tsx b/apps/platform/src/app/(auth)/orders/page.tsx new file mode 100644 index 0000000000..4893aa52b2 --- /dev/null +++ b/apps/platform/src/app/(auth)/orders/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/orders"; diff --git a/apps/platform/src/app/(auth)/page.tsx b/apps/platform/src/app/(auth)/page.tsx new file mode 100644 index 0000000000..00ee124ceb --- /dev/null +++ b/apps/platform/src/app/(auth)/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/dashboard"; diff --git a/apps/platform/src/app/(auth)/settings/page.tsx b/apps/platform/src/app/(auth)/settings/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/(auth)/settings/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/(auth)/shipments/page.tsx b/apps/platform/src/app/(auth)/shipments/page.tsx new file mode 100644 index 0000000000..9d6382a3d8 --- /dev/null +++ b/apps/platform/src/app/(auth)/shipments/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/shipments"; diff --git a/apps/platform/src/app/(auth)/store/page.tsx b/apps/platform/src/app/(auth)/store/page.tsx new file mode 100644 index 0000000000..a2ad313501 --- /dev/null +++ b/apps/platform/src/app/(auth)/store/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/store"; diff --git a/apps/platform/src/app/(auth)/trackers/page.tsx b/apps/platform/src/app/(auth)/trackers/page.tsx new file mode 100644 index 0000000000..3e482656f9 --- /dev/null +++ b/apps/platform/src/app/(auth)/trackers/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/trackers"; diff --git a/apps/platform/src/app/(auth)/workflows/page.tsx b/apps/platform/src/app/(auth)/workflows/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/(auth)/workflows/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/admin/carrier_connections/page.tsx b/apps/platform/src/app/admin/carrier_connections/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/admin/carrier_connections/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/admin/organization_accounts/page.tsx b/apps/platform/src/app/admin/organization_accounts/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/admin/organization_accounts/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/admin/page.tsx b/apps/platform/src/app/admin/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/admin/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/admin/surcharges/page.tsx b/apps/platform/src/app/admin/surcharges/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/admin/surcharges/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/admin/user_accounts/page.tsx b/apps/platform/src/app/admin/user_accounts/page.tsx new file mode 100644 index 0000000000..8ee78ee7df --- /dev/null +++ b/apps/platform/src/app/admin/user_accounts/page.tsx @@ -0,0 +1 @@ +export { default, generateMetadata } from "@karrio/insiders/modules/carriers"; diff --git a/apps/platform/src/app/api/auth/[...nextauth]/route.ts b/apps/platform/src/app/api/auth/[...nextauth]/route.ts new file mode 100644 index 0000000000..6d253fb0a9 --- /dev/null +++ b/apps/platform/src/app/api/auth/[...nextauth]/route.ts @@ -0,0 +1,2 @@ +import { handlers } from "@karrio/core/context/auth"; +export const { GET, POST } = handlers; diff --git a/apps/platform/src/app/api/images/[name]/route.ts b/apps/platform/src/app/api/images/[name]/route.ts new file mode 100644 index 0000000000..1970200cfa --- /dev/null +++ b/apps/platform/src/app/api/images/[name]/route.ts @@ -0,0 +1 @@ +export { GET } from "@karrio/core/context/image"; diff --git a/apps/platform/src/app/error.tsx b/apps/platform/src/app/error.tsx new file mode 100644 index 0000000000..8d9e34abd2 --- /dev/null +++ b/apps/platform/src/app/error.tsx @@ -0,0 +1,2 @@ +"use client"; +export { default } from "@karrio/core/components/error"; diff --git a/apps/platform/src/app/global-error.tsx b/apps/platform/src/app/global-error.tsx new file mode 100644 index 0000000000..2dc5347fe5 --- /dev/null +++ b/apps/platform/src/app/global-error.tsx @@ -0,0 +1,2 @@ +"use client"; +export { default } from "@karrio/core/components/global-error"; diff --git a/apps/platform/src/app/layout.tsx b/apps/platform/src/app/layout.tsx new file mode 100644 index 0000000000..0273347ad6 --- /dev/null +++ b/apps/platform/src/app/layout.tsx @@ -0,0 +1,2 @@ +import "../styles/globals.css"; +export { default } from "@karrio/insiders/layouts/root-layout"; diff --git a/apps/platform/src/middleware.ts b/apps/platform/src/middleware.ts new file mode 100644 index 0000000000..c62263e150 --- /dev/null +++ b/apps/platform/src/middleware.ts @@ -0,0 +1,14 @@ +export { middleware } from "@karrio/core/context/middleware"; + +export const config = { + matcher: [ + /* + * Match all paths except for: + * 1. /api routes + * 2. /_next (Next.js internals) + * 3. /_static (inside /public) + * 4. all root files inside /public (e.g. /favicon.ico) + */ + "/((?!api/|_next/|_static/|_vercel|[\\w-]+\\.\\w+).*)", + ], +}; diff --git a/apps/platform/src/styles/dashboard.scss b/apps/platform/src/styles/dashboard.scss new file mode 100644 index 0000000000..2254c945d8 --- /dev/null +++ b/apps/platform/src/styles/dashboard.scss @@ -0,0 +1,805 @@ +/* ========================================================================== +Karrio custom styling +========================================================================== */ + +@import "./plex/main.scss"; + +.card { + border-radius: 6px; + box-shadow: 0.5px 0.5px 2.5px #efefef; + border: 1px solid #e5e5e5; + + &.is-flat { + box-shadow: none; + border: 1px solid #e5e5e5; + } + + &.is-clickable:hover { + background-color: #fafafa; + } +} + +.options-item, +.form-icon { + color: #a9abac; +} + +.karrio-loader { + top: 0; + left: 0; + animation-duration: 3s !important; + position: absolute; + z-index: 100; + margin: 0 !important; + height: 0.1rem !important; +} + +.karrio-notification-loader { + top: 0; + left: 0; + animation-duration: 10s !important; + position: absolute; + z-index: 100; + margin: 0 !important; + height: 0.1rem !important; +} + +.shipments-table { + .selector { + width: 3%; + } + + .service { + width: 15%; + min-width: 250px; + } + + .status { + width: 100px; + min-width: 100px; + max-width: 120px; + } + + .recipient { + min-width: 200px; + } + + .reference { + min-width: 150px; + } + + .date { + width: 120px; + min-width: 120px; + max-width: 120px; + } + + .action { + width: 35px; + min-width: 35px; + } + + tbody>tr.items { + cursor: pointer; + } + + tbody>tr.items:hover { + background-color: #fafafa; + } +} + +.manifests-table { + .selector { + width: 3%; + } + + .carrier { + width: 25%; + min-width: 300px; + } + + .address { + min-width: 200px; + } + + .reference { + min-width: 150px; + } + + .date { + width: 120px; + min-width: 120px; + max-width: 120px; + } + + .action { + width: 35px; + min-width: 35px; + } +} + +.connections-table { + .carrier { + width: 15%; + text-align: center !important; + } + + .mode { + width: 5%; + } + + .active { + width: 6%; + } + + .details {} + + .action { + width: 20%; + min-width: 180px; + } +} + +.admin-connections-table { + .carrier { + width: 160px; + min-width: 160px; + } + + .mode { + width: 6%; + } + + .active { + width: 5%; + } + + .details {} + + .action { + width: 20%; + min-width: 180px; + } +} + +.system-connections-table { + .carrier { + width: 15%; + text-align: center !important; + } + + .mode { + width: 6%; + } + + .details { + width: 64%; + } + + .action { + width: 6%; + } +} + +.rate-sheets-table { + .carrier { + width: 15%; + text-align: center !important; + } + + .details {} + + .action { + width: 20%; + min-width: 180px; + } +} + +.templates-table { + .template {} + + .default { + width: 20%; + } + + .action { + width: 150px; + min-width: 150px; + } +} + +.address-templates-table { + .template { + width: 20%; + min-width: 10vw; + } + + .address { + width: 40%; + min-width: 10vw; + } + + .email { + min-width: 10vw; + } + + .default { + width: 100px; + min-width: 100px; + } + + .action { + width: 90px; + min-width: 90px; + } +} + +.parcel-templates-table { + .template { + width: 30%; + min-width: 10vw; + } + + .parcel { + min-width: 250px; + } + + .default { + width: 100px; + min-width: 100px; + } + + .action { + width: 90px; + min-width: 90px; + } +} + +.commodities-table { + .commodity {} + + .action { + width: 115px; + } +} + +.logs-table { + .status { + width: 8%; + } + + .description { + min-width: 200px; + max-width: 200px; + } + + .date { + width: 20%; + min-width: 185px; + } + + tbody>tr.items { + cursor: pointer; + } + + tbody>tr.items:hover { + background-color: #fafafa; + } +} + +.events-table { + .description { + width: 80%; + min-width: 200px; + max-width: 200px; + } + + .date { + width: 20%; + min-width: 190px; + max-width: 190px; + } + + tbody>tr.items { + cursor: pointer; + } + + tbody>tr.items:hover { + background-color: #fafafa; + } +} + +.workflow-events-table { + .status { + width: 6%; + min-width: 60px; + max-width: 60px; + } + + .description { + min-width: 200px; + max-width: 200px; + } + + .date { + width: 20%; + min-width: 190px; + max-width: 190px; + } + + tbody>tr.items { + cursor: pointer; + } + + tbody>tr.items:hover { + background-color: #fafafa; + } +} + +.trackers-table { + .service { + width: 15%; + min-width: 250px; + } + + .status { + width: 10%; + } + + .last-event { + min-width: 200px; + max-width: 200px; + } + + .date { + width: 15%; + min-width: 130px; + max-width: 130px; + } + + .action { + width: 5%; + min-width: 50px; + } + + tbody>tr.items { + cursor: pointer; + } + + tbody>tr.items:hover { + background-color: #fafafa; + } +} + +.webhooks-table { + .url { + width: 70%; + min-width: 200px; + max-width: 200px; + } + + .mode { + width: 50px; + } + + .last-event { + min-width: 150px; + max-width: 150px; + } + + .action { + width: 10%; + min-width: 150px; + } +} + +.orders-table { + .selector { + width: 3%; + } + + .order { + width: 15%; + min-width: 130px; + } + + .line-items { + min-width: 140px; + } + + .status { + width: 100px; + min-width: 100px; + max-width: 120px; + } + + .customer { + min-width: 150px; + } + + .total { + width: 100px; + min-width: 100px; + max-width: 100px; + } + + .date { + width: 120px; + min-width: 120px; + max-width: 120px; + } + + .service { + width: 20%; + min-width: 240px; + } + + .action { + width: 35px; + min-width: 35px; + } + + tbody>tr.items { + cursor: pointer; + } + + tbody>tr.items:hover { + background-color: #fafafa; + } +} + +.batch-labels-table { + .selector { + width: 3%; + } + + .order { + width: 20%; + min-width: 160px; + } + + .items { + min-width: 150px; + max-width: 150px; + } + + .package { + min-width: 150px; + max-width: 150px; + } + + .total { + width: 120px; + min-width: 120px; + max-width: 120px; + } + + .service { + width: 20%; + min-width: 280px; + } + + tbody>tr.items:hover { + background-color: #fafafa; + } +} + +.related-item-table { + border-top: 2px solid #eee; + border-bottom: 2px solid #eee; + + .status { + width: 3%; + } + + .description { + min-width: 40%; + } + + .date { + width: 15%; + min-width: 130px; + max-width: 130px; + } +} + +.members-table { + .member { + width: 40%; + min-width: 150px; + } + + .role { + width: 25%; + min-width: 150px; + } + + .last-login { + width: 180px; + min-width: 180px; + } + + .action { + width: 10%; + } +} + +.surcharges-table { + .surcharge { + width: 20%; + } + + .name { + width: 60%; + } + + .action { + width: 20%; + } +} + +hr { + background-color: #dddddd; +} + +.text-ellipsis { + text-overflow: ellipsis; + white-space: nowrap; + overflow: hidden; +} + +.text-overflow { + white-space: break-spaces; +} + +.plex-sidebar { + z-index: 30; +} + +.log-card-header { + border-bottom: 1px solid #ddd; +} + +.bottom-menu-item { + position: absolute; + bottom: 10px; + left: 0; + right: 0; +} + +.mode-menu-item { + color: rgb(196, 76, 52) !important; +} + +.karrio-notifier { + position: fixed; + top: 0; + left: 0; + right: 0; + z-index: 50; + opacity: 0.9; + border-radius: 0; + font-weight: 700; +} + +.static-nav { + top: 0; + z-index: 1; + position: sticky; + background-color: white; +} + +.mode-indicator { + position: fixed; + top: 0; + z-index: 40; + border-top: 2px solid rgb(196, 76, 52); + padding: 0; + text-align: center; + width: 100%; + display: flex; + + .mode-indicator-label { + margin: 0 auto; + background: rgb(196, 76, 52); + display: inline; + padding: 0 10px; + border-radius: 0 0 5px 5px; + color: white; + font-size: 0.60em; + font-weight: bold; + } +} + +td>div.dropdown.is-active .dropdown-menu { + top: 75%; +} + +.dropdown-content { + border: 1px solid #ddd; + border-top: none; + overflow: hidden; + + &.is-menu { + max-height: 240px; + } +} + +.label-container { + width: 90%; + height: 90%; + z-index: 1; +} + +.fullscreen { + background: #f7f7f7; + width: 100%; + height: 100%; + z-index: 1; +} + +.small-icon>svg { + width: 0.8em !important; + height: 0.8em !important; +} + +.tabs>ul { + scrollbar-width: none; + /* Firefox */ + -ms-overflow-style: none; + /* Internet Explorer 10+ */ +} + +.tabs>ul::-webkit-scrollbar { + /* WebKit */ + width: 0; + height: 0; +} + +.tab-content { + display: none; + overflow: hidden; + + &.is-active { + display: block; + } +} + +.dropped-panel { + max-height: 20.5rem; + overflow-y: auto; +} + +.form-floating-header { + position: absolute; + top: 0; + right: 0; + left: 0; + z-index: 5; + background: #fff; + border-bottom: 1px solid #ddd; +} + +.form-floating-footer { + position: absolute; + bottom: 0; + right: 0; + left: 0; + z-index: 5; + background: white; +} + +.rates-list-box { + max-height: 11em; + overflow-x: hidden; + overflow-y: auto; +} + +.modal-form { + background-color: #f9f9f9; +} + +.side-modal { + top: 0; + right: 0; + bottom: 0; + left: auto; + border-left: solid #ddd; + width: 400px; +} + +.side-modal-body { + max-height: 100vh; + height: 100vh; + width: 400px; +} + +pre.code { + border: 1px solid #f2f2f2; +} + +.admin-wrapper { + margin: auto; + max-width: 1080px; + padding: 0 20px; +} + +.admin-sidebar { + width: 260px !important; +} + +.admin-sidebar-header { + border-radius: 6px; +} + +.sidebar-menu-button { + position: fixed; + top: 10px; + right: -40px; + display: none; +} + +.admin-modal { + width: calc(100%); + max-height: 90vh !important; +} + +@media screen and (min-width: 1080px) { + .table-container { + overflow: unset; + overflow-y: unset; + } + + .admin-modal { + margin: 1.5rem; + } +} + +@media screen and (min-width: 768px) { + .admin-sidebar { + position: absolute !important; + z-index: 0 !important; + } +} + +@media screen and (max-width: 768px) { + .table-container { + overflow-y: visible; + } + + .admin-modal { + margin: 0; + max-height: 95vh !important; + } + + .admin-sidebar-menu { + height: calc(100%); + margin: 0 !important; + } + + .sidebar-menu-button.is-mobile-active { + display: block !important; + } +} + +// Scrollbar +/* width */ +::-webkit-scrollbar { + width: 6px; + height: 6px; +} + +/* Track */ +::-webkit-scrollbar-track { + background: #f1f1f1; +} + +/* Handle */ +::-webkit-scrollbar-thumb { + background: #888; +} + +/* Handle on hover */ +::-webkit-scrollbar-thumb:hover { + background: #555; +} \ No newline at end of file diff --git a/apps/platform/src/styles/globals.css b/apps/platform/src/styles/globals.css new file mode 100644 index 0000000000..666a0e64dd --- /dev/null +++ b/apps/platform/src/styles/globals.css @@ -0,0 +1,85 @@ +@tailwind base; +@tailwind components; +@tailwind utilities; + +@layer base { + :root { + --background: 0 0% 100%; + --foreground: 224 71.4% 4.1%; + --card: 0 0% 100%; + --card-foreground: 224 71.4% 4.1%; + --popover: 0 0% 100%; + --popover-foreground: 224 71.4% 4.1%; + --primary: 259 71% 47%; + --primary-foreground: 210 20% 98%; + --secondary: 220 14.3% 95.9%; + --secondary-foreground: 220.9 39.3% 11%; + --muted: 220 14.3% 95.9%; + --muted-foreground: 220 8.9% 46.1%; + --accent: 220 14.3% 95.9%; + --accent-foreground: 220.9 39.3% 11%; + --destructive: 0 84.2% 60.2%; + --destructive-foreground: 210 20% 98%; + --border: 220 13% 91%; + --input: 220 13% 91%; + --ring: 262.1 83.3% 57.8%; + --radius: 0.3rem; + --chart-1: 12 76% 61%; + --chart-2: 173 58% 39%; + --chart-3: 197 37% 24%; + --chart-4: 43 74% 66%; + --chart-5: 27 87% 67%; + } + + /* .dark { + --background: 224 71.4% 4.1%; + --foreground: 210 20% 98%; + --card: 224 71.4% 4.1%; + --card-foreground: 210 20% 98%; + --popover: 224 71.4% 4.1%; + --popover-foreground: 210 20% 98%; + --primary: 263.4 70% 50.4%; + --primary-foreground: 210 20% 98%; + --secondary: 215 27.9% 16.9%; + --secondary-foreground: 210 20% 98%; + --muted: 215 27.9% 16.9%; + --muted-foreground: 217.9 10.6% 64.9%; + --accent: 215 27.9% 16.9%; + --accent-foreground: 210 20% 98%; + --destructive: 0 62.8% 30.6%; + --destructive-foreground: 210 20% 98%; + --border: 215 27.9% 16.9%; + --input: 215 27.9% 16.9%; + --ring: 263.4 70% 50.4%; + --chart-1: 220 70% 50%; + --chart-2: 160 60% 45%; + --chart-3: 30 80% 55%; + --chart-4: 280 65% 60%; + --chart-5: 340 75% 55%; + } */ +} + +:root { + --background: #ffffff; + --foreground: #171717; +} + +/* @media (prefers-color-scheme: dark) { + :root { + --background: #0a0a0a; + --foreground: #ededed; + } +} */ + +body { + color: var(--foreground); + background: var(--background); + font-family: Arial, Helvetica, sans-serif; + font-size: 14px; +} + +@layer utilities { + .text-balance { + text-wrap: balance; + } +} diff --git a/apps/platform/src/styles/plex/abstracts/_mixins.scss b/apps/platform/src/styles/plex/abstracts/_mixins.scss new file mode 100644 index 0000000000..def924ea68 --- /dev/null +++ b/apps/platform/src/styles/plex/abstracts/_mixins.scss @@ -0,0 +1,4 @@ +/* ========================================================================== +Mixins +========================================================================== */ + diff --git a/apps/platform/src/styles/plex/abstracts/_variables.scss b/apps/platform/src/styles/plex/abstracts/_variables.scss new file mode 100644 index 0000000000..0571c80e1f --- /dev/null +++ b/apps/platform/src/styles/plex/abstracts/_variables.scss @@ -0,0 +1,64 @@ +/* ========================================================================== +Variables +========================================================================== */ + +$primary: #5722cc; +$secondary: #78e6d0; +$accent: #fe5000; + +$white: #fff; +$smoke-white: #fcfcfc; +$placeholder: #cecece; +$light-grey: #f9f9f9; +$lighter-grey: #f7f7f7; +$muted-grey: #999; +$muted-grey-bold: #828282; +$title-grey: #a9abac; +$fade-grey: #ededed; +$accent-grey: #ccc; +$dark-text: #4a4a4a; +$chosen-grey: #e0e0e0; +$chosen-dark-grey: #66676b; +$grey-6: #666; +$section-grey: #fcfcfc; + +$sidebar: #344258; +$red: #ff3b3c; +$blue: #5ba4fc; +$green: #00b289; +$light-green: #3bf486; +$orange: #ff9b17; + +/* ========================================================================== +Shadows +========================================================================== */ + +//Base shadow +$base-shadow: rgba(0, 0, 0, 0.12); + +//Light box shadow +$light-box-shadow: -1px 3px 15px 0 rgba(0, 0, 0, 0.06); + +//Primary box shadow +$primary-shadow-from: rgba($primary, 0.42); +$primary-shadow-to: rgba($primary, 0.2); +$primary-box-shadow: 0 14px 26px -12px $primary-shadow-from, 0 4px 23px 0px $base-shadow, + 0 8px 10px -5px $primary-shadow-to !important; + +//Secondary box shadow +$secondary-shadow-from: rgba($secondary, 0.42); +$secondary-shadow-to: rgba($secondary, 0.2); +$secondary-box-shadow: 0 14px 26px -12px $secondary-shadow-from, 0 4px 23px 0px $base-shadow, + 0 8px 10px -5px $secondary-shadow-to !important; + +//Accent box shadow +$accent-shadow-from: rgba($accent, 0.42); +$accent-shadow-to: rgba($accent, 0.2); +$accent-box-shadow: 0 14px 26px -12px $accent-shadow-from, 0 4px 23px 0px $base-shadow, + 0 8px 10px -5px $accent-shadow-to !important; + +/* ========================================================================== +Fonts +========================================================================== */ + +$font: "Montserrat", sans-serif; diff --git a/apps/platform/src/styles/plex/base/_base.scss b/apps/platform/src/styles/plex/base/_base.scss new file mode 100644 index 0000000000..e3007b7739 --- /dev/null +++ b/apps/platform/src/styles/plex/base/_base.scss @@ -0,0 +1,11 @@ +/* ========================================================================== +Resets +========================================================================== */ + +var { + font-style: normal; +} + +a { + color: $primary; +} diff --git a/apps/platform/src/styles/plex/base/_helpers.scss b/apps/platform/src/styles/plex/base/_helpers.scss new file mode 100644 index 0000000000..132ef0cda6 --- /dev/null +++ b/apps/platform/src/styles/plex/base/_helpers.scss @@ -0,0 +1,66 @@ +/* ========================================================================== +Spacing +========================================================================== */ + +.ml-auto { + margin-left: auto !important; +} + +.no-padding { + padding: 0 !important; +} + +.no-margin { + margin: 0 !important; +} + +/* ========================================================================== +Colors +========================================================================== */ + +.muted-text { + color: $muted-grey !important; +} + +.light-text { + color: $white !important; +} + +/* ========================================================================== +Scroll +========================================================================== */ + +.has-slimscroll { + overflow-x: hidden !important; + + &::-webkit-scrollbar { + width: 6px !important; + } + + &::-webkit-scrollbar-thumb { + border-radius: 10px !important; + background: rgba(0, 0, 0, 0.2) !important; + } +} + +/* ========================================================================== +States +========================================================================== */ + +.no-click { + pointer-events: none !important; +} + +.is-vhidden { + visibility: hidden !important; +} + +.is-hidden { + display: none !important; +} + +.is-disabled { + pointer-events: none; + opacity: 0.4; + cursor: default !important; +} diff --git a/apps/platform/src/styles/plex/base/_utils.scss b/apps/platform/src/styles/plex/base/_utils.scss new file mode 100644 index 0000000000..d992000e51 --- /dev/null +++ b/apps/platform/src/styles/plex/base/_utils.scss @@ -0,0 +1,24 @@ +/* ========================================================================== +UI Utilities +========================================================================== */ + +/* ========================================================================== +Wave animation +========================================================================== */ + +@keyframes wave { + 0% { + transform: scale(1); + opacity: 1; + } + + 25% { + transform: scale(1); + opacity: 1; + } + + 100% { + transform: scale(4.5); + opacity: 0; + } +} diff --git a/apps/platform/src/styles/plex/components/_alert.scss b/apps/platform/src/styles/plex/components/_alert.scss new file mode 100644 index 0000000000..9f788acb20 --- /dev/null +++ b/apps/platform/src/styles/plex/components/_alert.scss @@ -0,0 +1,103 @@ +/* ========================================================================== +Alertify styles +========================================================================== */ + +.alertify .ajs-dialog { + top: 50%; + transform: translateY(-50%); + margin: auto; + border-radius: 8px !important; +} + +.alertify.ajs-maximized .ajs-dialog { + top: 50% !important; + transform: translateY(-50%) !important; + margin: auto; + border-radius: 0 !important; +} + +.ajs-dimmer { + background-color: rgba($primary, 0.3) !important; +} + +.ajs-header { + font-weight: 500 !important; + font-family: 'Montserrat', sans-serif; + border-radius: 8px 8px 0 0 !important; + background: $white !important; + border: none !important; +} + +.ajs-commands { + button { + outline: none !important; + } +} + +.ajs-footer { + border-radius: 0 0 6px 6px !important; + background: $white !important; + border: none !important; +} + +.ajs-content { + font-family: 'Montserrat', sans-serif; + font-size: .9rem; + padding: 16px 0 !important; + color: $muted-grey; + + b { + font-weight: 500 !important; + color: $primary !important; + } +} + +.ajs-buttons { + padding: 6px 10px; +} + +.ajs-close { + outline: none !important; +} + +.ajs-ok { + padding: 8px 22px 8px 22px; + font-weight: 600; + height: 33px; + min-width: 82px !important; + line-height: 0; + text-transform: capitalize !important; + font-weight: 500 !important; + font-size: .75rem; + border-radius: 3px; + background: $primary !important; + color: $white !important; + border: 1px solid $primary; + border-radius: 100px; + transition: all .3s; + cursor: pointer; + outline: none !important; + + &:hover { + box-shadow: $primary-box-shadow; + } +} + +.ajs-cancel { + padding: 8px 22px 8px 22px; + font-weight: 600; + height: 33px; + min-width: 82px !important; + line-height: 0; + text-transform: capitalize !important; + font-weight: 500 !important; + font-size: .75rem; + border-radius: 3px; + background: $white !important; + color: $muted-grey !important; + border: 1px solid $placeholder !important; + border-radius: 100px; + transition: all .3s; + cursor: pointer; + outline: none !important; +} diff --git a/apps/platform/src/styles/plex/components/_buttons.scss b/apps/platform/src/styles/plex/components/_buttons.scss new file mode 100644 index 0000000000..640c5894ee --- /dev/null +++ b/apps/platform/src/styles/plex/components/_buttons.scss @@ -0,0 +1,26 @@ +/* ========================================================================== +Basic buttons +========================================================================== */ + +.button { + font-size: 0.9rem; + transition: all 0.3s; + + &.is-solid { + height: 44px; + min-width: 130px; + line-height: 1; + font-size: 0.9rem; + font-weight: 500; + + &.is-big { + height: 48px; + min-width: 200px; + } + + &.raised:hover, + &.is-raised { + box-shadow: $light-box-shadow; + } + } +} diff --git a/apps/platform/src/styles/plex/components/_cards.scss b/apps/platform/src/styles/plex/components/_cards.scss new file mode 100644 index 0000000000..e42acbe211 --- /dev/null +++ b/apps/platform/src/styles/plex/components/_cards.scss @@ -0,0 +1,10 @@ +/* ========================================================================== +Plex Card +========================================================================== */ + +.plex-card { + width: 100%; + background: $white; + border-radius: 6px; + border: 1px solid darken($fade-grey, 3%); +} \ No newline at end of file diff --git a/apps/platform/src/styles/plex/components/_dropdowns.scss b/apps/platform/src/styles/plex/components/_dropdowns.scss new file mode 100644 index 0000000000..83dba4c99a --- /dev/null +++ b/apps/platform/src/styles/plex/components/_dropdowns.scss @@ -0,0 +1,405 @@ +/* ========================================================================== +Custom Dropdown +========================================================================== */ + +.dropdown-wrap { + position: relative; + + &.is-active { + .drop-menu { + opacity: 1; + pointer-events: all; + transform: translateY(0); + } + } + + &.is-right { + .drop-menu { + left: unset !important; + right: -12px; + + &:after, &:before { + left: 90%; + } + } + } + + &.is-up { + .drop-menu { + bottom: 60px; + top: unset !important; + transform: translateY(-5px); + + &:after, &:before { + top: 100%; + bottom: unset !important; + } + + &:after { + border-color: rgba(255, 255, 255, 0); + border-top-color: $white; + border-width: 11px; + margin-left: -11px; + } + + &:before { + border-color: rgba(237, 237, 237, 0); + border-top-color: $fade-grey; + border-width: 12px; + margin-left: -12px; + } + } + } + + &:hover { + .dropdown-button:not(.has-image) { + background: $white; + border-color: darken($fade-grey, 3%); + box-shadow: $light-box-shadow; + + svg { + stroke: $dark-text; + } + } + } + + .dropdown-button { + height: 36px; + width: 36px; + background: none; + border: 1px solid transparent; + border-radius: 50%; + outline: none; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + transition: all .3s; + + &.has-image { + display: block; + height: 40px; + width: 40px; + min-width: 40px; + padding: 0; + margin-left: 10px; + + img { + display: block; + height: 40px; + width: 40px; + min-width: 40px; + border-radius: 50%; + } + } + + svg { + height: 22px; + width: 22px; + stroke: $muted-grey; + stroke-width: 1.4px; + transition: stroke .3s; + } + } + + .indicator { + display: block; + position: absolute; + top: 2px; + right: 2px; + height: 8px; + width: 8px; + border-radius: 50%; + background: $blue; + } + + .drop-menu { + position: absolute; + top: 58px; + left: 0; + background: $white; + width: 300px; + border: 1px solid $fade-grey; + border-radius: 3px; + opacity: 0; + transform: translateY(5px); + box-shadow: $light-box-shadow; + pointer-events: none; + transition: all .3s; + z-index: 5; + + &:after, &:before { + bottom: 100%; + left: 10%; + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; + pointer-events: none; + } + + &:after { + border-color: rgba(255, 255, 255, 0); + border-bottom-color: $white; + border-width: 11px; + margin-left: -11px; + } + + &:before { + border-color: rgba(237, 237, 237, 0); + border-bottom-color: $fade-grey; + border-width: 12px; + margin-left: -12px; + } + + .menu-inner { + position: relative; + height: 100%; + width: 100%; + + .menu-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 16px 16px 0 16px; + + h3 { + font-family: $font; + font-size: .85rem; + font-weight: 600; + color: $dark-text; + } + + a { + font-family: $font; + font-size: .85rem; + font-weight: 600; + color: $primary; + } + } + + .avatar { + display: block; + height: 36px; + width: 36px; + min-width: 36px; + border-radius: 50%; + + &.is-fake { + display: flex; + justify-content: center; + align-items: center; + font-family: $font; + color: $white; + font-weight: bold; + font-size: .75rem; + + &.is-primary { + background: $primary; + } + + &.is-secondary { + background: $secondary; + } + + &.is-orange { + background: $orange; + } + + &.is-green { + background: $light-green; + } + } + + &.is-list-icon { + display: flex; + justify-content: center; + align-items: center; + border: 1px solid darken($fade-grey, 3%); + box-shadow: $light-box-shadow; + + svg { + height: 18px; + width: 18px; + stroke-width: 1.6px; + stroke: lighten($blue, 20%); + } + } + } + } + } +} + +/* ========================================================================== +Messages +========================================================================== */ + +.menu-inner { + .message-items { + padding: 10px 0; + + .message-item { + display: flex; + padding: 10px 16px; + border-bottom: 1px solid $fade-grey; + cursor: pointer; + + &.is-read { + opacity: .6; + } + + &:hover { + background: lighten($fade-grey, 5%); + } + + &:last-child { + border-bottom: none; + } + + .message-content { + margin-left: 14px; + + p { + font-size: .8rem; + line-height: 1.2; + } + + small { + font-size: .8rem; + color: $muted-grey; + } + } + } + } +} + +/* ========================================================================== +Notifications +========================================================================== */ + +.menu-inner { + .notification-items { + padding: 10px 0; + + .notification-item { + display: flex; + padding: 10px 16px; + border-bottom: 1px solid $fade-grey; + + &.is-warning { + .avatar { + svg { + stroke: $orange; + } + } + + .notification-content { + p { + a { + color: $orange; + } + } + } + } + + &:last-child { + border-bottom: none; + } + + .notification-content { + margin-left: 14px; + + p { + font-size: .8rem; + line-height: 1.2; + + a { + font-weight: 500; + color: lighten($blue, 12%); + + &:hover { + text-decoration: underline; + } + } + } + + small { + font-size: .8rem; + color: $muted-grey; + } + } + } + } +} + +/* ========================================================================== +Options +========================================================================== */ + +.menu-inner { + .options-items { + padding: 10px 0; + + .options-item { + display: flex; + align-items: center; + padding: 10px 16px; + + &:hover { + background: lighten($fade-grey, 5%); + + svg { + stroke: lighten($blue, 8%); + } + } + + svg { + height: 20px; + width: 20px; + stroke-width: 1.4px; + stroke: $placeholder; + transition: stroke .3s; + } + + .option-content { + margin-left: 12px; + + span { + display: block; + line-height: 1.2; + + &:first-child { + font-family: $font; + font-size: .75rem; + font-weight: 600; + color: $dark-text; + } + + &:nth-child(2) { + font-size: .8rem; + color: $muted-grey; + } + } + } + } + } +} + +@media (max-width: 767px) { + .static-nav { + .dropdown-wrap { + .drop-menu { + left: 0 !important; + right: 0 !important; + margin: 0 auto; + position: fixed; + top: 77px; + + &:before, &:after { + left: 50% !important; + } + } + } + } +} diff --git a/apps/platform/src/styles/plex/components/_forms.scss b/apps/platform/src/styles/plex/components/_forms.scss new file mode 100644 index 0000000000..7652bf424e --- /dev/null +++ b/apps/platform/src/styles/plex/components/_forms.scss @@ -0,0 +1,110 @@ +/* ========================================================================== +Form Controls +========================================================================== */ + +.field { + position: relative; +} + +.control { + &.has-validation { + &.has-error { + > label .error { + display: block; + } + + .control { + .input { + border-color: $red; + } + + .error-icon { + display: flex; + } + } + } + + .control { + position: relative; + + .input { + padding-right: 40px; + } + + .error-icon { + position: absolute; + top: 0; + right: 0; + height: 40px; + width: 40px; + display: none; + justify-content: center; + align-items: center; + + svg { + height: 18px; + width: 18px; + stroke: $red; + transition: stroke .3s; + } + } + } + } + + &.has-icon { + position: relative; + + .input { + padding-left: 40px; + + &:focus + .form-icon svg { + stroke: $primary; + } + } + + .form-icon { + position: absolute; + top: 0; + left: 0; + height: 40px; + width: 40px; + display: flex; + justify-content: center; + align-items: center; + + svg { + height: 18px; + width: 18px; + stroke: $placeholder; + transition: stroke .3s; + } + } + } + + &.has-icon-right { + + .input { + padding-right: 40px; + } + + .right-icon { + right: 0; + left: unset !important; + } + } +} + +/* ========================================================================== +Inputs +========================================================================== */ + +.input, .textarea { + border-color: darken($fade-grey, 3%); + box-shadow: none; + transition: all .3s; + + &:focus, &:active { + border-color: darken($fade-grey, 1%); + box-shadow: $light-box-shadow !important; + } +} diff --git a/apps/platform/src/styles/plex/components/_modals.scss b/apps/platform/src/styles/plex/components/_modals.scss new file mode 100644 index 0000000000..3297af5dd7 --- /dev/null +++ b/apps/platform/src/styles/plex/components/_modals.scss @@ -0,0 +1,3 @@ +/* ========================================================================== +Modal styles +========================================================================== */ diff --git a/apps/platform/src/styles/plex/components/_pageloader.scss b/apps/platform/src/styles/plex/components/_pageloader.scss new file mode 100644 index 0000000000..2e125771c8 --- /dev/null +++ b/apps/platform/src/styles/plex/components/_pageloader.scss @@ -0,0 +1,149 @@ +/*! _pageloader.scss | Nephos | CSS Ninja */ + +/* ========================================================================== +Pageloader styles +========================================================================== */ + +/*** +TABLE OF CONTENTS +============================================================================= +0. Pageloader +1. Keyframes +2. Infraloader +============================================================================= +***/ + +/* ========================================================================== +0. Pageloader +========================================================================== */ + +.pageloader { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + background-color: $light-grey; + z-index: 999998; + transition: -webkit-transform 0.35s ease-out; + transition: transform 0.35s ease-out; + transition: transform 0.35s ease-out, -webkit-transform 0.35s ease-out; + -webkit-transform: translateY(-100%); + transform: translateY(-100%); + will-change: transform; + //Active state + &.is-active { + -webkit-transform: translateY(0); + transform: translateY(0); + } + + &::after, &::before { + position: absolute; + top: 50%; + left: 50%; + display: block; + border-radius: 100%; + content: ""; + z-index: 999999; + } + + &::after { + margin-top: -100px; + margin-left: -100px; + width: 200px; + height: 200px; + background-color: rgba(255, 255, 255, 0.5); + border: 3px solid rgba(255, 255, 255, 0.75); + -webkit-animation: page-loader-inner 1.5s infinite ease-out; + animation: page-loader-inner 1.5s infinite ease-out; + } + + &::before { + margin-top: -30px; + margin-left: -30px; + width: 60px; + height: 60px; + background-color: #fff; + -webkit-animation: page-loader-outer 1.5s infinite ease-in; + animation: page-loader-outer 1.5s infinite ease-in; + } +} + +/* ========================================================================== +1. Keyframes +========================================================================== */ + +@-webkit-keyframes page-loader-inner { + 0%,40% { + -webkit-transform: scale(0); + transform: scale(0); + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } +} + +@keyframes page-loader-inner { + 0%,40% { + -webkit-transform: scale(0); + transform: scale(0); + } + + 100% { + -webkit-transform: scale(1); + transform: scale(1); + opacity: 0; + } +} + +@-webkit-keyframes page-loader-outer { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 100%,40% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; + } +} + +@keyframes page-loader-outer { + 0% { + -webkit-transform: scale(1); + transform: scale(1); + } + + 100%,40% { + -webkit-transform: scale(0); + transform: scale(0); + opacity: 0; + } +} + +/* ========================================================================== +2. Infraloader +========================================================================== */ + +.infraloader { + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + width: 100%; + background-color: $white; + z-index: -1; + opacity: 0; + transition: opacity .35s; + //Active state + &.is-active { + opacity: 1; + z-index: 999997; + } +} diff --git a/apps/platform/src/styles/plex/components/_switch.scss b/apps/platform/src/styles/plex/components/_switch.scss new file mode 100644 index 0000000000..a5921eb876 --- /dev/null +++ b/apps/platform/src/styles/plex/components/_switch.scss @@ -0,0 +1,78 @@ +/* ========================================================================== +Switch +========================================================================== */ + +.form-switch { + position: relative; + display: inline-block; + cursor: pointer; + -webkit-tap-highlight-color: transparent; + + i { + position: relative; + display: inline-block; + margin-right: .5rem; + width: 46px; + height: 26px; + background-color: #e6e6e6; + border-radius: 23px; + vertical-align: text-bottom; + transition: all 0.3s linear; + + &::before { + content: ""; + position: absolute; + left: 0; + width: 42px; + height: 22px; + background-color: $white; + border-radius: 11px; + transform: translate3d(2px, 2px, 0) scale3d(1, 1, 1); + transition: all 0.25s linear; + } + + &::after { + content: ""; + position: absolute; + left: 0; + width: 22px; + height: 22px; + background-color: $white; + border-radius: 11px; + box-shadow: 0 2px 2px rgba(0, 0, 0, 0.24); + transform: translate3d(2px, 2px, 0); + transition: all 0.2s ease-in-out; + } + } + + &:active { + i::after { + width: 28px; + transform: translate3d(2px, 2px, 0); + } + + input { + &:checked + i::after { + transform: translate3d(16px, 2px, 0); + } + } + } + + input { + position: absolute; + opacity: 0; + pointer-events: none; + + &:checked + i { + background-color: $primary; + + &::before { + transform: translate3d(18px, 2px, 0) scale3d(0, 0, 0); + } + + &::after { + transform: translate3d(22px, 2px, 0); + } + } + } +} diff --git a/apps/platform/src/styles/plex/layout/_layout.scss b/apps/platform/src/styles/plex/layout/_layout.scss new file mode 100644 index 0000000000..1b1da27242 --- /dev/null +++ b/apps/platform/src/styles/plex/layout/_layout.scss @@ -0,0 +1,330 @@ +/* ========================================================================== +Layout +========================================================================== */ + +/* ========================================================================== +Collapsed sidebar +========================================================================== */ + +.plex-compressed-sidebar { + position: fixed; + top: 0; + left: 0; + width: 80px; + height: 100%; + background: $light-grey; + border-right: 1px solid $fade-grey; + transform: translateX(0); + transition: all 0.3s; + z-index: 92; + + &.is-inactive { + transform: translateX(-100%); + } + + .compressed-header { + position: relative; + height: 60px; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + border-bottom: 1px solid $fade-grey; + + h3 { + font-family: "Pacifico", sans-serif; + font-weight: bold; + font-size: 1.6rem; + color: $dark-text; + } + } + + .compressed-menu { + position: relative; + + .compressed-naver { + position: absolute; + top: 0; + right: 0; + height: 60px; + width: 2px; + border-radius: 4px; + background: $primary; + transition: all 0.3s; + } + } + + .compressed-item { + position: relative; + height: 60px; + width: 100%; + display: flex; + justify-content: center; + align-items: center; + + &.is-bordered { + border-bottom: 1px solid $fade-grey; + } + + &.is-active { + svg { + stroke: $dark-text; + } + + &:first-child { + ~.compressed-naver { + margin-top: 0; + } + } + + &:nth-child(2) { + ~.compressed-naver { + margin-top: 60px; + } + } + + &:nth-child(3) { + ~.compressed-naver { + margin-top: 120px; + } + } + + &:nth-child(4) { + ~.compressed-naver { + margin-top: 180px; + } + } + + &:nth-child(5) { + ~.compressed-naver { + margin-top: 240px; + } + } + + &:nth-child(6) { + ~.compressed-naver { + margin-top: 300px; + } + } + } + + svg { + height: 20px; + width: 20px; + stroke-width: 1.6px; + stroke: lighten($dark-text, 26%); + } + } +} + +/* ========================================================================== +Expanded sidebar +========================================================================== */ +.plex-sidebar { + position: fixed; + top: 0; + left: 0; + width: 200px; + height: 100%; + background: $light-grey; + // border-right: 1px solid $fade-grey; + z-index: 91; + transform: translateX(0); + transition: all 0.3s; + + &.is-inactive { + transform: translateX(-100%); + } + + .sidebar-header { + position: relative; + height: 60px; + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + padding: 0 20px; + + h3 { + font-family: "Pacifico", sans-serif; + font-weight: bold; + font-size: 1.6rem; + color: $dark-text; + } + } + + .avatar-container { + position: relative; + min-height: 160px; + display: flex; + justify-content: center; + align-items: center; + + .avatar-wrapper { + text-align: center; + + .avatar { + position: relative; + max-width: 70px; + max-height: 70px; + margin: 0 auto 4px auto; + + img { + display: block; + border-radius: 50%; + } + + .badge { + display: block; + position: absolute; + bottom: 0; + right: 0; + height: 22px; + width: 22px; + border: 2px solid $light-grey; + border-radius: 50%; + background: $primary; + display: flex; + justify-content: center; + align-items: center; + + svg { + height: 10px; + width: 10px; + stroke: $white; + stroke-width: 3px; + } + } + } + + h3 { + font-family: $font; + font-size: 0.85rem; + font-weight: 600; + color: $dark-text; + } + + p { + font-size: 0.8rem; + color: $muted-grey; + } + } + } + + .sidebar-menu { + position: relative; + width: 100%; + height: calc(100% - 220px); + + .menu-item { + display: flex; + align-items: center; + height: 34px; + padding: 0 10px 0 20px; + + &.is-active { + @for $i from 1 through 10 { + &.menu-item:nth-child(n + #{$i}) { + ~.naver { + margin-top: ($i - 1) * 35px; + display: block; + } + } + } + + span { + color: $primary; + font-weight: 600; + } + + svg { + stroke: $primary; + color: $primary; + } + } + + span { + display: block; + font-size: 0.85rem; + font-weight: 600; + // margin-left: 16px; + color: lighten($dark-text, 18%); + } + + svg { + height: 20px; + width: 20px; + stroke-width: 1.6px; + stroke: lighten($dark-text, 18%); + color: lighten($dark-text, 18%); + } + } + + .naver { + position: absolute; + top: 0; + right: 0; + height: 35px; + width: 2px; + border-radius: 4px; + background: $primary; + transition: all 0.3s; + display: none; + } + } +} + +/* ========================================================================== +Main wrappers +========================================================================== */ + +.plex-wrapper { + width: calc(100% - 200px); + margin-left: 200px; + min-height: 100vh; + background: $white; + padding: 0 20px; + transition: all 0.3s; + + &.is-expanded { + width: calc(100% - 80px); + margin-left: 80px; + } + + .wrapper-inner { + max-width: 1300px; + width: 100%; + margin: 0 auto; + + .dashboard-content { + padding: 16px 0; + + //Section title + .section-title { + display: flex; + align-items: center; + padding: 30px 0 20px 0; + + >svg { + height: 22px; + width: 22px; + stroke: $muted-grey; + stroke-width: 1.4px; + margin-right: 8px; + } + + >h3 { + text-transform: uppercase; + font-family: $font; + font-weight: 500; + font-size: 0.8rem; + color: $muted-grey; + } + + .dropdown-wrap { + margin-left: auto; + } + } + } + } +} \ No newline at end of file diff --git a/apps/platform/src/styles/plex/layout/_navbar.scss b/apps/platform/src/styles/plex/layout/_navbar.scss new file mode 100644 index 0000000000..c9c0831f04 --- /dev/null +++ b/apps/platform/src/styles/plex/layout/_navbar.scss @@ -0,0 +1,510 @@ +/* ========================================================================== +Navbar +========================================================================== */ + +//Basic nav +@use "sass:math"; + +.static-nav { + height: 60px; + width: 100%; + display: flex; + align-items: center; + justify-content: space-between; + transition: all .3s; + + //Cloned sliding nav + &.cloned-nav { + position: fixed; + top: 0; + left: 0; + width: calc(100% - 320px); + margin-left: 320px; + padding: 0 40px; + background: $white; + box-shadow: 0 0 8px 0 rgba(0, 0, 0, 0.08); + transform: translateY(-100%); + z-index: 90; + + .cloned-wrapper { + max-width: 1040px; + margin: 0 auto; + display: flex; + justify-content: space-between; + width: 100%; + } + + &.is-active { + transform: translateY(0); + } + + &.is-expanded { + width: calc(100% - 80px); + margin-left: 80px; + } + } + + .nav-start { + display: flex; + align-items: center; + flex-grow: 2; + max-width: 680px; + + .field { + width: 100%; + } + } + + .nav-end { + display: flex; + align-items: center; + + .nav-item { + position: relative; + margin-right: 8px; + height: 40px; + width: 40px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + transition: all .3s; + + &.is-hoverable:hover { + background: lighten($fade-grey, 2%); + + svg { + stroke: $dark-text; + } + } + + &.is-account { + margin-left: 20px; + border-radius: 0; + + .image-wrap { + position: relative; + + img { + display: block; + height: 40px; + width: 40px; + border-radius: 50%; + } + } + } + + .indicator { + display: block; + position: absolute; + top: 2px; + right: 2px; + height: 8px; + width: 8px; + border-radius: 50%; + background: $blue; + } + + svg { + height: 18px; + width: 18px; + stroke-width: 1.6px; + stroke: $muted-grey; + transition: stroke .3s; + } + } + + .dropdown-wrap { + margin-right: 8px; + + .dropdown-button { + height: 40px; + width: 40px; + + svg { + height: 18px; + width: 18px; + } + } + } + } +} + +/* ========================================================================== +Menu Icon +========================================================================== */ + +$menu-icon-size: 1.6rem; +$menu-icon-dash-width: 0.75em; //em(4.5rem, 6rem) +$menu-icon-dash-width-sliced: 0.35em; +$menu-icon-dash-height: 0.05em; //em(0.3rem, 6rem) +$menu-icon-dash-gutter: $menu-icon-dash-height * 5; +$menu-icon-dash-color: $muted-grey; +$menu-icon-dash-border-radius: 0; + +%menu-dash { + display: block; + position: absolute; + top: 50%; + left: (1em - $menu-icon-dash-width) * 0.5; // center X + background-color: $menu-icon-dash-color; + width: $menu-icon-dash-width; + height: $menu-icon-dash-height; + border-radius: $menu-icon-dash-border-radius; +} + +.menu-icon { + font-size: $menu-icon-size; + width: 1em; + height: 1em; + display: inline-block; + position: relative; + background-color: transparent; + border: 0; + padding: 0; + outline: none; + user-select: none; + -webkit-touch-callout: none; + touch-action: manipulation; + cursor: pointer; + + span { + @extend %menu-dash; + + margin-top: math.div($menu-icon-dash-height, -2); + } + + &:before { + content: ""; + + @extend %menu-dash; + + width: $menu-icon-dash-width-sliced; + margin-top: -$menu-icon-dash-gutter + math.div($menu-icon-dash-height, -2); + } + + &:after { + content: ""; + + @extend %menu-dash; + + margin-top: $menu-icon-dash-gutter + math.div($menu-icon-dash-height, -2); + } +} + +.v-1 { + &:before, &:after, span { + transition: 0.25s ease-in-out; + } + + &.is-open { + &:before { + transform: rotate(135deg); + margin-top: math.div($menu-icon-dash-height, -2); + } + + &:after { + transform: rotate(-135deg); + margin-top: math.div($menu-icon-dash-height, -2); + } + + span { + opacity: 0; + transform: translateX(150%); + } + } +} + +.v-2 { + &:before, &:after { + display: none; + } + + span { + transition: 0.25s ease; + + &:before, &:after { + @extend %menu-dash; + + content: ""; + transition: 0.25s ease; + top: 0; + left: 0; + } + + &:before { + transform: translateY(-$menu-icon-dash-gutter); + } + + &:after { + transform: translateY($menu-icon-dash-gutter); + } + } + + &.is-open { + span { + transform: rotate(45deg); + + &:before, &:after { + transform: rotate(90deg); + } + } + } +} + +.v-3 { + &:before, &:after { + transition: 0.2s ease 0.2s; + } + + &:after { + left: auto; + right: (1em - $menu-icon-dash-width) * 0.5; + } + + span { + transition: 0.2s; + + &:before { + @extend %menu-dash; + + content: ""; + transition: inherit; + left: 0; + top: 0; + } + } + + &.is-open { + &:before, &:after { + transition: 0.2s ease; + width: 0; + } + + span { + transform: rotate(45deg); + transition: 0.2s ease 0.2s; + + &:before { + transform: rotate(-90deg); + } + } + } +} + +.v-4 { + &:before, &:after { + display: none; + } + + span { + transition: 0.25s ease; + + &:before, &:after { + @extend %menu-dash; + + content: ""; + top: 0; + left: 0; + transition: inherit; + margin: 0; + } + + &:before { + transform: translateY(-$menu-icon-dash-gutter); + } + + &:after { + transform: translateY($menu-icon-dash-gutter); + } + } + + &.is-open { + span { + transform: rotate(180deg); + + &:before, &:after { + width: $menu-icon-dash-width * 0.5; + left: 0.02em; + } + + &:before { + transform: rotate(-45deg) translateY(-0.17em); + } + + &:after { + transform: rotate(45deg) translateY(0.17em); + } + } + } +} + +.v-5 { + &:before, &:after { + display: none; + } + + span { + transition: 0.25s ease; + + &:before, &:after { + @extend %menu-dash; + + content: ""; + top: 0; + right: 0; + left: auto; + transition: inherit; + margin: 0; + } + + &:before { + transform: translateY(-$menu-icon-dash-gutter); + } + + &:after { + transform: translateY($menu-icon-dash-gutter); + } + } + + &.is-open { + span { + transform: rotate(-180deg); + + &:before, &:after { + width: $menu-icon-dash-width * 0.5; + right: 0.02em; + } + + &:before { + transform: rotate(-45deg) translateY(0.17em); + } + + &:after { + transform: rotate(45deg) translateY(-0.17em); + } + } + } +} + +/* ========================================================================== +Search Results +========================================================================== */ + +.search-results { + position: absolute; + top: 46px; + left: 0; + width: 100%; + max-height: 322px; + overflow-y: auto; + background: $white; + opacity: 0; + border: 1px solid darken($fade-grey, 3%); + border-radius: 4px; + pointer-events: none; + transform: translateY(5px); + box-shadow: $light-box-shadow; + transition: all .3s; + z-index: 5; + + &.is-active { + opacity: 1; + pointer-events: all; + transform: translateY(0); + } + + .placeholder-wrap { + min-height: 285px; + display: flex; + align-items: center; + justify-content: center; + + .placeholder-content { + img { + display: block; + margin: 0 auto 16px auto; + max-width: 90px; + } + + h3 { + font-family: $font; + font-weight: 600; + color: $dark-text; + padding: 0; + } + + p { + color: $muted-grey; + font-size: .95rem; + max-width: 420px; + margin: 0 auto; + } + } + } + + .search-result { + display: flex; + align-items: center; + padding: 12px 16px; + border-bottom: 1px solid $fade-grey; + transition: all .3s; + + &:last-child { + border-bottom: none; + } + + &:hover { + background: lighten($fade-grey, 4%); + } + + img { + display: block; + height: 38px; + width: 38px; + + &.avatar { + border-radius: 50%; + } + + &.record { + border-radius: 2px; + } + } + + .fake-avatar { + height: 38px; + width: 38px; + border-radius: 50%; + display: flex; + justify-content: center; + align-items: center; + font-weight: 700; + font-family: $font; + font-size: .8rem; + color: $white; + } + + .meta { + margin-left: 12px; + + span { + display: block; + line-height: 1.2; + + &:first-child { + font-family: $font; + font-weight: 500; + font-size: .8rem; + color: $dark-text; + } + + &:nth-child(2) { + font-size: .75rem; + color: $muted-grey; + } + } + } + } +} diff --git a/apps/platform/src/styles/plex/layout/_responsive.scss b/apps/platform/src/styles/plex/layout/_responsive.scss new file mode 100644 index 0000000000..7e53dd98f2 --- /dev/null +++ b/apps/platform/src/styles/plex/layout/_responsive.scss @@ -0,0 +1,303 @@ +/* ========================================================================== +Media Queries +========================================================================== */ + +/* ========================================================================== +Tablet Landscape +========================================================================== */ + +@media only screen and (min-width: 768px) and (max-width: 1024px) and (orientation: landscape) { + .cloned-nav { + width: calc(100% - 240px) !important; + margin-left: 240px !important; + + &.is-expanded { + width: calc(100% - 80px) !important; + margin-left: 80px !important; + } + } + + .plex-sidebar { + width: 200px; + } + + .plex-wrapper { + &:not(.is-expanded) { + width: calc(100% - 240px); + margin-left: 240px; + + .main-card { + .right-side { + min-width: 46% !important; + } + } + + .card-group { + flex-direction: column !important; + + .left-card { + margin-bottom: 16px; + margin-right: 0 !important; + } + + .right-card { + margin-left: 0 !important; + width: 100% !important; + max-width: 100% !important; + } + } + } + } +} + +/* ========================================================================== +Tablet Portrait +========================================================================== */ + +@media only screen and (min-width: 768px) and (max-width: 768px) and (orientation: portrait) { + + .static-nav, + .cloned-nav { + .nav-start { + .field { + padding: 0 20px; + } + } + + .nav-end { + .mobile-search-trigger { + display: none !important; + } + } + + .mobile-search { + display: none !important; + width: 100%; + + .field { + width: 100%; + } + + &.is-active { + display: flex; + } + } + } + + .cloned-nav { + margin: 0 !important; + width: 100% !important; + } + + .plex-compressed-sidebar { + display: none; + } + + .plex-sidebar, + .plex-sidebar.is-inactive { + transform: translateX(-100%); + + &.is-mobile-active { + transform: translateX(0); + } + } + + .plex-wrapper { + width: 100% !important; + margin: 0 !important; + + .main-card { + .right-side { + min-width: 46% !important; + } + } + + .card-group { + flex-direction: column !important; + + .left-card { + margin-bottom: 30px; + margin-right: 0 !important; + } + + .right-card { + margin-left: 0 !important; + width: 100% !important; + max-width: 100% !important; + } + } + } +} + +/* ========================================================================== +Mobile Only +========================================================================== */ + +@media (max-width: 767px) { + + .static-nav, + .cloned-nav { + .nav-start { + .field { + display: none; + } + } + + .mobile-search { + display: none; + width: 100%; + + .field { + width: 100%; + } + + &.is-active { + display: flex; + } + } + } + + .cloned-nav { + margin: 0 !important; + width: 100% !important; + padding: 0 20px !important; + } + + .plex-compressed-sidebar { + display: none; + } + + .plex-sidebar, + .plex-sidebar.is-inactive { + transform: translateX(-100%); + + &.is-mobile-active { + transform: translateX(0); + } + } + + .plex-wrapper { + width: 100% !important; + margin: 0 !important; + padding: 0 20px !important; + + .main-card { + flex-direction: column; + + .left-side { + padding-right: 0 !important; + border-right: none !important; + } + + .right-side { + padding-left: 0 !important; + + .header { + padding-top: 20px; + } + + .custom-chart { + margin-top: 40px; + } + } + } + + .card-group { + flex-direction: column; + + .left-card { + flex-direction: column; + margin-right: 0; + width: 100%; + margin-bottom: 30px; + + .message-sender { + flex-direction: column; + padding: 16px !important; + border-right: none !important; + } + + .message-text { + max-width: 236px !important; + text-align: center; + margin: 0 auto !important; + padding: 0 !important; + } + } + + .right-card { + flex-direction: column; + margin-left: 0 !important; + width: 100%; + max-width: 100% !important; + } + } + + .activity-items { + .activity-item { + position: relative; + flex-direction: column; + + .users { + flex-direction: column; + text-align: center; + + .meta { + margin: 10px 0 !important; + } + } + + .details { + justify-content: center; + width: 100%; + + .amount { + margin: 16px 0 0 0 !important; + } + + .icon-button { + display: none !important; + } + + .dropdown-wrap { + position: absolute; + top: 10px; + right: 10px; + } + } + } + } + } +} + +/* ========================================================================== +Responsive adjustments +========================================================================== */ + +@media (max-width: 768px) { + .mobile-item { + &.is-block { + display: block; + } + + &.is-flex { + display: flex; + } + } +} + +@media (min-width: 769px) { + .mobile-item { + &.is-block { + display: none !important; + } + + &.is-flex { + display: none !important; + } + } + + .mobile-search { + display: none !important; + } +} \ No newline at end of file diff --git a/apps/platform/src/styles/plex/main.scss b/apps/platform/src/styles/plex/main.scss new file mode 100644 index 0000000000..d0437bc79b --- /dev/null +++ b/apps/platform/src/styles/plex/main.scss @@ -0,0 +1,26 @@ +/* ========================================================================== +SCSS Imports +========================================================================== */ + +@import "abstracts/variables"; +@import "abstracts/mixins"; + +@import "base/base"; +@import "base/helpers"; +@import "base/utils"; + +@import "layout/layout"; +@import "layout/navbar"; + +@import "components/pageloader"; +@import "components/cards"; +@import "components/buttons"; +@import "components/dropdowns"; +@import "components/modals"; +@import "components/switch"; +@import "components/alert"; +@import "components/forms"; + +@import "pages/dashboard"; + +@import "layout/responsive"; diff --git a/apps/platform/src/styles/plex/pages/_dashboard.scss b/apps/platform/src/styles/plex/pages/_dashboard.scss new file mode 100644 index 0000000000..ecbc041e88 --- /dev/null +++ b/apps/platform/src/styles/plex/pages/_dashboard.scss @@ -0,0 +1,565 @@ +/* ========================================================================== +Dashboard page styles +========================================================================== */ + +.plex-wrapper { + .wrapper-inner { + .dashboard-content { + //Main top card + .main-card { + @extend .plex-card; + + padding: 30px; + display: flex; + margin-bottom: 30px; + + .left-side { + flex-grow: 2; + border-right: 1px solid $fade-grey; + padding-right: 30px; + + .header { + display: flex; + justify-content: space-between; + align-items: baseline; + + h2 { + font-family: $font; + font-weight: 600; + font-size: 1.8rem; + color: $dark-text; + + &:before { + content: '$'; + position: relative; + top: -5px; + font-size: 70%; + } + } + + span { + font-family: $font; + font-weight: 500; + font-size: .9rem; + color: $dark-text; + } + } + + .intro-text { + padding: 16px 0 24px 0; + + p { + max-width: 420px; + font-size: .9rem; + color: $muted-grey; + } + } + + .latest-items { + .latest-item { + display: flex; + align-items: center; + border-top: 1px solid $fade-grey; + padding: 12px 0; + + .date { + font-size: .9rem; + color: $muted-grey; + margin-right: 40px; + } + + .type { + font-family: $font; + font-weight: 500; + font-size: .85rem; + color: $dark-text; + } + + .amount { + margin-left: auto; + font-family: $font; + font-size: .9rem; + font-weight: 600; + + &.is-positive { + color: $primary; + } + + &.is-negative { + color: lighten($dark-text, 18%); + } + + span { + &:before { + content: '$'; + } + } + } + } + } + } + + .right-side { + display: flex; + flex-direction: column; + justify-content: space-between; + min-width: 35%; + padding-left: 30px; + + .header { + display: flex; + justify-content: space-between; + align-items: baseline; + + h3 { + font-family: $font; + font-weight: 600; + font-size: 1rem; + color: $dark-text; + } + } + + .custom-chart { + display: flex; + justify-content: space-between; + align-items: flex-end; + flex-grow: 2; + + .chart-bar { + position: relative; + min-height: 180px; + width: 10px; + background: lighten($placeholder, 5%); + margin: 0 16px; + border-radius: 100px 100px 0 0; + + &:before { + content: attr(data-day); + position: absolute; + top: -26px; + left: 0; + transform: translateX(-40%); + min-width: 30px; + text-align: center; + font-size: .75rem; + color: $muted-grey; + } + + &:first-child { + .animated-bar { + transition-delay: .1s; + } + } + + &:nth-child(2) { + .animated-bar { + transition-delay: .25s; + } + } + + &:nth-child(3) { + .animated-bar { + transition-delay: .4s; + } + } + + &:nth-child(4) { + .animated-bar { + transition-delay: .55s; + } + } + + &:nth-child(5) { + .animated-bar { + transition-delay: .7s; + } + } + + &:nth-child(6) { + .animated-bar { + transition-delay: .85s; + } + } + + &:nth-child(7) { + .animated-bar { + transition-delay: 1s; + } + } + + .animated-bar { + position: absolute; + bottom: 0; + left: 0; + width: 100%; + height: 0; + background: $primary; + border-radius: 100px 100px 0 0; + z-index: 1; + transition: all .5s ease-in-out; + + &.is-lower { + background: lighten($blue, 10%); + } + } + } + } + } + } + + //Grouped cards + .card-group { + display: flex; + + .left-card, .right-card { + @extend .plex-card; + } + + .left-card { + display: flex; + align-items: center; + justify-content: space-between; + flex-grow: 2; + margin-right: 15px; + padding: 30px; + + .mail-icon-outer { + position: relative; + height: 60px; + width: 60px; + min-width: 60px; + border-radius: 50%; + border: 1.4px solid lighten($blue, 26%); + display: flex; + align-items: center; + justify-content: center; + + &:after { + content: ''; + position: absolute; + top: calc(50% - 12px); + left: calc(50% - 12px); + height: 24px; + width: 24px; + border-radius: 50%; + background: $blue; + animation: wave 1.6s infinite; + animation-duration: 2s; + transform-origin: center center; + z-index: 0; + } + + .mail-icon-inner { + position: relative; + height: 40px; + width: 40px; + border-radius: 50%; + border: 1.4px solid lighten($blue, 20%); + display: flex; + align-items: center; + justify-content: center; + + //background: $white; + z-index: 1; + + .icon-wrap { + position: relative; + height: 25px; + width: 25px; + border-radius: 50%; + display: flex; + align-items: center; + justify-content: center; + background: $white; + z-index: 1; + + svg { + height: 18px; + width: 18px; + stroke: lighten($blue, 18%); + } + } + } + } + + .message-sender { + display: flex; + align-items: center; + padding: 0 30px 0 20px; + border-right: 1px solid $fade-grey; + min-width: 200px; + + img { + display: block; + height: 48px; + width: 48px; + border-radius: 50%; + } + + .meta { + margin-left: 8px; + + span { + display: block; + line-height: 1.2; + + &:first-child { + font-family: $font; + font-size: .8rem; + font-weight: 600; + color: $dark-text; + } + + &:nth-child(2) { + font-size: .8rem; + color: $muted-grey; + } + } + } + } + + .message-text { + padding-left: 30px; + + p { + color: $muted-grey; + font-size: .85rem; + } + } + } + + .right-card { + flex-grow: 1; + max-width: 30%; + margin-left: 15px; + padding: 16px; + display: flex; + flex-direction: column; + justify-content: space-between; + + .header { + display: flex; + align-items: center; + justify-content: space-between; + + h3 { + text-transform: uppercase; + font-family: $font; + font-size: .75rem; + color: $muted-grey; + } + + .custom-button { + padding: 3px 12px; + font-size: .8rem; + border-radius: 100px; + background: lighten($blue, 25%); + color: $blue; + } + } + + .card-inner { + h2 { + font-family: $font; + font-weight: 600; + font-size: 1.6rem; + color: $dark-text; + + &:before { + content: '$'; + position: relative; + top: -5px; + font-size: 70%; + } + } + } + } + } + + //Activity cards + .activity-items { + .activity-item { + @extend .plex-card; + + padding: 30px; + display: flex; + align-items: center; + margin-bottom: 20px; + + .users { + display: flex; + align-items: center; + + .avatars { + display: flex; + align-items: center; + + .participant { + display: block; + height: 52px; + width: 52px; + font-size: .8rem; + border-radius: 50%; + border: 4px solid $white; + + &:not(:first-child) { + $var: 14; + + @for $i from 1 through 99 { + &:nth-child(#{$i}) { + margin-left: -#{$var}px; + } + } + } + + //more indicator + &.is-fake { + display: flex; + justify-content: center; + align-items: center; + height: 52px; + width: 52px; + font-weight: 700; + font-family: $font; + font-size: 1rem; + color: $white; + + &.is-primary { + background: $primary; + } + + &.is-secondary { + background: $secondary; + } + + &.is-orange { + background: $orange; + } + + &.is-green { + background: $light-green; + } + + &.is-count { + background: lighten($fade-grey, 1%); + color: $dark-text; + } + } + } + } + + .meta { + margin-left: 12px; + + span { + display: block; + line-height: 1.3; + + &:first-child { + font-family: $font; + font-size: .9rem; + font-weight: 600; + color: $dark-text; + } + + &:nth-child(2) { + font-size: .9rem; + color: $muted-grey; + } + } + } + } + + .details { + display: flex; + align-items: center; + margin-left: auto; + + .amount { + margin-right: 30px; + + span { + display: block; + line-height: 1.3; + + &:first-child { + text-transform: uppercase; + font-family: $font; + font-weight: 500; + font-size: .7rem; + color: $muted-grey; + } + + &:nth-child(2) { + font-family: $font; + font-weight: 600; + font-size: 1.1rem; + color: $dark-text; + + &:before { + content: '$'; + position: relative; + top: -5px; + font-size: 70%; + } + } + } + } + + .dropdown-wrap { + .dropdown-button { + height: 36px; + width: 36px; + + svg { + height: 22px; + width: 22px; + } + } + } + + .icon-button { + height: 36px; + width: 36px; + background: none; + border: 1px solid transparent; + border-radius: 50%; + outline: none; + display: flex; + justify-content: center; + align-items: center; + cursor: pointer; + transition: all .3s; + + &:hover { + background: $white; + border-color: darken($fade-grey, 3%); + box-shadow: $light-box-shadow; + + svg { + stroke: $dark-text; + } + } + + &.is-file { + margin-right: 30px; + + svg { + stroke: lighten($blue, 8%); + } + } + + svg { + height: 22px; + width: 22px; + stroke: $muted-grey; + stroke-width: 1.4px; + transition: stroke .3s; + } + } + } + } + } + } + } +} diff --git a/apps/platform/src/styles/theme.scss b/apps/platform/src/styles/theme.scss new file mode 100644 index 0000000000..5c65d77867 --- /dev/null +++ b/apps/platform/src/styles/theme.scss @@ -0,0 +1,231 @@ +/* ========================================================================== +Karrio Custom SCSS +========================================================================== */ +@charset "utf-8"; + +// Import a Google Font +@import url("https://fonts.googleapis.com/css2?family=Open+Sans:wght@300;400;600;700&display=swap"); + +// Set your brand colors +$white: #fff; +$smoke-white: #fcfcfc; +$grey-white: #f2f2f2; + +$fade-grey: #ededed; +$light-grey: #eff4f7; +$title-grey: #a9abac; +$blue-grey: #444f60; +$muted-grey: #999; +$light-blue-grey: #98a9c3; +$medium-grey: #66676b; +$basaltic-grey: #878787; +$purple: #5722cc; +$mint: #030303; +$bloody: #fc354c; +$pinky: #ff00cc; +$frost: #004e92; +$placeholder: #cecece; +$dark-grey: #344258; +$border-grey: #ccc; +$muted-grey: #999; +$section-grey: #fbfbfb; + +// Update Bulma's global variables +$family-sans-serif: "Open Sans", sans-serif; +$widescreen-enabled: false; +$fullhd-enabled: false; +$body-size: 14px; + +$primary: #5722cc; +$secondary: #79e5dd; +$accent: #ff4800; + +// Update some of Bulma's component variables +$link: $primary; +$footer-padding: 1rem 1.5rem; +$footer-background-color: $white; + +// Import only what you need from Bulma +@import "../../node_modules/bulma/bulma.sass"; + +.isolated-card { + margin: 0px auto; + width: 100%; + max-width: 448px; +} + +.is-medium-modal { + width: 70vw; + height: 95vh; + max-width: 1080px; +} + +.is-large-modal { + width: 100vw; + height: 100vh; + max-height: 100vh; +} + +@media screen and (min-width: 768px) { + .isolated-card { + min-width: 448px; + } +} + +@media screen and (max-width: 768px) { + .isolated-card { + box-shadow: none; + } + + .container { + margin: 0; + } + + .is-large-modal, + .is-medium-modal { + width: 100vw; + height: 100vh; + max-width: 100vw; + max-height: 100vh; + } +} + +.is-aramex { + background-color: #dc291e !important; + color: #fff !important; +} + +.is-australiapost { + background-color: #dc1928 !important; + color: #fff !important; +} + +.is-boxknight { + background-color: #ddd !important; + color: #1890ff !important; +} + +.is-canadapost { + background-color: #1a4183 !important; + color: #ddd !important; +} + +.is-canpar { + background-color: #004890 !important; + color: #fff !important; +} + +.is-dicom { + background-color: #f26529 !important; + color: #005daa !important; +} + +.is-dpd { + background-color: #DC0032 !important; + color: #FFFFFF !important; +} + +.is-dhl { + background-color: #fc0 !important; + color: #c00 !important; +} + +.is-dhl_universal { + background-color: #fc0 !important; + color: #c00 !important; +} + +.is-eshipper { + background-color: #472f92 !important; + color: #fff !important; +} + +.is-easypost { + background-color: #303F9F !important; + color: #fff !important; +} + +.is-geodis { + background-color: #3200e6 !important; + color: #fff !important; +} + +.is-laposte { + background-color: #ffc905 !important; + color: #124db3 !important; +} + +.is-nationex { + background-color: #02631c !important; + color: #fff !important; +} + +.is-fedex { + background-color: #4d148c !important; + color: #ddd !important; +} + +.is-freightcom { + background-color: #0072bc !important; + color: #333 !important; +} + +.is-purolator { + background-color: #001996 !important; + color: #e00000 !important; +} + +.is-generic { + background-color: #5722cc !important; + color: #ddd !important; +} + +.is-roadie { + background-color: #76cccd !important; + color: #351c13 !important; +} + +.is-royalmail { + background-color: #dc3232 !important; + color: #fdda24 !important; +} + +.is-sendle { + background-color: #ff6800 !important; + color: #fff !important; +} + +.is-sf_express { + background-color: #dc1e32 !important; + color: #fff !important; +} + +.is-tnt { + background-color: #fff !important; + color: #ff6600; +} + +.is-ups { + background-color: #341b14 !important; + color: #ffb406 !important; +} + +.is-usps { + background-color: #333366 !important; + color: #fff !important; +} + +.is-usps_international { + background-color: #333366 !important; + color: #fff !important; +} + +.is-yanwen { + background-color: #68b125 !important; + color: #fff !important; +} + +.is-yunexpress { + background-color: #ddd !important; + color: #388280 !important; +} \ No newline at end of file diff --git a/apps/platform/tailwind.config.ts b/apps/platform/tailwind.config.ts new file mode 100644 index 0000000000..eab0e58540 --- /dev/null +++ b/apps/platform/tailwind.config.ts @@ -0,0 +1,80 @@ +import type { Config } from "tailwindcss"; +import { fontFamily } from "tailwindcss/defaultTheme"; + +const config: Config = { + darkMode: ["class"], + content: [ + "./src/app/**/*.{js,ts,jsx,tsx,mdx}", + "../../packages/insiders/components/**/*.{js,ts,jsx,tsx,mdx}", + "../../packages/insiders/layouts/**/*.{js,ts,jsx,tsx,mdx}", + "../../packages/insiders/modules/**/*.{js,ts,jsx,tsx,mdx}", + ], + theme: { + extend: { + fontSize: { + base: "14px", + }, + fontFamily: { + heading: ["var(--font-heading)", ...fontFamily.sans], + body: ["var(--font-body)", ...fontFamily.sans], + }, + colors: { + border: "hsl(var(--border))", + input: "hsl(var(--input))", + ring: "hsl(var(--ring))", + background: "hsl(var(--background))", + foreground: "hsl(var(--foreground))", + primary: { + DEFAULT: "hsl(var(--primary))", + foreground: "hsl(var(--primary-foreground))", + }, + secondary: { + DEFAULT: "hsl(var(--secondary))", + foreground: "hsl(var(--secondary-foreground))", + }, + destructive: { + DEFAULT: "hsl(var(--destructive))", + foreground: "hsl(var(--destructive-foreground))", + }, + muted: { + DEFAULT: "hsl(var(--muted))", + foreground: "hsl(var(--muted-foreground))", + }, + accent: { + DEFAULT: "hsl(var(--accent))", + foreground: "hsl(var(--accent-foreground))", + }, + popover: { + DEFAULT: "hsl(var(--popover))", + foreground: "hsl(var(--popover-foreground))", + }, + card: { + DEFAULT: "hsl(var(--card))", + foreground: "hsl(var(--card-foreground))", + }, + }, + borderRadius: { + xl: `calc(var(--radius) + 4px)`, + lg: `var(--radius)`, + md: `calc(var(--radius) - 2px)`, + sm: `calc(var(--radius) - 4px)`, + }, + keyframes: { + "accordion-down": { + from: { height: "0" }, + to: { height: "var(--radix-accordion-content-height)" }, + }, + "accordion-up": { + from: { height: "var(--radix-accordion-content-height)" }, + to: { height: "0" }, + }, + }, + animation: { + "accordion-down": "accordion-down 0.2s ease-out", + "accordion-up": "accordion-up 0.2s ease-out", + }, + }, + }, + plugins: [require("tailwindcss-animate")], +}; +export default config; diff --git a/apps/platform/tsconfig.json b/apps/platform/tsconfig.json new file mode 100644 index 0000000000..8ca2eee934 --- /dev/null +++ b/apps/platform/tsconfig.json @@ -0,0 +1,32 @@ +{ + "compilerOptions": { + "lib": ["dom", "dom.iterable", "esnext"], + "allowJs": true, + "skipLibCheck": true, + "strict": true, + "noEmit": true, + "esModuleInterop": true, + "module": "esnext", + "moduleResolution": "bundler", + "resolveJsonModule": true, + "isolatedModules": true, + "jsx": "preserve", + "incremental": true, + "plugins": [ + { + "name": "next", + }, + ], + "paths": { + "@/*": ["./src/*"], + }, + }, + "include": [ + "next-env.d.ts", + "**/*.ts", + "**/*.tsx", + ".next/types/**/*.ts", + "tailwind.config.js", + ], + "exclude": ["node_modules"], +} diff --git a/package-lock.json b/package-lock.json index 95745d30c4..2823f87443 100644 --- a/package-lock.json +++ b/package-lock.json @@ -16,6 +16,7 @@ "@rollup/plugin-json": "^6.0.1", "eslint": "^8.48.0", "prettier": "^3.0.3", + "tailwindcss": "^3.4.10", "tsconfig": "*", "turbo": "^2.1.3" } @@ -40,11 +41,23 @@ "tsconfig": "*" } }, + "apps/dashboard/node_modules/@next/eslint-plugin-next": { + "version": "13.5.7", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.7.tgz", + "integrity": "sha512-c4vuEOOXeib4js5gDq+zFqAAdRGXX6T0d+zFETiQkRwy7vyj5lBov1dW0Z09nDst2lvxo7VEcKrQMUBH5Vgx7Q==", + "dev": true, + "license": "MIT", + "dependencies": { + "glob": "7.1.7" + } + }, "apps/dashboard/node_modules/eslint": { "version": "7.32.0", "resolved": "https://registry.npmjs.org/eslint/-/eslint-7.32.0.tgz", "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "deprecated": "This version is no longer supported. Please see https://eslint.org/version-support for other options.", "dev": true, + "license": "MIT", "dependencies": { "@babel/code-frame": "7.12.11", "@eslint/eslintrc": "^0.4.3", @@ -97,11 +110,61 @@ "url": "https://opencollective.com/eslint" } }, + "apps/dashboard/node_modules/eslint-config-next": { + "version": "13.5.7", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.7.tgz", + "integrity": "sha512-pdeUuL9KZ8qFzzKqCbxk6FXwG9dNEnot/3+qSFJqxdSGgkFUH8cgZus/meyCi2S0cTAsDbBEE030E6zvL9pUYQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "@next/eslint-plugin-next": "13.5.7", + "@rushstack/eslint-patch": "^1.3.3", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "eslint-import-resolver-node": "^0.3.6", + "eslint-import-resolver-typescript": "^3.5.2", + "eslint-plugin-import": "^2.28.1", + "eslint-plugin-jsx-a11y": "^6.7.1", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" + }, + "peerDependencies": { + "eslint": "^7.23.0 || ^8.0.0", + "typescript": ">=3.3.1" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "apps/dashboard/node_modules/glob": { + "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "license": "ISC", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "apps/dashboard/node_modules/glob-parent": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, + "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -109,6 +172,25 @@ "node": ">= 6" } }, + "apps/platform": { + "name": "@karrio/platform", + "version": "0.1.0", + "dependencies": { + "next": "14.2.8", + "react": "^18", + "react-dom": "^18" + }, + "devDependencies": { + "@types/node": "^20", + "@types/react": "^18", + "@types/react-dom": "^18", + "eslint": "^8", + "eslint-config-next": "14.2.8", + "postcss": "^8", + "tailwindcss": "^3.4.1", + "typescript": "^5" + } + }, "apps/www": { "version": "0.0.0", "dependencies": { @@ -482,7 +564,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" }, @@ -2861,7 +2942,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" }, @@ -2873,7 +2954,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" @@ -4792,6 +4873,7 @@ "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", "dev": true, + "license": "MIT", "dependencies": { "ajv": "^6.12.4", "debug": "^4.1.1", @@ -4808,10 +4890,11 @@ } }, "node_modules/@eslint/js": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.56.0.tgz", - "integrity": "sha512-gMsVel9D7f2HLkBma9VbtzZRehRogVRfbr++f06nL2vnCGCNlzOD+/MUov/F4p8myyAHspEhVobgjpX64q5m6A==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", "devOptional": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } @@ -5022,7 +5105,9 @@ "version": "0.5.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", "dev": true, + "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^1.2.0", "debug": "^4.1.1", @@ -5049,7 +5134,9 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true + "deprecated": "Use @eslint/object-schema instead", + "dev": true, + "license": "BSD-3-Clause" }, "node_modules/@isaacs/cliui": { "version": "8.0.2", @@ -5235,10 +5322,18 @@ "resolved": "packages/hooks", "link": true }, + "node_modules/@karrio/insiders": { + "resolved": "packages/insiders", + "link": true + }, "node_modules/@karrio/lib": { "resolved": "packages/lib", "link": true }, + "node_modules/@karrio/platform": { + "resolved": "apps/platform", + "link": true + }, "node_modules/@karrio/tsconfig": { "resolved": "packages/tsconfig", "link": true @@ -5496,44 +5591,74 @@ } }, "node_modules/@next/env": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.6.tgz", - "integrity": "sha512-bs5DFKV+08EjWrl8EB+KKqev1ZTNONH1vFCaHh911aaB362NnP32UDTbE9VQhyiAgbFqJsfDkSxFERNDDb3j0g==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/env/-/env-14.2.8.tgz", + "integrity": "sha512-L44a+ynqkolyNBnYfF8VoCiSrjSZWgEHYKkKLGcs/a80qh7AkfVUD/MduVPgdsWZ31tgROR+yJRA0PZjSVBXWQ==", "license": "MIT" }, "node_modules/@next/eslint-plugin-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-13.5.6.tgz", - "integrity": "sha512-ng7pU/DDsxPgT6ZPvuprxrkeew3XaRf4LAT4FabaEO/hAbvVx4P7wqnqdbTdDn1kgTvsI4tpIgT4Awn/m0bGbg==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.8.tgz", + "integrity": "sha512-ue5vcq9Fjk3asACRDrzYjcGMEN7pMMDQ5zUD+FenkqvlPCVUD1x7PxBNOLfPYDZOrk/Vnl4GHmjj2mZDqPW8TQ==", "dev": true, + "license": "MIT", "dependencies": { - "glob": "7.1.7" + "glob": "10.3.10" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/@next/eslint-plugin-next/node_modules/glob": { - "version": "7.1.7", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", - "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, + "license": "ISC", "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@next/eslint-plugin-next/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "license": "ISC", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, "node_modules/@next/swc-darwin-arm64": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.6.tgz", - "integrity": "sha512-BtJZb+hYXGaVJJivpnDoi3JFVn80SHKCiiRUW3kk1SY6UCUy5dWFFSbh+tGi5lHAughzeduMyxbLt3pspvXNSg==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-14.2.8.tgz", + "integrity": "sha512-1VrQlG8OzdyvvGZhGJFnaNE2P10Jjy/2FopnqbY0nSa/gr8If3iINxvOEW3cmVeoAYkmW0RsBazQecA2dBFOSw==", "cpu": [ "arm64" ], @@ -5547,9 +5672,9 @@ } }, "node_modules/@next/swc-darwin-x64": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.6.tgz", - "integrity": "sha512-ZHRbGpH6KHarzm6qEeXKSElSXh8dS2DtDPjQt3IMwY8QVk7GbdDYjvV4NgSnDA9huGpGgnyy3tH8i5yHCqVkiQ==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-14.2.8.tgz", + "integrity": "sha512-87t3I86rNRSOJB1gXIUzaQWWSWrkWPDyZGsR0Z7JAPtLeX3uUOW2fHxl7dNWD2BZvbvftctTQjgtfpp7nMtmWg==", "cpu": [ "x64" ], @@ -5563,9 +5688,9 @@ } }, "node_modules/@next/swc-linux-arm64-gnu": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.6.tgz", - "integrity": "sha512-O4HqUEe3ZvKshXHcDUXn1OybN4cSZg7ZdwHJMGCXSUEVUqGTJVsOh17smqilIjooP/sIJksgl+1kcf2IWMZWHg==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-14.2.8.tgz", + "integrity": "sha512-ta2sfVzbOpTbgBrF9HM5m+U58dv6QPuwU4n5EX4LLyCJGKc433Z0D9h9gay/HSOjLEXJ2fJYrMP5JYYbHdxhtw==", "cpu": [ "arm64" ], @@ -5579,9 +5704,9 @@ } }, "node_modules/@next/swc-linux-arm64-musl": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.6.tgz", - "integrity": "sha512-xUcdhr2hfalG8RDDGSFxQ75yOG894UlmFS4K2M0jLrUhauRBGOtUOxoDVwiIIuZQwZ3Y5hDsazNjdYGB0cQ9yQ==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-14.2.8.tgz", + "integrity": "sha512-+IoLTPK6Z5uIgDhgeWnQF5/o5GBN7+zyUNrs4Bes1W3g9++YELb8y0unFybS8s87ntAKMDl6jeQ+mD7oNwp/Ng==", "cpu": [ "arm64" ], @@ -5595,9 +5720,9 @@ } }, "node_modules/@next/swc-linux-x64-gnu": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.6.tgz", - "integrity": "sha512-InosKxw8UMcA/wEib5n2QttwHSKHZHNSbGcMepBM0CTcNwpxWzX32KETmwbhKod3zrS8n1vJ+DuJKbL9ZAB0Ag==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-14.2.8.tgz", + "integrity": "sha512-pO+hVXC+mvzUOQJJRG4RX4wJsRJ5BkURSf6dD6EjUXAX4Ml9es1WsEfkaZ4lcpmFzFvY47IkDaffks/GdCn9ag==", "cpu": [ "x64" ], @@ -5611,9 +5736,9 @@ } }, "node_modules/@next/swc-linux-x64-musl": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.6.tgz", - "integrity": "sha512-d4QXfJmt5pGJ7cG8qwxKSBnO5AXuKAFYxV7qyDRHnUNvY/dgDh+oX292gATpB2AAHgjdHd5ks1wXxIEj6muLUQ==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-14.2.8.tgz", + "integrity": "sha512-bCat9izctychCtf3uL1nqHq31N5e1VxvdyNcBQflkudPMLbxVnlrw45Vi87K+lt1CwrtVayHqzo4ie0Szcpwzg==", "cpu": [ "x64" ], @@ -5627,9 +5752,9 @@ } }, "node_modules/@next/swc-win32-arm64-msvc": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.6.tgz", - "integrity": "sha512-AlgIhk4/G+PzOG1qdF1b05uKTMsuRatFlFzAi5G8RZ9h67CVSSuZSbqGHbJDlcV1tZPxq/d4G0q6qcHDKWf4aQ==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-14.2.8.tgz", + "integrity": "sha512-gbxfUaSPV7EyUobpavida2Hwi62GhSJaSg7iBjmBWoxkxlmETOD7U4tWt763cGIsyE6jM7IoNavq0BXqwdW2QA==", "cpu": [ "arm64" ], @@ -5643,9 +5768,9 @@ } }, "node_modules/@next/swc-win32-ia32-msvc": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.6.tgz", - "integrity": "sha512-hNukAxq7hu4o5/UjPp5jqoBEtrpCbOmnUqZSKNJG8GrUVzfq0ucdhQFVrHcLRMvQcwqqDh1a5AJN9ORnNDpgBQ==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-ia32-msvc/-/swc-win32-ia32-msvc-14.2.8.tgz", + "integrity": "sha512-PUXzEzjTTlUh3b5VAn1nlpwvujTnuCMMwbiCnaTazoVlN1nA3kWjlmp42IfURA2N/nyrlVEw7pURa/o4Qxj1cw==", "cpu": [ "ia32" ], @@ -5659,9 +5784,9 @@ } }, "node_modules/@next/swc-win32-x64-msvc": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.6.tgz", - "integrity": "sha512-NANtw+ead1rSDK1jxmzq3TYkl03UNK2KHqUYf1nIhNci6NkeqBD4s1njSzYGIlSHxCK+wSaL8RXZm4v+NF/pMw==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-14.2.8.tgz", + "integrity": "sha512-EnPKv0ttq02E9/1KZ/8Dn7kuutv6hy1CKc0HlNcvzOQcm4/SQtvfws5gY0zrG9tuupd3HfC2L/zcTrnBhpjTuQ==", "cpu": [ "x64" ], @@ -5683,6 +5808,297 @@ "eslint-scope": "5.1.1" } }, + "node_modules/@nivo/annotations": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/annotations/-/annotations-0.87.0.tgz", + "integrity": "sha512-4Xk/soEmi706iOKszjX1EcGLBNIvhMifCYXOuLIFlMAXqhw1x2YS7PxickVSskdSzJCwJX4NgQ/R/9u6nxc5OA==", + "license": "MIT", + "dependencies": { + "@nivo/colors": "0.87.0", + "@nivo/core": "0.87.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/axes": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/axes/-/axes-0.87.0.tgz", + "integrity": "sha512-zCRBfiRKJi+xOxwxH5Pxq/8+yv3fAYDl4a1F2Ssnp5gMIobwzVsdearvsm5B04e9bfy3ZXTL7KgbkEkSAwu6SA==", + "license": "MIT", + "dependencies": { + "@nivo/core": "0.87.0", + "@nivo/scales": "0.87.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/d3-format": "^1.4.1", + "@types/d3-time-format": "^2.3.1", + "d3-format": "^1.4.4", + "d3-time-format": "^3.0.0" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/axes/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/axes/node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@nivo/axes/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/axes/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/axes/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/@nivo/bar": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/bar/-/bar-0.87.0.tgz", + "integrity": "sha512-r/MEVCNAHKfmsy1Fb+JztVczOhIEtAx4VFs2XUbn9YpEDgxydavUJyfoy5/nGq6h5jG1/t47cfB4nZle7c0fyQ==", + "license": "MIT", + "dependencies": { + "@nivo/annotations": "0.87.0", + "@nivo/axes": "0.87.0", + "@nivo/colors": "0.87.0", + "@nivo/core": "0.87.0", + "@nivo/legends": "0.87.0", + "@nivo/scales": "0.87.0", + "@nivo/tooltip": "0.87.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/d3-scale": "^4.0.8", + "@types/d3-shape": "^3.1.6", + "d3-scale": "^4.0.2", + "d3-shape": "^3.2.0", + "lodash": "^4.17.21" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/colors": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/colors/-/colors-0.87.0.tgz", + "integrity": "sha512-S4pZzRGKK23t8XAjQMhML6wwsfKO9nH03xuyN4SvCodNA/Dmdys9xV+9Dg/VILTzvzsBTBGTX0dFBg65WoKfVg==", + "license": "MIT", + "dependencies": { + "@nivo/core": "0.87.0", + "@types/d3-color": "^3.0.0", + "@types/d3-scale": "^4.0.8", + "@types/d3-scale-chromatic": "^3.0.0", + "@types/prop-types": "^15.7.2", + "d3-color": "^3.1.0", + "d3-scale": "^4.0.2", + "d3-scale-chromatic": "^3.0.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/core": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/core/-/core-0.87.0.tgz", + "integrity": "sha512-yEQWJn7QjWnbmCZccBCo4dligNyNyz3kgyV9vEtcaB1iGeKhg55RJEAlCOul+IDgSCSPFci2SxTmipE6LZEZCg==", + "license": "MIT", + "dependencies": { + "@nivo/tooltip": "0.87.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "@types/d3-shape": "^3.1.6", + "d3-color": "^3.1.0", + "d3-format": "^1.4.4", + "d3-interpolate": "^3.0.1", + "d3-scale": "^4.0.2", + "d3-scale-chromatic": "^3.0.0", + "d3-shape": "^3.2.0", + "d3-time-format": "^3.0.0", + "lodash": "^4.17.21", + "prop-types": "^15.7.2" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nivo/donate" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/core/node_modules/d3-array": { + "version": "2.12.1", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", + "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", + "license": "BSD-3-Clause", + "dependencies": { + "internmap": "^1.0.0" + } + }, + "node_modules/@nivo/core/node_modules/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==", + "license": "BSD-3-Clause" + }, + "node_modules/@nivo/core/node_modules/d3-time": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-2.1.1.tgz", + "integrity": "sha512-/eIQe/eR4kCQwq7yxi7z4c6qEXf2IYGcjoWB5OOQy4Tq9Uv39/947qlDcN2TLkiTzQWzvnsuYPB9TrWaNfipKQ==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-array": "2" + } + }, + "node_modules/@nivo/core/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/core/node_modules/internmap": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", + "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==", + "license": "ISC" + }, + "node_modules/@nivo/legends": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/legends/-/legends-0.87.0.tgz", + "integrity": "sha512-bVJCeqEmK4qHrxNaPU/+hXUd/yaKlcQ0yrsR18ewoknVX+pgvbe/+tRKJ+835JXlvRijYIuqwK1sUJQIxyB7oA==", + "license": "MIT", + "dependencies": { + "@nivo/colors": "0.87.0", + "@nivo/core": "0.87.0", + "@types/d3-scale": "^4.0.8", + "d3-scale": "^4.0.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/line": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/line/-/line-0.87.0.tgz", + "integrity": "sha512-Ki/WDd8ZU8VWScW4ZeKUFCXRdAEg8nrS+F+jdfJDPxyxUMHZJCAbrXrnsExcEQLOaDQ2aU/bijEMiDS8/dJzuA==", + "license": "MIT", + "dependencies": { + "@nivo/annotations": "0.87.0", + "@nivo/axes": "0.87.0", + "@nivo/colors": "0.87.0", + "@nivo/core": "0.87.0", + "@nivo/legends": "0.87.0", + "@nivo/scales": "0.87.0", + "@nivo/tooltip": "0.87.0", + "@nivo/voronoi": "0.87.0", + "@react-spring/web": "9.4.5 || ^9.7.2", + "d3-shape": "^3.2.0" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/scales": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/scales/-/scales-0.87.0.tgz", + "integrity": "sha512-IHdY9w2em/xpWurcbhUR3cUA1dgbY06rU8gmA/skFCwf3C4Da3Rqwr0XqvxmkDC+EdT/iFljMbLst7VYiCnSdw==", + "license": "MIT", + "dependencies": { + "@types/d3-scale": "^4.0.8", + "@types/d3-time": "^1.1.1", + "@types/d3-time-format": "^3.0.0", + "d3-scale": "^4.0.2", + "d3-time": "^1.0.11", + "d3-time-format": "^3.0.0", + "lodash": "^4.17.21" + } + }, + "node_modules/@nivo/scales/node_modules/@types/d3-time": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-1.1.4.tgz", + "integrity": "sha512-JIvy2HjRInE+TXOmIGN5LCmeO0hkFZx5f9FZ7kiN+D+YTcc8pptsiLiuHsvwxwC7VVKmJ2ExHUgNlAiV7vQM9g==", + "license": "MIT" + }, + "node_modules/@nivo/scales/node_modules/@types/d3-time-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-3.0.4.tgz", + "integrity": "sha512-or9DiDnYI1h38J9hxKEsw513+KVuFbEVhl7qdxcaudoiqWWepapUen+2vAriFGexr6W5+P4l9+HJrB39GG+oRg==", + "license": "MIT" + }, + "node_modules/@nivo/scales/node_modules/d3-time": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", + "license": "BSD-3-Clause" + }, + "node_modules/@nivo/scales/node_modules/d3-time-format": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-3.0.0.tgz", + "integrity": "sha512-UXJh6EKsHBTjopVqZBhFysQcoXSv/5yLONZvkQ5Kk3qbwiUYkdX17Xa1PT6U1ZWXGGfB1ey5L8dKMlFq2DO0Ag==", + "license": "BSD-3-Clause", + "dependencies": { + "d3-time": "1 - 2" + } + }, + "node_modules/@nivo/tooltip": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/tooltip/-/tooltip-0.87.0.tgz", + "integrity": "sha512-nZJWyRIt/45V/JBdJ9ksmNm1LFfj59G1Dy9wB63Icf2YwyBT+J+zCzOGXaY7gxCxgF1mnSL3dC7fttcEdXyN/g==", + "license": "MIT", + "dependencies": { + "@nivo/core": "0.87.0", + "@react-spring/web": "9.4.5 || ^9.7.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, + "node_modules/@nivo/voronoi": { + "version": "0.87.0", + "resolved": "https://registry.npmjs.org/@nivo/voronoi/-/voronoi-0.87.0.tgz", + "integrity": "sha512-Tg+9YnCX8LKsEwZMY1Q83mWiVFiyU2smxrO3JaC9vzjIh/2A/bkNPwC6BdmRaQMvY1jngKs+WKDnNxSQWFSOEg==", + "license": "MIT", + "dependencies": { + "@nivo/core": "0.87.0", + "@nivo/tooltip": "0.87.0", + "@types/d3-delaunay": "^6.0.4", + "@types/d3-scale": "^4.0.8", + "d3-delaunay": "^6.0.4", + "d3-scale": "^4.0.2" + }, + "peerDependencies": { + "react": ">= 16.14.0 < 19.0.0" + } + }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -5792,6 +6208,12 @@ "resolved": "https://registry.npmjs.org/@polka/url/-/url-1.0.0-next.24.tgz", "integrity": "sha512-2LuNTFBIO0m7kKIQvvPHN6UE63VjpmL9rnEEaOOaiSPbZK+zUOYIzBAWcED+3XYzhYsd/0mD57VdxAEqqV52CQ==" }, + "node_modules/@radix-ui/number": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.0.tgz", + "integrity": "sha512-V3gRzhVNU1ldS5XhAPTom1fOIo4ccrjjJgmE+LI2h/WaFpHmx0MQApT+KZHnx8abG6Avtfcz4WoEciMnpFT3HQ==", + "license": "MIT" + }, "node_modules/@radix-ui/primitive": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", @@ -5823,22 +6245,272 @@ } } }, + "node_modules/@radix-ui/react-checkbox": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-checkbox/-/react-checkbox-1.1.1.tgz", + "integrity": "sha512-0i/EKJ222Afa1FE0C6pNJxDq1itzcl3HChE9DwskA4th4KRse8ojx8a1nVcOjwJdbpDLcz7uol77yYnQNMHdKw==", + "license": "MIT", + "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-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "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-checkbox/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-checkbox/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==", + "license": "MIT", + "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-checkbox/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==", + "license": "MIT", + "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-checkbox/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==", + "license": "MIT", + "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-checkbox/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==", + "license": "MIT", + "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-checkbox/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==", + "license": "MIT", + "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-checkbox/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==", + "license": "MIT", + "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-checkbox/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==", + "license": "MIT", + "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-checkbox/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==", + "license": "MIT", + "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-checkbox/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "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-collection": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.0.3.tgz", - "integrity": "sha512-3SzW+0PW7yBBoQlT8wNcGtaxaD0XSu0uLUFgrtHY08Acx05TaHaOmVLR73c0j/cqpDy53KBMO7s0dx2wmOIDIA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.0.tgz", + "integrity": "sha512-GZsZslMJEyo1VKm5L1ZJY8tGDxZNPAoUeQUIbKeJfoi7Q4kmig5AsgLMYYuyYbfjd8fBmFORAIwYAkXMnXZgZw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2" + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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-collection/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==", + "license": "MIT", + "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-collection/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==", + "license": "MIT", + "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-collection/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==", + "license": "MIT", + "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": { @@ -5849,6 +6521,24 @@ } } }, + "node_modules/@radix-ui/react-collection/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==", + "license": "MIT", + "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-compose-refs": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", @@ -5884,31 +6574,1902 @@ } }, "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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-dialog/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==", + "license": "MIT", + "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/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==", + "license": "MIT", + "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/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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-dialog/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==", + "license": "MIT", + "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-direction": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.0.tgz", + "integrity": "sha512-BUuBvgThEiAXh2DWu93XsT+a3aWrGqolGlqqw5VU1kG7p/ZH2cuDlM1sRLNnY3QcBS69UIz2mcKhMxDsdewhjg==", + "license": "MIT", + "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-dismissable-layer": { "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.0.5.tgz", - "integrity": "sha512-GjWJX/AUpB703eEBanuBnIWdIXg6NvJFCXcNlSZk4xdszCdhrJgBoUd1cGk67vFO+WdA2pfI/plOpqz/5GUP6Q==", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/primitive": "1.0.1", "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-escape-keydown": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dropdown-menu": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.1.1.tgz", + "integrity": "sha512-y8E+x9fBq9qvteD2Zwa4397pUVhYsh9iq44b5RD5qu1GMJWBCBuVg1hMyItbc6+zH00TxGRqd9Iot4wzf3OoBQ==", + "license": "MIT", + "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-id": "1.1.0", + "@radix-ui/react-menu": "2.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "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-dropdown-menu/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-dropdown-menu/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==", + "license": "MIT", + "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-dropdown-menu/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==", + "license": "MIT", + "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-dropdown-menu/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==", + "license": "MIT", + "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-dropdown-menu/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==", + "license": "MIT", + "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-dropdown-menu/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==", + "license": "MIT", + "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-dropdown-menu/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==", + "license": "MIT", + "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-dropdown-menu/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==", + "license": "MIT", + "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-dropdown-menu/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==", + "license": "MIT", + "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-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==", + "license": "MIT", + "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==", + "license": "MIT", + "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-focus-scope/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==", + "license": "MIT", + "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/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==", + "license": "MIT", + "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-focus-scope/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==", + "license": "MIT", + "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-focus-scope/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==", + "license": "MIT", + "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-icons": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-icons/-/react-icons-1.3.0.tgz", + "integrity": "sha512-jQxj/0LKgp+j9BiTXz3O3sgs26RNet2iLWmsPyRz2SIcR4q/4SbazXfnYwbAr+vLYKSfc7qxzyGQA1HLlYiuNw==", + "license": "MIT", + "peerDependencies": { + "react": "^16.x || ^17.x || ^18.x" + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-label": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.1.0.tgz", + "integrity": "sha512-peLblDlFw/ngk3UWq0VnYaOLy6agTZZ+MUO/WhVfm14vJGML+xH4FAl2XQGLqdefjNb7ApRg6Yn7U42ZhmYXdw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.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-label/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==", + "license": "MIT", + "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-label/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==", + "license": "MIT", + "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-label/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==", + "license": "MIT", + "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-menu": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.1.1.tgz", + "integrity": "sha512-oa3mXRRVjHi6DZu/ghuzdylyjaMXLymx83irM7hTxutQbD+7IhPKdMdRHD26Rm+kHRrWcrUkkRPv5pd47a2xFQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "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-popper": "1.2.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-roving-focus": "1.1.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "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-menu/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-menu/node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/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==", + "license": "MIT", + "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-menu/node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "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-menu/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "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-menu/node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.1.tgz", + "integrity": "sha512-3y1A3isulwnWhvTTwmIreiB8CF4L+qRjZnK1wYLO7pplddzXKby/GnZ2M7OZY3qgnl6p9AodUIHRYGXNah8Y7g==", + "license": "MIT", + "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-popper": "1.2.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-popover/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-popover/node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/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==", + "license": "MIT", + "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-popover/node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/rect": "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-popover/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "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-popover/node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.0.3", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-context": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-rect": "1.0.1", + "@radix-ui/react-use-size": "1.0.1", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0", + "react-dom": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.0.tgz", + "integrity": "sha512-EA6AMGeq9AEeQDeSH0aZgG198qkfHSbvWTf1HvoDmOB5bBG/qTxjYMWUKMnYiV6J/iP/J8MEFSuB2zRU2n7ODA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "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-roving-focus/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-roving-focus/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==", + "license": "MIT", + "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-roving-focus/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==", + "license": "MIT", + "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-roving-focus/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==", + "license": "MIT", + "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-roving-focus/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==", + "license": "MIT", + "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-roving-focus/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==", + "license": "MIT", + "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-roving-focus/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==", + "license": "MIT", + "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-roving-focus/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==", + "license": "MIT", + "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-roving-focus/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==", + "license": "MIT", + "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-select": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.1.1.tgz", + "integrity": "sha512-8iRDfyLtzxlprOo9IicnzvpsO1wNCkuwzzCM+Z5Rb5tNOpCdMvcc2AkzX0Fz+Tz9v6NJ5B/7EEgyZveo4FBRfQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/number": "1.1.0", + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-collection": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "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-popper": "1.2.0", + "@radix-ui/react-portal": "1.1.1", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-slot": "1.1.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-visually-hidden": "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-select/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-arrow": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.0.tgz", + "integrity": "sha512-FmlW1rCg7hBpEBwFbjHwCW6AmWLQM6g/v0Sn8XbP9NvmSZ2San1FpQeyPtufzOMSIx7Y4dzjlHoifhp+7NkZhw==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.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-select/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==", + "license": "MIT", + "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-select/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==", + "license": "MIT", + "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-select/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==", + "license": "MIT", + "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-select/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==", + "license": "MIT", + "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-select/node_modules/@radix-ui/react-popper": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.0.tgz", + "integrity": "sha512-ZnRMshKF43aBxVWPWvbj21+7TQCvhuULWJ4gNIKYpRlQt5xGRhLx66tMp8pya2UkGHTSlhpXwmjqltDYHhw7Vg==", + "license": "MIT", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-callback-ref": "1.1.0", + "@radix-ui/react-use-layout-effect": "1.1.0", + "@radix-ui/react-use-rect": "1.1.0", + "@radix-ui/react-use-size": "1.1.0", + "@radix-ui/rect": "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-select/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==", + "license": "MIT", + "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", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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": { @@ -5919,89 +8480,124 @@ } } }, - "node_modules/@radix-ui/react-direction": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.0.1.tgz", - "integrity": "sha512-RXcvnXgyvYvBEOhCBuddKecVkoMiI10Jcm5cTI7abJRAHYfFxeu+FBQs/DvdxSYucxR5mna0dNsL6QFlds5TMA==", + "node_modules/@radix-ui/react-select/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "@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.0.5", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", - "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", + "node_modules/@radix-ui/react-select/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-escape-keydown": "1.0.3" + "@radix-ui/react-compose-refs": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { + } + } + }, + "node_modules/@radix-ui/react-select/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==", + "license": "MIT", + "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-dropdown-menu": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dropdown-menu/-/react-dropdown-menu-2.0.6.tgz", - "integrity": "sha512-i6TuFOoWmLWq+M/eCLGd/bQ2HfAX1RJgvrBQ6AQLmzfvsLdefxbWu8G9zczcPFfcSPehz9GcpF6K9QYreFV8hA==", + "node_modules/@radix-ui/react-select/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-menu": "2.0.6", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/react-use-callback-ref": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { + } + } + }, + "node_modules/@radix-ui/react-select/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==", + "license": "MIT", + "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-focus-guards": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", - "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", + "node_modules/@radix-ui/react-select/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==", + "license": "MIT", + "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-select/node_modules/@radix-ui/react-use-rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.0.tgz", + "integrity": "sha512-0Fmkebhr6PiseyZlYAOtLS+nb7jLmpqTrJyv61Pe68MKYW6OWdRE2kI70TaYY27u7H0lajqM3hSMMLFq18Z7nQ==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10" + "@radix-ui/rect": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -6009,21 +8605,37 @@ } } }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", - "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1" + "@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-select/node_modules/@radix-ui/react-visually-hidden": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.1.0.tgz", + "integrity": "sha512-N8MDZqtgCgG5S3aV60INAB475osJousYpZ4cTJ2cFbMpdHS5Y6loLTH8LPtkj2QN0x93J30HT/M3qJXM0+lyeQ==", + "license": "MIT", + "dependencies": { + "@radix-ui/react-primitive": "2.0.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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": { @@ -6034,13 +8646,19 @@ } } }, - "node_modules/@radix-ui/react-id": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", - "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", + "node_modules/@radix-ui/react-select/node_modules/@radix-ui/rect": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.0.tgz", + "integrity": "sha512-A9+lCBZoaMJlVKcRBz2YByCG+Cp2t6nAnMnNba+XiWxnj6r4JUFqfsgwocMBZU9LPtdxC6wB56ySYpc7LQIoJg==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", "dependencies": { "@babel/runtime": "^7.13.10", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@radix-ui/react-compose-refs": "1.0.1" }, "peerDependencies": { "@types/react": "*", @@ -6052,36 +8670,25 @@ } } }, - "node_modules/@radix-ui/react-menu": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-menu/-/react-menu-2.0.6.tgz", - "integrity": "sha512-BVkFLS+bUC8HcImkRKPSiVumA1VPOOEC5WBMiT+QAVsPzW1FJzI9KnqgGxVDPBcql5xXrHkD3JOVoXWEXD8SYA==", + "node_modules/@radix-ui/react-switch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.1.0.tgz", + "integrity": "sha512-OBzy5WAj641k0AOSpKQtreDMe+isX0MQJ1IVyF03ucdF3DunOnROVrjWs8zsXUxC3zfZ6JL9HFVCUlMghz9dJw==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-dismissable-layer": "1.0.5", - "@radix-ui/react-focus-guards": "1.0.1", - "@radix-ui/react-focus-scope": "1.0.4", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-popper": "1.1.3", - "@radix-ui/react-portal": "1.0.4", - "@radix-ui/react-presence": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-roving-focus": "1.0.4", - "@radix-ui/react-slot": "1.0.2", - "@radix-ui/react-use-callback-ref": "1.0.1", - "aria-hidden": "^1.1.1", - "react-remove-scroll": "2.5.5" + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-compose-refs": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-use-controllable-state": "1.1.0", + "@radix-ui/react-use-previous": "1.1.0", + "@radix-ui/react-use-size": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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": { @@ -6092,28 +8699,55 @@ } } }, - "node_modules/@radix-ui/react-popper": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", - "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", + "node_modules/@radix-ui/react-switch/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-switch/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==", + "license": "MIT", + "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-switch/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==", + "license": "MIT", + "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-switch/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1", - "@radix-ui/react-use-rect": "1.0.1", - "@radix-ui/react-use-size": "1.0.1", - "@radix-ui/rect": "1.0.1" + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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": { @@ -6124,43 +8758,110 @@ } } }, - "node_modules/@radix-ui/react-portal": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", - "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", + "node_modules/@radix-ui/react-switch/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-primitive": "1.0.3" + "@radix-ui/react-compose-refs": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { "optional": true - }, - "@types/react-dom": { + } + } + }, + "node_modules/@radix-ui/react-switch/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==", + "license": "MIT", + "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-presence": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", - "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", + "node_modules/@radix-ui/react-switch/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-use-layout-effect": "1.0.1" + "@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-switch/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==", + "license": "MIT", + "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-switch/node_modules/@radix-ui/react-use-size": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.0.tgz", + "integrity": "sha512-XW3/vWuIXHa+2Uwcc2ABSfcCledmXhhQPlGbfcRXbiUQI5Icjcg19BGCZVKKInYbvUCut/ufbbLLPFC5cbb1hw==", + "license": "MIT", + "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-tabs": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.0.tgz", + "integrity": "sha512-bZgOKB/LtZIij75FSuPzyEti/XBhJH52ExgtdVqjCIh+Nx/FW+LhnbXtbCzIi34ccyMsyOja8T0thCzoHFXNKA==", + "license": "MIT", + "dependencies": { + "@radix-ui/primitive": "1.1.0", + "@radix-ui/react-context": "1.1.0", + "@radix-ui/react-direction": "1.1.0", + "@radix-ui/react-id": "1.1.0", + "@radix-ui/react-presence": "1.1.0", + "@radix-ui/react-primitive": "2.0.0", + "@radix-ui/react-roving-focus": "1.1.0", + "@radix-ui/react-use-controllable-state": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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": { @@ -6171,19 +8872,74 @@ } } }, - "node_modules/@radix-ui/react-primitive": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", - "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", + "node_modules/@radix-ui/react-tabs/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==", + "license": "MIT" + }, + "node_modules/@radix-ui/react-tabs/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==", + "license": "MIT", + "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-tabs/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==", + "license": "MIT", + "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-tabs/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-slot": "1.0.2" + "@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-tabs/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==", + "license": "MIT", + "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", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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": { @@ -6194,27 +8950,19 @@ } } }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.0.4.tgz", - "integrity": "sha512-2mUg5Mgcu001VkGy+FfzZyzbmuUWzgWkj3rvv4yu+mLw03+mTzbxZHvfcGyFp2b8EkQeMkpRQ5FiA2Vr2O6TeQ==", + "node_modules/@radix-ui/react-tabs/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/primitive": "1.0.1", - "@radix-ui/react-collection": "1.0.3", - "@radix-ui/react-compose-refs": "1.0.1", - "@radix-ui/react-context": "1.0.1", - "@radix-ui/react-direction": "1.0.1", - "@radix-ui/react-id": "1.0.1", - "@radix-ui/react-primitive": "1.0.3", - "@radix-ui/react-use-callback-ref": "1.0.1", - "@radix-ui/react-use-controllable-state": "1.0.1" + "@radix-ui/react-slot": "1.1.0" }, "peerDependencies": { "@types/react": "*", "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0", - "react-dom": "^16.8 || ^17.0 || ^18.0" + "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": { @@ -6225,17 +8973,65 @@ } } }, - "node_modules/@radix-ui/react-slot": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", - "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", + "node_modules/@radix-ui/react-tabs/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==", + "license": "MIT", "dependencies": { - "@babel/runtime": "^7.13.10", - "@radix-ui/react-compose-refs": "1.0.1" + "@radix-ui/react-compose-refs": "1.1.0" }, "peerDependencies": { "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0" + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs/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==", + "license": "MIT", + "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-tabs/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==", + "license": "MIT", + "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-tabs/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==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" }, "peerDependenciesMeta": { "@types/react": { @@ -6347,6 +9143,21 @@ } } }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.0.tgz", + "integrity": "sha512-Z/e78qg2YFnnXcW88A4JmTtm4ADckLno6F7OXotmkQfeuCVaKuYzqAATPhVzl3delXE7CxIV8shofPn3jPc5Og==", + "license": "MIT", + "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-rect": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", @@ -6414,6 +9225,78 @@ "@babel/runtime": "^7.13.10" } }, + "node_modules/@react-spring/animated": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.4.tgz", + "integrity": "sha512-7As+8Pty2QlemJ9O5ecsuPKjmO0NKvmVkRR1n6mEotFgWar8FKuQt2xgxz3RTgxcccghpx1YdS1FCdElQNexmQ==", + "license": "MIT", + "dependencies": { + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/core": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.4.tgz", + "integrity": "sha512-GzjA44niEJBFUe9jN3zubRDDDP2E4tBlhNlSIkTChiNf9p4ZQlgXBg50qbXfSXHQPHak/ExYxwhipKVsQ/sUTw==", + "license": "MIT", + "dependencies": { + "@react-spring/animated": "~9.7.4", + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/react-spring/donate" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/rafz": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/rafz/-/rafz-9.7.4.tgz", + "integrity": "sha512-mqDI6rW0Ca8IdryOMiXRhMtVGiEGLIO89vIOyFQXRIwwIMX30HLya24g9z4olDvFyeDW3+kibiKwtZnA4xhldA==", + "license": "MIT" + }, + "node_modules/@react-spring/shared": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.4.tgz", + "integrity": "sha512-bEPI7cQp94dOtCFSEYpxvLxj0+xQfB5r9Ru1h8OMycsIq7zFZon1G0sHrBLaLQIWeMCllc4tVDYRTLIRv70C8w==", + "license": "MIT", + "dependencies": { + "@react-spring/rafz": "~9.7.4", + "@react-spring/types": "~9.7.4" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, + "node_modules/@react-spring/types": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.4.tgz", + "integrity": "sha512-iQVztO09ZVfsletMiY+DpT/JRiBntdsdJ4uqk3UJFhrhS8mIC9ZOZbmfGSRs/kdbNPQkVyzucceDicQ/3Mlj9g==", + "license": "MIT" + }, + "node_modules/@react-spring/web": { + "version": "9.7.4", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.4.tgz", + "integrity": "sha512-UMvCZp7I5HCVIleSa4BwbNxynqvj+mJjG2m20VO2yPoi2pnCYANy58flvz9v/YcXTAvsmL655FV3pm5fbr6akA==", + "license": "MIT", + "dependencies": { + "@react-spring/animated": "~9.7.4", + "@react-spring/core": "~9.7.4", + "@react-spring/shared": "~9.7.4", + "@react-spring/types": "~9.7.4" + }, + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/@reactivex/rxjs": { "version": "6.6.7", "resolved": "https://registry.npmjs.org/@reactivex/rxjs/-/rxjs-6.6.7.tgz", @@ -7735,6 +10618,26 @@ "react-dom": "^17.0.0 || ^18.0.0" } }, + "node_modules/@tanstack/react-table": { + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@tanstack/react-table/-/react-table-8.20.5.tgz", + "integrity": "sha512-WEHopKw3znbUZ61s9i0+i9g8drmDo6asTWbrQh8Us63DAk/M0FkmIqERew6P71HI75ksZ2Pxyuf4vvKh9rAkiA==", + "license": "MIT", + "dependencies": { + "@tanstack/table-core": "8.20.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + }, + "peerDependencies": { + "react": ">=16.8", + "react-dom": ">=16.8" + } + }, "node_modules/@tanstack/react-virtual": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.0.2.tgz", @@ -7761,6 +10664,19 @@ "url": "https://github.com/sponsors/tannerlinsley" } }, + "node_modules/@tanstack/table-core": { + "version": "8.20.5", + "resolved": "https://registry.npmjs.org/@tanstack/table-core/-/table-core-8.20.5.tgz", + "integrity": "sha512-P9dF7XbibHph2PFRz8gfBKEXEY/HJPOhym8CHmjF8y3q5mWpKx9xtZapXQUWCgkqvsK0R46Azuz+VaxD4Xl+Tg==", + "license": "MIT", + "engines": { + "node": ">=12" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/tannerlinsley" + } + }, "node_modules/@tanstack/virtual-core": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.0.0.tgz", @@ -7804,25 +10720,25 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "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/@turbo/gen": { "version": "1.11.3", @@ -8119,11 +11035,23 @@ "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "license": "MIT" + }, "node_modules/@types/d3-ease": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" }, + "node_modules/@types/d3-format": { + "version": "1.4.5", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-mLxrC1MSWupOSncXN/HOlWUAAIffAEBaI4+PKy2uMPsKe4FNZlk7qrbTjmzJXITQQqBHivaks4Td18azgqnotA==", + "license": "MIT" + }, "node_modules/@types/d3-interpolate": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", @@ -8145,6 +11073,12 @@ "@types/d3-time": "*" } }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "license": "MIT" + }, "node_modules/@types/d3-shape": { "version": "3.1.6", "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", @@ -8158,6 +11092,12 @@ "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==" }, + "node_modules/@types/d3-time-format": { + "version": "2.3.4", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-2.3.4.tgz", + "integrity": "sha512-xdDXbpVO74EvadI3UDxjxTdR6QIxm1FKzEA/+F8tL4GWWUg/hgvBqf6chql64U5A9ZUGWo7pEu4eNlyLwbKdhg==", + "license": "MIT" + }, "node_modules/@types/d3-timer": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", @@ -8962,18 +11902,6 @@ } } }, - "node_modules/@vercel/style-guide/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/@vercel/style-guide/node_modules/eslint-config-prettier": { "version": "9.1.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-9.1.0.tgz", @@ -8986,62 +11914,6 @@ "eslint": ">=7.0.0" } }, - "node_modules/@vercel/style-guide/node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/@vercel/style-guide/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/@vercel/style-guide/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" - } - }, "node_modules/@web3-storage/multipart-parser": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@web3-storage/multipart-parser/-/multipart-parser-1.0.0.tgz", @@ -9431,6 +12303,7 @@ "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", "dev": true, + "license": "MIT", "engines": { "node": ">=6" } @@ -9521,7 +12394,7 @@ "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/argparse": { "version": "1.0.10", @@ -9788,6 +12661,7 @@ "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" } @@ -9856,9 +12730,9 @@ } }, "node_modules/autoprefixer": { - "version": "10.4.19", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", - "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", + "version": "10.4.20", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.20.tgz", + "integrity": "sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==", "funding": [ { "type": "opencollective", @@ -9873,12 +12747,13 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "browserslist": "^4.23.0", - "caniuse-lite": "^1.0.30001599", + "browserslist": "^4.23.3", + "caniuse-lite": "^1.0.30001646", "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", + "picocolors": "^1.0.1", "postcss-value-parser": "^4.2.0" }, "bin": { @@ -10430,9 +13305,9 @@ } }, "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", "funding": [ { "type": "opencollective", @@ -10447,11 +13322,12 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" }, "bin": { "browserslist": "cli.js" @@ -10625,7 +13501,6 @@ "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" } @@ -10650,9 +13525,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001621", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001621.tgz", - "integrity": "sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==", + "version": "1.0.30001658", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001658.tgz", + "integrity": "sha512-N2YVqWbJELVdrnsW5p+apoQyYt51aBMSsBZki1XZEfeBCexcM/sf4xiAHcXQBkuOwJBXtWF7aW1sYX6tKebPHw==", "funding": [ { "type": "opencollective", @@ -10666,7 +13541,8 @@ "type": "github", "url": "https://github.com/sponsors/ai" } - ] + ], + "license": "CC-BY-4.0" }, "node_modules/ccount": { "version": "2.0.1", @@ -10894,6 +13770,27 @@ "safe-buffer": "^5.0.1" } }, + "node_modules/class-variance-authority": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.0.tgz", + "integrity": "sha512-jFI8IQw4hczaL4ALINxqLEXQbWcNjoSkloa4IaufXCJr6QawJyw7tuRysRsrE8w2p/4gGaxKIt/hX3qz/IbD1A==", + "license": "Apache-2.0", + "dependencies": { + "clsx": "2.0.0" + }, + "funding": { + "url": "https://joebell.co.uk" + } + }, + "node_modules/class-variance-authority/node_modules/clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, "node_modules/classnames": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.5.1.tgz", @@ -11605,7 +14502,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/crelt": { "version": "1.0.6", @@ -12094,6 +14991,18 @@ "node": ">=12" } }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "license": "ISC", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-ease": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", @@ -12144,6 +15053,19 @@ "node": ">=12" } }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "license": "ISC", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, "node_modules/d3-shape": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", @@ -12254,6 +15176,16 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/date-fns": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-3.6.0.tgz", + "integrity": "sha512-fRHTG8g/Gif+kSh50gaGEdToemgfj74aRX3swtiouboip5JDLAyDE9F11nHMIcvOaXeOC6D7SpNhi7uFyB7Uww==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/kossnocorp" + } + }, "node_modules/debounce": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", @@ -12511,6 +15443,15 @@ "node": ">= 4" } }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "license": "ISC", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, "node_modules/delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", @@ -12663,14 +15604,13 @@ "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": "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" } @@ -12704,8 +15644,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/dns-packet": { "version": "5.6.1", @@ -13545,9 +16484,10 @@ "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/electron-to-chromium": { - "version": "1.4.783", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.783.tgz", - "integrity": "sha512-bT0jEz/Xz1fahQpbZ1D7LgmPYZ3iHVY39NcWWro1+hA2IvjiPeaXtfSqrQ+nXjApMvQRE2ASt1itSLRrebHMRQ==" + "version": "1.5.18", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.18.tgz", + "integrity": "sha512-1OfuVACu+zKlmjsNdcJuVQuVE61sZOLbNM4JAQ1Rvh6EOj0/EUKhMJjRH73InPlXSh8HIJk1cVZ8pyOV/FMdUQ==", + "license": "ISC" }, "node_modules/elliptic": { "version": "6.5.5", @@ -13630,6 +16570,7 @@ "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-colors": "^4.1.1", "strip-ansi": "^6.0.1" @@ -13825,9 +16766,10 @@ "integrity": "sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==" }, "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "license": "MIT", "engines": { "node": ">=6" } @@ -13881,16 +16823,17 @@ } }, "node_modules/eslint": { - "version": "8.56.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.56.0.tgz", - "integrity": "sha512-Go19xM6T9puCOWntie1/P997aXxFsOi37JIHRWI514Hc6ZnaHGKY9xFhrU65RT6CcBEzZoGG1e6Nq+DT04ZtZQ==", + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", "devOptional": true, + "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@eslint-community/regexpp": "^4.6.1", "@eslint/eslintrc": "^2.1.4", - "@eslint/js": "8.56.0", - "@humanwhocodes/config-array": "^0.11.13", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", "@humanwhocodes/module-importer": "^1.0.1", "@nodelib/fs.walk": "^1.2.8", "@ungap/structured-clone": "^1.2.0", @@ -13940,6 +16883,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-custom/-/eslint-config-custom-0.0.0.tgz", "integrity": "sha512-kwCw78yisbgKdJBJ5qooPmpBYDphDfM2oxSROmtfOwBXBwXuRiSV3suO01W3mVLEFpmQZxMWd/qajKpJhkKSug==", "dev": true, + "license": "MIT", "dependencies": { "eslint-config-next": "^12.0.8", "eslint-config-prettier": "^8.3.0", @@ -13951,6 +16895,7 @@ "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-12.3.4.tgz", "integrity": "sha512-BFwj8ykJY+zc1/jWANsDprDIu2MgwPOIKxNVnrKvPs+f5TPegrVnem8uScND+1veT4B7F6VeqgaNLFW1Hzl9Og==", "dev": true, + "license": "MIT", "dependencies": { "glob": "7.1.7" } @@ -13960,6 +16905,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-5.62.0.tgz", "integrity": "sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/scope-manager": "5.62.0", "@typescript-eslint/types": "5.62.0", @@ -13987,6 +16933,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -14004,6 +16951,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, + "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -14017,6 +16965,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -14044,6 +16993,7 @@ "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, + "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -14061,6 +17011,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -14073,6 +17024,7 @@ "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-12.3.4.tgz", "integrity": "sha512-WuT3gvgi7Bwz00AOmKGhOeqnyA5P29Cdyr0iVjLyfDbk+FANQKcOjFUTZIdyYfe5Tq1x4TGcmoe4CwctGvFjHQ==", "dev": true, + "license": "MIT", "dependencies": { "@next/eslint-plugin-next": "12.3.4", "@rushstack/eslint-patch": "^1.1.3", @@ -14095,33 +17047,36 @@ } }, "node_modules/eslint-config-custom/node_modules/eslint-config-next/node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", + "version": "7.37.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", + "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", + "resolve": "^2.0.0-next.5", "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-config-custom/node_modules/eslint-config-next/node_modules/resolve": { @@ -14129,6 +17084,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -14146,6 +17102,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -14155,6 +17112,7 @@ "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-2.7.1.tgz", "integrity": "sha512-00UbgGwV8bSgUv34igBDbTOtKhqoRMy9bFjNehT40bXg6585PNIct8HhXZ0SybqB9rWtXj9crcku8ndDn/gIqQ==", "dev": true, + "license": "ISC", "dependencies": { "debug": "^4.3.4", "glob": "^7.2.0", @@ -14174,7 +17132,9 @@ "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14190,11 +17150,69 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/eslint-config-custom/node_modules/eslint-plugin-react": { + "version": "7.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", + "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "dev": true, + "license": "MIT", + "dependencies": { + "array-includes": "^3.1.4", + "array.prototype.flatmap": "^1.2.5", + "doctrine": "^2.1.0", + "estraverse": "^5.3.0", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.0.4", + "object.entries": "^1.1.5", + "object.fromentries": "^2.0.5", + "object.hasown": "^1.1.0", + "object.values": "^1.1.5", + "prop-types": "^15.7.2", + "resolve": "^2.0.0-next.3", + "semver": "^6.3.0", + "string.prototype.matchall": "^4.0.6" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + } + }, + "node_modules/eslint-config-custom/node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-config-custom/node_modules/eslint-plugin-react/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, + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + } + }, "node_modules/eslint-config-custom/node_modules/eslint-visitor-keys": { "version": "3.4.3", "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, + "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -14206,7 +17224,9 @@ "version": "7.1.7", "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, + "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -14223,14 +17243,16 @@ } }, "node_modules/eslint-config-next": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-13.5.6.tgz", - "integrity": "sha512-o8pQsUHTo9aHqJ2YiZDym5gQAMRf7O2HndHo/JZeY7TDD+W4hk6Ma8Vw54RHiBeb7OWWO5dPirQB+Is/aVQ7Kg==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.8.tgz", + "integrity": "sha512-gRqxHkSuCrQro6xqXnmXphcq8rdiw7FI+nLXpWmIlp/AfUzHCgXNQE7mOK+oco+SRaJbhqCg/68uRln1qjkF+Q==", "dev": true, + "license": "MIT", "dependencies": { - "@next/eslint-plugin-next": "13.5.6", + "@next/eslint-plugin-next": "14.2.8", "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0", + "@typescript-eslint/eslint-plugin": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", + "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", "eslint-import-resolver-node": "^0.3.6", "eslint-import-resolver-typescript": "^3.5.2", "eslint-plugin-import": "^2.28.1", @@ -14248,79 +17270,12 @@ } } }, - "node_modules/eslint-config-next/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/eslint-config-next/node_modules/eslint-plugin-react": { - "version": "7.33.2", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.33.2.tgz", - "integrity": "sha512-73QQMKALArI8/7xGLNI/3LylrEYrlKZSb5C9+q3OtOewTnMQi5cT+aE9E41sLCmli3I9PGGmD1yiZydyo4FEPw==", - "dev": true, - "dependencies": { - "array-includes": "^3.1.6", - "array.prototype.flatmap": "^1.3.1", - "array.prototype.tosorted": "^1.1.1", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.12", - "estraverse": "^5.3.0", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.6", - "object.fromentries": "^2.0.6", - "object.hasown": "^1.1.2", - "object.values": "^1.1.6", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.4", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.8" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" - } - }, - "node_modules/eslint-config-next/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/eslint-config-next/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" - } - }, "node_modules/eslint-config-prettier": { "version": "8.10.0", "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, + "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -14713,31 +17668,36 @@ } }, "node_modules/eslint-plugin-react": { - "version": "7.28.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.28.0.tgz", - "integrity": "sha512-IOlFIRHzWfEQQKcAD4iyYDndHwTQiCMcJVJjxempf203jnNLUnW34AXLrV33+nEXoifJE2ZEGmcjKPL8957eSw==", + "version": "7.37.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.1.tgz", + "integrity": "sha512-xwTnwDqzbDRA8uJ7BMxPs/EXRB3i8ZfnOIp8BsxEQkT0nHPp+WWceqGgo6rKb9ctNi8GJLDT4Go5HAWELa/WMg==", "dev": true, + "license": "MIT", "dependencies": { - "array-includes": "^3.1.4", - "array.prototype.flatmap": "^1.2.5", + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", "estraverse": "^5.3.0", + "hasown": "^2.0.2", "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.0.4", - "object.entries": "^1.1.5", - "object.fromentries": "^2.0.5", - "object.hasown": "^1.1.0", - "object.values": "^1.1.5", - "prop-types": "^15.7.2", - "resolve": "^2.0.0-next.3", - "semver": "^6.3.0", - "string.prototype.matchall": "^4.0.6" + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" }, "engines": { "node": ">=4" }, "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8" + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" } }, "node_modules/eslint-plugin-react-hooks": { @@ -14757,6 +17717,7 @@ "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, + "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -14769,6 +17730,7 @@ "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, + "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -14786,6 +17748,7 @@ "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, + "license": "ISC", "bin": { "semver": "bin/semver.js" } @@ -15009,6 +17972,7 @@ "resolved": "https://registry.npmjs.org/eslint-utils/-/eslint-utils-2.1.0.tgz", "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", "dev": true, + "license": "MIT", "dependencies": { "eslint-visitor-keys": "^1.1.0" }, @@ -15024,6 +17988,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } @@ -15169,6 +18134,7 @@ "resolved": "https://registry.npmjs.org/espree/-/espree-7.3.1.tgz", "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", "dev": true, + "license": "BSD-2-Clause", "dependencies": { "acorn": "^7.4.0", "acorn-jsx": "^5.3.1", @@ -15183,6 +18149,7 @@ "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", "dev": true, + "license": "Apache-2.0", "engines": { "node": ">=4" } @@ -15632,6 +18599,13 @@ "resolved": "https://registry.npmjs.org/fast-safe-stringify/-/fast-safe-stringify-2.1.1.tgz", "integrity": "sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==" }, + "node_modules/fast-uri": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.2.tgz", + "integrity": "sha512-GR6f0hD7XXyNJa25Tb9BuIdN0tdr+0BMi6/CJPH3wJO1JjNG3n/VsSw38AwRdKZABm8lGbPfakLRkYzx2V9row==", + "dev": true, + "license": "MIT" + }, "node_modules/fast-url-parser": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/fast-url-parser/-/fast-url-parser-1.1.3.tgz", @@ -16308,7 +19282,8 @@ "version": "1.0.1", "resolved": "https://registry.npmjs.org/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/functions-have-names": { "version": "1.2.3", @@ -17818,6 +20793,7 @@ "resolved": "https://registry.npmjs.org/ignore/-/ignore-4.0.6.tgz", "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", "dev": true, + "license": "MIT", "engines": { "node": ">= 4" } @@ -19243,7 +22219,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" } @@ -19364,7 +22339,8 @@ "version": "4.4.2", "resolved": "https://registry.npmjs.org/lodash.truncate/-/lodash.truncate-4.4.2.tgz", "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/lodash.uniq": { "version": "4.5.0", @@ -19508,6 +22484,15 @@ "yallist": "^3.0.2" } }, + "node_modules/lucide-react": { + "version": "0.439.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.439.0.tgz", + "integrity": "sha512-PafSWvDTpxdtNEndS2HIHxcNAbd54OaqSYJO90/b63rab2HWYqDbH194j0i82ZFdWOAcf0AHinRykXRRK2PJbw==", + "license": "ISC", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0-rc" + } + }, "node_modules/lunr": { "version": "2.3.9", "resolved": "https://registry.npmjs.org/lunr/-/lunr-2.3.9.tgz", @@ -19528,7 +22513,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/map-cache": { "version": "0.2.2", @@ -22189,12 +25174,12 @@ } }, "node_modules/next": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/next/-/next-14.2.6.tgz", - "integrity": "sha512-57Su7RqXs5CBKKKOagt8gPhMM3CpjgbeQhrtei2KLAA1vTNm7jfKS+uDARkSW8ZETUflDCBIsUKGSyQdRs4U4g==", + "version": "14.2.8", + "resolved": "https://registry.npmjs.org/next/-/next-14.2.8.tgz", + "integrity": "sha512-EyEyJZ89r8C5FPlS/401AiF3O8jeMtHIE+bLom9MwcdWJJFBgRl+MR/2VgO0v5bI6tQORNY0a0DR5sjpFNrjbg==", "license": "MIT", "dependencies": { - "@next/env": "14.2.6", + "@next/env": "14.2.8", "@swc/helpers": "0.5.5", "busboy": "1.6.0", "caniuse-lite": "^1.0.30001579", @@ -22209,15 +25194,15 @@ "node": ">=18.17.0" }, "optionalDependencies": { - "@next/swc-darwin-arm64": "14.2.6", - "@next/swc-darwin-x64": "14.2.6", - "@next/swc-linux-arm64-gnu": "14.2.6", - "@next/swc-linux-arm64-musl": "14.2.6", - "@next/swc-linux-x64-gnu": "14.2.6", - "@next/swc-linux-x64-musl": "14.2.6", - "@next/swc-win32-arm64-msvc": "14.2.6", - "@next/swc-win32-ia32-msvc": "14.2.6", - "@next/swc-win32-x64-msvc": "14.2.6" + "@next/swc-darwin-arm64": "14.2.8", + "@next/swc-darwin-x64": "14.2.8", + "@next/swc-linux-arm64-gnu": "14.2.8", + "@next/swc-linux-arm64-musl": "14.2.8", + "@next/swc-linux-x64-gnu": "14.2.8", + "@next/swc-linux-x64-musl": "14.2.8", + "@next/swc-win32-arm64-msvc": "14.2.8", + "@next/swc-win32-ia32-msvc": "14.2.8", + "@next/swc-win32-x64-msvc": "14.2.8" }, "peerDependencies": { "@opentelemetry/api": "^1.1.0", @@ -22562,9 +25547,10 @@ } }, "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "license": "MIT" }, "node_modules/noms": { "version": "0.0.0", @@ -23018,13 +26004,18 @@ } }, "node_modules/object.hasown": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", - "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.4.tgz", + "integrity": "sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==", "dev": true, + "license": "MIT", "dependencies": { - "define-properties": "^1.2.0", - "es-abstract": "^1.22.1" + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -24606,7 +27597,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" }, @@ -24652,7 +27642,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", @@ -24687,7 +27676,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.0.0.tgz", "integrity": "sha512-K2U4W2Ff5ibV7j7ydLr+zLAkIg5JJ4lPn1Ltsdt+Tz/IjQ8buJ55pZAxoP34lqIiwtF9iAvtLv3JGv7CAyAg+g==", - "dev": true, "engines": { "node": ">=14" } @@ -24696,7 +27684,6 @@ "version": "2.3.4", "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", - "dev": true, "engines": { "node": ">= 14" } @@ -24913,7 +27900,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" }, @@ -25954,6 +28940,20 @@ "node": ">=0.10.0" } }, + "node_modules/react-day-picker": { + "version": "8.10.1", + "resolved": "https://registry.npmjs.org/react-day-picker/-/react-day-picker-8.10.1.tgz", + "integrity": "sha512-TMx7fNbhLk15eqcMt+7Z7S2KF7mfTId/XJDjKE8f+IUcFn0l08/kI4FiYTL/0yuOLmEcbR4Fwe3GJf/NiiMnPA==", + "license": "MIT", + "funding": { + "type": "individual", + "url": "https://github.com/sponsors/gpbl" + }, + "peerDependencies": { + "date-fns": "^2.28.0 || ^3.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + } + }, "node_modules/react-dev-utils": { "version": "12.0.1", "resolved": "https://registry.npmjs.org/react-dev-utils/-/react-dev-utils-12.0.1.tgz", @@ -26936,11 +29936,12 @@ "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-remove-scroll": { - "version": "2.5.5", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", - "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", + "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==", + "license": "MIT", "dependencies": { - "react-remove-scroll-bar": "^2.3.3", + "react-remove-scroll-bar": "^2.3.4", "react-style-singleton": "^2.2.1", "tslib": "^2.1.0", "use-callback-ref": "^1.3.0", @@ -27463,6 +30464,7 @@ "resolved": "https://registry.npmjs.org/regexpp/-/regexpp-3.2.0.tgz", "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", "dev": true, + "license": "MIT", "engines": { "node": ">=8" }, @@ -28003,6 +31005,12 @@ "inherits": "^2.0.1" } }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==", + "license": "Unlicense" + }, "node_modules/rollup": { "version": "2.79.1", "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.79.1.tgz", @@ -28861,6 +31869,7 @@ "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", "dev": true, + "license": "MIT", "dependencies": { "ansi-styles": "^4.0.0", "astral-regex": "^2.0.0", @@ -29919,10 +32928,11 @@ } }, "node_modules/table": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/table/-/table-6.8.1.tgz", - "integrity": "sha512-Y4X9zqrCftUhMeH2EptSSERdVKt/nEdijTOacGD/97EKjhQ/Qs8RTlEGABSJNNN8lac9kheH+af7yAkEWlgneA==", + "version": "6.8.2", + "resolved": "https://registry.npmjs.org/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", "dev": true, + "license": "BSD-3-Clause", "dependencies": { "ajv": "^8.0.1", "lodash.truncate": "^4.4.2", @@ -29935,15 +32945,16 @@ } }, "node_modules/table/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", "dev": true, + "license": "MIT", "dependencies": { - "fast-deep-equal": "^3.1.1", + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "require-from-string": "^2.0.2" }, "funding": { "type": "github", @@ -29954,17 +32965,28 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/tailwind-loader": { "resolved": "apps/www/plugins/tailwind-loader", "link": true }, + "node_modules/tailwind-merge": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.5.2.tgz", + "integrity": "sha512-kjEBm+pvD+6eAwzJL2Bi+02/9LFLal1Gs61+QB7HvTfQQ0aXwC5LGT8PEt1gS0CWKktKe6ysPTAy3cBC5MeiIg==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, "node_modules/tailwindcss": { - "version": "3.4.1", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.1.tgz", - "integrity": "sha512-qAYmXRfk3ENzuPBakNK0SRrUDipP8NQnEY6772uDhflcQz5EhRdD7JNZxyrFHVQNCwULPBn6FNPp9brpO7ctcA==", - "dev": true, + "version": "3.4.10", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.10.tgz", + "integrity": "sha512-KWZkVPm7yJRhdu4SRSl9d4AK2wM3a50UsvgHZO7xY77NQr2V+fIrEuoDGQcbvswWvFGbS2f6e+jC/6WJm1Dl0w==", + "license": "MIT", "dependencies": { "@alloc/quick-lru": "^5.2.0", "arg": "^5.0.2", @@ -29974,7 +32996,7 @@ "fast-glob": "^3.3.0", "glob-parent": "^6.0.2", "is-glob": "^4.0.3", - "jiti": "^1.19.1", + "jiti": "^1.21.0", "lilconfig": "^2.1.0", "micromatch": "^4.0.5", "normalize-path": "^3.0.0", @@ -29997,17 +33019,24 @@ "node": ">=14.0.0" } }, + "node_modules/tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "license": "MIT", + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders" + } + }, "node_modules/tailwindcss/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/tailwindcss/node_modules/object-hash": { "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" } @@ -30359,7 +33388,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", @@ -30402,7 +33431,7 @@ "version": "8.11.3", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "dev": true, + "devOptional": true, "bin": { "acorn": "bin/acorn" }, @@ -31019,9 +34048,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", "funding": [ { "type": "opencollective", @@ -31036,9 +34065,10 @@ "url": "https://github.com/sponsors/ai" } ], + "license": "MIT", "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" + "escalade": "^3.1.2", + "picocolors": "^1.0.1" }, "bin": { "update-browserslist-db": "cli.js" @@ -31446,13 +34476,14 @@ "version": "2.4.0", "resolved": "https://registry.npmjs.org/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==", - "dev": true + "dev": true, + "license": "MIT" }, "node_modules/v8-compile-cache-lib": { "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/v8flags": { "version": "4.0.1", @@ -32484,7 +35515,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" } @@ -32580,166 +35611,6 @@ "typescript": "5.3.2" } }, - "packages/core/node_modules/@next/eslint-plugin-next": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/@next/eslint-plugin-next/-/eslint-plugin-next-14.2.6.tgz", - "integrity": "sha512-d3+p4AjIYmhqzYHhhmkRYYN6ZU35TwZAKX08xKRfnHkz72KhWL2kxMFsDptpZs5e8bBGdepn7vn1+9DaF8iX+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "glob": "10.3.10" - } - }, - "packages/core/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "packages/core/node_modules/doctrine": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", - "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "esutils": "^2.0.2" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "packages/core/node_modules/eslint-config-next": { - "version": "14.2.6", - "resolved": "https://registry.npmjs.org/eslint-config-next/-/eslint-config-next-14.2.6.tgz", - "integrity": "sha512-z0URA5LO6y8lS/YLN0EDW/C4LEkDODjJzA37dvLVdzCPzuewjzTe1os5g3XclZAZrQ8X8hPaSMQ2JuVWwMmrTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@next/eslint-plugin-next": "14.2.6", - "@rushstack/eslint-patch": "^1.3.3", - "@typescript-eslint/parser": "^5.4.2 || ^6.0.0 || 7.0.0 - 7.2.0", - "eslint-import-resolver-node": "^0.3.6", - "eslint-import-resolver-typescript": "^3.5.2", - "eslint-plugin-import": "^2.28.1", - "eslint-plugin-jsx-a11y": "^6.7.1", - "eslint-plugin-react": "^7.33.2", - "eslint-plugin-react-hooks": "^4.5.0 || 5.0.0-canary-7118f5dd7-20230705" - }, - "peerDependencies": { - "eslint": "^7.23.0 || ^8.0.0", - "typescript": ">=3.3.1" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } - } - }, - "packages/core/node_modules/eslint-plugin-react": { - "version": "7.35.0", - "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.35.0.tgz", - "integrity": "sha512-v501SSMOWv8gerHkk+IIQBkcGRGrO2nfybfj5pLxuJNFTPxxA3PSryhXTK+9pNbtkggheDdsC0E9Q8CuPk6JKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "array-includes": "^3.1.8", - "array.prototype.findlast": "^1.2.5", - "array.prototype.flatmap": "^1.3.2", - "array.prototype.tosorted": "^1.1.4", - "doctrine": "^2.1.0", - "es-iterator-helpers": "^1.0.19", - "estraverse": "^5.3.0", - "hasown": "^2.0.2", - "jsx-ast-utils": "^2.4.1 || ^3.0.0", - "minimatch": "^3.1.2", - "object.entries": "^1.1.8", - "object.fromentries": "^2.0.8", - "object.values": "^1.2.0", - "prop-types": "^15.8.1", - "resolve": "^2.0.0-next.5", - "semver": "^6.3.1", - "string.prototype.matchall": "^4.0.11", - "string.prototype.repeat": "^1.0.0" - }, - "engines": { - "node": ">=4" - }, - "peerDependencies": { - "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" - } - }, - "packages/core/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/core/node_modules/glob/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", - "dev": true, - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/core/node_modules/resolve": { - "version": "2.0.0-next.5", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", - "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", - "dev": true, - "license": "MIT", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "packages/core/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, - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, "packages/eslint-config-custom": { "name": "@karrio/eslint-config-custom", "version": "0.0.0", @@ -32798,6 +35669,106 @@ "node": ">=4.2.0" } }, + "packages/insiders": { + "name": "@karrio/insiders", + "version": "0.0.0", + "license": "Apache-2.0", + "dependencies": { + "@karrio/core": "*", + "@karrio/hooks": "*", + "@karrio/lib": "*", + "@karrio/types": "*", + "@nivo/bar": "^0.87.0", + "@nivo/line": "^0.87.0", + "@radix-ui/react-checkbox": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-dropdown-menu": "^2.1.1", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.1.0", + "@radix-ui/react-popover": "^1.1.1", + "@radix-ui/react-select": "^2.1.1", + "@radix-ui/react-slot": "^1.1.0", + "@radix-ui/react-switch": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@tanstack/react-table": "^8.20.5", + "chart.js": "^4.4.0", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "date-fns": "^3.6.0", + "highlight.js": "^11.2.0", + "lucide-react": "^0.439.0", + "react-day-picker": "^8.10.1", + "tailwind-merge": "^2.5.2", + "tailwindcss-animate": "^1.0.7" + }, + "devDependencies": { + "@karrio/eslint-config-custom": "*", + "@karrio/tsconfig": "*", + "@turbo/gen": "^1.10.12", + "@types/node": "^20.5.2", + "@types/react": "^18.2.0", + "@types/react-dom": "^18.2.0", + "react": "^18.2.0", + "tailwindcss": "^3.4.10", + "typescript": "^4.5.2" + } + }, + "packages/insiders/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==", + "license": "MIT", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "packages/insiders/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==", + "license": "MIT", + "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 + } + } + }, + "packages/insiders/node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "license": "MIT", + "engines": { + "node": ">=6" + } + }, + "packages/insiders/node_modules/typescript": { + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "dev": true, + "license": "Apache-2.0", + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, "packages/karriojs": { "name": "karriojs-karrio", "version": "2021.10.0", diff --git a/package.json b/package.json index 72bf5a5e5f..248171228d 100644 --- a/package.json +++ b/package.json @@ -3,6 +3,8 @@ "scripts": { "build": "turbo run build", "dev": "turbo run dev", + "dev:oss": "turbo run dev:oss", + "dev:platform": "turbo run dev:platform", "lint": "turbo run lint", "format": "prettier --write \"**/*.{ts,tsx,md}\"" }, @@ -10,6 +12,7 @@ "@rollup/plugin-json": "^6.0.1", "eslint": "^8.48.0", "prettier": "^3.0.3", + "tailwindcss": "^3.4.10", "tsconfig": "*", "turbo": "^2.1.3" }, diff --git a/packages/core/context/image.ts b/packages/core/context/image.ts new file mode 100644 index 0000000000..c9ad960abe --- /dev/null +++ b/packages/core/context/image.ts @@ -0,0 +1,43 @@ +import { formatCarrierSlug, getInitials, isNoneOrEmpty } from "@karrio/lib"; +import { NextRequest } from "next/server"; + +export async function GET( + request: NextRequest, + { params }: { params: { name: string } }, +) { + const { name } = params; + const searchParams = request.nextUrl.searchParams; + const isIcon = name.includes("_icon"); + const [_name] = name.replace(isIcon ? "_icon" : "_logo", "").split("."); + const carrier_name = isIcon + ? getInitials(_name).substring(0, 2) + : formatCarrierSlug(_name); + const text_color = isNoneOrEmpty(searchParams.get("text_color")) + ? "#ddd" + : decodeURIComponent(searchParams.get("text_color") as string); + const background = isNoneOrEmpty(searchParams.get("background")) + ? "#7e51e1" + : decodeURIComponent(searchParams.get("background") as string); + const props = isIcon ? 'viewBox="0 0 512 512"' : 'viewBox="0 0 125 25"'; + const path = isIcon + ? `` + : ``; + + const content = ` + + ${path} + + + ${carrier_name} + + + + `; + + return new Response(content, { + headers: { + "Content-Type": "image/svg+xml", + }, + }); +} diff --git a/packages/core/modules/Apps/development.tsx b/packages/core/modules/Apps/development.tsx deleted file mode 100644 index 1e8e25423b..0000000000 --- a/packages/core/modules/Apps/development.tsx +++ /dev/null @@ -1,116 +0,0 @@ -"use client"; -import { dynamicMetadata } from "@karrio/core/components/metadata"; -import { AppMenu } from "@karrio/ui/components/app-menu"; -import { AppLink } from "@karrio/ui/components/app-link"; -import { ModalProvider } from "@karrio/ui/modals/modal"; -import { bundleContexts } from "@karrio/hooks/utils"; -import { Spinner } from "@karrio/ui/components"; - -export const generateMetadata = dynamicMetadata("Apps"); -const ContextProviders = bundleContexts([ModalProvider]); - -export default function Page(pageProps: any) { - const Component: React.FC<{}> = () => { - const { query: { data: { private_apps = {} } = {}, ...query } = {} } = - {} as any; - - return ( - <> -
-
- Apps - - BETA - -
-
- - Create app - -
-
- -
-
    -
  • - - Installed - -
  • -
  • - - Development - -
  • -
-
- - {query.isLoading && } - - {query.isLoading === false && - (private_apps?.edges || []).length > 0 && ( - <> - - - )} - - {query.isLoading === false && - (private_apps?.edges || []).length == 0 && ( - <> -
-
-

No app found.

-
-
- - )} - - ); - }; - - return ( - <> - - - - - ); -} diff --git a/packages/core/modules/Apps/index.tsx b/packages/core/modules/Apps/index.tsx deleted file mode 100644 index 999e732476..0000000000 --- a/packages/core/modules/Apps/index.tsx +++ /dev/null @@ -1,112 +0,0 @@ -"use client"; -import { dynamicMetadata } from "@karrio/core/components/metadata"; -import { AppMenu } from "@karrio/ui/components/app-menu"; -import { AppLink } from "@karrio/ui/components/app-link"; -import { ModalProvider } from "@karrio/ui/modals/modal"; -import { bundleContexts } from "@karrio/hooks/utils"; -import { Spinner } from "@karrio/ui/components"; - -export const generateMetadata = dynamicMetadata("Apps"); -const ContextProviders = bundleContexts([ModalProvider]); - -export default function Page(pageProps: any) { - const Component: React.FC = () => { - const { query: { data: { installations = {} } = {}, ...query } = {} } = - {} as any; - - return ( - <> -
-
- Apps - - BETA - -
-
-
- -
-
    -
  • - - Installed - -
  • -
  • - - Development - -
  • -
-
- - {query.isLoading && } - - {query.isLoading === false && - (installations?.edges || []).length > 0 && ( - <> - - - )} - - {query.isLoading === false && - (installations?.edges || []).length == 0 && ( - <> -
-
-

No apps installed.

-
-
- - )} - - ); - }; - - return ( - <> - - - - - ); -} diff --git a/packages/core/modules/Labels/create_labels.tsx b/packages/core/modules/Labels/create_labels.tsx index 04913d94c0..7c43c1df95 100644 --- a/packages/core/modules/Labels/create_labels.tsx +++ b/packages/core/modules/Labels/create_labels.tsx @@ -215,7 +215,7 @@ export default function Page(pageProps: any) { ({ id }, index) => `${id || index}` === `${selected}`, ); const shipment = shipments[shipment_index]; - const ShipmentEditor: React.FC = + const ShipmentEditor: React.FC = !!shipment && !isNone(shipment_index) ? ( f: (props: { @@ -295,7 +295,7 @@ export default function Page(pageProps: any) { setSelectedRow(undefined); setIsOpen(false); }; - const selectedRate = (shipment) => + const selectedRate = (shipment: ShipmentType) => (shipment?.rates || []).find( (_) => _.service === shipment?.options?.preferred_service, ) || (shipment?.rates || [])[0]; @@ -691,1727 +691,1788 @@ export default function Page(pageProps: any) { {retrieveShipment( batch.shipments, selectedRow, - )(({ shipment, shipment_index }) => { - const shipmentOrderIds = ( - shipment.meta?.order_id || - shipment.metadata?.order_ids || - "" - ) - .split(",") - .filter((_) => !isNoneOrEmpty(_)); - const orders = (shipmentOrderList?.edges || []) - .filter(({ node }) => - shipmentOrderIds.includes(node.order_id), + )( + ({ + shipment, + shipment_index, + }: { + shipment: ShipmentType; + shipment_index: number; + }) => { + const shipmentOrderIds = ( + shipment.meta?.order_id || + shipment.metadata?.order_ids || + "" ) - .map(({ node }) => node) as OrderType[]; - - return ( - - - -
-
- - {`#${shipment.meta?.order_id || shipment.metadata?.order_ids || " - "}`} - -
- - {formatAddressLocationShort( - shipment.recipient as AddressType, - )} - -
-
- -
-
-
- -
- {/* Address section */} -
-
-
- - Customer - -
- - onChange(shipment_index, shipment, { - recipient: address, - }) - } - trigger={ - - } - /> -
-
- - - - {Object.values(shipment.recipient || {}) - .length === 0 && ( - <> -
- Please add a customer address. -
- - )}
- -
- -
-
- - Ship from +
+ - } - /> -
-
- - - - {Object.values(shipment.shipper || {}) - .length === 0 && ( - <> -
- Please specify an address. -
- - )} +
+ +
- {/* Retrun address section */} -
- -
-
-
- { - setAddReturn(e.target.checked); - if ( - !e.target.checked && - !isNone(shipment.return_address) - ) { - onChange( - shipment_index, - shipment, - { - return_address: null, - }, - ); - } - }} - > - - Add a return address (optional) - - -
-
- {(addReturn || - !isNone(shipment.return_address)) && ( +
+ {/* Address section */} +
+
+
+ + Customer + +
onChange( shipment_index, shipment, { - return_address: address, + recipient: address, }, ) } trigger={ } /> - )} -
-
+
+
-
- {shipment?.return_address && ( - + + + {Object.values(shipment.recipient || {}) + .length === 0 && ( + <> +
+ Please add a customer address. +
+ )}
- {Object.values( - shipment?.return_address || [], - ).length === 0 && ( -
- - Use this to specify an origin address - different from the shipper address - above.
- This address will be used for pickup - and return. -
-
- )} -
- - {/* Billing address section */} -
- -
- +
-
- - -
- {(shipment?.billing_address || - shipment.payment?.paid_by === - PaidByEnum.third_party) && ( - <> -
-
-
- {shipment?.billing_address && ( +
+ {shipment?.return_address && ( )} - - {isNone(shipment?.billing_address) && ( -
- Add shipment billing address. - (optional) -
- )}
- - )} -
- {/* Parcel & Items section */} -
-
- - PACKAGES - -
- - Add package - - } - /> + {Object.values( + shipment?.return_address || [], + ).length === 0 && ( +
+ + Use this to specify an origin + address different from the shipper + address above.
+ This address will be used for pickup + and return. +
+
+ )}
-
-
+ {/* Billing address section */} +
- {shipment.parcels.map((pkg, pkg_index) => ( - - {pkg_index > 0 && ( -
- )} +
+ -
- {/* Parcel header */} -
-
- - {pkg_index + 1} - - } - /> -
-
- +
-
- - {/* Items section */} - - ITEMS - - - {(pkg.items || []).map( - (item, item_index) => ( - -
-
-
-

- {item_index + 1}{" "} - {`${item.title || item.description || "Item"}`} -

-

- {isNoneOrEmpty(item.sku) - ? "SKU: 0000000" - : `SKU: ${item.sku}`} - {getOrder( - orders, - item.parent_id, - ) && ( - - {` | ORDER: ${getOrder(orders, item.parent_id)?.order_id}`} - - )} -

-

-
-
-
- - {formatWeight(item)} - -
-

- { - mutation.updateItem( - shipment_index, - )( - pkg_index, - item_index, - pkg.id, - )({ - quantity: - parseInt( - e.target - .value, - ), - } as CommodityType); - }} - className="input is-small" - style={{ - width: "60px", - textAlign: "center", - }} - {...(getParent( - orders, - item.parent_id, - ) - ? { - max: getAvailableQuantity( - shipment, - orders, - item, - item_index, - ), - } - : {})} - /> -

- {getParent( - orders, - item.parent_id, - ) && ( -

- - of{" "} - {getParent( - orders, - item.parent_id, - ) - ?.unfulfilled_quantity || - item.quantity} - -

- )} -
-
- - {({ editCommodity }) => ( - - )} - + shipment, + { + payment: { + ...shipment.payment, + paid_by: + PaidByEnum.recipient, + }, + billing_address: null, + }, + ) + } + /> + + {formatRef( + PaidByEnum.recipient.toString(), + )} + + + +
+ + {shipment.payment?.paid_by && + shipment.payment?.paid_by !== + PaidByEnum.sender && ( +
+ + onChange( + shipment_index, + shipment, + { + payment: { + ...shipment.payment, + account_number: + e.target.value, + }, + }, + ) + } + /> +
+ )} +
+ + {(shipment?.billing_address || + shipment.payment?.paid_by === + PaidByEnum.third_party) && ( + <> +
+
+ +
+ + onChange( + shipment_index, + shipment, + { + billing_address: address, + }, + ) + } + trigger={ + + } + /> +
+
+ + {shipment?.billing_address && ( + + )} + + {isNone( + shipment?.billing_address, + ) && ( +
+ Add shipment billing address. + (optional) +
+ )} +
+ + )} +
+ + {/* Parcel & Items section */} +
+
+ + PACKAGES + +
+ + Add package + + } + /> +
+
+ +
+ + {shipment.parcels.map((pkg, pkg_index) => ( + + {pkg_index > 0 && ( +
+ )} + +
+ {/* Parcel header */} +
+
+ + {pkg_index + 1} + + } + /> +
+
+ - + -
-
- - ), - )} - - {(pkg.items || []).length === 0 && ( -
- You can specify content items. -
- )} - -
- - {({ editCommodity }) => ( + } + /> - )} - -
-
-
- ))} +
+
- {(shipment.parcels || []).length === 0 && ( -
- Add one or more packages to create a - shipment. -
- )} -
+ {/* Items section */} + + ITEMS + - {/* Shipping options section */} -
-
- - Shipping options - -
+ {(pkg.items || []).map( + (item, item_index) => ( + +
+
+
+

+ {item_index + 1}{" "} + {`${item.title || item.description || "Item"}`} +

+

+ {isNoneOrEmpty(item.sku) + ? "SKU: 0000000" + : `SKU: ${item.sku}`} + {getOrder( + orders, + item.parent_id, + ) && ( + + {` | ORDER: ${getOrder(orders, item.parent_id)?.order_id}`} + + )} +

+

+
+
+
+ + {formatWeight(item)} + +
+

+ { + mutation.updateItem( + shipment_index, + )( + pkg_index, + item_index, + pkg.id, + )({ + quantity: + parseInt( + e.target + .value, + ), + } as CommodityType); + }} + className="input is-small" + style={{ + width: "60px", + textAlign: + "center", + }} + {...(getParent( + orders, + item.parent_id, + ) + ? { + max: getAvailableQuantity( + shipment, + orders, + item, + item_index, + ), + } + : {})} + /> +

+ {getParent( + orders, + item.parent_id, + ) && ( +

+ + of{" "} + {getParent( + orders, + item.parent_id, + ) + ?.unfulfilled_quantity || + item.quantity} + +

+ )} +
+
+ + {({ editCommodity }) => ( + + )} + + +
+
+
+ ), + )} -
+ {(pkg.items || []).length === 0 && ( +
+ You can specify content items. +
+ )} -
- {/* shipping date */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - shipping_date: e.target.value, - }, - }) - } - /> +
+ + {({ editCommodity }) => ( + + )} + +
+
+ + ))} - {/* currency */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - currency: e.target.value, - }, - }) - } - > - - {CURRENCY_OPTIONS.map((unit) => ( - - ))} - - - {/* signature confirmation */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - signature_confirmation: - e.target.checked || null, - }, - }) - } - > - Add signature confirmation - - - {/* insurance */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - insurance: - e.target.checked === true - ? "" - : null, - }, - }) - } - > - Add insurance coverage - + {(shipment.parcels || []).length === 0 && ( +
+ Add one or more packages to create a + shipment. +
+ )} +
-
+ {/* Shipping options section */} +
+
+ + Shipping options + +
+ +
+ +
+ {/* shipping date */} onChange(shipment_index, shipment, { options: { ...shipment.options, - insurance: parseFloat( - e.target.value, - ), + shipping_date: e.target.value, }, }) } - iconLeft={ - - - - } - iconRight={ - - {shipment.options?.currency} - - } /> -
- - {/* Cash on delivery */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - cash_on_delivery: - e.target.checked === true - ? "" - : null, - }, - }) - } - > - Collect on delivery - -
- onChange(shipment_index, shipment, { options: { ...shipment.options, - cash_on_delivery: parseFloat( - e.target.value, - ), + currency: e.target.value, }, }) } - iconLeft={ - - - + > + + {CURRENCY_OPTIONS.map((unit) => ( + + ))} + + + {/* signature confirmation */} + - {shipment.options?.currency} - + onChange={(e) => + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + signature_confirmation: + e.target.checked || null, + }, + }) } - /> -
+ > + Add signature confirmation + + + {/* insurance */} + + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + insurance: + e.target.checked === true + ? "" + : null, + }, + }) + } + > + Add insurance coverage + - {/* Declared value */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - declared_value: - e.target.checked === true - ? "" - : null, - }, - }) - } - > - Add package value - +
+ + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + insurance: parseFloat( + e.target.value, + ), + }, + }) + } + iconLeft={ + + + + } + iconRight={ + + {shipment.options?.currency} + + } + /> +
-
- onChange(shipment_index, shipment, { options: { ...shipment.options, - declared_value: parseFloat( - e.target.value, - ), + cash_on_delivery: + e.target.checked === true + ? "" + : null, }, }) } - iconRight={ - - {shipment.options?.currency} - + > + Collect on delivery + + +
+ + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + cash_on_delivery: parseFloat( + e.target.value, + ), + }, + }) + } + iconLeft={ + + + + } + iconRight={ + + {shipment.options?.currency} + + } + /> +
+ + {/* Declared value */} + -
+ onChange={(e) => + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + declared_value: + e.target.checked === true + ? "" + : null, + }, + }) + } + > + Add package value + - {/* paperless trade */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - paperless_trade: e.target.checked, - }, - }) - } - > - Paperless trade - - - {/* hold at location */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - hold_at_location: e.target.checked, - }, - }) - } - > - Hold at location - - - {/* dangerous good */} - - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - dangerous_good: e.target.checked, - }, - }) - } - > - Dangerous good - -
+
+ + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + declared_value: parseFloat( + e.target.value, + ), + }, + }) + } + iconRight={ + + {shipment.options?.currency} + + } + /> +
- {/* CARRIER OPTIONS SECTION */} - {Object.keys(carrierOptions).length > 0 && ( -
- - {({ open }) => ( -
- -
- CARRIER SPECIFIC OPTIONS -
- - {open ? ( - - ) : ( - - )} - -
- - {Object.entries( - carrierOptions, - ).map(([carrier, options]) => ( - - -
+ {/* paperless trade */} + + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + paperless_trade: e.target.checked, + }, + }) + } + > + Paperless trade + + + {/* hold at location */} + + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + hold_at_location: + e.target.checked, + }, + }) + } + > + Hold at location + + + {/* dangerous good */} + + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + dangerous_good: e.target.checked, + }, + }) + } + > + Dangerous good + +
-
- {options.map( - (option, index) => ( - - {references!.options[ - carrier - ][option]?.type === - "boolean" && ( -
- - onChange( - shipment_index, - shipment, - { - options: { - ...shipment.options, - [option]: - e - .target - .checked || - null, - }, - }, - ) - } - > - - {formatRef( - option, - )} - - -
- )} + {/* CARRIER OPTIONS SECTION */} + {Object.keys(carrierOptions).length > 0 && ( +
+ + {({ open }) => ( +
+ +
+ CARRIER SPECIFIC OPTIONS +
+ + {open ? ( + + ) : ( + + )} + +
+ + {Object.entries( + carrierOptions, + ).map(([carrier, options]) => ( + + +
- {references!.options[ - carrier - ][option]?.type === - "string" && ( - <> - + {options.map( + (option, index) => ( + + {references! + .options[carrier][ + option + ]?.type === + "boolean" && ( +
- onChange( - shipment_index, - shipment, - { - options: { - ...shipment.options, - [option]: - e - .target - .value, + > + + onChange( + shipment_index, + shipment, + { + options: + { + ...shipment.options, + [option]: + e + .target + .checked || + null, + }, }, - }, - ) - } - /> - - )} - - ), - )} -
- -
-
- ))} -
-
- )} -
-
- )} - -
- -
- - onChange(shipment_index, shipment, { - reference: e.target.value as string, - }) - } - placeholder="shipment reference" - className="is-small" - autoComplete="off" - /> -
-
+ ) + } + > + + {formatRef( + option, + )} + + +
+ )} + + {references! + .options[carrier][ + option + ]?.type === + "string" && ( + <> + + onChange( + shipment_index, + shipment, + { + options: + { + ...shipment.options, + [option]: + e + .target + .value, + }, + }, + ) + } + /> + + )} + + ), + )} +
- {/* Customs declaration section */} - {isInternational(shipment) && ( -
-
- - CUSTOMS DECLARATION - -
- - Edit customs info - - } - /> +
+ + ))} + +
+ )} +
- + )}
-
- {!isNone(shipment.customs) && ( - <> - + + onChange(shipment_index, shipment, { + reference: e.target.value as string, + }) + } + placeholder="shipment reference" + className="is-small" + autoComplete="off" + /> +
+
+ + {/* Customs declaration section */} + {isInternational(shipment) && ( +
+
+ + CUSTOMS DECLARATION + +
+ + Edit customs info + } /> +
+
- {/* Commodities section */} - - COMMODITIES - +
- {( - shipment.customs!.commodities || [] - ).map((commodity, index) => ( - -
-
- + {!isNone(shipment.customs) && ( + <> + + + {/* Commodities section */} + + COMMODITIES + + + {( + shipment.customs!.commodities || + [] + ).map((commodity, index) => ( + +
-
- - {({ editCommodity }) => ( - - )} - + shipment, + )} + onClick={() => + editCommodity({ + commodity, + onSubmit: (_) => + mutation.updateCommodity( + shipment_index, + )( + index, + shipment + .customs + ?.id, + )(_), + }) + } + > + + + + + )} + + +
+
+
+ ))} + + {( + shipment.customs!.commodities || + [] + ).length === 0 && ( +
+ You need provide commodity items + for customs purpose. (required) +
+ )} + +
+ + {({ editCommodity }) => ( -
-
- - ))} - - {(shipment.customs!.commodities || []) - .length === 0 && ( -
- You need provide commodity items - for customs purpose. (required) -
- )} - -
- - {({ editCommodity }) => ( - + /> )} - - {metadata.ORDERS_MANAGEMENT && ( - - mutation.addCommodities( - _ as any, - ) - } - /> - )} -
+
- {/* Duty Billing address section */} - {(shipment.customs! - .duty_billing_address || - shipment.customs!.duty?.paid_by === - PaidByEnum.third_party) && ( - <> -
+ {/* Duty Billing address section */} + {(shipment.customs! + .duty_billing_address || + shipment.customs!.duty + ?.paid_by === + PaidByEnum.third_party) && ( + <> +
-
-
- -
- +
+ +
+ + mutation.updateShipment( + shipment_index, + )({ + customs: { + ...shipment! + .customs, + duty_billing_address: + address, + } as any, + }) + } + trigger={ + + } + /> +
+
+ + {shipment!.customs! + .duty_billing_address && ( + - mutation.updateShipment( - shipment_index, - )({ - customs: { - ...shipment! - .customs, - duty_billing_address: - address, - } as any, - }) - } - trigger={ - + shipment!.customs! + .duty_billing_address as any } /> -
-
- - {shipment!.customs! - .duty_billing_address && ( - - )} - - {isNone( - shipment!.customs! - .duty_billing_address, - ) && ( -
- Add customs duty billing - address. (optional) -
- )} -
- - )} - - )} + )} + + {isNone( + shipment!.customs! + .duty_billing_address, + ) && ( +
+ Add customs duty billing + address. (optional) +
+ )} +
+ + )} + + )} - {isNone(shipment.customs) && ( -
- Looks like you have an international - shipment. You may need to provide a - customs declaration unless you are - shipping documents only. -
- )} + {isNone(shipment.customs) && ( +
+ Looks like you have an international + shipment. You may need to provide a + customs declaration unless you are + shipping documents only. +
+ )} + - - )} + )} - {/* Shipment Summary */} - + {/* Shipment Summary */} + - {/* Metadata section */} -
-
- - onChange(shipment_index, shipment, { - metadata, - }) - } - > - - {({ isEditing, editMetadata }) => ( - <> -
- - METADATA - -
- -
-
- - )} -
-
+ {/* Metadata section */} +
+
+ + onChange(shipment_index, shipment, { + metadata, + }) + } + > + + {({ isEditing, editMetadata }) => ( + <> +
+ + METADATA + +
+ +
+
+ + )} +
+
+
-
- {/* Instructions section */} -
-
- - onChange(shipment_index, shipment, { - options: { - ...shipment.options, - instructions: e.target.value, - }, - }) - } - /> + {/* Instructions section */} +
+
+ + onChange(shipment_index, shipment, { + options: { + ...shipment.options, + instructions: e.target.value, + }, + }) + } + /> +
-
-
+
- {/* Service section */} -
-
-
- - Service - -
-
- -
-
- - {/* Shipping service */} - - {/* Dropdown trigger */} -