From 4253669cd5345f9ed230e3c54c7bce27d6fd560b Mon Sep 17 00:00:00 2001 From: Ayobami Akingbade Date: Wed, 19 Jun 2024 03:11:41 +0100 Subject: [PATCH] =?UTF-8?q?=E2=9C=A8=20feat(ui-revamp):=20move=20to=20tail?= =?UTF-8?q?wind=20and=20shadcn-ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- components.json | 17 + package-lock.json | 3570 +++++++++++++---- package.json | 33 +- postcss.config.js | 6 + src/__tests__/_/Provider.tsx | 2 +- src/__tests__/api/_test-utils/_dashboard.ts | 3 +- .../dashboard-widgets.service.ts | 7 +- .../app/alert}/Stories.tsx | 2 +- src/components/app/alert/index.tsx | 117 + .../app/breadcrumbs}/Stories.tsx | 0 .../app/breadcrumbs}/index.tsx | 2 +- .../app/button/action.tsx} | 27 +- .../app/button}/constants.ts | 7 +- src/components/app/button/form.tsx | 82 + src/components/app/button/soft.tsx | 84 + .../app/button}/types.d.ts | 16 +- src/components/app/confirm-alert.tsx | 79 + .../app/content-layout}/Stories.tsx | 0 .../app/content-layout}/index.tsx | 19 +- src/components/app/drop-down.tsx | 23 + .../app/drop-drop-menu}/Stories.tsx | 0 src/components/app/drop-drop-menu/index.tsx | 90 + .../app/empty-wrapper}/Stories.tsx | 0 src/components/app/empty-wrapper/index.tsx | 22 + .../app/empty-wrapper}/types.d.ts | 0 .../app/error-boundary.tsx} | 2 +- .../app/form/input}/Stories.tsx | 63 +- .../form/input/icon}/IconInputField.spec.tsx | 6 +- .../app/form/input/icon}/index.tsx | 6 +- .../app/form/input/label-and-error.tsx} | 55 +- .../app/form/input/number.tsx} | 4 +- .../app/form/input/password.tsx} | 4 +- .../app/form/input/select-button.tsx} | 31 +- src/components/app/form/input/spectrum.tsx | 37 + src/components/app/form/input/switch.tsx | 43 + .../app/form/input/text.tsx} | 11 +- .../app/form/input/textarea.tsx} | 24 +- .../app/form/input}/types.d.ts | 1 - .../app/form/schema}/SchemaForm.spec.tsx | 0 .../app/form/schema}/_RenderFormInput.tsx | 12 +- .../app/form/schema}/form-grid.tsx | 0 .../app/form/schema}/form-run.ts | 0 .../app/form/schema}/index.tsx | 2 +- .../app/form/schema}/types.d.ts | 0 .../app/list-manager}/ListManager.spec.tsx | 0 .../app/list-manager}/Stories.tsx | 0 .../app/list-manager}/index.tsx | 34 +- .../list-manager-item}/Stories.tsx | 0 .../list-manager/list-manager-item}/index.tsx | 118 +- .../app/list-manager}/utils.ts | 0 .../app/loading-component.tsx} | 0 src/components/app/menu-section.tsx | 127 + .../app/next-portal.tsx} | 0 src/components/app/off-canvas.tsx | 43 + .../app/pagination-table}/index.tsx | 11 +- .../useFEPagination.spec.tsx | 0 .../app/pagination-table}/useFEPagination.ts | 0 .../app/render-code}/Stories.tsx | 0 .../app/render-code}/index.tsx | 1 + .../app/render-code}/styles.ts | 0 .../index.tsx => components/app/roots.tsx} | 4 +- .../app/section-box}/Stories.tsx | 0 src/components/app/section-box/index.tsx | 67 + .../app/skeleton/form}/Stories.tsx | 0 .../app/skeleton/form}/index.tsx | 22 +- .../app/skeleton/list}/Stories.tsx | 0 .../app/skeleton/list}/index.tsx | 4 +- .../app/skeleton/table}/Stories.tsx | 0 src/components/app/skeleton/table/index.tsx | 38 + src/components/app/system-icons.tsx | 45 + src/components/app/table/Body.tsx | 53 + src/components/app/table/Foot.tsx | 35 + .../Table => components/app/table}/Head.tsx | 73 +- .../app/table}/Stories.tsx | 0 .../app/table}/Table.spec.tsx | 0 .../app/table}/_Pagination.tsx | 29 +- .../app/table}/constants.ts | 0 .../app/table}/data/index.tsx | 0 .../app/table}/filters/Boolean.tsx | 21 +- .../app/table}/filters/Date/_Selection.tsx | 21 +- .../app/table}/filters/Date/constants.ts | 0 .../app/table}/filters/Date/index.tsx | 9 +- .../app/table}/filters/IdField.tsx | 2 +- .../app/table}/filters/List.tsx | 3 +- .../app/table}/filters/Number.tsx | 30 +- .../app/table}/filters/Status.tsx | 2 +- .../app/table}/filters/Text.tsx | 2 +- .../app/table}/filters/_FilterOperator.tsx | 43 +- .../app/table}/filters/_FilterWrapper.tsx | 44 +- .../table}/filters/__tests__/index.spec.tsx | 0 .../app/table}/filters/config.tsx | 0 .../app/table}/filters/constants.ts | 0 .../app/table}/filters/index.tsx | 14 +- .../app/table}/filters/types.d.ts | 0 .../Table => components/app/table}/hooks.tsx | 0 .../Table => components/app/table}/index.tsx | 77 +- .../Table => components/app/table}/types.ts | 2 +- .../Table => components/app/table}/utils.ts | 0 src/components/app/tabs.tsx | 67 + .../app/tooltip}/Stories.tsx | 0 src/components/app/tooltip/index.tsx | 32 + .../ViewStateMachine.spec.tsx | 0 .../app/view-state-machine}/index.tsx | 4 +- src/components/ui/alert-dialog.tsx | 147 + src/components/ui/button.tsx | 57 + src/components/ui/calendar.tsx | 115 + src/components/ui/card.tsx | 74 + src/components/ui/command.tsx | 151 + src/components/ui/dialog.tsx | 125 + src/components/ui/dropdown-menu.tsx | 204 + src/components/ui/input.tsx | 22 + src/components/ui/label.tsx | 24 + src/components/ui/pagination.tsx | 133 + src/components/ui/scroll-area.tsx | 47 + src/components/ui/select.tsx | 198 + src/components/ui/separator.tsx | 30 + src/components/ui/sheet.tsx | 116 + src/components/ui/skeleton.tsx | 13 + src/components/ui/spectrum.tsx | 32 + src/components/ui/switch.tsx | 28 + src/components/ui/table.tsx | 121 + src/components/ui/tabs.tsx | 52 + src/components/ui/textarea.tsx | 25 + src/components/ui/toast.tsx | 128 + src/components/ui/toaster.tsx | 33 + src/components/ui/tooltip.tsx | 29 + src/components/ui/use-toast.ts | 190 + src/frontend/_layouts/app/IsSignedIn.tsx | 2 +- .../NavigationSideBar/NavigationSkeleton.tsx | 48 +- .../app/NavigationSideBar/Profile.tsx | 41 +- .../NavigationSideBar/RenderNavigation.tsx | 255 +- .../app/NavigationSideBar/SideBar.tsx | 147 +- .../_layouts/app/NavigationSideBar/index.tsx | 47 +- .../app/NavigationSideBar/portal/main.ts | 4 +- src/frontend/_layouts/app/constant.ts | 15 +- src/frontend/_layouts/app/index.tsx | 40 +- src/frontend/_layouts/guest/index.tsx | 61 +- src/frontend/design-system/Icons/Grab.tsx | 29 - src/frontend/design-system/Icons/System.tsx | 55 - .../design-system/components/Alert/index.tsx | 158 - .../design-system/components/Button/Button.ts | 138 - .../components/Button/FormButton/index.tsx | 108 - .../components/Button/SoftButton.tsx | 104 - .../components/Button/Stories.tsx | 80 - .../components/Button/TextButton.tsx | 37 - .../design-system/components/Card/index.ts | 43 - .../components/ConfirmAlert/Stories.tsx | 26 - .../components/ConfirmAlert/index.tsx | 144 - .../components/Dropdown/Stories.tsx | 38 - .../components/Dropdown/index.tsx | 100 - .../components/DropdownMenu/index.tsx | 281 -- .../components/EmptyWrapper/index.tsx | 37 - .../components/Form/CheckBox/index.tsx | 57 - .../components/Form/CodeEditor/index.tsx | 9 +- .../components/Form/Date/index.tsx | 63 +- .../components/Form/File/Presentation.tsx | 47 +- .../components/Form/File/index.tsx | 7 +- .../components/Form/RichText/index.tsx | 7 +- .../components/Form/Search/index.tsx | 72 - .../components/Form/Select/Async/index.tsx | 14 +- .../components/Form/Select/Simple.tsx | 66 - .../components/Form/Select/index.tsx | 93 +- .../components/Form/Select/styles.ts | 2 - .../components/Form/Select/types.ts | 4 +- .../design-system/components/Form/Styles.ts | 111 - .../components/Form/Switch/Stories.tsx | 49 - .../components/Form/Switch/index.tsx | 124 - .../components/OffCanvas/Stories.tsx | 35 - .../components/OffCanvas/index.tsx | 98 - .../components/ProgressBar/index.tsx | 67 - .../Section/MenuSection/Stories.tsx | 54 - .../components/Section/MenuSection/index.tsx | 61 - .../components/Section/SectionBox/index.tsx | 72 - .../components/Skeleton/Base/Stories.tsx | 31 - .../components/Skeleton/Base/index.tsx | 36 - .../components/Skeleton/Table/index.tsx | 46 - .../design-system/components/Table/Body.tsx | 67 - .../design-system/components/Table/Foot.tsx | 46 - .../design-system/components/Table/styles.ts | 16 - .../design-system/components/Tabs/Stories.tsx | 50 - .../components/Tabs/Tabs.spec.tsx | 113 - .../design-system/components/Tabs/index.tsx | 132 - .../components/Tooltip/index.tsx | 23 - .../components/Widgets/Summary/index.tsx | 112 +- .../design-system/components/_/Spin.ts | 14 - .../design-system/constants/breakpoints.ts | 4 - src/frontend/design-system/constants/index.ts | 1 - src/frontend/design-system/constants/sizes.ts | 6 - .../design-system/constants/zIndex.ts | 2 - src/frontend/design-system/globals/index.ts | 142 - .../design-system/globals/normalize.ts | 190 - .../design-system/globals/off-canvas.ts | 22 - src/frontend/design-system/globals/tooltip.ts | 50 - .../design-system/primitives/Divider.tsx | 6 - .../design-system/primitives/Spacer.tsx | 32 - .../design-system/primitives/Stack.tsx | 59 - .../design-system/primitives/Typo.tsx | 97 - src/frontend/design-system/theme/modes.ts | 4 +- src/frontend/design-system/theme/system.ts | 5 - src/frontend/design-system/theme/useTheme.ts | 39 +- src/frontend/docs/_base.tsx | 10 +- src/frontend/docs/constants.ts | 2 +- src/frontend/docs/crud.tsx | 5 +- src/frontend/docs/form-integrations.tsx | 4 +- src/frontend/docs/persistent-query.tsx | 2 - src/frontend/docs/relations.tsx | 2 +- src/frontend/docs/roles.tsx | 4 +- src/frontend/docs/scripts/form-scripts.tsx | 5 +- .../docs/scripts/presentations-scripts.tsx | 8 +- src/frontend/docs/scripts/widget-scripts.tsx | 5 +- src/frontend/docs/system-settings.tsx | 2 - src/frontend/docs/views.tsx | 2 - src/frontend/lib/routing/usePageDetails.ts | 2 +- .../views/Dashboard/List/_BaseDashboard.tsx | 2 +- .../Dashboard/Manage/_BaseManageDashboard.tsx | 2 +- src/frontend/views/Dashboard/Skeleton.tsx | 10 +- .../Widget/_components/WidgetFrame/index.tsx | 42 +- .../Widget/_components/WidgetHeader/index.tsx | 30 +- .../views/Dashboard/Widget/_manage/Form.tsx | 118 +- .../views/Dashboard/Widget/_manage/index.tsx | 12 +- .../Widget/_render/Summary/index.tsx | 3 +- .../Dashboard/Widget/_render/Table/index.tsx | 4 +- .../views/Dashboard/Widget/constants.tsx | 19 +- src/frontend/views/SignIn/index.tsx | 13 +- src/frontend/views/account/Password/index.tsx | 4 +- .../views/account/Preferences/index.tsx | 109 +- src/frontend/views/account/Profile/index.tsx | 14 +- src/frontend/views/account/_Base.tsx | 23 +- src/frontend/views/data/Create/index.tsx | 4 +- .../views/data/Details/DetailsView.tsx | 27 +- .../views/data/Details/RelationsDetails.tsx | 13 +- src/frontend/views/data/Details/_Layout.tsx | 17 +- src/frontend/views/data/Details/index.tsx | 2 +- .../views/data/Details/portal/main.ts | 8 +- src/frontend/views/data/OptionTag.tsx | 33 +- .../views/data/ReferenceComponent.tsx | 11 +- .../views/data/Table/DataTable/index.tsx | 6 +- .../Table/_WholeEntityTable/DetailsCanvas.tsx | 9 +- .../_WholeEntityTable/EntityDataTable.tsx | 9 +- .../data/Table/_WholeEntityTable/index.tsx | 65 +- .../Table/hooks/useCurrentTableState.store.ts | 2 +- .../data/Table/hooks/useEntityContextState.ts | 2 +- .../views/data/Table/hooks/useTableState.ts | 2 +- src/frontend/views/data/Table/portal/main.tsx | 8 +- .../views/data/Table/useTableColumns.tsx | 8 +- .../views/data/Table/useTableMenuItems.ts | 4 +- src/frontend/views/data/Update/index.tsx | 4 +- src/frontend/views/data/_BaseEntityForm.tsx | 12 +- .../data/hooks/useEntityActionButtons.ts | 4 +- src/frontend/views/data/portal/main.ts | 2 +- .../views/data/viewSpecialDataTypes.tsx | 6 +- src/frontend/views/entity/Actions/Base.tsx | 32 +- src/frontend/views/entity/Actions/Form.tsx | 2 +- src/frontend/views/entity/Actions/index.tsx | 2 +- .../Crud/EntityFieldsSelectionSettings.tsx | 22 +- src/frontend/views/entity/Crud/index.tsx | 4 +- src/frontend/views/entity/Diction/index.tsx | 14 +- .../views/entity/Fields/FieldsLabel.form.tsx | 8 +- .../views/entity/Fields/FieldsSelection.tsx | 94 +- .../views/entity/Fields/FieldsType.form.tsx | 14 +- .../views/entity/Fields/FieldsValidation.tsx | 102 +- src/frontend/views/entity/Fields/index.tsx | 14 +- .../views/entity/Fields/isBlackOrWhite.ts | 26 - src/frontend/views/entity/Form/ScriptForm.tsx | 12 +- src/frontend/views/entity/Form/index.tsx | 17 +- src/frontend/views/entity/Form/types.ts | 2 +- .../views/entity/PersistentQuery/Form.tsx | 46 +- .../views/entity/PersistentQuery/index.tsx | 12 +- .../views/entity/Presentation/index.tsx | 14 +- .../views/entity/Relations/Relations.form.tsx | 4 +- src/frontend/views/entity/Relations/index.tsx | 48 +- src/frontend/views/entity/Views/Form.tsx | 31 +- src/frontend/views/entity/Views/index.tsx | 12 +- src/frontend/views/entity/_Base.tsx | 64 +- src/frontend/views/entity/constants.ts | 4 +- src/frontend/views/entity/portal/main.ts | 4 +- src/frontend/views/integrations/Password.tsx | 14 +- src/frontend/views/integrations/_Base.tsx | 86 +- .../integrations/actions/View/Configure.tsx | 19 +- .../integrations/actions/View/Deactivate.tsx | 18 +- .../views/integrations/actions/View/index.tsx | 13 +- .../views/integrations/actions/index.tsx | 12 +- .../integrations/storage/Credentials.tsx | 12 +- .../views/integrations/storage/General.tsx | 12 +- .../views/integrations/storage/index.tsx | 4 +- src/frontend/views/roles/Create/index.tsx | 6 +- src/frontend/views/roles/List.tsx | 18 +- .../roles/Permissions/MutatePermission.tsx | 57 +- .../views/roles/Permissions/index.tsx | 12 +- src/frontend/views/settings/Data/index.tsx | 22 +- .../views/settings/Entities/Selection.tsx | 4 +- .../views/settings/Entities/index.tsx | 6 +- src/frontend/views/settings/Menu/index.tsx | 6 +- src/frontend/views/settings/Site/index.tsx | 14 +- src/frontend/views/settings/System/index.tsx | 14 +- src/frontend/views/settings/Theme/index.tsx | 14 +- .../views/settings/Variables/Base.tsx | 62 +- .../views/settings/Variables/Form.tsx | 2 +- .../Variables/ManageCredentialGroup.tsx | 45 +- .../views/settings/Versions/index.tsx | 21 +- src/frontend/views/settings/_Base.tsx | 32 +- src/frontend/views/settings/portal/main.ts | 4 +- src/frontend/views/setup/Credentials/Form.tsx | 18 +- .../views/setup/Credentials/index.tsx | 10 +- src/frontend/views/setup/User/index.tsx | 12 +- src/frontend/views/users/Create/index.tsx | 6 +- .../views/users/DatabaseLink/index.tsx | 16 +- src/frontend/views/users/List.tsx | 22 +- src/frontend/views/users/Update/index.tsx | 93 +- src/lib/utils.ts | 6 + src/pages/_app.tsx | 3 +- src/shared/constants/Icons.tsx | 4 +- src/shared/constants/colors.ts | 27 - .../getEntitySelectionConfig.spec.ts | 64 +- .../__tests__/getEntitySelections.spec.ts | 20 +- .../entities/getEntitySelectionConfig.ts | 11 +- src/shared/logic/entities/selection.utils.ts | 13 +- src/shared/types/dashboard/index.ts | 3 +- src/shared/types/ui.d.ts | 3 +- src/styles/globals.css | 69 + tailwind.config.js | 95 + tsconfig.json | 5 +- 322 files changed, 8045 insertions(+), 6479 deletions(-) create mode 100644 components.json create mode 100644 postcss.config.js rename src/{frontend/design-system/components/Alert => components/app/alert}/Stories.tsx (97%) create mode 100644 src/components/app/alert/index.tsx rename src/{frontend/design-system/components/Breadcrumbs => components/app/breadcrumbs}/Stories.tsx (100%) rename src/{frontend/design-system/components/Breadcrumbs => components/app/breadcrumbs}/index.tsx (96%) rename src/{frontend/design-system/components/Button/ActionButtons/index.tsx => components/app/button/action.tsx} (56%) rename src/{frontend/design-system/components/Button => components/app/button}/constants.ts (74%) create mode 100644 src/components/app/button/form.tsx create mode 100644 src/components/app/button/soft.tsx rename src/{frontend/design-system/components/Button => components/app/button}/types.d.ts (54%) create mode 100644 src/components/app/confirm-alert.tsx rename src/{frontend/design-system/components/Section/SectionDivider => components/app/content-layout}/Stories.tsx (100%) rename src/{frontend/design-system/components/Section/SectionDivider => components/app/content-layout}/index.tsx (69%) create mode 100644 src/components/app/drop-down.tsx rename src/{frontend/design-system/components/DropdownMenu => components/app/drop-drop-menu}/Stories.tsx (100%) create mode 100644 src/components/app/drop-drop-menu/index.tsx rename src/{frontend/design-system/components/EmptyWrapper => components/app/empty-wrapper}/Stories.tsx (100%) create mode 100644 src/components/app/empty-wrapper/index.tsx rename src/{frontend/design-system/components/EmptyWrapper => components/app/empty-wrapper}/types.d.ts (100%) rename src/{frontend/components/ErrorBoundary/index.tsx => components/app/error-boundary.tsx} (94%) rename src/{frontend/design-system/components/Form => components/app/form/input}/Stories.tsx (88%) rename src/{frontend/components/IconInputField => components/app/form/input/icon}/IconInputField.spec.tsx (96%) rename src/{frontend/components/IconInputField => components/app/form/input/icon}/index.tsx (87%) rename src/{frontend/design-system/components/Form/LabelAndError.tsx => components/app/form/input/label-and-error.tsx} (59%) rename src/{frontend/design-system/components/Form/Number/index.tsx => components/app/form/input/number.tsx} (91%) rename src/{frontend/design-system/components/Form/Password/index.tsx => components/app/form/input/password.tsx} (90%) rename src/{frontend/design-system/components/Form/SelectButton/index.tsx => components/app/form/input/select-button.tsx} (74%) create mode 100644 src/components/app/form/input/spectrum.tsx create mode 100644 src/components/app/form/input/switch.tsx rename src/{frontend/design-system/components/Form/Input/index.tsx => components/app/form/input/text.tsx} (72%) rename src/{frontend/design-system/components/Form/TextArea/index.tsx => components/app/form/input/textarea.tsx} (64%) rename src/{frontend/design-system/components/Form => components/app/form/input}/types.d.ts (97%) rename src/{frontend/components/SchemaForm => components/app/form/schema}/SchemaForm.spec.tsx (100%) rename src/{frontend/components/SchemaForm => components/app/form/schema}/_RenderFormInput.tsx (86%) rename src/{frontend/components/SchemaForm => components/app/form/schema}/form-grid.tsx (100%) rename src/{frontend/components/SchemaForm => components/app/form/schema}/form-run.ts (100%) rename src/{frontend/components/SchemaForm => components/app/form/schema}/index.tsx (98%) rename src/{frontend/components/SchemaForm => components/app/form/schema}/types.d.ts (100%) rename src/{frontend/design-system/components/ListManager => components/app/list-manager}/ListManager.spec.tsx (100%) rename src/{frontend/design-system/components/ListManager => components/app/list-manager}/Stories.tsx (100%) rename src/{frontend/design-system/components/ListManager => components/app/list-manager}/index.tsx (78%) rename src/{frontend/design-system/components/ListManager/ListManagerItem => components/app/list-manager/list-manager-item}/Stories.tsx (100%) rename src/{frontend/design-system/components/ListManager/ListManagerItem => components/app/list-manager/list-manager-item}/index.tsx (70%) rename src/{frontend/design-system/components/ListManager => components/app/list-manager}/utils.ts (100%) rename src/{frontend/design-system/components/ComponentIsLoading/index.tsx => components/app/loading-component.tsx} (100%) create mode 100644 src/components/app/menu-section.tsx rename src/{frontend/design-system/components/_/NextPortal.tsx => components/app/next-portal.tsx} (100%) create mode 100644 src/components/app/off-canvas.tsx rename src/{frontend/components/FEPaginationTable => components/app/pagination-table}/index.tsx (78%) rename src/{frontend/components/FEPaginationTable => components/app/pagination-table}/useFEPagination.spec.tsx (100%) rename src/{frontend/components/FEPaginationTable => components/app/pagination-table}/useFEPagination.ts (100%) rename src/{frontend/design-system/components/RenderCode => components/app/render-code}/Stories.tsx (100%) rename src/{frontend/design-system/components/RenderCode => components/app/render-code}/index.tsx (98%) rename src/{frontend/design-system/components/RenderCode => components/app/render-code}/styles.ts (100%) rename src/{frontend/components/ApplicationRoot/index.tsx => components/app/roots.tsx} (84%) rename src/{frontend/design-system/components/Section/SectionBox => components/app/section-box}/Stories.tsx (100%) create mode 100644 src/components/app/section-box/index.tsx rename src/{frontend/design-system/components/Skeleton/Form => components/app/skeleton/form}/Stories.tsx (100%) rename src/{frontend/design-system/components/Skeleton/Form => components/app/skeleton/form}/index.tsx (51%) rename src/{frontend/design-system/components/Skeleton/List => components/app/skeleton/list}/Stories.tsx (100%) rename src/{frontend/design-system/components/Skeleton/List => components/app/skeleton/list}/index.tsx (69%) rename src/{frontend/design-system/components/Skeleton/Table => components/app/skeleton/table}/Stories.tsx (100%) create mode 100644 src/components/app/skeleton/table/index.tsx create mode 100644 src/components/app/system-icons.tsx create mode 100644 src/components/app/table/Body.tsx create mode 100644 src/components/app/table/Foot.tsx rename src/{frontend/design-system/components/Table => components/app/table}/Head.tsx (53%) rename src/{frontend/design-system/components/Table => components/app/table}/Stories.tsx (100%) rename src/{frontend/design-system/components/Table => components/app/table}/Table.spec.tsx (100%) rename src/{frontend/design-system/components/Table => components/app/table}/_Pagination.tsx (85%) rename src/{frontend/design-system/components/Table => components/app/table}/constants.ts (100%) rename src/{frontend/design-system/components/Table => components/app/table}/data/index.tsx (100%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/Boolean.tsx (63%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/Date/_Selection.tsx (87%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/Date/constants.ts (100%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/Date/index.tsx (91%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/IdField.tsx (91%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/List.tsx (84%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/Number.tsx (55%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/Status.tsx (88%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/Text.tsx (93%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/_FilterOperator.tsx (50%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/_FilterWrapper.tsx (66%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/__tests__/index.spec.tsx (100%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/config.tsx (100%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/constants.ts (100%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/index.tsx (88%) rename src/{frontend/design-system/components/Table => components/app/table}/filters/types.d.ts (100%) rename src/{frontend/design-system/components/Table => components/app/table}/hooks.tsx (100%) rename src/{frontend/design-system/components/Table => components/app/table}/index.tsx (64%) rename src/{frontend/design-system/components/Table => components/app/table}/types.ts (94%) rename src/{frontend/design-system/components/Table => components/app/table}/utils.ts (100%) create mode 100644 src/components/app/tabs.tsx rename src/{frontend/design-system/components/Tooltip => components/app/tooltip}/Stories.tsx (100%) create mode 100644 src/components/app/tooltip/index.tsx rename src/{frontend/components/ViewStateMachine => components/app/view-state-machine}/ViewStateMachine.spec.tsx (100%) rename src/{frontend/components/ViewStateMachine => components/app/view-state-machine}/index.tsx (81%) create mode 100644 src/components/ui/alert-dialog.tsx create mode 100644 src/components/ui/button.tsx create mode 100644 src/components/ui/calendar.tsx create mode 100644 src/components/ui/card.tsx create mode 100644 src/components/ui/command.tsx create mode 100644 src/components/ui/dialog.tsx create mode 100644 src/components/ui/dropdown-menu.tsx create mode 100644 src/components/ui/input.tsx create mode 100644 src/components/ui/label.tsx create mode 100644 src/components/ui/pagination.tsx create mode 100644 src/components/ui/scroll-area.tsx create mode 100644 src/components/ui/select.tsx create mode 100644 src/components/ui/separator.tsx create mode 100644 src/components/ui/sheet.tsx create mode 100644 src/components/ui/skeleton.tsx create mode 100644 src/components/ui/spectrum.tsx create mode 100644 src/components/ui/switch.tsx create mode 100644 src/components/ui/table.tsx create mode 100644 src/components/ui/tabs.tsx create mode 100644 src/components/ui/textarea.tsx create mode 100644 src/components/ui/toast.tsx create mode 100644 src/components/ui/toaster.tsx create mode 100644 src/components/ui/tooltip.tsx create mode 100644 src/components/ui/use-toast.ts delete mode 100644 src/frontend/design-system/Icons/Grab.tsx delete mode 100644 src/frontend/design-system/Icons/System.tsx delete mode 100644 src/frontend/design-system/components/Alert/index.tsx delete mode 100644 src/frontend/design-system/components/Button/Button.ts delete mode 100644 src/frontend/design-system/components/Button/FormButton/index.tsx delete mode 100644 src/frontend/design-system/components/Button/SoftButton.tsx delete mode 100644 src/frontend/design-system/components/Button/Stories.tsx delete mode 100644 src/frontend/design-system/components/Button/TextButton.tsx delete mode 100644 src/frontend/design-system/components/Card/index.ts delete mode 100644 src/frontend/design-system/components/ConfirmAlert/Stories.tsx delete mode 100644 src/frontend/design-system/components/ConfirmAlert/index.tsx delete mode 100644 src/frontend/design-system/components/Dropdown/Stories.tsx delete mode 100644 src/frontend/design-system/components/Dropdown/index.tsx delete mode 100644 src/frontend/design-system/components/DropdownMenu/index.tsx delete mode 100644 src/frontend/design-system/components/EmptyWrapper/index.tsx delete mode 100644 src/frontend/design-system/components/Form/CheckBox/index.tsx delete mode 100644 src/frontend/design-system/components/Form/Search/index.tsx delete mode 100644 src/frontend/design-system/components/Form/Select/Simple.tsx delete mode 100644 src/frontend/design-system/components/Form/Styles.ts delete mode 100644 src/frontend/design-system/components/Form/Switch/Stories.tsx delete mode 100644 src/frontend/design-system/components/Form/Switch/index.tsx delete mode 100644 src/frontend/design-system/components/OffCanvas/Stories.tsx delete mode 100644 src/frontend/design-system/components/OffCanvas/index.tsx delete mode 100644 src/frontend/design-system/components/ProgressBar/index.tsx delete mode 100644 src/frontend/design-system/components/Section/MenuSection/Stories.tsx delete mode 100644 src/frontend/design-system/components/Section/MenuSection/index.tsx delete mode 100644 src/frontend/design-system/components/Section/SectionBox/index.tsx delete mode 100644 src/frontend/design-system/components/Skeleton/Base/Stories.tsx delete mode 100644 src/frontend/design-system/components/Skeleton/Base/index.tsx delete mode 100644 src/frontend/design-system/components/Skeleton/Table/index.tsx delete mode 100644 src/frontend/design-system/components/Table/Body.tsx delete mode 100644 src/frontend/design-system/components/Table/Foot.tsx delete mode 100644 src/frontend/design-system/components/Table/styles.ts delete mode 100644 src/frontend/design-system/components/Tabs/Stories.tsx delete mode 100644 src/frontend/design-system/components/Tabs/Tabs.spec.tsx delete mode 100644 src/frontend/design-system/components/Tabs/index.tsx delete mode 100644 src/frontend/design-system/components/Tooltip/index.tsx delete mode 100644 src/frontend/design-system/components/_/Spin.ts delete mode 100644 src/frontend/design-system/constants/sizes.ts delete mode 100644 src/frontend/design-system/globals/index.ts delete mode 100644 src/frontend/design-system/globals/normalize.ts delete mode 100644 src/frontend/design-system/globals/off-canvas.ts delete mode 100644 src/frontend/design-system/globals/tooltip.ts delete mode 100644 src/frontend/design-system/primitives/Divider.tsx delete mode 100644 src/frontend/design-system/primitives/Spacer.tsx delete mode 100644 src/frontend/design-system/primitives/Stack.tsx delete mode 100644 src/frontend/design-system/primitives/Typo.tsx delete mode 100644 src/frontend/views/entity/Fields/isBlackOrWhite.ts create mode 100644 src/lib/utils.ts delete mode 100644 src/shared/constants/colors.ts create mode 100644 src/styles/globals.css create mode 100644 tailwind.config.js diff --git a/components.json b/components.json new file mode 100644 index 000000000..124b2edb8 --- /dev/null +++ b/components.json @@ -0,0 +1,17 @@ +{ + "$schema": "https://ui.shadcn.com/schema.json", + "style": "new-york", + "rsc": false, + "tsx": true, + "tailwind": { + "config": "tailwind.config.ts", + "css": "src/styles/globals.css", + "baseColor": "zinc", + "cssVariables": true, + "prefix": "" + }, + "aliases": { + "components": "@/components", + "utils": "@/lib/utils" + } +} diff --git a/package-lock.json b/package-lock.json index 8504a41dc..c34a6fd60 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,6 +12,19 @@ "@dashpress/bacteria": "^0.0.13", "@lingui/core": "^4.10.0", "@lingui/react": "^4.10.0", + "@radix-ui/react-alert-dialog": "^1.0.5", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-scroll-area": "^1.0.5", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-separator": "^1.0.3", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.0.7", "@tanstack/query-async-storage-persister": "^5.36.0", "@tanstack/react-query": "^5.28.9", "@tanstack/react-query-persist-client": "^5.36.0", @@ -19,8 +32,11 @@ "bcrypt": "^5.0.1", "change-case": "^4.1.2", "class-validator": "^0.13.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", "cryptr": "^6.0.3", - "date-fns": "^2.28.0", + "date-fns": "^2.30.0", "execa": "^6.1.0", "final-form": "^4.20.7", "final-form-arrays": "^3.0.2", @@ -43,8 +59,8 @@ "ramda": "0.27.1", "randomstring": "^1.2.2", "react": "18.2.0", - "react-bootstrap": "^2.4.0", "react-datepicker": "^4.8.0", + "react-day-picker": "^8.10.1", "react-dom": "18.2.0", "react-dropzone": "^14.2.1", "react-easy-sort": "^1.5.0", @@ -60,8 +76,9 @@ "react-use": "^17.4.0", "redis": "^4.4.0", "styled-components": "^6.1.8", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7", "terminal-link": "^3.0.0", - "tiny-skeleton-loader-react": "^1.2.1", "winston": "^3.8.2", "zod": "^3.21.4", "zustand": "3.4.2" @@ -106,6 +123,7 @@ "@types/react-dom": "^18.0.4", "@typescript-eslint/eslint-plugin": "^5.31.0", "@typescript-eslint/parser": "^5.31.0", + "autoprefixer": "^10.4.19", "babel-loader": "^8.2.5", "commitlint-config-git-commit-emoji": "^1.0.0", "cross-env": "^7.0.3", @@ -119,9 +137,9 @@ "jest-environment-jsdom": "^29.0.3", "jest-fetch-mock": "^3.0.3", "lint-staged": "^13.0.2", - "msw": "^0.44.1", + "msw": "^0.49.3", "node-mocks-http": "^1.11.0", - "postcss": "^8.4.16", + "postcss": "^8.4.38", "prettier": "^2.7.1", "react-is": "^18.1.0", "rimraf": "^3.0.2", @@ -129,13 +147,25 @@ "rollup-plugin-svg": "^2.0.0", "rollup-plugin-svg-import": "^1.6.0", "standard-version": "^9.5.0", + "tailwindcss": "^3.4.3", "tsup": "^6.2.2", - "typescript": "^4.7.4" + "typescript": "^4.9.5" }, "engines": { "node": ">=16" } }, + "node_modules/@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -3321,7 +3351,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, "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "0.3.9" @@ -3334,7 +3364,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, "license": "MIT", "dependencies": { "@jridgewell/resolve-uri": "^3.0.3", @@ -4281,6 +4311,18 @@ "@floating-ui/core": "^1.1.0" } }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, "node_modules/@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -4319,6 +4361,90 @@ "node": ">=6.9.0" } }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -5345,17 +5471,16 @@ } }, "node_modules/@mswjs/interceptors": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.3.tgz", - "integrity": "sha512-jBRFPeHBPqKv3od8KPjmrvt4b/+e1DorizFDYJ8NQCrjFT9YGnxA8ojGi0MIo64x/JgdjYkhP8bG9EY4BGPoqg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.10.tgz", + "integrity": "sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==", "dev": true, - "license": "MIT", "dependencies": { "@open-draft/until": "^1.0.3", "@types/debug": "^4.1.7", - "@xmldom/xmldom": "^0.7.5", + "@xmldom/xmldom": "^0.8.3", "debug": "^4.3.3", - "headers-polyfill": "^3.0.4", + "headers-polyfill": "3.2.5", "outvariant": "^1.2.1", "strict-event-emitter": "^0.2.4", "web-encoding": "^1.1.5" @@ -5364,6 +5489,21 @@ "node": ">=14" } }, + "node_modules/@mswjs/interceptors/node_modules/headers-polyfill": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.2.5.tgz", + "integrity": "sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==", + "dev": true + }, + "node_modules/@mswjs/interceptors/node_modules/strict-event-emitter": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", + "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "dev": true, + "dependencies": { + "events": "^3.3.0" + } + }, "node_modules/@next/bundle-analyzer": { "version": "14.2.2", "resolved": "https://registry.npmjs.org/@next/bundle-analyzer/-/bundle-analyzer-14.2.2.tgz", @@ -5548,7 +5688,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", @@ -5562,7 +5701,6 @@ "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -5572,7 +5710,6 @@ "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", @@ -5625,8 +5762,16 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-1.0.3.tgz", "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", - "dev": true, - "license": "MIT" + "dev": true + }, + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true, + "engines": { + "node": ">=14" + } }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.10", @@ -5790,16 +5935,900 @@ "url": "https://opencollective.com/popperjs" } }, - "node_modules/@react-aria/ssr": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.3.0.tgz", - "integrity": "sha512-yNqUDuOVZIUGP81R87BJVi/ZUZp/nYOBXbPsRe7oltJOfErQZD+UezMpw4vM2KRz18cURffvmC8tJ6JTeyDtaQ==", - "license": "Apache-2.0", + "node_modules/@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + } + }, + "node_modules/@radix-ui/react-alert-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.0.5.tgz", + "integrity": "sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==", + "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-dialog": "1.0.5", + "@radix-ui/react-primitive": "1.0.3", + "@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-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "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-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==", + "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" + }, + "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-compose-refs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "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==", + "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", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "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-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==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "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==", + "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" + }, + "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.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==", + "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" + }, + "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-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==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "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==", + "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" + }, + "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-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==", + "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.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", + "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==", + "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-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==", + "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" + }, + "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-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.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==", + "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" + }, + "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-scroll-area": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.5.tgz", + "integrity": "sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@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-presence": "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" + }, + "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-select": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", + "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@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-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + }, + "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-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "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-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-compose-refs": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-switch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.3.tgz", + "integrity": "sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==", + "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-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "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-tabs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz", + "integrity": "sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "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-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "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-toast": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.5.tgz", + "integrity": "sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==", + "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-dismissable-layer": "1.0.5", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "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-use-layout-effect": "1.0.1", + "@radix-ui/react-visually-hidden": "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-tooltip": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", + "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", + "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-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-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "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-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", "dependencies": { - "@babel/runtime": "^7.6.2" + "@babel/runtime": "^7.13.10" }, "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0" + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "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", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "dependencies": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "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-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", + "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/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "dependencies": { + "@babel/runtime": "^7.13.10" } }, "node_modules/@redis/bloom": { @@ -5857,39 +6886,6 @@ "@redis/client": "^1.0.0" } }, - "node_modules/@restart/hooks": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.7.tgz", - "integrity": "sha512-ZbjlEHcG+FQtpDPHd7i4FzNNvJf2enAwZfJbpM8CW7BhmOAbsHpZe3tsHwfQUrBuyrxWqPYp2x5UMnilWcY22A==", - "license": "MIT", - "dependencies": { - "dequal": "^2.0.2" - }, - "peerDependencies": { - "react": ">=16.8.0" - } - }, - "node_modules/@restart/ui": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.3.1.tgz", - "integrity": "sha512-MYvMs2eeZTHu2dBJHOXKx72vxzEZeWbZx2z1QjeXq62iYjpjIyukBC2ZEy8x+sb9Gl0AiOiHkPXrl1wn95aOGQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.18.3", - "@popperjs/core": "^2.11.5", - "@react-aria/ssr": "^3.2.0", - "@restart/hooks": "^0.4.7", - "@types/warning": "^3.0.0", - "dequal": "^2.0.2", - "dom-helpers": "^5.2.0", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - }, - "peerDependencies": { - "react": ">=16.14.0", - "react-dom": ">=16.14.0" - } - }, "node_modules/@rollup/pluginutils": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", @@ -6971,6 +7967,28 @@ "node": ">=4" } }, + "node_modules/@storybook/builder-webpack4/node_modules/autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "dependencies": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "funding": { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + } + }, "node_modules/@storybook/builder-webpack4/node_modules/braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", @@ -11334,28 +12352,28 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "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, "license": "MIT" }, "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, "license": "MIT" }, "node_modules/@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/@types/aria-query": { @@ -11425,11 +12443,10 @@ "license": "MIT" }, "node_modules/@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/ms": "*" } @@ -11746,11 +12763,10 @@ "license": "MIT" }, "node_modules/@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", - "dev": true, - "license": "MIT" + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", + "dev": true }, "node_modules/@types/node": { "version": "18.0.3", @@ -11905,7 +12921,7 @@ "version": "18.0.6", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@types/react": "*" @@ -12003,12 +13019,6 @@ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, - "node_modules/@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==", - "license": "MIT" - }, "node_modules/@types/webpack": { "version": "4.41.33", "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", @@ -12583,9 +13593,9 @@ } }, "node_modules/@xmldom/xmldom": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", - "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==", + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", "dev": true, "engines": { "node": ">=10.0.0" @@ -12614,7 +13624,6 @@ "resolved": "https://registry.npmjs.org/@zxing/text-encoding/-/text-encoding-0.9.0.tgz", "integrity": "sha512-U/4aVJ2mxI0aDNI8Uq0wEhMgY+u4CNtEb0om3+y3+niDAsoTCOB33UF0sxpzqzdqXLqmvc+vZyAt4O8pPdfkwA==", "dev": true, - "license": "(Unlicense OR Apache-2.0)", "optional": true }, "node_modules/abab": { @@ -12659,7 +13668,7 @@ "version": "8.9.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "dev": true, + "devOptional": true, "bin": { "acorn": "bin/acorn" }, @@ -12724,7 +13733,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=0.4.0" @@ -12904,7 +13913,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "license": "MIT", "dependencies": { "color-convert": "^2.0.1" @@ -12944,14 +13952,12 @@ "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true, "license": "MIT" }, "node_modules/anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "license": "ISC", "dependencies": { "normalize-path": "^3.0.0", @@ -12990,7 +13996,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/argparse": { @@ -13000,6 +14006,17 @@ "dev": true, "license": "Python-2.0" }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/aria-query": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", @@ -13370,48 +14387,40 @@ } }, "node_modules/autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], "dependencies": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" }, "bin": { "autoprefixer": "bin/autoprefixer" }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - } - }, - "node_modules/autoprefixer/node_modules/picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "node_modules/autoprefixer/node_modules/postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "dependencies": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - }, "engines": { - "node": ">=6.0.0" + "node": "^10 || ^12 || >=14" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" + "peerDependencies": { + "postcss": "^8.1.0" } }, "node_modules/available-typed-arrays": { @@ -13877,7 +14886,6 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8" @@ -14075,7 +15083,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "license": "MIT", "dependencies": { "fill-range": "^7.0.1" @@ -14612,7 +15619,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" } @@ -14816,7 +15822,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "funding": [ { "type": "individual", @@ -14996,6 +16001,25 @@ "validator": "^13.7.0" } }, + "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==", + "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==", + "engines": { + "node": ">=6" + } + }, "node_modules/classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", @@ -15201,6 +16225,14 @@ "node": ">=6" } }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, "node_modules/cluster-key-slot": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", @@ -15209,6 +16241,19 @@ "node": ">=0.10.0" } }, + "node_modules/cmdk": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", + "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", + "dependencies": { + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-primitive": "1.0.3" + }, + "peerDependencies": { + "react": "^18.0.0", + "react-dom": "^18.0.0" + } + }, "node_modules/co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -15263,7 +16308,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "license": "MIT", "dependencies": { "color-name": "~1.1.4" @@ -15724,19 +16768,6 @@ "node": ">=10" } }, - "node_modules/conventional-changelog-core/node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/conventional-changelog-core/node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -16477,7 +17508,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, "license": "MIT" }, "node_modules/cross-env": { @@ -16740,7 +17771,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true, "bin": { "cssesc": "bin/cssesc" }, @@ -17021,9 +18051,12 @@ } }, "node_modules/date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==", + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dependencies": { + "@babel/runtime": "^7.21.0" + }, "engines": { "node": ">=0.11" }, @@ -17533,15 +18566,6 @@ "node": ">= 0.6" } }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, "node_modules/des.js": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", @@ -17614,6 +18638,11 @@ "node": ">=8" } }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, "node_modules/detect-package-manager": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", @@ -17714,11 +18743,16 @@ "wrappy": "1" } }, + "node_modules/didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "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, "license": "BSD-3-Clause", "engines": { "node": ">=0.3.1" @@ -17764,6 +18798,11 @@ "node": ">=8" } }, + "node_modules/dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, "node_modules/doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -18056,7 +19095,6 @@ "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true, "license": "MIT" }, "node_modules/ecdsa-sig-formatter": { @@ -18117,7 +19155,6 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true, "license": "MIT" }, "node_modules/emojis-list": { @@ -20146,11 +21183,9 @@ "license": "Apache-2.0" }, "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, - "license": "MIT", + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -20197,7 +21232,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "license": "ISC", "dependencies": { "reusify": "^1.0.4" @@ -20373,7 +21407,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "license": "MIT", "dependencies": { "to-regex-range": "^5.0.1" @@ -20848,6 +21881,19 @@ "node": ">= 0.6" } }, + "node_modules/fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, "node_modules/fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -20999,7 +22045,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "hasInstallScript": true, "optional": true, "os": [ @@ -21141,6 +22186,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, "node_modules/get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -21427,7 +22480,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "license": "ISC", "dependencies": { "is-glob": "^4.0.1" @@ -22032,11 +23084,10 @@ } }, "node_modules/headers-polyfill": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.0.10.tgz", - "integrity": "sha512-lOhQU7iG3AMcjmb8NIWCa+KwfJw5bY44BoWPtrj5A4iDbSD3ylGf5QcYr0ZyQnhkKQ2GgWNLdF2rfrXtXlF3nQ==", - "dev": true, - "license": "MIT" + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.3.0.tgz", + "integrity": "sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==", + "dev": true }, "node_modules/hexoid": { "version": "1.0.0", @@ -22772,7 +23823,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "license": "MIT", "dependencies": { "binary-extensions": "^2.0.0" @@ -22850,12 +23900,11 @@ "dev": true }, "node_modules/is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", - "license": "MIT", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -22953,7 +24002,6 @@ "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -23002,7 +24050,6 @@ "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", "dev": true, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -23017,7 +24064,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "license": "MIT", "dependencies": { "is-extglob": "^2.1.1" @@ -23078,7 +24124,6 @@ "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.12.0" @@ -23480,6 +24525,23 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/jackspeak": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "dependencies": { + "@isaacs/cliui": "^8.0.2" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" + } + }, "node_modules/jest": { "version": "29.0.3", "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.3.tgz", @@ -24235,7 +25297,6 @@ "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true, "bin": { "jiti": "bin/jiti.js" } @@ -25224,7 +26285,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, "license": "ISC" }, "node_modules/makeerror": { @@ -25489,19 +26550,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/meow/node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/meow/node_modules/normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -25655,7 +26703,6 @@ "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true, "license": "MIT", "engines": { "node": ">= 8" @@ -25681,7 +26728,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "license": "MIT", "dependencies": { "braces": "^3.0.2", @@ -26079,32 +27125,30 @@ "license": "MIT" }, "node_modules/msw": { - "version": "0.44.2", - "resolved": "https://registry.npmjs.org/msw/-/msw-0.44.2.tgz", - "integrity": "sha512-u8wjzzcMWouoZtuIShCwx4M3wFF5sBAV1f8K4a0WX8kiihFjzl89IKE1VYmTclLyMIwpOq8qQ1HTpuh2BFX/3A==", + "version": "0.49.3", + "resolved": "https://registry.npmjs.org/msw/-/msw-0.49.3.tgz", + "integrity": "sha512-kRCbDNbNnRq5LC1H/NUceZlrPAvSrMH6Or0mirIuH69NY84xwDruPn/hkXTovIK1KwDwbk+ZdoSyJlpiekLxEA==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "@mswjs/cookies": "^0.2.2", - "@mswjs/interceptors": "^0.17.2", + "@mswjs/interceptors": "^0.17.5", "@open-draft/until": "^1.0.3", "@types/cookie": "^0.4.1", "@types/js-levenshtein": "^1.1.1", "chalk": "4.1.1", "chokidar": "^3.4.2", "cookie": "^0.4.2", - "graphql": "^16.3.0", - "headers-polyfill": "^3.0.4", + "graphql": "^15.0.0 || ^16.0.0", + "headers-polyfill": "^3.1.0", "inquirer": "^8.2.0", "is-node-process": "^1.0.1", "js-levenshtein": "^1.1.6", "node-fetch": "^2.6.7", "outvariant": "^1.3.0", "path-to-regexp": "^6.2.0", - "statuses": "^2.0.0", - "strict-event-emitter": "^0.2.0", - "type-fest": "^1.2.2", + "strict-event-emitter": "^0.4.3", + "type-fest": "^2.19.0", "yargs": "^17.3.1" }, "bin": { @@ -26118,7 +27162,7 @@ "url": "https://opencollective.com/mswjs" }, "peerDependencies": { - "typescript": ">= 4.2.x <= 4.7.x" + "typescript": ">= 4.4.x <= 4.9.x" }, "peerDependenciesMeta": { "typescript": { @@ -26143,6 +27187,18 @@ "url": "https://github.com/chalk/chalk?sponsor=1" } }, + "node_modules/msw/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/msw/node_modules/yargs": { "version": "17.5.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", @@ -26218,7 +27274,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0", @@ -26746,7 +27801,6 @@ "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, "license": "MIT", "engines": { "node": ">=0.10.0" @@ -26936,6 +27990,14 @@ "node": ">=0.10.0" } }, + "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==", + "engines": { + "node": ">= 6" + } + }, "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -27276,11 +28338,10 @@ } }, "node_modules/outvariant": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz", - "integrity": "sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==", - "dev": true, - "license": "MIT" + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", + "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==", + "dev": true }, "node_modules/p-all": { "version": "2.1.0", @@ -27742,6 +28803,37 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "license": "MIT" }, + "node_modules/path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "dependencies": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "engines": { + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==", + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-scurry/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, "node_modules/path-to-regexp": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", @@ -27947,7 +29039,6 @@ "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, "license": "MIT", "engines": { "node": ">=8.6" @@ -28006,7 +29097,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" @@ -28129,9 +29219,9 @@ } }, "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "funding": [ { "type": "opencollective", @@ -28147,9 +29237,9 @@ } ], "dependencies": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "engines": { "node": "^10 || ^12 || >=14" @@ -28282,6 +29372,40 @@ "url": "https://opencollective.com/postcss/" } }, + "node_modules/postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "dependencies": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + }, + "engines": { + "node": ">=14.0.0" + }, + "peerDependencies": { + "postcss": "^8.0.0" + } + }, + "node_modules/postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "dependencies": { + "camelcase-css": "^2.0.1" + }, + "engines": { + "node": "^12 || ^14 || >= 16" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.4.21" + } + }, "node_modules/postcss-load-config": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", @@ -28691,6 +29815,24 @@ "postcss": "^8.1.0" } }, + "node_modules/postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "dependencies": { + "postcss-selector-parser": "^6.0.11" + }, + "engines": { + "node": ">=12.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.2.14" + } + }, "node_modules/postcss-normalize-charset": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", @@ -28888,7 +30030,6 @@ "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -28935,9 +30076,9 @@ "license": "MIT" }, "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", @@ -29218,24 +30359,6 @@ "react-is": "^16.13.1" } }, - "node_modules/prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "license": "MIT", - "dependencies": { - "react-is": "^16.3.2", - "warning": "^4.0.0" - }, - "peerDependencies": { - "react": ">=0.14.0" - } - }, - "node_modules/prop-types-extra/node_modules/react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - }, "node_modules/prop-types/node_modules/react-is": { "version": "16.13.1", "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", @@ -29406,7 +30529,6 @@ "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, "funding": [ { "type": "github", @@ -29619,36 +30741,6 @@ "object-assign": "^4.1.0" } }, - "node_modules/react-bootstrap": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.5.0.tgz", - "integrity": "sha512-j/aLR+okzbYk61TM3eDOU1NqOqnUdwyVrF+ojoCRUxPdzc2R0xXvqyRsjSoyRoCo7n82Fs/LWjPCin/QJNdwvA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.17.2", - "@restart/hooks": "^0.4.6", - "@restart/ui": "^1.3.1", - "@types/react-transition-group": "^4.4.4", - "classnames": "^2.3.1", - "dom-helpers": "^5.2.1", - "invariant": "^2.2.4", - "prop-types": "^15.8.1", - "prop-types-extra": "^1.1.0", - "react-transition-group": "^4.4.2", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - }, - "peerDependencies": { - "@types/react": ">=16.14.8", - "react": ">=16.14.0", - "react-dom": ">=16.14.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, "node_modules/react-datepicker": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.8.0.tgz", @@ -29667,6 +30759,19 @@ "react-dom": "^16.9.0 || ^17 || ^18" } }, + "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==", + "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-docgen": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz", @@ -29841,6 +30946,7 @@ "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true, "license": "MIT" }, "node_modules/react-onclickoutside": { @@ -29907,6 +31013,51 @@ "node": ">=0.10.0" } }, + "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==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "dependencies": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-select": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.4.0.tgz", @@ -29945,6 +31096,28 @@ "prop-types": "^15.5.4" } }, + "node_modules/react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "dependencies": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/react-tooltip": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.15.0.tgz", @@ -30009,6 +31182,22 @@ "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dependencies": { + "pify": "^2.3.0" + } + }, + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -30132,7 +31321,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "license": "MIT", "dependencies": { "picomatch": "^2.2.1" @@ -30621,12 +31809,11 @@ "license": "MIT" }, "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", - "license": "MIT", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -30749,7 +31936,6 @@ "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true, "license": "MIT", "engines": { "iojs": ">=1.0.0", @@ -30927,7 +32113,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "funding": [ { "type": "github", @@ -32090,10 +33275,9 @@ } }, "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "license": "BSD-3-Clause", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", "engines": { "node": ">=0.10.0" } @@ -32751,14 +33935,10 @@ } }, "node_modules/strict-event-emitter": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.4.tgz", - "integrity": "sha512-xIqTLS5azUH1djSUsLH9DbP6UnM/nI18vu8d43JigCQEoVsnY+mrlE+qv6kYqs6/1OkMnMIiL6ffedQSZStuoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "events": "^3.3.0" - } + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz", + "integrity": "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==", + "dev": true }, "node_modules/string_decoder": { "version": "1.3.0", @@ -32813,6 +33993,25 @@ "node": ">=8" } }, + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, "node_modules/string-width/node_modules/emoji-regex": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", @@ -32934,6 +34133,18 @@ "node": ">=8" } }, + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -33071,6 +34282,50 @@ "react-dom": ">= 16.8.0" } }, + "node_modules/styled-components/node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/styled-components/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, "node_modules/styled-components/node_modules/stylis": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", @@ -33121,14 +34376,13 @@ "license": "MIT" }, "node_modules/sucrase": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.25.0.tgz", - "integrity": "sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ==", - "dev": true, - "license": "MIT", + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", + "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", @@ -33139,35 +34393,90 @@ "sucrase-node": "bin/sucrase-node" }, "engines": { - "node": ">=8" + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/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==", + "dependencies": { + "balanced-match": "^1.0.0" } }, "node_modules/sucrase/node_modules/commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true, "license": "MIT", "engines": { "node": ">= 6" } }, + "node_modules/sucrase/node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "dependencies": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/sucrase/node_modules/glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "license": "ISC", + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "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": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" }, "engines": { - "node": "*" + "node": ">=16 || 14 >=14.18" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/sucrase/node_modules/minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==", + "engines": { + "node": ">=16 || 14 >=14.17" + } + }, + "node_modules/sucrase/node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -33277,6 +34586,142 @@ "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", "dev": true }, + "node_modules/tailwind-merge": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz", + "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==", + "dependencies": { + "@babel/runtime": "^7.24.1" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "dependencies": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "bin": { + "tailwind": "lib/cli.js", + "tailwindcss": "lib/cli.js" + }, + "engines": { + "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==", + "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==" + }, + "node_modules/tailwindcss/node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/tailwindcss/node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/tailwindcss/node_modules/postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "engines": { + "node": ">= 14" + }, + "peerDependencies": { + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/tailwindcss/node_modules/postcss-load-config/node_modules/lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/antonk52" + } + }, + "node_modules/tailwindcss/node_modules/yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==", + "bin": { + "yaml": "bin.mjs" + }, + "engines": { + "node": ">= 14" + } + }, "node_modules/tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -33625,7 +35070,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "license": "MIT", "dependencies": { "any-promise": "^1.0.0" @@ -33635,7 +35079,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "license": "MIT", "dependencies": { "thenify": ">= 3.1.0 < 4" @@ -33691,19 +35134,6 @@ "node": ">=0.6.0" } }, - "node_modules/tiny-skeleton-loader-react": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tiny-skeleton-loader-react/-/tiny-skeleton-loader-react-1.2.1.tgz", - "integrity": "sha512-EtGljSHATQ7DA8Usng3KE/E1ZDYCy3Qnkqje3k4WVCmYVHtEq1DbgbQIQRVfn7OGYe4z8IDquOCBsQ6PVWydqg==", - "engines": { - "node": ">=8", - "npm": ">=5" - }, - "peerDependencies": { - "react": "^16 || ^17 || ^18", - "react-dom": "^16 || ^17 || ^18" - } - }, "node_modules/tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -33788,7 +35218,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "license": "MIT", "dependencies": { "is-number": "^7.0.0" @@ -33930,14 +35359,13 @@ "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true, "license": "Apache-2.0" }, "node_modules/ts-node": { "version": "10.8.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz", "integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==", - "dev": true, + "devOptional": true, "license": "MIT", "dependencies": { "@cspotcode/source-map-support": "^0.8.0", @@ -34340,10 +35768,10 @@ } }, "node_modules/typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true, + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "devOptional": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -34400,32 +35828,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" - }, - "peerDependencies": { - "react": ">=15.0.0" - } - }, - "node_modules/uncontrollable/node_modules/@types/react": { - "version": "18.0.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz", - "integrity": "sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==", - "license": "MIT", - "dependencies": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - }, "node_modules/unfetch": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", @@ -34874,6 +36276,47 @@ "node": ">=0.10.0" } }, + "node_modules/use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.8.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "^16.9.0 || ^17.0.0 || ^18.0.0", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, "node_modules/util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -34946,7 +36389,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true, + "devOptional": true, "license": "MIT" }, "node_modules/v8-to-istanbul": { @@ -35427,7 +36870,6 @@ "resolved": "https://registry.npmjs.org/web-encoding/-/web-encoding-1.1.5.tgz", "integrity": "sha512-HYLeVCdJ0+lBYV2FvNZmv3HJ2Nt0QYXqZojk3d9FJOLkwnuhzM9tmamh8d7HPM8QqjKH8DeHkFTx+CFlWpZZDA==", "dev": true, - "license": "MIT", "dependencies": { "util": "^0.12.3" }, @@ -35436,17 +36878,15 @@ } }, "node_modules/web-encoding/node_modules/util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", "which-typed-array": "^1.1.2" } }, @@ -36092,6 +37532,23 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, + "node_modules/wrap-ansi-cjs": { + "name": "wrap-ansi", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -36230,7 +37687,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true, + "devOptional": true, "license": "MIT", "engines": { "node": ">=6" @@ -36277,6 +37734,11 @@ } }, "dependencies": { + "@alloc/quick-lru": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@alloc/quick-lru/-/quick-lru-5.2.0.tgz", + "integrity": "sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==" + }, "@ampproject/remapping": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.0.tgz", @@ -38506,7 +39968,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, "requires": { "@jridgewell/trace-mapping": "0.3.9" }, @@ -38515,7 +39977,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, "requires": { "@jridgewell/resolve-uri": "^3.0.3", "@jridgewell/sourcemap-codec": "^1.4.10" @@ -39169,6 +40631,14 @@ "@floating-ui/core": "^1.1.0" } }, + "@floating-ui/react-dom": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.0.tgz", + "integrity": "sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==", + "requires": { + "@floating-ui/dom": "^1.0.0" + } + }, "@gar/promisify": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", @@ -39198,6 +40668,59 @@ "integrity": "sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==", "dev": true }, + "@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "requires": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, + "dependencies": { + "ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==" + }, + "ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==" + }, + "string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "requires": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + } + }, + "strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "requires": { + "ansi-regex": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "requires": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + } + } + } + }, "@istanbuljs/load-nyc-config": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", @@ -39989,19 +41512,36 @@ } }, "@mswjs/interceptors": { - "version": "0.17.3", - "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.3.tgz", - "integrity": "sha512-jBRFPeHBPqKv3od8KPjmrvt4b/+e1DorizFDYJ8NQCrjFT9YGnxA8ojGi0MIo64x/JgdjYkhP8bG9EY4BGPoqg==", + "version": "0.17.10", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.17.10.tgz", + "integrity": "sha512-N8x7eSLGcmUFNWZRxT1vsHvypzIRgQYdG0rJey/rZCy6zT/30qDt8Joj7FxzGNLSwXbeZqJOMqDurp7ra4hgbw==", "dev": true, "requires": { "@open-draft/until": "^1.0.3", "@types/debug": "^4.1.7", - "@xmldom/xmldom": "^0.7.5", + "@xmldom/xmldom": "^0.8.3", "debug": "^4.3.3", - "headers-polyfill": "^3.0.4", + "headers-polyfill": "3.2.5", "outvariant": "^1.2.1", "strict-event-emitter": "^0.2.4", "web-encoding": "^1.1.5" + }, + "dependencies": { + "headers-polyfill": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.2.5.tgz", + "integrity": "sha512-tUCGvt191vNSQgttSyJoibR+VO+I6+iCHIUdhzEMJKE+EAL8BwCN7fUOZlY4ofOelNHsK+gEjxB/B+9N3EWtdA==", + "dev": true + }, + "strict-event-emitter": { + "version": "0.2.8", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.8.tgz", + "integrity": "sha512-KDf/ujU8Zud3YaLtMCcTI4xkZlZVIYxTLr+XIULexP+77EEVWixeXroLUXQXiVtH4XH2W7jr/3PT1v3zBuvc3A==", + "dev": true, + "requires": { + "events": "^3.3.0" + } + } } }, "@next/bundle-analyzer": { @@ -40101,7 +41641,6 @@ "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", - "dev": true, "requires": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -40110,14 +41649,12 @@ "@nodelib/fs.stat": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", - "dev": true + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" }, "@nodelib/fs.walk": { "version": "1.2.8", "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", - "dev": true, "requires": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -40160,6 +41697,12 @@ "integrity": "sha512-Aq58f5HiWdyDlFffbbSjAlv596h/cOnt2DO1w3DOC7OJ5EHs0hd/nycJfiu9RJbT6Yk6F1knnRRXNSpxoIVZ9Q==", "dev": true }, + "@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "optional": true + }, "@pmmmwh/react-refresh-webpack-plugin": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/@pmmmwh/react-refresh-webpack-plugin/-/react-refresh-webpack-plugin-0.5.10.tgz", @@ -40253,12 +41796,473 @@ "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" }, - "@react-aria/ssr": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.3.0.tgz", - "integrity": "sha512-yNqUDuOVZIUGP81R87BJVi/ZUZp/nYOBXbPsRe7oltJOfErQZD+UezMpw4vM2KRz18cURffvmC8tJ6JTeyDtaQ==", + "@radix-ui/number": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.0.1.tgz", + "integrity": "sha512-T5gIdVO2mmPW3NNhjNgEP3cqMXjXL9UbO0BzWcXfvdBs+BohbQxvd/K5hSVKmn9/lbTdsQVKbUcP5WLCwvUbBg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/primitive": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-alert-dialog": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-alert-dialog/-/react-alert-dialog-1.0.5.tgz", + "integrity": "sha512-OrVIOcZL0tl6xibeuGt5/+UxoT2N27KCFOPjFyfXMnchxSHZ/OW7cCX2nGlIYJrbHK/fczPcFzAwvNBB6XBNMA==", + "requires": { + "@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-dialog": "1.0.5", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@radix-ui/react-arrow": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@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==", + "requires": { + "@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": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.0.1.tgz", + "integrity": "sha512-fDSBgd44FKHa1FRMU59qBMPFcl2PZE+2nmqunj+BWFyYYjnhIDWL2ItDs3rrbJDQOtzt5nIebLCQc4QRfz6LJw==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-context": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.0.1.tgz", + "integrity": "sha512-ebbrdFoYTcuZ0v4wG5tedGnp9tzcV8awzsxYph7gXUyvnNLuTIcCk1q17JEbnVhXAKG9oX3KtchwiMIAYp9NLg==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-dialog": { + "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==", + "requires": { + "@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", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@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==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@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==", + "requires": { + "@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-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==", + "requires": { + "@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-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==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@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==", + "requires": { + "@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-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==", + "requires": {} + }, + "@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==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-label": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-label/-/react-label-2.0.2.tgz", + "integrity": "sha512-N5ehvlM7qoTLx7nWPodsPYPgMzA5WM8zZChQg8nyFJKnDO5WHdba1vv5/H6IO5LtJMfD2Q3wh1qHFGNtK0w3bQ==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@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==", + "requires": { + "@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/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==", + "requires": { + "@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-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==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@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==", + "requires": { + "@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-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==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-slot": "1.0.2" + } + }, + "@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==", + "requires": { + "@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-scroll-area": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.0.5.tgz", + "integrity": "sha512-b6PAgH4GQf9QEn8zbT2XUHpW5z8BzqEc7Kl11TwDrvuTrxlkcjTD5qa/bxgKr+nmuXKu4L/W5UZ4mlP/VG/5Gw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@radix-ui/primitive": "1.0.1", + "@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-presence": "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-select": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@radix-ui/react-select/-/react-select-2.0.0.tgz", + "integrity": "sha512-RH5b7af4oHtkcHS7pG6Sgv5rk5Wxa7XI8W5gvB1N/yiuDGZxko1ynvOiVhFM7Cis2A8zxF9bTOUVbRDzPepe6w==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/number": "1.0.1", + "@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-primitive": "1.0.3", + "@radix-ui/react-slot": "1.0.2", + "@radix-ui/react-use-callback-ref": "1.0.1", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-layout-effect": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3", + "aria-hidden": "^1.1.1", + "react-remove-scroll": "2.5.5" + } + }, + "@radix-ui/react-separator": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@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==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-compose-refs": "1.0.1" + } + }, + "@radix-ui/react-switch": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-switch/-/react-switch-1.0.3.tgz", + "integrity": "sha512-mxm87F88HyHztsI7N+ZUmEoARGkC22YVW5CaC+Byc+HRpuvCrOBPTAnXgf+tZ/7i0Sg/eOePGdMhUKhPaQEqow==", + "requires": { + "@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-primitive": "1.0.3", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-use-previous": "1.0.1", + "@radix-ui/react-use-size": "1.0.1" + } + }, + "@radix-ui/react-tabs": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.0.4.tgz", + "integrity": "sha512-egZfYY/+wRNCflXNHx+dePvnz9FbmssDTJBtgRfDY7e8SE5oIo3Py2eCB1ckAbh1Q7cQ/6yJZThJ++sgbxibog==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/primitive": "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-presence": "1.0.1", + "@radix-ui/react-primitive": "1.0.3", + "@radix-ui/react-roving-focus": "1.0.4", + "@radix-ui/react-use-controllable-state": "1.0.1" + } + }, + "@radix-ui/react-toast": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toast/-/react-toast-1.1.5.tgz", + "integrity": "sha512-fRLn227WHIBRSzuRzGJ8W+5YALxofH23y0MlPLddaIpLpCDqdE0NZlS2NRQDRiptfxDeeCjgFIpexB1/zkxDlw==", + "requires": { + "@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-dismissable-layer": "1.0.5", + "@radix-ui/react-portal": "1.0.4", + "@radix-ui/react-presence": "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-use-layout-effect": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + } + }, + "@radix-ui/react-tooltip": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tooltip/-/react-tooltip-1.0.7.tgz", + "integrity": "sha512-lPh5iKNFVQ/jav/j6ZrWq3blfDJ0OH9R6FlNUHPMqdLuQ9vwDgFsRxvl8b7Asuy5c8xmoojHUxKHQSOAvMHxyw==", + "requires": { + "@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-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-slot": "1.0.2", + "@radix-ui/react-use-controllable-state": "1.0.1", + "@radix-ui/react-visually-hidden": "1.0.3" + } + }, + "@radix-ui/react-use-callback-ref": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-controllable-state": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-escape-keydown": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-callback-ref": "1.0.1" + } + }, + "@radix-ui/react-use-layout-effect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@radix-ui/react-use-previous": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.0.1.tgz", + "integrity": "sha512-cV5La9DPwiQ7S0gf/0qiD6YgNqM5Fk97Kdrlc5yBcrF3jyEZQwm7vYFqMo4IfeHgJXsRaMvLABFtd0OVEmZhDw==", + "requires": { + "@babel/runtime": "^7.13.10" + } + }, + "@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", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/rect": "1.0.1" + } + }, + "@radix-ui/react-use-size": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", + "requires": { + "@babel/runtime": "^7.13.10", + "@radix-ui/react-use-layout-effect": "1.0.1" + } + }, + "@radix-ui/react-visually-hidden": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.0.3.tgz", + "integrity": "sha512-D4w41yN5YRKtu464TLnByKzMDG/JlMPHtfZgQAu9v6mNakUqGUI9vUrfQKz8NK41VMm/xbZbh76NUTVtIYqOMA==", "requires": { - "@babel/runtime": "^7.6.2" + "@babel/runtime": "^7.13.10", + "@radix-ui/react-primitive": "1.0.3" + } + }, + "@radix-ui/rect": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", + "requires": { + "@babel/runtime": "^7.13.10" } }, "@redis/bloom": { @@ -40301,30 +42305,6 @@ "integrity": "sha512-ThUIgo2U/g7cCuZavucQTQzA9g9JbDDY2f64u3AbAoz/8vE2lt2U37LamDUVChhaDA3IRT9R6VvJwqnUfTJzng==", "requires": {} }, - "@restart/hooks": { - "version": "0.4.7", - "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.7.tgz", - "integrity": "sha512-ZbjlEHcG+FQtpDPHd7i4FzNNvJf2enAwZfJbpM8CW7BhmOAbsHpZe3tsHwfQUrBuyrxWqPYp2x5UMnilWcY22A==", - "requires": { - "dequal": "^2.0.2" - } - }, - "@restart/ui": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.3.1.tgz", - "integrity": "sha512-MYvMs2eeZTHu2dBJHOXKx72vxzEZeWbZx2z1QjeXq62iYjpjIyukBC2ZEy8x+sb9Gl0AiOiHkPXrl1wn95aOGQ==", - "requires": { - "@babel/runtime": "^7.18.3", - "@popperjs/core": "^2.11.5", - "@react-aria/ssr": "^3.2.0", - "@restart/hooks": "^0.4.7", - "@types/warning": "^3.0.0", - "dequal": "^2.0.2", - "dom-helpers": "^5.2.0", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - } - }, "@rollup/pluginutils": { "version": "4.2.1", "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.1.tgz", @@ -41102,6 +43082,21 @@ "color-convert": "^1.9.0" } }, + "autoprefixer": { + "version": "9.8.8", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", + "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "dev": true, + "requires": { + "browserslist": "^4.12.0", + "caniuse-lite": "^1.0.30001109", + "normalize-range": "^0.1.2", + "num2fraction": "^1.2.2", + "picocolors": "^0.2.1", + "postcss": "^7.0.32", + "postcss-value-parser": "^4.1.0" + } + }, "braces": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", @@ -44491,25 +46486,25 @@ "version": "1.0.9", "resolved": "https://registry.npmjs.org/@tsconfig/node10/-/node10-1.0.9.tgz", "integrity": "sha512-jNsYVVxU8v5g43Erja32laIDHXeoNvFEpX33OK4d6hljo3jDhCBDhx5dhCCTMWUojscpAagGiRkBKxpdl9fxqA==", - "dev": true + "devOptional": true }, "@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 }, "@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 }, "@tsconfig/node16": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/@tsconfig/node16/-/node16-1.0.3.tgz", "integrity": "sha512-yOlFc+7UtL/89t2ZhjPvvB/DeAr3r+Dq58IgzsFkOAvVC6NMJXmCGjbptdXdR9qsX7pKcTL+s87FtYREi2dEEQ==", - "dev": true + "devOptional": true }, "@types/aria-query": { "version": "4.2.2", @@ -44571,9 +46566,9 @@ "dev": true }, "@types/debug": { - "version": "4.1.7", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.7.tgz", - "integrity": "sha512-9AonUzyTjXXhEOa0DnqpzZi6VHlqKMswga9EXjpXnnqxwLtdvPPtlO8evrI5D9S6asFRCQ6v+wpiUKbw+vKqyg==", + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", "dev": true, "requires": { "@types/ms": "*" @@ -44849,9 +46844,9 @@ "dev": true }, "@types/ms": { - "version": "0.7.31", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.31.tgz", - "integrity": "sha512-iiUgKzV9AuaEkZqkOLDIvlQiL6ltuZd9tGcW3gwpnX8JbuiuhFlEGmmFXEXkN50Cvq7Os88IY2v0dkDqXYWVgA==", + "version": "0.7.34", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-0.7.34.tgz", + "integrity": "sha512-nG96G3Wp6acyAgJqGasjODb+acrI7KltPiRxzHPXnP3NgI28bpQDRv53olbqGXbfcgF5aiiHmO3xpwEpS5Ld9g==", "dev": true }, "@types/node": { @@ -44996,7 +46991,7 @@ "version": "18.0.6", "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.0.6.tgz", "integrity": "sha512-/5OFZgfIPSwy+YuIBP/FgJnQnsxhZhjjrnxudMddeblOouIodEQ75X14Rr4wGSG/bknL+Omy9iWlLo1u/9GzAA==", - "dev": true, + "devOptional": true, "requires": { "@types/react": "*" } @@ -45087,11 +47082,6 @@ "integrity": "sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==", "dev": true }, - "@types/warning": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.0.tgz", - "integrity": "sha512-t/Tvs5qR47OLOr+4E9ckN8AmP2Tf16gWq+/qA4iUGS/OOyHVO8wv2vjJuX8SNOUTJyWb+2t7wJm6cXILFnOROA==" - }, "@types/webpack": { "version": "4.41.33", "resolved": "https://registry.npmjs.org/@types/webpack/-/webpack-4.41.33.tgz", @@ -45559,9 +47549,9 @@ } }, "@xmldom/xmldom": { - "version": "0.7.9", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.7.9.tgz", - "integrity": "sha512-yceMpm/xd4W2a85iqZyO09gTnHvXF6pyiWjD2jcOJs7hRoZtNNOO1eJlhHj1ixA+xip2hOyGn+LgcvLCMo5zXA==", + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", "dev": true }, "@xobotyi/scrollbar-width": { @@ -45621,7 +47611,7 @@ "version": "8.9.0", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.9.0.tgz", "integrity": "sha512-jaVNAFBHNLXspO543WnNNPZFRtavh3skAkITqD0/2aeMkKZTN+254PyhwxFYrk3vQ1xfY+2wbesJMs/JC8/PwQ==", - "dev": true + "devOptional": true }, "acorn-globals": { "version": "6.0.0", @@ -45665,7 +47655,7 @@ "version": "8.2.0", "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.2.0.tgz", "integrity": "sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==", - "dev": true + "devOptional": true }, "add-stream": { "version": "1.0.0", @@ -45795,7 +47785,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, "requires": { "color-convert": "^2.0.1" } @@ -45820,14 +47809,12 @@ "any-promise": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", - "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", - "dev": true + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==" }, "anymatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, "requires": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -45857,7 +47844,7 @@ "version": "4.1.3", "resolved": "https://registry.npmjs.org/arg/-/arg-4.1.3.tgz", "integrity": "sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==", - "dev": true + "devOptional": true }, "argparse": { "version": "2.0.1", @@ -45865,6 +47852,14 @@ "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true }, + "aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "requires": { + "tslib": "^2.0.0" + } + }, "aria-query": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.0.0.tgz", @@ -46121,36 +48116,17 @@ "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==" }, "autoprefixer": { - "version": "9.8.8", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-9.8.8.tgz", - "integrity": "sha512-eM9d/swFopRt5gdJ7jrpCwgvEMIayITpojhkkSMRsFHYuH5bkSQ4p/9qTEHtmNudUZh22Tehu7I6CxAW0IXTKA==", + "version": "10.4.19", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.19.tgz", + "integrity": "sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==", "dev": true, "requires": { - "browserslist": "^4.12.0", - "caniuse-lite": "^1.0.30001109", + "browserslist": "^4.23.0", + "caniuse-lite": "^1.0.30001599", + "fraction.js": "^4.3.7", "normalize-range": "^0.1.2", - "num2fraction": "^1.2.2", - "picocolors": "^0.2.1", - "postcss": "^7.0.32", - "postcss-value-parser": "^4.1.0" - }, - "dependencies": { - "picocolors": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-0.2.1.tgz", - "integrity": "sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==", - "dev": true - }, - "postcss": { - "version": "7.0.39", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.39.tgz", - "integrity": "sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==", - "dev": true, - "requires": { - "picocolors": "^0.2.1", - "source-map": "^0.6.1" - } - } + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" } }, "available-typed-arrays": { @@ -46495,8 +48471,7 @@ "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", - "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", - "dev": true + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" }, "bindings": { "version": "1.5.0", @@ -46654,7 +48629,6 @@ "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, "requires": { "fill-range": "^7.0.1" } @@ -47064,8 +49038,7 @@ "camelcase-css": { "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 + "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" }, "camelcase-keys": { "version": "6.2.2", @@ -47202,7 +49175,6 @@ "version": "3.5.3", "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", - "dev": true, "requires": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -47342,6 +49314,21 @@ "validator": "^13.7.0" } }, + "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==", + "requires": { + "clsx": "2.0.0" + }, + "dependencies": { + "clsx": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.0.0.tgz", + "integrity": "sha512-rQ1+kcj+ttHG0MKVGBUXwayCCF1oh39BF5COIpRzuCEv8Mwjv0XucrI2ExNTOn9IlLifGClWQcU9BrZORvtw6Q==" + } + } + }, "classnames": { "version": "2.3.2", "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", @@ -47478,11 +49465,25 @@ "shallow-clone": "^3.0.0" } }, + "clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==" + }, "cluster-key-slot": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/cluster-key-slot/-/cluster-key-slot-1.1.1.tgz", "integrity": "sha512-rwHwUfXL40Chm1r08yrhU3qpUvdVlgkKNeyeGPOxnW8/SyVDvgRaed/Uz54AqWNaTCAThlj6QAs3TZcKI0xDEw==" }, + "cmdk": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.0.0.tgz", + "integrity": "sha512-gDzVf0a09TvoJ5jnuPvygTB77+XdOSwEmJ88L6XPFPlv7T3RxbP9jgenfylrAMD0+Le1aO0nVjQUzl2g+vjz5Q==", + "requires": { + "@radix-ui/react-dialog": "1.0.5", + "@radix-ui/react-primitive": "1.0.3" + } + }, "co": { "version": "4.6.0", "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", @@ -47539,7 +49540,6 @@ "version": "2.0.1", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, "requires": { "color-name": "~1.1.4" } @@ -47901,15 +49901,6 @@ "through2": "^4.0.0" }, "dependencies": { - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -48498,7 +50489,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 }, "cross-env": { "version": "7.0.3", @@ -48692,8 +50683,7 @@ "cssesc": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "dev": true + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" }, "cssnano": { "version": "5.1.15", @@ -48905,9 +50895,12 @@ } }, "date-fns": { - "version": "2.29.3", - "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.29.3.tgz", - "integrity": "sha512-dDCnyH2WnnKusqvZZ6+jA1O51Ibt8ZMRNkDZdyAyK4YfbDwa/cEmuztzG5pk6hqlp9aSBPYcjOlktquahGwGeA==" + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "requires": { + "@babel/runtime": "^7.21.0" + } }, "dateformat": { "version": "3.0.3", @@ -49274,11 +51267,6 @@ "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true }, - "dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==" - }, "des.js": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", @@ -49327,6 +51315,11 @@ "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", "dev": true }, + "detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, "detect-package-manager": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/detect-package-manager/-/detect-package-manager-2.0.1.tgz", @@ -49401,11 +51394,16 @@ "wrappy": "1" } }, + "didyoumean": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", + "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" + }, "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 }, "diff-sequences": { "version": "29.0.0", @@ -49441,6 +51439,11 @@ "path-type": "^4.0.0" } }, + "dlv": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", + "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" + }, "doctrine": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", @@ -49672,8 +51675,7 @@ "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, "ecdsa-sig-formatter": { "version": "1.0.11", @@ -49726,8 +51728,7 @@ "emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==" }, "emojis-list": { "version": "3.0.0", @@ -51123,10 +53124,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", - "dev": true, + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "requires": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -51167,7 +53167,6 @@ "version": "1.13.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", - "dev": true, "requires": { "reusify": "^1.0.4" } @@ -51310,7 +53309,6 @@ "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, "requires": { "to-regex-range": "^5.0.1" } @@ -51674,6 +53672,12 @@ "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true }, + "fraction.js": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.7.tgz", + "integrity": "sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==", + "dev": true + }, "fragment-cache": { "version": "0.2.1", "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", @@ -51813,7 +53817,6 @@ "version": "2.3.2", "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, "optional": true }, "function-bind": { @@ -51912,6 +53915,11 @@ "hasown": "^2.0.0" } }, + "get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==" + }, "get-package-type": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", @@ -52118,7 +54126,6 @@ "version": "5.1.2", "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", - "dev": true, "requires": { "is-glob": "^4.0.1" } @@ -52562,9 +54569,9 @@ } }, "headers-polyfill": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.0.10.tgz", - "integrity": "sha512-lOhQU7iG3AMcjmb8NIWCa+KwfJw5bY44BoWPtrj5A4iDbSD3ylGf5QcYr0ZyQnhkKQ2GgWNLdF2rfrXtXlF3nQ==", + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/headers-polyfill/-/headers-polyfill-3.3.0.tgz", + "integrity": "sha512-5e57etwBpNcDc0b6KCVWEh/Ro063OxPvzVimUdM0/tsYM/T7Hfy3kknIGj78SFTOhNd8AZY41U8mOHoO4LzmIQ==", "dev": true }, "hexoid": { @@ -53092,7 +55099,6 @@ "version": "2.1.0", "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", - "dev": true, "requires": { "binary-extensions": "^2.0.0" } @@ -53135,11 +55141,11 @@ } }, "is-core-module": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.9.0.tgz", - "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.0" } }, "is-data-descriptor": { @@ -53203,8 +55209,7 @@ "is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" }, "is-finite": { "version": "1.1.0", @@ -53243,7 +55248,6 @@ "version": "4.0.3", "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, "requires": { "is-extglob": "^2.1.1" } @@ -53280,8 +55284,7 @@ "is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" }, "is-number-object": { "version": "1.0.7", @@ -53551,6 +55554,15 @@ "iterate-iterator": "^1.0.1" } }, + "jackspeak": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.1.2.tgz", + "integrity": "sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==", + "requires": { + "@isaacs/cliui": "^8.0.2", + "@pkgjs/parseargs": "^0.11.0" + } + }, "jest": { "version": "29.0.3", "resolved": "https://registry.npmjs.org/jest/-/jest-29.0.3.tgz", @@ -54105,8 +56117,7 @@ "jiti": { "version": "1.21.0", "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.0.tgz", - "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==", - "dev": true + "integrity": "sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==" }, "joycon": { "version": "3.1.1", @@ -54818,7 +56829,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 }, "makeerror": { "version": "1.0.12", @@ -55031,15 +57042,6 @@ "yargs-parser": "^20.2.3" }, "dependencies": { - "is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, "normalize-package-data": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", @@ -55152,8 +57154,7 @@ "merge2": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", - "dev": true + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" }, "methods": { "version": "1.1.2", @@ -55171,7 +57172,6 @@ "version": "4.0.5", "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", - "dev": true, "requires": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -55482,30 +57482,29 @@ "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "msw": { - "version": "0.44.2", - "resolved": "https://registry.npmjs.org/msw/-/msw-0.44.2.tgz", - "integrity": "sha512-u8wjzzcMWouoZtuIShCwx4M3wFF5sBAV1f8K4a0WX8kiihFjzl89IKE1VYmTclLyMIwpOq8qQ1HTpuh2BFX/3A==", + "version": "0.49.3", + "resolved": "https://registry.npmjs.org/msw/-/msw-0.49.3.tgz", + "integrity": "sha512-kRCbDNbNnRq5LC1H/NUceZlrPAvSrMH6Or0mirIuH69NY84xwDruPn/hkXTovIK1KwDwbk+ZdoSyJlpiekLxEA==", "dev": true, "requires": { "@mswjs/cookies": "^0.2.2", - "@mswjs/interceptors": "^0.17.2", + "@mswjs/interceptors": "^0.17.5", "@open-draft/until": "^1.0.3", "@types/cookie": "^0.4.1", "@types/js-levenshtein": "^1.1.1", "chalk": "4.1.1", "chokidar": "^3.4.2", "cookie": "^0.4.2", - "graphql": "^16.3.0", - "headers-polyfill": "^3.0.4", + "graphql": "^15.0.0 || ^16.0.0", + "headers-polyfill": "^3.1.0", "inquirer": "^8.2.0", "is-node-process": "^1.0.1", "js-levenshtein": "^1.1.6", "node-fetch": "^2.6.7", "outvariant": "^1.3.0", "path-to-regexp": "^6.2.0", - "statuses": "^2.0.0", - "strict-event-emitter": "^0.2.0", - "type-fest": "^1.2.2", + "strict-event-emitter": "^0.4.3", + "type-fest": "^2.19.0", "yargs": "^17.3.1" }, "dependencies": { @@ -55519,6 +57518,12 @@ "supports-color": "^7.1.0" } }, + "type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true + }, "yargs": { "version": "17.5.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.5.1.tgz", @@ -55579,7 +57584,6 @@ "version": "2.7.0", "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", - "dev": true, "requires": { "any-promise": "^1.0.0", "object-assign": "^4.0.1", @@ -55986,8 +57990,7 @@ "normalize-path": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" }, "normalize-range": { "version": "0.1.2", @@ -56126,6 +58129,11 @@ } } }, + "object-hash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-3.0.0.tgz", + "integrity": "sha512-RSn9F68PjH9HqtltsSnqYC1XXoWe9Bju5+213R98cNGttag9q9yAOTzdbsqvIa7aNm5WffBZFpWYr2aWrklWAw==" + }, "object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -56365,9 +58373,9 @@ "dev": true }, "outvariant": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.3.0.tgz", - "integrity": "sha512-yeWM9k6UPfG/nzxdaPlJkB2p08hCg4xP6Lx99F+vP8YF7xyZVfTmJjrrNalkmzudD4WFvNLVudQikqUmF8zhVQ==", + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.2.tgz", + "integrity": "sha512-Ou3dJ6bA/UJ5GVHxah4LnqDwZRwAmWxrG3wtrHrbGnP4RnLCtA64A4F+ae7Y8ww660JaddSoArUR5HjipWSHAQ==", "dev": true }, "p-all": { @@ -56718,6 +58726,27 @@ "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, + "path-scurry": { + "version": "1.11.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", + "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", + "requires": { + "lru-cache": "^10.2.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" + }, + "dependencies": { + "lru-cache": { + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.2.2.tgz", + "integrity": "sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==" + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + } + } + }, "path-to-regexp": { "version": "6.2.1", "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-6.2.1.tgz", @@ -56874,8 +58903,7 @@ "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" }, "pidtree": { "version": "0.6.0", @@ -56909,8 +58937,7 @@ "pirates": { "version": "4.0.5", "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.5.tgz", - "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==", - "dev": true + "integrity": "sha512-8V9+HQPupnaXMA23c5hvl69zXvTwTzyAYasnkb0Tts4XvO4CliqONMOnvlq26rkhLC3nWDFBJf73LU1e1VZLaQ==" }, "pkg-dir": { "version": "4.2.0", @@ -57000,19 +59027,19 @@ "dev": true }, "postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "version": "8.4.38", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.38.tgz", + "integrity": "sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==", "requires": { - "nanoid": "^3.3.6", + "nanoid": "^3.3.7", "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "source-map-js": "^1.2.0" }, "dependencies": { "nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==" + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" } } }, @@ -57103,6 +59130,24 @@ } } }, + "postcss-import": { + "version": "15.1.0", + "resolved": "https://registry.npmjs.org/postcss-import/-/postcss-import-15.1.0.tgz", + "integrity": "sha512-hpr+J05B2FVYUAXHeK1YyI267J/dDDhMU6B6civm8hSY1jYJnBXxzKDKDswzJmtLHryrjhnDjqqp/49t8FALew==", + "requires": { + "postcss-value-parser": "^4.0.0", + "read-cache": "^1.0.0", + "resolve": "^1.1.7" + } + }, + "postcss-js": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.1.tgz", + "integrity": "sha512-dDLF8pEO191hJMtlHFPRa8xsizHaM82MLfNkUHdUtVEV3tgTp5oj+8qbEqYM57SLfc74KSbw//4SeJma2LRVIw==", + "requires": { + "camelcase-css": "^2.0.1" + } + }, "postcss-load-config": { "version": "3.1.4", "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", @@ -57381,6 +59426,14 @@ } } }, + "postcss-nested": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-6.0.1.tgz", + "integrity": "sha512-mEp4xPMi5bSWiMbsgoPfcP74lsWLHkQbZc3sY+jWYd65CUwXrUaTp0fmNpa01ZcETKlIgUdFN/MpS2xZtqL9dQ==", + "requires": { + "postcss-selector-parser": "^6.0.11" + } + }, "postcss-normalize-charset": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-5.1.0.tgz", @@ -57503,7 +59556,6 @@ "version": "6.0.13", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", - "dev": true, "requires": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -57731,22 +59783,6 @@ } } }, - "prop-types-extra": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", - "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", - "requires": { - "react-is": "^16.3.2", - "warning": "^4.0.0" - }, - "dependencies": { - "react-is": { - "version": "16.13.1", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", - "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" - } - } - }, "property-information": { "version": "5.6.0", "resolved": "https://registry.npmjs.org/property-information/-/property-information-5.6.0.tgz", @@ -57882,8 +59918,7 @@ "queue-microtask": { "version": "1.2.3", "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" }, "quick-lru": { "version": "4.0.1", @@ -58042,25 +60077,6 @@ "object-assign": "^4.1.0" } }, - "react-bootstrap": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.5.0.tgz", - "integrity": "sha512-j/aLR+okzbYk61TM3eDOU1NqOqnUdwyVrF+ojoCRUxPdzc2R0xXvqyRsjSoyRoCo7n82Fs/LWjPCin/QJNdwvA==", - "requires": { - "@babel/runtime": "^7.17.2", - "@restart/hooks": "^0.4.6", - "@restart/ui": "^1.3.1", - "@types/react-transition-group": "^4.4.4", - "classnames": "^2.3.1", - "dom-helpers": "^5.2.1", - "invariant": "^2.2.4", - "prop-types": "^15.8.1", - "prop-types-extra": "^1.1.0", - "react-transition-group": "^4.4.2", - "uncontrollable": "^7.2.1", - "warning": "^4.0.3" - } - }, "react-datepicker": { "version": "4.8.0", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.8.0.tgz", @@ -58074,6 +60090,12 @@ "react-popper": "^2.2.5" } }, + "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==", + "requires": {} + }, "react-docgen": { "version": "5.4.3", "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-5.4.3.tgz", @@ -58197,7 +60219,8 @@ "react-lifecycles-compat": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", - "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==", + "dev": true }, "react-onclickoutside": { "version": "6.12.2", @@ -58238,6 +60261,27 @@ "integrity": "sha512-F27qZr8uUqwhWZboondsPx8tnC3Ct3SxZA3V5WyEvujRyyNv0VYPhoBg1gZ8/MV5tubQp76Trw8lTv9hzRBa+A==", "dev": true }, + "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==", + "requires": { + "react-remove-scroll-bar": "^2.3.3", + "react-style-singleton": "^2.2.1", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.0", + "use-sidecar": "^1.1.2" + } + }, + "react-remove-scroll-bar": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.6.tgz", + "integrity": "sha512-DtSYaao4mBmX+HDo5YWYdBWQwYIQQshUV/dVxFxK+KM26Wjwp1gZ6rv6OC3oujI6Bfu6Xyg3TwK533AQutsn/g==", + "requires": { + "react-style-singleton": "^2.2.1", + "tslib": "^2.0.0" + } + }, "react-select": { "version": "5.4.0", "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.4.0.tgz", @@ -58267,6 +60311,16 @@ "prop-types": "^15.5.4" } }, + "react-style-singleton": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", + "requires": { + "get-nonce": "^1.0.0", + "invariant": "^2.2.4", + "tslib": "^2.0.0" + } + }, "react-tooltip": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.15.0.tgz", @@ -58314,6 +60368,21 @@ "tslib": "^2.1.0" } }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + } + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -58405,7 +60474,6 @@ "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", - "dev": true, "requires": { "picomatch": "^2.2.1" } @@ -58775,11 +60843,11 @@ "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==" }, "resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "requires": { - "is-core-module": "^2.9.0", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } @@ -58861,8 +60929,7 @@ "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", - "dev": true + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" }, "rfdc": { "version": "1.3.0", @@ -59003,7 +61070,6 @@ "version": "1.2.0", "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", - "dev": true, "requires": { "queue-microtask": "^1.2.2" } @@ -59908,9 +61974,9 @@ "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" }, "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==" }, "source-map-resolve": { "version": "0.6.0", @@ -60436,13 +62502,10 @@ "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==" }, "strict-event-emitter": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.2.4.tgz", - "integrity": "sha512-xIqTLS5azUH1djSUsLH9DbP6UnM/nI18vu8d43JigCQEoVsnY+mrlE+qv6kYqs6/1OkMnMIiL6ffedQSZStuoQ==", - "dev": true, - "requires": { - "events": "^3.3.0" - } + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.4.6.tgz", + "integrity": "sha512-12KWeb+wixJohmnwNFerbyiBrAlq5qJLwIt38etRtKtmmHyDSoGlIqFE9wx+4IwG0aDjI7GV8tc8ZccjWZZtTg==", + "dev": true }, "string_decoder": { "version": "1.3.0", @@ -60491,6 +62554,23 @@ } } }, + "string-width-cjs": { + "version": "npm:string-width@4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + } + } + }, "string.prototype.matchall": { "version": "4.0.7", "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.7.tgz", @@ -60573,6 +62653,14 @@ "ansi-regex": "^5.0.1" } }, + "strip-ansi-cjs": { + "version": "npm:strip-ansi@6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, "strip-bom": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", @@ -60659,6 +62747,21 @@ "tslib": "2.5.0" }, "dependencies": { + "nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==" + }, + "postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "requires": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + } + }, "stylis": { "version": "4.3.1", "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.1.tgz", @@ -60690,38 +62793,70 @@ "integrity": "sha512-xGPXiFVl4YED9Jh7Euv2V220mriG9u4B2TA6Ybjc1catrstKD2PpIdU3U0RKpkVBC2EhmL/F0sPCr9vrFTNRag==" }, "sucrase": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.25.0.tgz", - "integrity": "sha512-WxTtwEYXSmZArPGStGBicyRsg5TBEFhT5b7N+tF+zauImP0Acy+CoUK0/byJ8JNPK/5lbpWIVuFagI4+0l85QQ==", - "dev": true, + "version": "3.35.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.35.0.tgz", + "integrity": "sha512-8EbVDiu9iN/nESwxeSxDKe0dunta1GOlHufmSSXxMD2z2/tMZpDMpvXQGsc+ajGo8y2uYUmixaSRUc/QPoQ0GA==", "requires": { + "@jridgewell/gen-mapping": "^0.3.2", "commander": "^4.0.0", - "glob": "7.1.6", + "glob": "^10.3.10", "lines-and-columns": "^1.1.6", "mz": "^2.7.0", "pirates": "^4.0.1", "ts-interface-checker": "^0.1.9" }, "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, "commander": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", - "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", - "dev": true + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==" + }, + "foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", + "requires": { + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" + } }, "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, + "version": "10.4.1", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.4.1.tgz", + "integrity": "sha512-2jelhlq3E4ho74ZyVLN03oKdAZVUa6UDZzFLVH1H7dnoax+y9qyaq8zBkfDIggjniU19z0wU18y16jMB2eyVIw==", "requires": { - "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": "^3.1.2", + "minimatch": "^9.0.4", + "minipass": "^7.1.2", + "path-scurry": "^1.11.1" + } + }, + "minimatch": { + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", + "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", + "requires": { + "brace-expansion": "^2.0.1" } + }, + "minipass": { + "version": "7.1.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.2.tgz", + "integrity": "sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==" + }, + "signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" } } }, @@ -60800,6 +62935,90 @@ "integrity": "sha512-AsS729u2RHUfEra9xJrE39peJcc2stq2+poBXX8bcM08Y6g9j/i/PUzwNQqkaJde7Ntg1TO7bSREbR5sdosQ+g==", "dev": true }, + "tailwind-merge": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.3.0.tgz", + "integrity": "sha512-vkYrLpIP+lgR0tQCG6AP7zZXCTLc1Lnv/CCRT3BqJ9CZ3ui2++GPaGb1x/ILsINIMSYqqvrpqjUFsMNLlW99EA==", + "requires": { + "@babel/runtime": "^7.24.1" + } + }, + "tailwindcss": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.3.tgz", + "integrity": "sha512-U7sxQk/n397Bmx4JHbJx/iSOOv5G+II3f1kpLpY2QeUv5DcPdcTsYLlusZfq1NthHS1c1cZoyFmmkex1rzke0A==", + "requires": { + "@alloc/quick-lru": "^5.2.0", + "arg": "^5.0.2", + "chokidar": "^3.5.3", + "didyoumean": "^1.2.2", + "dlv": "^1.1.3", + "fast-glob": "^3.3.0", + "glob-parent": "^6.0.2", + "is-glob": "^4.0.3", + "jiti": "^1.21.0", + "lilconfig": "^2.1.0", + "micromatch": "^4.0.5", + "normalize-path": "^3.0.0", + "object-hash": "^3.0.0", + "picocolors": "^1.0.0", + "postcss": "^8.4.23", + "postcss-import": "^15.1.0", + "postcss-js": "^4.0.1", + "postcss-load-config": "^4.0.1", + "postcss-nested": "^6.0.1", + "postcss-selector-parser": "^6.0.11", + "resolve": "^1.22.2", + "sucrase": "^3.32.0" + }, + "dependencies": { + "arg": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", + "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" + }, + "glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "requires": { + "is-glob": "^4.0.3" + } + }, + "lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==" + }, + "postcss-load-config": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.2.tgz", + "integrity": "sha512-bSVhyJGL00wMVoPUzAVAnbEoWyqRxkjv64tUl427SKnPrENtq6hJwUojroMz2VB+Q1edmi4IfrAPpami5VVgMQ==", + "requires": { + "lilconfig": "^3.0.0", + "yaml": "^2.3.4" + }, + "dependencies": { + "lilconfig": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.1.tgz", + "integrity": "sha512-O18pf7nyvHTckunPWCV1XUNXU1piu01y2b7ATJ0ppkUkk8ocqVWBrYjJBCwHDjD/ZWcfyrA0P4gKhzWGi5EINQ==" + } + } + }, + "yaml": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.4.2.tgz", + "integrity": "sha512-B3VqDZ+JAg1nZpaEmWtTXUlBneoGx6CPM9b0TENK6aoSu5t73dItudwdgmi6tHlIZZId4dZ9skcAQ2UbcyAeVA==" + } + } + }, + "tailwindcss-animate": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/tailwindcss-animate/-/tailwindcss-animate-1.0.7.tgz", + "integrity": "sha512-bl6mpH3T7I3UFxuvDEXLxy/VuFxBk5bbzplh7tXI68mwMokNYd1t9qPBHlnyTwfa4JGC4zP516I1hYYtQ/vspA==", + "requires": {} + }, "tapable": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/tapable/-/tapable-1.1.3.tgz", @@ -61069,7 +63288,6 @@ "version": "3.3.1", "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", - "dev": true, "requires": { "any-promise": "^1.0.0" } @@ -61078,7 +63296,6 @@ "version": "1.6.0", "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", - "dev": true, "requires": { "thenify": ">= 3.1.0 < 4" } @@ -61117,12 +63334,6 @@ "setimmediate": "^1.0.4" } }, - "tiny-skeleton-loader-react": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/tiny-skeleton-loader-react/-/tiny-skeleton-loader-react-1.2.1.tgz", - "integrity": "sha512-EtGljSHATQ7DA8Usng3KE/E1ZDYCy3Qnkqje3k4WVCmYVHtEq1DbgbQIQRVfn7OGYe4z8IDquOCBsQ6PVWydqg==", - "requires": {} - }, "tmp": { "version": "0.0.33", "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", @@ -61191,7 +63402,6 @@ "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "requires": { "is-number": "^7.0.0" } @@ -61290,14 +63500,13 @@ "ts-interface-checker": { "version": "0.1.13", "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", - "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", - "dev": true + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==" }, "ts-node": { "version": "10.8.2", "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.8.2.tgz", "integrity": "sha512-LYdGnoGddf1D6v8REPtIH+5iq/gTDuZqv2/UJUU7tKjuEU8xVZorBM+buCGNjj+pGEud+sOoM4CX3/YzINpENA==", - "dev": true, + "devOptional": true, "requires": { "@cspotcode/source-map-support": "^0.8.0", "@tsconfig/node10": "^1.0.7", @@ -61566,10 +63775,10 @@ } }, "typescript": { - "version": "4.7.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.7.4.tgz", - "integrity": "sha512-C0WQT0gezHuw6AdY1M2jxUO83Rjf0HP7Sk1DtXj6j1EwkQNZrHAg2XPWlq62oqEhYvONq5pkC2Y9oPljWToLmQ==", - "dev": true + "version": "4.9.5", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.9.5.tgz", + "integrity": "sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==", + "devOptional": true }, "ua-parser-js": { "version": "0.7.35", @@ -61595,29 +63804,6 @@ "which-boxed-primitive": "^1.0.2" } }, - "uncontrollable": { - "version": "7.2.1", - "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", - "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", - "requires": { - "@babel/runtime": "^7.6.3", - "@types/react": ">=16.9.11", - "invariant": "^2.2.4", - "react-lifecycles-compat": "^3.0.4" - }, - "dependencies": { - "@types/react": { - "version": "18.0.17", - "resolved": "https://registry.npmjs.org/@types/react/-/react-18.0.17.tgz", - "integrity": "sha512-38ETy4tL+rn4uQQi7mB81G7V1g0u2ryquNmsVIOKUAEIDK+3CUjZ6rSRpdvS99dNBnkLFL83qfmtLacGOTIhwQ==", - "requires": { - "@types/prop-types": "*", - "@types/scheduler": "*", - "csstype": "^3.0.2" - } - } - } - }, "unfetch": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/unfetch/-/unfetch-4.2.0.tgz", @@ -61942,6 +64128,23 @@ "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", "dev": true }, + "use-callback-ref": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.2.tgz", + "integrity": "sha512-elOQwe6Q8gqZgDA8mrh44qRTQqpIHDcZ3hXTLjBe1i4ph8XpNJnO+aQf3NaG+lriLopI4HMx9VjQLfPQ6vhnoA==", + "requires": { + "tslib": "^2.0.0" + } + }, + "use-sidecar": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", + "requires": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + } + }, "util": { "version": "0.10.4", "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", @@ -62005,7 +64208,7 @@ "version": "3.0.1", "resolved": "https://registry.npmjs.org/v8-compile-cache-lib/-/v8-compile-cache-lib-3.0.1.tgz", "integrity": "sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==", - "dev": true + "devOptional": true }, "v8-to-istanbul": { "version": "9.0.1", @@ -62415,16 +64618,15 @@ }, "dependencies": { "util": { - "version": "0.12.4", - "resolved": "https://registry.npmjs.org/util/-/util-0.12.4.tgz", - "integrity": "sha512-bxZ9qtSlGUWSOy9Qa9Xgk11kSslpuZwaxCg4sNIDj6FLucDab2JxnHwyNTCpHMtK1MjoQiWQ6DiUMZYbSrO+Sw==", + "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, "requires": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", "is-generator-function": "^1.0.7", "is-typed-array": "^1.1.3", - "safe-buffer": "^5.1.2", "which-typed-array": "^1.1.2" } } @@ -62898,6 +65100,16 @@ "strip-ansi": "^6.0.0" } }, + "wrap-ansi-cjs": { + "version": "npm:wrap-ansi@7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", @@ -62987,7 +65199,7 @@ "version": "3.1.1", "resolved": "https://registry.npmjs.org/yn/-/yn-3.1.1.tgz", "integrity": "sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==", - "dev": true + "devOptional": true }, "yocto-queue": { "version": "0.1.0", diff --git a/package.json b/package.json index 948445068..117b60815 100644 --- a/package.json +++ b/package.json @@ -20,7 +20,7 @@ "translations:extract": "lingui extract --clean", "translations:compile": "lingui compile", "lint": "eslint --ext ts,tsx .", - "lint:fix": "eslint --fix", + "lint:fix": "eslint --fix --ext ts,tsx .", "verify": "node ./scripts/ci && npm run typecheck && npm run lint && npm run test:cov", "storybook": "start-storybook -p 6006", "prepare": "husky install" @@ -37,6 +37,19 @@ "@dashpress/bacteria": "^0.0.13", "@lingui/core": "^4.10.0", "@lingui/react": "^4.10.0", + "@radix-ui/react-alert-dialog": "^1.0.5", + "@radix-ui/react-dialog": "^1.0.5", + "@radix-ui/react-dropdown-menu": "^2.0.6", + "@radix-ui/react-icons": "^1.3.0", + "@radix-ui/react-label": "^2.0.2", + "@radix-ui/react-scroll-area": "^1.0.5", + "@radix-ui/react-select": "^2.0.0", + "@radix-ui/react-separator": "^1.0.3", + "@radix-ui/react-slot": "^1.0.2", + "@radix-ui/react-switch": "^1.0.3", + "@radix-ui/react-tabs": "^1.0.4", + "@radix-ui/react-toast": "^1.1.5", + "@radix-ui/react-tooltip": "^1.0.7", "@tanstack/query-async-storage-persister": "^5.36.0", "@tanstack/react-query": "^5.28.9", "@tanstack/react-query-persist-client": "^5.36.0", @@ -44,8 +57,11 @@ "bcrypt": "^5.0.1", "change-case": "^4.1.2", "class-validator": "^0.13.2", + "class-variance-authority": "^0.7.0", + "clsx": "^2.1.1", + "cmdk": "^1.0.0", "cryptr": "^6.0.3", - "date-fns": "^2.28.0", + "date-fns": "^2.30.0", "execa": "^6.1.0", "final-form": "^4.20.7", "final-form-arrays": "^3.0.2", @@ -68,8 +84,8 @@ "ramda": "0.27.1", "randomstring": "^1.2.2", "react": "18.2.0", - "react-bootstrap": "^2.4.0", "react-datepicker": "^4.8.0", + "react-day-picker": "^8.10.1", "react-dom": "18.2.0", "react-dropzone": "^14.2.1", "react-easy-sort": "^1.5.0", @@ -85,8 +101,9 @@ "react-use": "^17.4.0", "redis": "^4.4.0", "styled-components": "^6.1.8", + "tailwind-merge": "^2.3.0", + "tailwindcss-animate": "^1.0.7", "terminal-link": "^3.0.0", - "tiny-skeleton-loader-react": "^1.2.1", "winston": "^3.8.2", "zod": "^3.21.4", "zustand": "3.4.2" @@ -128,6 +145,7 @@ "@types/react-dom": "^18.0.4", "@typescript-eslint/eslint-plugin": "^5.31.0", "@typescript-eslint/parser": "^5.31.0", + "autoprefixer": "^10.4.19", "babel-loader": "^8.2.5", "commitlint-config-git-commit-emoji": "^1.0.0", "cross-env": "^7.0.3", @@ -141,9 +159,9 @@ "jest-environment-jsdom": "^29.0.3", "jest-fetch-mock": "^3.0.3", "lint-staged": "^13.0.2", - "msw": "^0.44.1", + "msw": "^0.49.3", "node-mocks-http": "^1.11.0", - "postcss": "^8.4.16", + "postcss": "^8.4.38", "prettier": "^2.7.1", "react-is": "^18.1.0", "rimraf": "^3.0.2", @@ -151,8 +169,9 @@ "rollup-plugin-svg": "^2.0.0", "rollup-plugin-svg-import": "^1.6.0", "standard-version": "^9.5.0", + "tailwindcss": "^3.4.3", "tsup": "^6.2.2", - "typescript": "^4.7.4" + "typescript": "^4.9.5" }, "engines": { "node": ">=16" diff --git a/postcss.config.js b/postcss.config.js new file mode 100644 index 000000000..12a703d90 --- /dev/null +++ b/postcss.config.js @@ -0,0 +1,6 @@ +module.exports = { + plugins: { + tailwindcss: {}, + autoprefixer: {}, + }, +}; diff --git a/src/__tests__/_/Provider.tsx b/src/__tests__/_/Provider.tsx index a09b9de55..9a2aea556 100644 --- a/src/__tests__/_/Provider.tsx +++ b/src/__tests__/_/Provider.tsx @@ -3,12 +3,12 @@ import { Toaster } from "react-hot-toast"; import { ThemeContextProvider } from "frontend/design-system/theme/Context"; import { LinguiProvider } from "translations/utils"; import { Messages } from "@lingui/core"; -import { ConfirmAlert } from "frontend/design-system/components/ConfirmAlert"; import { QueryCache, QueryClient, QueryClientProvider, } from "@tanstack/react-query"; +import { ConfirmAlert } from "@/components/app/confirm-alert"; export const queryCache = new QueryCache(); diff --git a/src/__tests__/api/_test-utils/_dashboard.ts b/src/__tests__/api/_test-utils/_dashboard.ts index a14f8828a..739975bee 100644 --- a/src/__tests__/api/_test-utils/_dashboard.ts +++ b/src/__tests__/api/_test-utils/_dashboard.ts @@ -1,5 +1,4 @@ import { createConfigDomainPersistenceService } from "backend/lib/config-persistence"; -import { ROYGBIV } from "shared/constants/colors"; import { HOME_DASHBOARD_KEY, IWidgetConfig } from "shared/types/dashboard"; const TEST_DASHBOARDS: Array = [ @@ -17,7 +16,7 @@ const TEST_DASHBOARDS: Array = [ title: "Widget 2", entity: "base-model", queryId: "", - color: ROYGBIV.blue, + color: "blue", icon: "home", script: `return await $.query("SELECT count(*) FROM tests")`, }, diff --git a/src/backend/dashboard-widgets/dashboard-widgets.service.ts b/src/backend/dashboard-widgets/dashboard-widgets.service.ts index 742316b4c..f14fb1a46 100644 --- a/src/backend/dashboard-widgets/dashboard-widgets.service.ts +++ b/src/backend/dashboard-widgets/dashboard-widgets.service.ts @@ -18,7 +18,6 @@ import { import { rolesApiService, RolesApiService } from "backend/roles/roles.service"; import { userFriendlyCase } from "shared/lib/strings/friendly-case"; import { nanoid } from "nanoid"; -import { ROYGBIV } from "shared/constants/colors"; import { SystemIconsList } from "shared/constants/Icons"; import { BadRequestError } from "backend/lib/errors"; import { @@ -30,11 +29,11 @@ import { relativeDateNotationToActualDate } from "backend/data/data-access/time. import { ILabelValue } from "shared/types/options"; import { sortListByOrder } from "shared/lib/array/sort"; import { DATA_SOURCES_CONFIG } from "shared/types/data-sources"; -import { typescriptSafeObjectDotKeys } from "shared/lib/objects"; import { mutateGeneratedDashboardWidgets, PORTAL_DASHBOARD_PERMISSION, } from "./portal"; +import { SPECTRUM_COLORS } from "@/components/ui/spectrum"; const runAsyncJavascriptString = async ( javascriptString: string, @@ -120,8 +119,6 @@ export class DashboardWidgetsApiService { } private generateDashboardWidgets = async (entitiesToShow: ILabelValue[]) => { - const colorsList = typescriptSafeObjectDotKeys(ROYGBIV); - const DEFAULT_NUMBER_OF_SUMMARY_CARDS = 8; const dbCredentials = await RDBMSDataApiService.getDbCredentials(); @@ -155,7 +152,7 @@ export class DashboardWidgetsApiService { title: userFriendlyCase(`${entity.value}`), _type: "summary-card", entity: entity.value, - color: colorsList[index % (colorsList.length - 1)], + color: SPECTRUM_COLORS[index % (SPECTRUM_COLORS.length - 1)], icon: SystemIconsList[index % (SystemIconsList.length - 1)], script: dateField ? `const actual = await $.query(${queryQuote}${plainCountQuery}${queryQuote}); diff --git a/src/frontend/design-system/components/Alert/Stories.tsx b/src/components/app/alert/Stories.tsx similarity index 97% rename from src/frontend/design-system/components/Alert/Stories.tsx rename to src/components/app/alert/Stories.tsx index 9aff65b8e..65996c404 100644 --- a/src/frontend/design-system/components/Alert/Stories.tsx +++ b/src/components/app/alert/Stories.tsx @@ -4,7 +4,7 @@ import { Story } from "@storybook/react"; import { GitHub } from "react-feather"; import { action } from "@storybook/addon-actions"; import { TestProviders } from "__tests__/_/Provider"; -import { Alert, IProps, AlertType } from "."; +import { Alert, AlertType, IProps } from "."; export default { title: "Components/Alert", diff --git a/src/components/app/alert/index.tsx b/src/components/app/alert/index.tsx new file mode 100644 index 000000000..49c5709d0 --- /dev/null +++ b/src/components/app/alert/index.tsx @@ -0,0 +1,117 @@ +import { useEffect } from "react"; +import { + AlertTriangle, + ThumbsUp, + Icon, + Info as InfoIcon, + X, +} from "react-feather"; +import { SYSTEM_COLORS } from "frontend/design-system/theme/system"; +import { getBestErrorMessage } from "frontend/lib/toast/utils"; +import { useToggle } from "frontend/hooks/state/useToggleState"; +import { cn } from "@/lib/utils"; +import { SpectrumColorTypes, spectrumVariants } from "@/components/ui/spectrum"; +import { Button } from "@/components/ui/button"; + +export enum AlertType { + Success = "success", + Error = "danger", + Warning = "warning", + Info = "info", +} + +interface IAlert { + message: Record | string | unknown; + action?: { + label: string; + action: () => void; + Icon: Icon; + }; + renderJsx?: boolean; +} + +export type IProps = { + type: AlertType; +} & IAlert; + +const AlertMap: Record< + AlertType, + { Icon: Icon; spectrum: SpectrumColorTypes } +> = { + [AlertType.Info]: { Icon: InfoIcon, spectrum: "blue" }, + [AlertType.Error]: { Icon: AlertTriangle, spectrum: "red" }, + [AlertType.Warning]: { Icon: AlertTriangle, spectrum: "yellow" }, + [AlertType.Success]: { Icon: ThumbsUp, spectrum: "green" }, +}; + +export function Alert({ type, message, renderJsx, action }: IProps) { + const renderMode = useToggle(true); + const { Icon: IconCmp, spectrum } = AlertMap[type]; + useEffect(() => { + renderMode.on(); + }, [message]); + + if (!renderMode.isOn || !message) { + return null; + } + + const hexColor = SYSTEM_COLORS[spectrum]; + + return ( +
+
+ +
+
+

+ {(renderJsx ? message : getBestErrorMessage(message)) as string} +

+ {action && ( + + )} +
+ {type !== AlertType.Error && ( + + )} +
+ ); +} + +export function ErrorAlert(props: IAlert) { + return ; +} +export function SuccessAlert(props: IAlert) { + return ; +} +export function InfoAlert(props: IAlert) { + return ; +} +export function WarningAlert(props: IAlert) { + return ; +} diff --git a/src/frontend/design-system/components/Breadcrumbs/Stories.tsx b/src/components/app/breadcrumbs/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/Breadcrumbs/Stories.tsx rename to src/components/app/breadcrumbs/Stories.tsx diff --git a/src/frontend/design-system/components/Breadcrumbs/index.tsx b/src/components/app/breadcrumbs/index.tsx similarity index 96% rename from src/frontend/design-system/components/Breadcrumbs/index.tsx rename to src/components/app/breadcrumbs/index.tsx index e442f6138..813be34ed 100644 --- a/src/frontend/design-system/components/Breadcrumbs/index.tsx +++ b/src/components/app/breadcrumbs/index.tsx @@ -1,7 +1,7 @@ import styled, { css } from "styled-components"; import { USE_ROOT_COLOR } from "frontend/design-system/theme/root"; import { ILabelValue } from "shared/types/options"; - +// TODO https://ui.shadcn.com/docs/components/breadcrumb const Breadcrumb = styled.ol` display: flex; flex-wrap: wrap; diff --git a/src/frontend/design-system/components/Button/ActionButtons/index.tsx b/src/components/app/button/action.tsx similarity index 56% rename from src/frontend/design-system/components/Button/ActionButtons/index.tsx rename to src/components/app/button/action.tsx index ce3a2a206..2ab2377c8 100644 --- a/src/frontend/design-system/components/Button/ActionButtons/index.tsx +++ b/src/components/app/button/action.tsx @@ -1,18 +1,18 @@ -import { Stack } from "frontend/design-system/primitives/Stack"; -import { SoftButton } from "../SoftButton"; -import { DropDownMenu } from "../../DropdownMenu"; -import { IGroupActionButton } from "../types"; +import { VariantProps } from "class-variance-authority"; -const ELLIPSIS_THRESHOLD = 3; +import { buttonVariants } from "@/components/ui/button"; +import { IGroupActionButton } from "./types"; +import { SoftButton } from "./soft"; +import { DropDownMenu } from "../drop-drop-menu"; + +const ELLIPSIS_THRESHOLD = 1; export function ActionButtons({ actionButtons, - justIcons, size, }: { actionButtons: IGroupActionButton[]; - justIcons?: true; - size?: "sm" | "xs"; + size?: VariantProps["size"]; }) { if (actionButtons.length === 0) { return null; @@ -24,14 +24,9 @@ export function ActionButtons({ const ellipsisButtons = sortedActions.slice(ELLIPSIS_THRESHOLD); return ( - +
{buttonsToShow.map((actionButton) => ( - + ))} {ellipsisButtons.length > 0 && ( )} - +
); } diff --git a/src/frontend/design-system/components/Button/constants.ts b/src/components/app/button/constants.ts similarity index 74% rename from src/frontend/design-system/components/Button/constants.ts rename to src/components/app/button/constants.ts index 63aa85c99..46e56ecc7 100644 --- a/src/frontend/design-system/components/Button/constants.ts +++ b/src/components/app/button/constants.ts @@ -1,16 +1,17 @@ import { MessageDescriptor } from "@lingui/core"; import { msg } from "@lingui/macro"; -import { IGroupActionButton } from "./types"; +import { IMenuActionItem } from "./types"; export const DELETE_BUTTON_PROPS = (props: { action: () => void; isMakingRequest: boolean; label: MessageDescriptor; shouldConfirmAlert?: undefined; -}): IGroupActionButton => ({ +}): IMenuActionItem => ({ id: "delete", systemIcon: "Thrash", shouldConfirmAlert: msg`Confirm Delete`, - color: "danger", + destructive: true, + variant: "destructive", ...props, }); diff --git a/src/components/app/button/form.tsx b/src/components/app/button/form.tsx new file mode 100644 index 000000000..fefdea9d5 --- /dev/null +++ b/src/components/app/button/form.tsx @@ -0,0 +1,82 @@ +import { Loader } from "react-feather"; +import { SystemIconsKeys } from "shared/constants/Icons"; +import React from "react"; +import { MessageDescriptor } from "@lingui/core"; +import { useLingui } from "@lingui/react"; +import { VariantProps } from "class-variance-authority"; +import { Button, buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; +import { SystemIcon } from "../system-icons"; + +interface IFormButton { + text: (isMakingRequest: boolean) => MessageDescriptor; + systemIcon: SystemIconsKeys; + isMakingRequest: boolean; + onClick?: (e: React.MouseEvent) => void; + disabled?: boolean; + size?: VariantProps["size"]; + variant?: "outline"; + className?: string; +} + +export function ActionButtonIsMakingRequest({ + isMakingRequest, + systemIcon, + text, +}: { + isMakingRequest: boolean; + text: (isMakingRequest: boolean) => MessageDescriptor; + systemIcon: SystemIconsKeys; +}) { + const { _ } = useLingui(); + + return ( +
+ {isMakingRequest ? ( + <> + + {_(text(true))} + + ) : ( + <> + + {_(text(false))} + + )} +
+ ); +} + +export function FormButton({ + text, + disabled, + isMakingRequest, + onClick, + systemIcon, + variant, + size = "lg", + className, +}: IFormButton) { + const toRender = ( + + ); + + return ( +
+ +
+ ); +} diff --git a/src/components/app/button/soft.tsx b/src/components/app/button/soft.tsx new file mode 100644 index 000000000..e9650b220 --- /dev/null +++ b/src/components/app/button/soft.tsx @@ -0,0 +1,84 @@ +import Link from "next/link"; +import { Loader } from "react-feather"; +import { BaseSyntheticEvent } from "react"; +import { useLingui } from "@lingui/react"; +import { Tooltip } from "../tooltip"; +import { Button, buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; +import { useConfirmAlert } from "../confirm-alert"; +import { IActionButton } from "./types"; +import { SystemIcon } from "../system-icons"; + +export function SoftButton({ + label, + size, + systemIcon, + shouldConfirmAlert, + disabled, + isMakingRequest, + action, + variant = "soft", + className, +}: IActionButton) { + const confirmAlert = useConfirmAlert(); + + const { _ } = useLingui(); + + const labelString = _(label); + + // eslint-disable-next-line no-nested-ternary + const content = isMakingRequest ? ( + + ) : size === "icon" ? ( + + ) : ( +
+ + {labelString} +
+ ); + + const buttonProps = { + "aria-label": size === "icon" ? labelString : undefined, + }; + + const buttonElement = + typeof action === "string" ? ( + + {content} + + ) : ( + + ); + + return size === "icon" ? ( + {buttonElement} + ) : ( + buttonElement + ); +} diff --git a/src/frontend/design-system/components/Button/types.d.ts b/src/components/app/button/types.d.ts similarity index 54% rename from src/frontend/design-system/components/Button/types.d.ts rename to src/components/app/button/types.d.ts index aab2c0052..f19e089c9 100644 --- a/src/frontend/design-system/components/Button/types.d.ts +++ b/src/components/app/button/types.d.ts @@ -1,22 +1,26 @@ import { MessageDescriptor } from "@lingui/core"; -import { SYSTEM_COLORS } from "frontend/design-system/theme/system"; import { SystemIconsKeys } from "shared/constants/Icons"; +import { VariantProps } from "class-variance-authority"; +import { buttonVariants } from "@/components/ui/button"; export interface IActionButton { label: MessageDescriptor; systemIcon: SystemIconsKeys; action: string | (() => void); disabled?: boolean; + className?: string; shouldConfirmAlert?: MessageDescriptor; - size?: "sm" | "xs"; - block?: true; - noToolTip?: true; - justIcon?: true; + size?: VariantProps["size"]; + variant?: VariantProps["variant"]; isMakingRequest?: boolean; - color?: keyof typeof SYSTEM_COLORS; } export interface IGroupActionButton extends IActionButton { id: string; order?: number; } + +export interface IMenuActionItem extends IGroupActionButton { + subtle?: boolean; + destructive?: boolean; +} diff --git a/src/components/app/confirm-alert.tsx b/src/components/app/confirm-alert.tsx new file mode 100644 index 000000000..3ad51868d --- /dev/null +++ b/src/components/app/confirm-alert.tsx @@ -0,0 +1,79 @@ +import { t } from "@lingui/macro"; +import { createStore } from "frontend/lib/store"; +import { MessageDescriptor } from "@lingui/core"; +import { useLingui } from "@lingui/react"; +import { + AlertDialog, + AlertDialogAction, + AlertDialogContent, + AlertDialogCancel, + AlertDialogDescription, + AlertDialogFooter, + AlertDialogHeader, + AlertDialogTitle, +} from "@/components/ui/alert-dialog"; +import { NextPortal } from "./next-portal"; + +interface IConfirmAlertDetails { + title: MessageDescriptor; + action: () => void; +} + +type IStore = { + title?: MessageDescriptor; + action?: () => void; + setDetails: (details: IConfirmAlertDetails) => void; + onClose: () => void; +}; + +const useConfirmAlertStore = createStore((set) => ({ + setDetails: (details: IConfirmAlertDetails) => set(() => details), + onClose: () => + set(() => ({ + title: undefined, + action: undefined, + })), +})); + +export const useConfirmAlert = () => { + const confirmAlert = useConfirmAlertStore((store) => store.setDetails); + + return confirmAlert; +}; + +export function ConfirmAlert() { + const { _ } = useLingui(); + const [title, action, onClose] = useConfirmAlertStore((store) => [ + store.title, + store.action, + store.onClose, + ]); + + if (!title) { + return null; + } + + return ( + + + + + {_(title)} + + {t`Are you sure you want to do this?`} + + + + {t`Cancel`} + { + action(); + onClose(); + }} + >{t`Continue`} + + + + + ); +} diff --git a/src/frontend/design-system/components/Section/SectionDivider/Stories.tsx b/src/components/app/content-layout/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/Section/SectionDivider/Stories.tsx rename to src/components/app/content-layout/Stories.tsx diff --git a/src/frontend/design-system/components/Section/SectionDivider/index.tsx b/src/components/app/content-layout/index.tsx similarity index 69% rename from src/frontend/design-system/components/Section/SectionDivider/index.tsx rename to src/components/app/content-layout/index.tsx index dfd790428..d82695620 100644 --- a/src/frontend/design-system/components/Section/SectionDivider/index.tsx +++ b/src/components/app/content-layout/index.tsx @@ -1,8 +1,6 @@ import { ReactElement, ReactNode } from "react"; import styled from "styled-components"; -import { Spacer } from "frontend/design-system/primitives/Spacer"; -import { Stack } from "frontend/design-system/primitives/Stack"; -import { BREAKPOINTS } from "../../../constants"; +import { BREAKPOINTS } from "@/frontend/design-system/constants"; interface IProps { children: ReactNode; @@ -29,17 +27,12 @@ export const ContentLayout: TContentLayout = ({ children }: IProps) => { }; ContentLayout.Left = function SectionLeft({ children }: IProps) { - return ( -
- {children} - -
- ); + return
{children}
; }; ContentLayout.Right = function SectionRight({ children }: IProps) { return ( -
+
{children}
); @@ -47,8 +40,8 @@ ContentLayout.Right = function SectionRight({ children }: IProps) { ContentLayout.Center = function SectionCenter({ children }: IProps) { return ( - -
{children}
-
+
+
{children}
+
); }; diff --git a/src/components/app/drop-down.tsx b/src/components/app/drop-down.tsx new file mode 100644 index 000000000..2938e5dc5 --- /dev/null +++ b/src/components/app/drop-down.tsx @@ -0,0 +1,23 @@ +import { ReactNode } from "react"; +import { + DropdownMenuTrigger, + DropdownMenu, + DropdownMenuContent, +} from "@/components/ui/dropdown-menu"; + +export interface IProps { + target: ReactNode; + children: ReactNode; + className?: string; +} + +export function Dropdown({ target, children, className }: IProps) { + return ( + + {target} + + {children} + + + ); +} diff --git a/src/frontend/design-system/components/DropdownMenu/Stories.tsx b/src/components/app/drop-drop-menu/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/DropdownMenu/Stories.tsx rename to src/components/app/drop-drop-menu/Stories.tsx diff --git a/src/components/app/drop-drop-menu/index.tsx b/src/components/app/drop-drop-menu/index.tsx new file mode 100644 index 000000000..cc0811d70 --- /dev/null +++ b/src/components/app/drop-drop-menu/index.tsx @@ -0,0 +1,90 @@ +import { useState, useEffect, useMemo } from "react"; +import { ChevronDown, MoreVertical } from "react-feather"; + +import { Button } from "@/components/ui/button"; +import { + DropdownMenu, + DropdownMenuContent, + DropdownMenuTrigger, +} from "@/components/ui/dropdown-menu"; +import { useToggle } from "@/frontend/hooks/state/useToggleState"; +import { MenuSection } from "@/components/app/menu-section"; +import { IMenuActionItem } from "../button/types"; +import { SoftButton } from "../button/soft"; + +export interface IProps { + menuItems: IMenuActionItem[]; + ariaLabel: string; + disabled?: boolean; + ellipsis?: true; + className?: string; +} + +export function DropDownMenu({ + menuItems: menuItems$1, + ellipsis, + ariaLabel, + className, +}: IProps) { + const menuItems = useMemo(() => { + return [...menuItems$1].sort((a, b) => { + return (a.order || 0) - (b.order || 0); + }); + }, [menuItems$1]); + + const [currentMenuItem, setCurrentMenuItem] = useState( + menuItems?.[0] + ); + + useEffect(() => { + setCurrentMenuItem(menuItems[0]); + }, [JSON.stringify(menuItems)]); + + if (menuItems.length === 0) { + return null; + } + + if (menuItems.length === 1 && !ellipsis) { + return ; + } + + // TODO + // const onMenuItemClick = (menuIndex: number) => { + // const menuItem = menuItems[menuIndex]; + // setCurrentMenuItem(menuItem); + // }; + + const { isOn: isOpen, toggle } = useToggle(false); + + return ( +
+ {!ellipsis && ( + + )} + + + {ellipsis ? ( + + ) : ( + + )} + + + + + +
+ ); +} diff --git a/src/frontend/design-system/components/EmptyWrapper/Stories.tsx b/src/components/app/empty-wrapper/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/EmptyWrapper/Stories.tsx rename to src/components/app/empty-wrapper/Stories.tsx diff --git a/src/components/app/empty-wrapper/index.tsx b/src/components/app/empty-wrapper/index.tsx new file mode 100644 index 000000000..5c612066b --- /dev/null +++ b/src/components/app/empty-wrapper/index.tsx @@ -0,0 +1,22 @@ +import { Frown } from "react-feather"; +import { useLingui } from "@lingui/react"; +import { IEmptyWrapperProps } from "./types"; +import { SoftButton } from "../button/soft"; + +export function EmptyWrapper({ text, createNew }: IEmptyWrapperProps) { + const { _ } = useLingui(); + return ( +
+ +

{_(text)}

+ {createNew && ( + + )} +
+ ); +} diff --git a/src/frontend/design-system/components/EmptyWrapper/types.d.ts b/src/components/app/empty-wrapper/types.d.ts similarity index 100% rename from src/frontend/design-system/components/EmptyWrapper/types.d.ts rename to src/components/app/empty-wrapper/types.d.ts diff --git a/src/frontend/components/ErrorBoundary/index.tsx b/src/components/app/error-boundary.tsx similarity index 94% rename from src/frontend/components/ErrorBoundary/index.tsx rename to src/components/app/error-boundary.tsx index 0bf0c1313..d37c5e4c1 100644 --- a/src/frontend/components/ErrorBoundary/index.tsx +++ b/src/components/app/error-boundary.tsx @@ -1,6 +1,6 @@ -import { ErrorAlert } from "frontend/design-system/components/Alert"; import { Component, ErrorInfo, ReactNode } from "react"; import { GitHub } from "react-feather"; +import { ErrorAlert } from "./alert"; export class ErrorBoundary extends Component< { children: ReactNode }, diff --git a/src/frontend/design-system/components/Form/Stories.tsx b/src/components/app/form/input/Stories.tsx similarity index 88% rename from src/frontend/design-system/components/Form/Stories.tsx rename to src/components/app/form/input/Stories.tsx index ae5f35cae..ba434e950 100644 --- a/src/frontend/design-system/components/Form/Stories.tsx +++ b/src/components/app/form/input/Stories.tsx @@ -4,26 +4,26 @@ import { Story } from "@storybook/react"; import { Field, Form } from "react-final-form"; import { action } from "@storybook/addon-actions"; import { required } from "frontend/lib/validations"; -import { Stack } from "frontend/design-system/primitives/Stack"; import { fakeMessageDescriptor } from "translations/fake"; import { TestProviders } from "__tests__/_/Provider"; -import { FormCheckBox } from "./CheckBox"; -import { FormInput } from "./Input"; -import { FormNumberInput } from "./Number"; -import { FormRichTextArea } from "./RichText"; -import { FormButton } from "../Button/FormButton"; -import { FormDateInput } from "./Date"; -import { FormTextArea } from "./TextArea"; -import { FormMultiSelect, FormSelect } from "./Select"; -import { FormCodeEditor } from "./CodeEditor"; -import { AsyncFormSelect } from "./Select/Async"; -import { FormSwitch } from "./Switch"; -import { FormSearch } from "./Search"; -import { FormFileInput } from "./File"; -import { FormSelectButton } from "./SelectButton"; -import { ActionButtons } from "../Button/ActionButtons"; -import { DELETE_BUTTON_PROPS } from "../Button/constants"; -import { FormPasswordInput } from "./Password"; +import { FormInput } from "./text"; +import { FormNumberInput } from "./number"; +import { FormRichTextArea } from "../../../../frontend/design-system/components/Form/RichText"; +import { FormDateInput } from "../../../../frontend/design-system/components/Form/Date"; +import { FormTextArea } from "./textarea"; +import { + FormMultiSelect, + FormSelect, +} from "../../../../frontend/design-system/components/Form/Select"; +import { FormCodeEditor } from "../../../../frontend/design-system/components/Form/CodeEditor"; +import { AsyncFormSelect } from "../../../../frontend/design-system/components/Form/Select/Async"; +import { FormSwitch } from "./switch"; +import { FormFileInput } from "../../../../frontend/design-system/components/Form/File"; +import { FormSelectButton } from "./select-button"; +import { DELETE_BUTTON_PROPS } from "../../button/constants"; +import { FormPasswordInput } from "./password"; +import { FormButton } from "../../button/form"; +import { ActionButtons } from "../../button/action"; function DemoForm() { return ( @@ -31,15 +31,6 @@ function DemoForm() { onSubmit={(values: unknown) => action(values as string)} render={({ handleSubmit }) => (
- - {(formProps) => ( - - )} - - {(formProps) => ( - - {(formProps) => ( - - )} - - {(formProps) => ( - {}} /> - - +
fakeMessageDescriptor( @@ -388,7 +367,7 @@ function DemoForm() { isMakingRequest={false} systemIcon="Save" /> - +
)} /> diff --git a/src/frontend/components/IconInputField/IconInputField.spec.tsx b/src/components/app/form/input/icon/IconInputField.spec.tsx similarity index 96% rename from src/frontend/components/IconInputField/IconInputField.spec.tsx rename to src/components/app/form/input/icon/IconInputField.spec.tsx index 759ed5cbc..cb206357f 100644 --- a/src/frontend/components/IconInputField/IconInputField.spec.tsx +++ b/src/components/app/form/input/icon/IconInputField.spec.tsx @@ -2,11 +2,11 @@ import * as React from "react"; import { render, screen } from "@testing-library/react"; import { Form } from "react-final-form"; import userEvent from "@testing-library/user-event"; -import { FormButton } from "frontend/design-system/components/Button/FormButton"; import { USE_ROUTER_PARAMS } from "__tests__/_/constants"; import { msg } from "@lingui/macro"; import { TestProviders } from "__tests__/_/Provider"; import { IconInputField } from "."; +import { FormButton } from "@/components/app/button/form"; function TestComponent({ onSubmit, @@ -19,10 +19,10 @@ function TestComponent({
{ + render={({ handleSubmit, pristine }) => { return ( - + msg`Save`} diff --git a/src/frontend/components/IconInputField/index.tsx b/src/components/app/form/input/icon/index.tsx similarity index 87% rename from src/frontend/components/IconInputField/index.tsx rename to src/components/app/form/input/icon/index.tsx index bd902a938..be9a13a15 100644 --- a/src/frontend/components/IconInputField/index.tsx +++ b/src/components/app/form/input/icon/index.tsx @@ -3,14 +3,14 @@ import { SystemIconsKeys, SystemIconsList } from "shared/constants/Icons"; import { required } from "frontend/lib/validations"; import { userFriendlyCase } from "shared/lib/strings/friendly-case"; import { FormSelect } from "frontend/design-system/components/Form/Select"; -import { FormTextArea } from "frontend/design-system/components/Form/TextArea"; import { msg } from "@lingui/macro"; +import { FormTextArea } from "../textarea"; -export function IconInputField({ value }: { value: string }) { +export function IconInputField() { return ( {({ input, meta }) => - SystemIconsList.includes(value as SystemIconsKeys) ? ( + SystemIconsList.includes(input.value as SystemIconsKeys) ? ( ) => meta && meta.touched && meta.invalid && meta.error; @@ -24,66 +23,66 @@ export function LabelAndError({ formInput, children }: IProps) { input, required, description, - sm, rightActions = [], } = formInput; return ( <> - +
{label && ( <> - - {i18n._(label)} - - {required ? * : null} + + {required ? ( + * + ) : null} )} {description ? ( - - + + ) : null}
{rightActions.length > 0 && ( - +
{rightActions.map((rightAction) => ( ))} - +
)} -
+
{children} - {isFormMetaWithError(meta)}   - +

); } +// :eyes this is applied correctly on all forms + export const generateClassNames = (meta: FieldMetaState): string => - classnames({ - invalid: !!isFormMetaWithError(meta), + cn({ + "ring-1 !ring-red-600": !!isFormMetaWithError(meta), }); export const generateFormArias = ( meta?: FieldMetaState ): Record => { - if (!meta) { - return {}; - } + const formArias = {}; + if (isFormMetaWithError(meta)) { - return { "aria-invalid": "true" }; + formArias["aria-invalid"] = "true"; } - return {}; + return formArias; }; diff --git a/src/frontend/design-system/components/Form/Number/index.tsx b/src/components/app/form/input/number.tsx similarity index 91% rename from src/frontend/design-system/components/Form/Number/index.tsx rename to src/components/app/form/input/number.tsx index 7f7b3ee81..469d40473 100644 --- a/src/frontend/design-system/components/Form/Number/index.tsx +++ b/src/components/app/form/input/number.tsx @@ -1,6 +1,6 @@ import { ChangeEvent, useEffect } from "react"; -import { ISharedFormInput } from "../types"; -import { FormInput } from "../Input"; +import { ISharedFormInput } from "./types"; +import { FormInput } from "./text"; interface IFormNumberInput extends ISharedFormInput { allowNegative?: boolean; diff --git a/src/frontend/design-system/components/Form/Password/index.tsx b/src/components/app/form/input/password.tsx similarity index 90% rename from src/frontend/design-system/components/Form/Password/index.tsx rename to src/components/app/form/input/password.tsx index b9edb0538..e2e63d38d 100644 --- a/src/frontend/design-system/components/Form/Password/index.tsx +++ b/src/components/app/form/input/password.tsx @@ -1,7 +1,7 @@ import { useToggle } from "frontend/hooks/state/useToggleState"; import { msg } from "@lingui/macro"; -import { ISharedFormInput } from "../types"; -import { FormInput } from "../Input"; +import { ISharedFormInput } from "./types"; +import { FormInput } from "./text"; export function FormPasswordInput(formInput: ISharedFormInput) { const { rightActions = [] } = formInput; diff --git a/src/frontend/design-system/components/Form/SelectButton/index.tsx b/src/components/app/form/input/select-button.tsx similarity index 74% rename from src/frontend/design-system/components/Form/SelectButton/index.tsx rename to src/components/app/form/input/select-button.tsx index d6b3d65a0..f77f8d764 100644 --- a/src/frontend/design-system/components/Form/SelectButton/index.tsx +++ b/src/components/app/form/input/select-button.tsx @@ -2,18 +2,11 @@ import styled from "styled-components"; import { sluggify } from "shared/lib/strings"; import { ISelectData } from "shared/types/options"; import { useLingui } from "@lingui/react"; -import { OutlineButton } from "../../Button/Button"; -import { IBaseFormSelect } from "../Select/types"; -import { LabelAndError } from "../LabelAndError"; - -// interface IProps { -// name: string; -// disabled?: boolean; -// sm?: boolean; -// options: ISelectData[]; -// value: string | boolean; -// onChange: (value: string | boolean) => void; -// } +import { VariantProps } from "class-variance-authority"; +import { Button, buttonVariants } from "@/components/ui/button"; +import { cn } from "@/lib/utils"; +import { LabelAndError } from "./label-and-error"; +import { IBaseFormSelect } from "@/frontend/design-system/components/Form/Select/types"; const Input = styled.input` position: absolute; @@ -39,10 +32,11 @@ const Root = styled.div` interface IFormSelect extends IBaseFormSelect { selectData: ISelectData[]; + size?: VariantProps["size"]; } export function FormSelectButton(formInput: IFormSelect) { - const { input, selectData, disabled, sm } = formInput; + const { input, selectData, disabled, size } = formInput; const { _ } = useLingui(); return ( @@ -53,14 +47,17 @@ export function FormSelectButton(formInput: IFormSelect) { input.value === value || (index === 0 && input.value === undefined); return ( - input.onChange(value)} > {_(label)} - + ); })} diff --git a/src/components/app/form/input/spectrum.tsx b/src/components/app/form/input/spectrum.tsx new file mode 100644 index 000000000..9390e99a4 --- /dev/null +++ b/src/components/app/form/input/spectrum.tsx @@ -0,0 +1,37 @@ +import { Check } from "react-feather"; +import { Button } from "@/components/ui/button"; +import { SPECTRUM_COLORS, spectrumVariants } from "@/components/ui/spectrum"; +import { cn } from "@/lib/utils"; +import { LabelAndError } from "./label-and-error"; +import { ILabelAndErrorProps } from "./types"; + +export function SpectrumColorInputField({ + formInput, +}: { + formInput: ILabelAndErrorProps; +}) { + return ( + +
+ {SPECTRUM_COLORS.map((spectrum) => ( + + ))} +
+
+ ); +} diff --git a/src/components/app/form/input/switch.tsx b/src/components/app/form/input/switch.tsx new file mode 100644 index 000000000..d9e7cfca8 --- /dev/null +++ b/src/components/app/form/input/switch.tsx @@ -0,0 +1,43 @@ +import { useEffect } from "react"; +import { MessageDescriptor } from "@lingui/core"; +import { useLingui } from "@lingui/react"; +import { Switch } from "@/components/ui/switch"; +import { Label } from "@/components/ui/label"; + +export interface IProps { + value: boolean; + onChange: (value: boolean) => void; + label?: MessageDescriptor; + name: string; + disabled?: boolean; +} + +export function FormSwitch(props: IProps) { + const { value, onChange, name, label, disabled } = props; + + const { _ } = useLingui(); + + useEffect(() => { + if (value === undefined) { + onChange(false); + } + }, [value, onChange]); + + return ( +
+ { + onChange(!value); + }} + /> + {label && ( + + )} +
+ ); +} diff --git a/src/frontend/design-system/components/Form/Input/index.tsx b/src/components/app/form/input/text.tsx similarity index 72% rename from src/frontend/design-system/components/Form/Input/index.tsx rename to src/components/app/form/input/text.tsx index ab4feb894..d8c701b6a 100644 --- a/src/frontend/design-system/components/Form/Input/index.tsx +++ b/src/components/app/form/input/text.tsx @@ -1,7 +1,11 @@ import { useLingui } from "@lingui/react"; -import { Input } from "../Styles"; -import { LabelAndError, generateFormArias } from "../LabelAndError"; -import { ISharedFormInput } from "../types"; +import { + LabelAndError, + generateClassNames, + generateFormArias, +} from "./label-and-error"; +import { Input } from "@/components/ui/input"; +import { ISharedFormInput } from "./types"; interface IFormInput extends ISharedFormInput { type?: "email" | "password" | "url" | "color" | "number"; @@ -18,6 +22,7 @@ export function FormInput(formInput: IFormInput) { required={required} type={type} id={input.name} + className={generateClassNames(meta)} placeholder={placeholder ? _(placeholder) : null} disabled={disabled} /> diff --git a/src/frontend/design-system/components/Form/TextArea/index.tsx b/src/components/app/form/input/textarea.tsx similarity index 64% rename from src/frontend/design-system/components/Form/TextArea/index.tsx rename to src/components/app/form/input/textarea.tsx index 1c6f45a26..5541bda1c 100644 --- a/src/frontend/design-system/components/Form/TextArea/index.tsx +++ b/src/components/app/form/input/textarea.tsx @@ -1,14 +1,11 @@ -import styled from "styled-components"; import { useLingui } from "@lingui/react"; -import { Input } from "../Styles"; -import { ISharedFormInput } from "../types"; -import { generateFormArias, LabelAndError } from "../LabelAndError"; - -const TextArea = styled(Input)` - height: auto; - overflow: auto; - resize: vertical; -`; +import { + generateClassNames, + generateFormArias, + LabelAndError, +} from "./label-and-error"; +import { Textarea } from "@/components/ui/textarea"; +import { ISharedFormInput } from "./types"; interface IFormTextArea extends ISharedFormInput { rows?: number; @@ -19,12 +16,11 @@ export function FormTextArea(formInput: IFormTextArea) { const { _ } = useLingui(); return ( - + ); } diff --git a/src/frontend/design-system/components/Form/types.d.ts b/src/components/app/form/input/types.d.ts similarity index 97% rename from src/frontend/design-system/components/Form/types.d.ts rename to src/components/app/form/input/types.d.ts index 533f07c68..9717b1b78 100644 --- a/src/frontend/design-system/components/Form/types.d.ts +++ b/src/components/app/form/input/types.d.ts @@ -7,7 +7,6 @@ export interface ILabelAndErrorProps { meta: FieldMetaState; label?: MessageDescriptor; description?: string; - sm?: true; required?: boolean; rightActions?: IFormInputRightAction[]; } diff --git a/src/frontend/components/SchemaForm/SchemaForm.spec.tsx b/src/components/app/form/schema/SchemaForm.spec.tsx similarity index 100% rename from src/frontend/components/SchemaForm/SchemaForm.spec.tsx rename to src/components/app/form/schema/SchemaForm.spec.tsx diff --git a/src/frontend/components/SchemaForm/_RenderFormInput.tsx b/src/components/app/form/schema/_RenderFormInput.tsx similarity index 86% rename from src/frontend/components/SchemaForm/_RenderFormInput.tsx rename to src/components/app/form/schema/_RenderFormInput.tsx index b4d4c9cf4..ec7569cff 100644 --- a/src/frontend/components/SchemaForm/_RenderFormInput.tsx +++ b/src/components/app/form/schema/_RenderFormInput.tsx @@ -1,18 +1,18 @@ import { FormSelect } from "frontend/design-system/components/Form/Select"; import { FormDateInput } from "frontend/design-system/components/Form/Date"; import { AsyncFormSelect } from "frontend/design-system/components/Form/Select/Async"; -import { FormSwitch } from "frontend/design-system/components/Form/Switch"; import { FormCodeEditor } from "frontend/design-system/components/Form/CodeEditor"; -import { FormTextArea } from "frontend/design-system/components/Form/TextArea"; import { FormFileInput } from "frontend/design-system/components/Form/File"; -import { FormSelectButton } from "frontend/design-system/components/Form/SelectButton"; import { FormRichTextArea } from "frontend/design-system/components/Form/RichText"; import { useExtendRenderFormInputProps } from "frontend/views/data/portal"; import { useLingui } from "@lingui/react"; -import { FormInput } from "frontend/design-system/components/Form/Input"; -import { FormNumberInput } from "frontend/design-system/components/Form/Number"; -import { FormPasswordInput } from "frontend/design-system/components/Form/Password"; +import { FormInput } from "@/components/app/form/input/text"; import { IRenderFormInputProps } from "./types"; +import { FormNumberInput } from "../input/number"; +import { FormSelectButton } from "../input/select-button"; +import { FormPasswordInput } from "../input/password"; +import { FormTextArea } from "../input/textarea"; +import { FormSwitch } from "../input/switch"; export function RenderFormInput(props: IRenderFormInputProps) { const { diff --git a/src/frontend/components/SchemaForm/form-grid.tsx b/src/components/app/form/schema/form-grid.tsx similarity index 100% rename from src/frontend/components/SchemaForm/form-grid.tsx rename to src/components/app/form/schema/form-grid.tsx diff --git a/src/frontend/components/SchemaForm/form-run.ts b/src/components/app/form/schema/form-run.ts similarity index 100% rename from src/frontend/components/SchemaForm/form-run.ts rename to src/components/app/form/schema/form-run.ts diff --git a/src/frontend/components/SchemaForm/index.tsx b/src/components/app/form/schema/index.tsx similarity index 98% rename from src/frontend/components/SchemaForm/index.tsx rename to src/components/app/form/schema/index.tsx index d8e2f1bff..473111396 100644 --- a/src/frontend/components/SchemaForm/index.tsx +++ b/src/components/app/form/schema/index.tsx @@ -6,11 +6,11 @@ import { import { runValidationError } from "shared/validations/run"; import { ToastService } from "frontend/lib/toast"; import { resetFormValues } from "frontend/lib/form/utils"; -import { FormButton } from "frontend/design-system/components/Button/FormButton"; import { SystemIconsKeys } from "shared/constants/Icons"; import { useEvaluateScriptContext } from "frontend/hooks/scripts"; import { MessageDescriptor } from "@lingui/core"; import { typescriptSafeObjectDotEntries } from "shared/lib/objects"; +import { FormButton } from "@/components/app/button/form"; import { RenderFormInput } from "./_RenderFormInput"; import { IFormExtension } from "./types"; import { runFormBeforeSubmit, runFormFieldState } from "./form-run"; diff --git a/src/frontend/components/SchemaForm/types.d.ts b/src/components/app/form/schema/types.d.ts similarity index 100% rename from src/frontend/components/SchemaForm/types.d.ts rename to src/components/app/form/schema/types.d.ts diff --git a/src/frontend/design-system/components/ListManager/ListManager.spec.tsx b/src/components/app/list-manager/ListManager.spec.tsx similarity index 100% rename from src/frontend/design-system/components/ListManager/ListManager.spec.tsx rename to src/components/app/list-manager/ListManager.spec.tsx diff --git a/src/frontend/design-system/components/ListManager/Stories.tsx b/src/components/app/list-manager/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/ListManager/Stories.tsx rename to src/components/app/list-manager/Stories.tsx diff --git a/src/frontend/design-system/components/ListManager/index.tsx b/src/components/app/list-manager/index.tsx similarity index 78% rename from src/frontend/design-system/components/ListManager/index.tsx rename to src/components/app/list-manager/index.tsx index 2b65af09c..ca3822c22 100644 --- a/src/frontend/design-system/components/ListManager/index.tsx +++ b/src/components/app/list-manager/index.tsx @@ -1,18 +1,20 @@ import { useEffect, useState } from "react"; import styled from "styled-components"; import { DataStateKeys } from "frontend/lib/data/types"; -import { ViewStateMachine } from "frontend/components/ViewStateMachine"; import { arrayMoveImmutable } from "shared/lib/array/move"; import SortableList, { SortableItem } from "react-easy-sort"; import { Z_INDEXES } from "frontend/design-system/constants/zIndex"; import { sortListByOrder } from "shared/lib/array/sort"; import { msg } from "@lingui/macro"; -import { EmptyWrapper } from "../EmptyWrapper"; -import { FormSearch } from "../Form/Search"; +import { useLingui } from "@lingui/react"; import { defaultSearchFunction, defaultToEmptyArray } from "./utils"; -import { ListSkeleton } from "../Skeleton/List"; -import { IEmptyWrapperProps } from "../EmptyWrapper/types"; -import { IListMangerItemProps, ListManagerItem } from "./ListManagerItem"; +import { IListMangerItemProps, ListManagerItem } from "./list-manager-item"; +import { Input } from "@/components/ui/input"; +import { IEmptyWrapperProps } from "../empty-wrapper/types"; +import { ViewStateMachine } from "../view-state-machine"; +import { ListSkeleton } from "../skeleton/list"; +import { EmptyWrapper } from "../empty-wrapper"; +import { SystemIcon } from "../system-icons"; const SEARCH_THRESHOLD = 10; @@ -30,6 +32,26 @@ const Root = styled.ul` } `; +function FormSearch({ onChange }: { onChange: (value: string) => void }) { + const { _ } = useLingui(); + return ( +
+ onChange(e.target.value.toLowerCase())} + placeholder={_(msg`Search`)} + /> + +
+ ); +} + type StringProps = { [K in keyof T]: T[K] extends string ? K : never; }[keyof T]; diff --git a/src/frontend/design-system/components/ListManager/ListManagerItem/Stories.tsx b/src/components/app/list-manager/list-manager-item/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/ListManager/ListManagerItem/Stories.tsx rename to src/components/app/list-manager/list-manager-item/Stories.tsx diff --git a/src/frontend/design-system/components/ListManager/ListManagerItem/index.tsx b/src/components/app/list-manager/list-manager-item/index.tsx similarity index 70% rename from src/frontend/design-system/components/ListManager/ListManagerItem/index.tsx rename to src/components/app/list-manager/list-manager-item/index.tsx index 2fceb6510..57705e4b8 100644 --- a/src/frontend/design-system/components/ListManager/ListManagerItem/index.tsx +++ b/src/components/app/list-manager/list-manager-item/index.tsx @@ -3,15 +3,13 @@ import { ChevronRight as ChevronRightIcon } from "react-feather"; import Link from "next/link"; import styled, { css } from "styled-components"; import { USE_ROOT_COLOR } from "frontend/design-system/theme/root"; -import { Stack } from "frontend/design-system/primitives/Stack"; import { SortableKnob } from "react-easy-sort"; -import { GrabIcon } from "frontend/design-system/Icons/Grab"; import { SystemIconsKeys } from "shared/constants/Icons"; -import { SystemIcon } from "frontend/design-system/Icons/System"; import { MessageDescriptor } from "@lingui/core"; -import { Typo } from "frontend/design-system/primitives/Typo"; -import { FormButton } from "../../Button/FormButton"; -import { FormSwitch } from "../../Form/Switch"; +import { cn } from "@/lib/utils"; +import { GrabIcon, SystemIcon } from "../../system-icons"; +import { FormButton } from "../../button/form"; +import { FormSwitch } from "../../form/input/switch"; const ChevronRight = styled(ChevronRightIcon)<{ $active?: boolean }>` width: 14px; @@ -164,8 +162,8 @@ export function ListManagerItem({ }: IListMangerItemProps) { const id = useId(); const content = ( - - +
+
@@ -173,71 +171,67 @@ export function ListManagerItem({
{systemIcon ? ( ) : null}{" "}
{subLabel ? {subLabel} : null}
- - - <> - {actionButtons.map( - ({ - label: buttonLabel, - isInverse, - onClick: onClick$1, - isMakingRequest, - disabled: disabled$1, - systemIcon: systemIcon$1, - }) => ( - buttonLabel} - size="xs" - systemIcon={systemIcon$1} - disabled={disabled$1} - isMakingRequest={!!isMakingRequest} - isInverse={isInverse} - onClick={(event) => { - event.preventDefault(); - event.stopPropagation(); - onClick$1(); - }} - /> - ) - )} - {!(disabled || typeof action !== "string") ? ( -
- -
- ) : null} - {toggle && ( - +
+ {actionButtons.map( + ({ + label: buttonLabel, + isInverse, + onClick: onClick$1, + isMakingRequest, + disabled: disabled$1, + systemIcon: systemIcon$1, + }) => ( + buttonLabel} + size="sm" + systemIcon={systemIcon$1} + disabled={disabled$1} + isMakingRequest={!!isMakingRequest} + variant={isInverse ? "outline" : undefined} + onClick={(event) => { + event.preventDefault(); + event.stopPropagation(); + onClick$1(); + }} /> - )} - - - + ) + )} + {!(disabled || typeof action !== "string") ? ( +
+ +
+ ) : null} + {toggle && ( + + )} +
+
); const buttonProps = { diff --git a/src/frontend/design-system/components/ListManager/utils.ts b/src/components/app/list-manager/utils.ts similarity index 100% rename from src/frontend/design-system/components/ListManager/utils.ts rename to src/components/app/list-manager/utils.ts diff --git a/src/frontend/design-system/components/ComponentIsLoading/index.tsx b/src/components/app/loading-component.tsx similarity index 100% rename from src/frontend/design-system/components/ComponentIsLoading/index.tsx rename to src/components/app/loading-component.tsx diff --git a/src/components/app/menu-section.tsx b/src/components/app/menu-section.tsx new file mode 100644 index 000000000..78f5b17fa --- /dev/null +++ b/src/components/app/menu-section.tsx @@ -0,0 +1,127 @@ +import { useLingui } from "@lingui/react"; +import Link from "next/link"; +import { Loader } from "react-feather"; +import { VariantProps } from "class-variance-authority"; +import { Card } from "@/components/ui/card"; +import { CommandItem, Command, CommandList } from "@/components/ui/command"; +import { cn } from "@/lib/utils"; +import { Button, buttonVariants } from "../ui/button"; +import { useConfirmAlert } from "./confirm-alert"; +import { IMenuActionItem } from "./button/types"; +import { SystemIcon } from "./system-icons"; + +export interface IProps { + menuItems: IMenuActionItem[]; + currentMenuItem?: string; + size?: VariantProps["size"]; +} + +export function MenuSection({ + menuItems, + currentMenuItem, + size = "lg", +}: IProps) { + const { _ } = useLingui(); + + const confirmAlert = useConfirmAlert(); + + const orderedMenuItems = menuItems.sort((a, b) => { + const aOrder = a.order ?? 10; + const bOrder = b.order ?? 10; + + return aOrder - bOrder; + }); + + return ( + + + +
+ {orderedMenuItems.map( + ({ + label, + action, + systemIcon, + subtle, + id, + variant = "ghost", + destructive, + disabled, + isMakingRequest, + shouldConfirmAlert, + }) => { + const active = ( + typeof action === "string" ? action : "" + ).includes(currentMenuItem); + + const content = ( + <> + {isMakingRequest ? ( + + ) : ( + + )} + {_(label)} + + ); + + return ( + + {typeof action === "string" ? ( + + {content} + + ) : ( + + )} + + ); + } + )} +
+
+
+
+ ); +} diff --git a/src/frontend/design-system/components/_/NextPortal.tsx b/src/components/app/next-portal.tsx similarity index 100% rename from src/frontend/design-system/components/_/NextPortal.tsx rename to src/components/app/next-portal.tsx diff --git a/src/components/app/off-canvas.tsx b/src/components/app/off-canvas.tsx new file mode 100644 index 000000000..cb39cbf88 --- /dev/null +++ b/src/components/app/off-canvas.tsx @@ -0,0 +1,43 @@ +import { MessageDescriptor } from "@lingui/core"; +import { useLingui } from "@lingui/react"; +import { ReactNode } from "react"; +import { Sheet, SheetContent, SheetHeader, SheetTitle } from "../ui/sheet"; +import { cn } from "@/lib/utils"; +import { Separator } from "../ui/separator"; +import { NextPortal } from "./next-portal"; + +export interface IProps { + show: boolean; + title: MessageDescriptor; + children: ReactNode; + onClose: () => void; + size: "sm" | "md" | "lg"; +} + +export function OffCanvas({ show, onClose, title, children, size }: IProps) { + const { _ } = useLingui(); + + if (!show) { + return null; + } + + return ( + + + + + {_(title)} + + +
{children}
+
+
+
+ ); +} diff --git a/src/frontend/components/FEPaginationTable/index.tsx b/src/components/app/pagination-table/index.tsx similarity index 78% rename from src/frontend/components/FEPaginationTable/index.tsx rename to src/components/app/pagination-table/index.tsx index 65baa9f04..5bbbd4661 100644 --- a/src/frontend/components/FEPaginationTable/index.tsx +++ b/src/components/app/pagination-table/index.tsx @@ -1,13 +1,12 @@ import { useState, ReactNode } from "react"; import { IPaginatedDataState, TableFilterType } from "shared/types/data"; -import { DEFAULT_TABLE_STATE } from "frontend/design-system/components/Table/constants"; -import { TableSkeleton } from "frontend/design-system/components/Skeleton/Table"; -import { Table } from "frontend/design-system/components/Table"; -import { ITableColumn } from "frontend/design-system/components/Table/types"; -import { IEmptyWrapperProps } from "frontend/design-system/components/EmptyWrapper/types"; import { MessageDescriptor } from "@lingui/core"; +import { TableSkeleton } from "@/components/app/skeleton/table"; +import { IEmptyWrapperProps } from "../empty-wrapper/types"; import { useFEPagination } from "./useFEPagination"; -import { ViewStateMachine } from "../ViewStateMachine"; +import { ViewStateMachine } from "../view-state-machine"; +import { DEFAULT_TABLE_STATE, Table } from "../table"; +import { ITableColumn } from "../table/types"; export interface IFETableCell { row: { diff --git a/src/frontend/components/FEPaginationTable/useFEPagination.spec.tsx b/src/components/app/pagination-table/useFEPagination.spec.tsx similarity index 100% rename from src/frontend/components/FEPaginationTable/useFEPagination.spec.tsx rename to src/components/app/pagination-table/useFEPagination.spec.tsx diff --git a/src/frontend/components/FEPaginationTable/useFEPagination.ts b/src/components/app/pagination-table/useFEPagination.ts similarity index 100% rename from src/frontend/components/FEPaginationTable/useFEPagination.ts rename to src/components/app/pagination-table/useFEPagination.ts diff --git a/src/frontend/design-system/components/RenderCode/Stories.tsx b/src/components/app/render-code/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/RenderCode/Stories.tsx rename to src/components/app/render-code/Stories.tsx diff --git a/src/frontend/design-system/components/RenderCode/index.tsx b/src/components/app/render-code/index.tsx similarity index 98% rename from src/frontend/design-system/components/RenderCode/index.tsx rename to src/components/app/render-code/index.tsx index 30bd5457c..6c610a9cc 100644 --- a/src/frontend/design-system/components/RenderCode/index.tsx +++ b/src/components/app/render-code/index.tsx @@ -10,6 +10,7 @@ export interface IProps { const Root = styled.div` overflow-x: auto; + margin-bottom: 1rem; pre { min-height: 50px; diff --git a/src/frontend/design-system/components/RenderCode/styles.ts b/src/components/app/render-code/styles.ts similarity index 100% rename from src/frontend/design-system/components/RenderCode/styles.ts rename to src/components/app/render-code/styles.ts diff --git a/src/frontend/components/ApplicationRoot/index.tsx b/src/components/app/roots.tsx similarity index 84% rename from src/frontend/components/ApplicationRoot/index.tsx rename to src/components/app/roots.tsx index e7aec117f..7619f32a4 100644 --- a/src/frontend/components/ApplicationRoot/index.tsx +++ b/src/components/app/roots.tsx @@ -2,12 +2,11 @@ import { ReactNode } from "react"; import { Toaster } from "react-hot-toast"; import { QueryProvider } from "frontend/lib/data/QueryClient"; import { ThemeContextProvider } from "frontend/design-system/theme/Context"; -import { GlobalStyles } from "frontend/design-system/globals"; import { LinguiProvider } from "translations/utils"; import { Messages } from "@lingui/core"; -import { ConfirmAlert } from "frontend/design-system/components/ConfirmAlert"; import { PortalProvider } from "frontend/_layouts/app/portal"; import { GoogleTagManager } from "frontend/_layouts/scripts/GoogleTagManager"; +import { ConfirmAlert } from "./confirm-alert"; export function ApplicationRoot({ children, @@ -21,7 +20,6 @@ export function ApplicationRoot({ - {children} diff --git a/src/frontend/design-system/components/Section/SectionBox/Stories.tsx b/src/components/app/section-box/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/Section/SectionBox/Stories.tsx rename to src/components/app/section-box/Stories.tsx diff --git a/src/components/app/section-box/index.tsx b/src/components/app/section-box/index.tsx new file mode 100644 index 000000000..f25e8facb --- /dev/null +++ b/src/components/app/section-box/index.tsx @@ -0,0 +1,67 @@ +import { ReactNode } from "react"; +import { MessageDescriptor } from "@lingui/core"; +import { useLingui } from "@lingui/react"; +import { Card, CardHeader, CardContent } from "@/components/ui/card"; +import { Skeleton } from "@/components/ui/skeleton"; +import { SoftButton } from "@/components/app/button/soft"; +import { SystemIcon } from "@/components/app/system-icons"; +import { ActionButtons } from "@/components/app/button/action"; +import { IGroupActionButton } from "../button/types"; +import { Tooltip } from "@/components/app/tooltip"; + +export interface IProps { + title: MessageDescriptor; + children: ReactNode; + description?: string; + actionButtons?: IGroupActionButton[]; + backLink?: { label?: MessageDescriptor; action: string | (() => void) }; + isLoading?: boolean; +} + +export function SectionBox({ + children, + title, + isLoading, + description, + actionButtons, + backLink, +}: IProps) { + const { _ } = useLingui(); + + return ( +
+ {backLink && ( + + )} + + +
+
+ {isLoading ? ( + + ) : ( +

{_(title)}

+ )} + {description ? ( + + + + ) : null} +
+ {!isLoading && + (actionButtons ? ( + + ) : null)} +
+
+ {children ? {children} : null} +
+
+ ); +} diff --git a/src/frontend/design-system/components/Skeleton/Form/Stories.tsx b/src/components/app/skeleton/form/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/Skeleton/Form/Stories.tsx rename to src/components/app/skeleton/form/Stories.tsx diff --git a/src/frontend/design-system/components/Skeleton/Form/index.tsx b/src/components/app/skeleton/form/index.tsx similarity index 51% rename from src/frontend/design-system/components/Skeleton/Form/index.tsx rename to src/components/app/skeleton/form/index.tsx index 8ff2ec8df..6a0f7682d 100644 --- a/src/frontend/design-system/components/Skeleton/Form/index.tsx +++ b/src/components/app/skeleton/form/index.tsx @@ -1,10 +1,9 @@ import { Fragment } from "react"; -import { Stack } from "frontend/design-system/primitives/Stack"; -import { BaseSkeleton } from "../Base"; +import { Skeleton } from "@/components/ui/skeleton"; export enum FormSkeletonSchema { - Textarea = "83px", - Input = "38px", + Textarea = "60px", + Input = "36px", RichTextArea = "277px", } @@ -17,13 +16,18 @@ export function FormSkeleton({ schema }: IProps) {
{Array.from({ length: schema.length }, (_, k) => k).map((key) => ( - - + + ))} - - - +
+ +
); } diff --git a/src/frontend/design-system/components/Skeleton/List/Stories.tsx b/src/components/app/skeleton/list/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/Skeleton/List/Stories.tsx rename to src/components/app/skeleton/list/Stories.tsx diff --git a/src/frontend/design-system/components/Skeleton/List/index.tsx b/src/components/app/skeleton/list/index.tsx similarity index 69% rename from src/frontend/design-system/components/Skeleton/List/index.tsx rename to src/components/app/skeleton/list/index.tsx index 36fcbb506..d48ef0878 100644 --- a/src/frontend/design-system/components/Skeleton/List/index.tsx +++ b/src/components/app/skeleton/list/index.tsx @@ -1,4 +1,4 @@ -import { BaseSkeleton } from "../Base"; +import { Skeleton } from "@/components/ui/skeleton"; export interface IProps { count: number; @@ -8,7 +8,7 @@ export function ListSkeleton({ count }: IProps) { return (
{Array.from({ length: count }, (_, k) => k + 1).map((key) => ( - + ))}
); diff --git a/src/frontend/design-system/components/Skeleton/Table/Stories.tsx b/src/components/app/skeleton/table/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/Skeleton/Table/Stories.tsx rename to src/components/app/skeleton/table/Stories.tsx diff --git a/src/components/app/skeleton/table/index.tsx b/src/components/app/skeleton/table/index.tsx new file mode 100644 index 000000000..7a2c96a1a --- /dev/null +++ b/src/components/app/skeleton/table/index.tsx @@ -0,0 +1,38 @@ +import { Skeleton } from "@/components/ui/skeleton"; + +const columnCount = 5; + +export interface IProps { + lean?: true; +} + +export function TableSkeleton({ lean }: IProps) { + return ( +
+ {Array.from({ length: lean ? 5 : 10 }, (_, k) => k + 1).map( + (key, index) => ( +
+ {index > 0 && } +
+ {Array.from({ length: columnCount }, (_, k) => k + 1).map( + (key$1) => ( + + ) + )} + {!lean && ( +
+ + +
+ )} +
+
+ ) + )} +
+ ); +} diff --git a/src/components/app/system-icons.tsx b/src/components/app/system-icons.tsx new file mode 100644 index 000000000..8a5400b28 --- /dev/null +++ b/src/components/app/system-icons.tsx @@ -0,0 +1,45 @@ +import { SystemIconsKeys, systemIconToSVG } from "shared/constants/Icons"; +import { forwardRef } from "react"; +import { cn } from "@/lib/utils"; + +interface IProps { + label?: string; + icon: SystemIconsKeys; + strokeWidth?: number; + className: string; +} + +export function SystemIcon({ icon, label, strokeWidth, className }: IProps) { + if (!icon) { + return null; + } + + const iconSvg = systemIconToSVG(icon, strokeWidth); + return ( + + ); +} + +export const GrabIcon = forwardRef< + SVGSVGElement, + { + width?: number; + className?: string; + } +>(({ width, className }, ref) => { + return ( + + + + ); +}); +// // :eyes document.body.style.setProperty("cursor", "grabbing"); diff --git a/src/components/app/table/Body.tsx b/src/components/app/table/Body.tsx new file mode 100644 index 000000000..1b79d3b1d --- /dev/null +++ b/src/components/app/table/Body.tsx @@ -0,0 +1,53 @@ +import { flexRender, Table } from "@tanstack/react-table"; +import { + TableCell, + TableRow, + TableBody as TableBodyRoot, +} from "@/components/ui/table"; +import { IEmptyWrapperProps } from "../empty-wrapper/types"; +import { EmptyWrapper } from "../empty-wrapper"; + +// const BodyTR = styled.tr<{ $hoverColor: string }>` +// .show-on-hover { +// opacity: 0; +// } +// &:hover { +// .show-on-hover { +// opacity: 1; +// } +// } +// `; + +interface IProps { + table: Table>; + dataLength: number; + isLoading: boolean; + empty: IEmptyWrapperProps; +} + +export function TableBody({ table, dataLength, empty, isLoading }: IProps) { + return ( + + {table.getRowModel().rows.map((row) => ( + + {row.getVisibleCells().map((cell) => ( + + {flexRender(cell.column.columnDef.cell, cell.getContext())} + + ))} + + ))} + {dataLength === 0 ? ( + + + {isLoading ? ( +
+ ) : ( + + )} + + + ) : null} + + ); +} diff --git a/src/components/app/table/Foot.tsx b/src/components/app/table/Foot.tsx new file mode 100644 index 000000000..c34cc1415 --- /dev/null +++ b/src/components/app/table/Foot.tsx @@ -0,0 +1,35 @@ +import { flexRender, Table } from "@tanstack/react-table"; +import { TableFooter, TableHead, TableRow } from "@/components/ui/table"; + +const SHOW_FOOTER_THRESHOLD = 20; + +interface IProps { + table: Table>; + dataLength: number; +} + +export function TableFoot({ table, dataLength }: IProps) { + if (dataLength < SHOW_FOOTER_THRESHOLD) { + return null; + } + return ( + + {table.getFooterGroups().map((footerGroup) => ( + + {footerGroup.headers.map((header) => ( + + + {header.isPlaceholder + ? null + : flexRender( + header.column.columnDef.footer, + header.getContext() + )} + + + ))} + + ))} + + ); +} diff --git a/src/frontend/design-system/components/Table/Head.tsx b/src/components/app/table/Head.tsx similarity index 53% rename from src/frontend/design-system/components/Table/Head.tsx rename to src/components/app/table/Head.tsx index eacc9221c..e3f2a7401 100644 --- a/src/frontend/design-system/components/Table/Head.tsx +++ b/src/components/app/table/Head.tsx @@ -1,47 +1,28 @@ import { flexRender, Table } from "@tanstack/react-table"; import * as React from "react"; import { ArrowUp } from "react-feather"; -import styled, { css } from "styled-components"; -import { Stack } from "frontend/design-system/primitives/Stack"; -import { Typo } from "frontend/design-system/primitives/Typo"; -import { USE_ROOT_COLOR } from "frontend/design-system/theme/root"; import { TableFilterType } from "shared/types/data"; import { TableFilter } from "./filters"; -import { Th } from "./styles"; - -const THead = styled.thead` - background-color: ${USE_ROOT_COLOR("soft-color")}; -`; +import { + TableHeader, + TableRow, + TableHead as TableHeadCmp, +} from "@/components/ui/table"; +import { cn } from "@/lib/utils"; interface IColumnMeta { filter?: TableFilterType; } -const Sorting = styled(ArrowUp)<{ $isSorted: boolean; $isDesc: boolean }>` - color: ${USE_ROOT_COLOR("muted-text")}; - opacity: 0.7; - cursor: pointer; - margin-left: 0px; - transition: transform 0.3s; - ${(props) => props.$isDesc && "transform: rotate(180deg);"} - - ${(props) => - props.$isSorted && - css` - color: ${USE_ROOT_COLOR("primary-color")}; - opacity: 1; - `} -`; - interface IProps { table: Table>; } export function TableHead({ table }: IProps) { return ( - + {table.getHeaderGroups().map((headerGroup) => ( - + {headerGroup.headers.map((header) => { const view = flexRender( header.column.columnDef.header, @@ -50,30 +31,30 @@ export function TableHead({ table }: IProps) { const { filter } = header.column.columnDef.meta as IColumnMeta; const isSorted = header.column.getIsSorted(); return ( - - - +
+ {header.isPlaceholder ? null : view} - - + +
{header.column.getCanSort() && ( - )} {header.column.getCanFilter() && filter ? ( @@ -83,13 +64,13 @@ export function TableHead({ table }: IProps) { type={filter} /> ) : null} - - - +
+
+ ); })} - +
))} - +
); } diff --git a/src/frontend/design-system/components/Table/Stories.tsx b/src/components/app/table/Stories.tsx similarity index 100% rename from src/frontend/design-system/components/Table/Stories.tsx rename to src/components/app/table/Stories.tsx diff --git a/src/frontend/design-system/components/Table/Table.spec.tsx b/src/components/app/table/Table.spec.tsx similarity index 100% rename from src/frontend/design-system/components/Table/Table.spec.tsx rename to src/components/app/table/Table.spec.tsx diff --git a/src/frontend/design-system/components/Table/_Pagination.tsx b/src/components/app/table/_Pagination.tsx similarity index 85% rename from src/frontend/design-system/components/Table/_Pagination.tsx rename to src/components/app/table/_Pagination.tsx index ba7599abe..43cd39939 100644 --- a/src/frontend/design-system/components/Table/_Pagination.tsx +++ b/src/components/app/table/_Pagination.tsx @@ -2,13 +2,11 @@ import ReactPaginate from "react-paginate"; import styled from "styled-components"; import { USE_ROOT_COLOR } from "frontend/design-system/theme/root"; -import { Stack } from "frontend/design-system/primitives/Stack"; -import { Typo } from "frontend/design-system/primitives/Typo"; -import { Trans } from "@lingui/macro"; +import { Trans, msg } from "@lingui/macro"; import { ChevronLeft, ChevronRight } from "react-feather"; import { i18nNoop } from "translations/fake"; -import { SimpleSelect } from "../Form/Select/Simple"; import { TABLE_PAGE_SIZES } from "./constants"; +import { Select } from "@/components/ui/select"; const Pagination = styled.div` .pagination { @@ -57,10 +55,7 @@ const DirectionIcon = styled.i` height: 20px; `; -const Root = styled.div` - background: ${USE_ROOT_COLOR("base-color")}; - padding: 0 0.5rem; -`; +const Root = styled.div``; interface IProps { setPageSize: (pageSize: number) => void; @@ -83,24 +78,26 @@ export function TablePagination({ return null; } return ( - - - + +
+

Showing{" "} - ({ value: `${option}`, label: i18nNoop(option), }))} onChange={(value) => setPageSize(Number(value))} - value={pageSize} + value={`${pageSize}`} />{" "} entries of {Intl.NumberFormat("en-US").format(totalRecords)}{" "} results - +

} @@ -126,7 +123,7 @@ export function TablePagination({ }} /> - +
); } diff --git a/src/frontend/design-system/components/Table/constants.ts b/src/components/app/table/constants.ts similarity index 100% rename from src/frontend/design-system/components/Table/constants.ts rename to src/components/app/table/constants.ts diff --git a/src/frontend/design-system/components/Table/data/index.tsx b/src/components/app/table/data/index.tsx similarity index 100% rename from src/frontend/design-system/components/Table/data/index.tsx rename to src/components/app/table/data/index.tsx diff --git a/src/frontend/design-system/components/Table/filters/Boolean.tsx b/src/components/app/table/filters/Boolean.tsx similarity index 63% rename from src/frontend/design-system/components/Table/filters/Boolean.tsx rename to src/components/app/table/filters/Boolean.tsx index f340471c6..a4d677aed 100644 --- a/src/frontend/design-system/components/Table/filters/Boolean.tsx +++ b/src/components/app/table/filters/Boolean.tsx @@ -1,34 +1,25 @@ import { FilterOperators, IColumnFilterBag } from "shared/types/data"; import { ISelectData } from "shared/types/options"; import { msg } from "@lingui/macro"; -import { useLingui } from "@lingui/react"; -import { fakeMessageDescriptor } from "translations/fake"; -import { SimpleSelect } from "../../Form/Select/Simple"; import { IFilterProps } from "./types"; +import { Select } from "@/components/ui/select"; export function FilterTableByBooleans({ column: { filterValue, setFilter }, bag, }: IFilterProps, ISelectData[]>) { - const { _ } = useLingui(); return ( - { setFilter({ operator: FilterOperators.EQUAL_TO, value: value === "" ? undefined : value === "true", }); }} - width={0} - ariaLabel="Select Boolean" - fullWidth value={ // eslint-disable-next-line no-nested-ternary filterValue?.value === undefined diff --git a/src/frontend/design-system/components/Table/filters/Date/_Selection.tsx b/src/components/app/table/filters/Date/_Selection.tsx similarity index 87% rename from src/frontend/design-system/components/Table/filters/Date/_Selection.tsx rename to src/components/app/table/filters/Date/_Selection.tsx index 7d71028b9..169b2db6a 100644 --- a/src/frontend/design-system/components/Table/filters/Date/_Selection.tsx +++ b/src/components/app/table/filters/Date/_Selection.tsx @@ -1,8 +1,8 @@ import { IColumnFilterBag, IDateFilterOption } from "shared/types/data"; -import { Stack } from "frontend/design-system/primitives/Stack"; import { i18nNoop } from "translations/fake"; +import { msg } from "@lingui/macro"; import { DATE_FILTER_OPTIONS } from "./constants"; -import { SimpleSelect } from "../../../Form/Select/Simple"; +import { Select } from "@/components/ui/select"; const getOptionValue = (value: string) => { const dateOption = DATE_FILTER_OPTIONS.find( @@ -54,9 +54,11 @@ export function DateSelection({ const currentFilterValue = filterValue?.[field] || ""; const hasCountValue = currentFilterValue?.includes(":"); return ( - + <> {hasCountValue && ( - `${k + 1}` @@ -67,14 +69,15 @@ export function DateSelection({ [field]: setCountValue(value, currentFilterValue), }); }} - width={50} + className="w-12" value={getCountValue(currentFilterValue) || "1"} /> )} - ({ label, value }))} - fullWidth - width={0} + className="w-full" onChange={(value) => { setFilter({ ...filterValue, @@ -83,6 +86,6 @@ export function DateSelection({ }} value={getFilterValue(currentFilterValue || defaultValue)} /> - + ); } diff --git a/src/frontend/design-system/components/Table/filters/Date/constants.ts b/src/components/app/table/filters/Date/constants.ts similarity index 100% rename from src/frontend/design-system/components/Table/filters/Date/constants.ts rename to src/components/app/table/filters/Date/constants.ts diff --git a/src/frontend/design-system/components/Table/filters/Date/index.tsx b/src/components/app/table/filters/Date/index.tsx similarity index 91% rename from src/frontend/design-system/components/Table/filters/Date/index.tsx rename to src/components/app/table/filters/Date/index.tsx index fab51f287..af622f393 100644 --- a/src/frontend/design-system/components/Table/filters/Date/index.tsx +++ b/src/components/app/table/filters/Date/index.tsx @@ -1,12 +1,11 @@ -import { Spacer } from "frontend/design-system/primitives/Spacer"; import { DATE_FILTER_VALUE, IColumnFilterBag } from "shared/types/data"; import { useToggle } from "frontend/hooks/state/useToggleState"; import { msg } from "@lingui/macro"; -import { DATE_FILTER_OPTIONS } from "./constants"; import { IFilterProps } from "../types"; +import { FormSwitch } from "@/components/app/form/input/switch"; +import { ControlledFormDateInput } from "@/frontend/design-system/components/Form/Date"; +import { DATE_FILTER_OPTIONS } from "./constants"; import { DateSelection } from "./_Selection"; -import { FormSwitch } from "../../../Form/Switch"; -import { ControlledFormDateInput } from "../../../Form/Date"; export function FilterTableByDate({ column: { filterValue, setFilter }, @@ -47,7 +46,6 @@ export function FilterTableByDate({ }} value={new Date(filterValue?.value || "")} /> - { setFilter({ @@ -69,7 +67,6 @@ export function FilterTableByDate({ ({ hideOnFrom }) => !hideOnFrom )} /> - setFilter({ @@ -21,21 +19,17 @@ export function FilterTableByNumbers({ aria-label="Value 1" /> {filterValue?.operator === FilterOperators.BETWEEN && ( - <> - - - setFilter({ - ...filterValue, - value2: +e.target.value, - }) - } - aria-label="Value 2" - /> - + + setFilter({ + ...filterValue, + value2: +e.target.value, + }) + } + aria-label="Value 2" + /> )} ); diff --git a/src/frontend/design-system/components/Table/filters/Status.tsx b/src/components/app/table/filters/Status.tsx similarity index 88% rename from src/frontend/design-system/components/Table/filters/Status.tsx rename to src/components/app/table/filters/Status.tsx index 011a5dcd0..b0ff39604 100644 --- a/src/frontend/design-system/components/Table/filters/Status.tsx +++ b/src/components/app/table/filters/Status.tsx @@ -1,7 +1,7 @@ import { IColumnFilterBag } from "shared/types/data"; import { ISelectData } from "shared/types/options"; -import { FormMultiSelect } from "../../Form/Select"; import { IFilterProps } from "./types"; +import { FormMultiSelect } from "@/frontend/design-system/components/Form/Select"; export function FilterTableByStatus({ column: { filterValue, setFilter }, diff --git a/src/frontend/design-system/components/Table/filters/Text.tsx b/src/components/app/table/filters/Text.tsx similarity index 93% rename from src/frontend/design-system/components/Table/filters/Text.tsx rename to src/components/app/table/filters/Text.tsx index e19f7f035..f5f4df4ef 100644 --- a/src/frontend/design-system/components/Table/filters/Text.tsx +++ b/src/components/app/table/filters/Text.tsx @@ -2,8 +2,8 @@ import { IColumnFilterBag } from "shared/types/data"; import { BaseSyntheticEvent } from "react"; import { useLingui } from "@lingui/react"; import { msg } from "@lingui/macro"; -import { Input } from "../../Form/Styles"; import { IFilterProps } from "./types"; +import { Input } from "@/components/ui/input"; export function FilterTableByText({ column: { filterValue, setFilter }, diff --git a/src/frontend/design-system/components/Table/filters/_FilterOperator.tsx b/src/components/app/table/filters/_FilterOperator.tsx similarity index 50% rename from src/frontend/design-system/components/Table/filters/_FilterOperator.tsx rename to src/components/app/table/filters/_FilterOperator.tsx index 57dd6563f..bd8a4f8d4 100644 --- a/src/frontend/design-system/components/Table/filters/_FilterOperator.tsx +++ b/src/components/app/table/filters/_FilterOperator.tsx @@ -1,8 +1,8 @@ import { useEffect } from "react"; import { FilterOperators, IColumnFilterBag } from "shared/types/data"; -import { Spacer } from "frontend/design-system/primitives/Spacer"; -import { SimpleSelect } from "../../Form/Select/Simple"; +import { msg } from "@lingui/macro"; import { FILTER_OPERATOR_CONFIG } from "./constants"; +import { Select } from "@/components/ui/select"; interface IProps { operators: FilterOperators[]; @@ -24,26 +24,23 @@ export function RenderFilterOperator({ } }, [JSON.stringify(filterValue)]); return ( - <> - ({ - value: operator, - label: FILTER_OPERATOR_CONFIG[operator].label, - })), - ]} - ariaLabel="Select Filter Operator" - fullWidth - width={0} - onChange={(value) => { - setFilter({ - ...filterValue, - operator: value as FilterOperators, - }); - }} - value={filterValue?.operator || ""} - /> - - + + ); + } +); +Input.displayName = "Input"; + +export { Input }; diff --git a/src/components/ui/label.tsx b/src/components/ui/label.tsx new file mode 100644 index 000000000..2353ba031 --- /dev/null +++ b/src/components/ui/label.tsx @@ -0,0 +1,24 @@ +import * as React from "react"; +import * as LabelPrimitive from "@radix-ui/react-label"; +import { cva, type VariantProps } from "class-variance-authority"; + +import { cn } from "@/lib/utils"; + +const labelVariants = cva( + "text-sm leading-none peer-disabled:cursor-not-allowed peer-disabled:opacity-70" +); + +const Label = React.forwardRef< + React.ElementRef, + React.ComponentPropsWithoutRef & + VariantProps +>(({ className, ...props }, ref) => ( + +)); +Label.displayName = LabelPrimitive.Root.displayName; + +export { Label }; diff --git a/src/components/ui/pagination.tsx b/src/components/ui/pagination.tsx new file mode 100644 index 000000000..9c71c8a79 --- /dev/null +++ b/src/components/ui/pagination.tsx @@ -0,0 +1,133 @@ +/* eslint-disable react/prop-types */ +import * as React from "react"; +import { + ChevronLeftIcon, + ChevronRightIcon, + DotsHorizontalIcon, +} from "@radix-ui/react-icons"; + +import { cn } from "@/lib/utils"; +import { ButtonProps, buttonVariants } from "@/components/ui/button"; + +function Pagination({ className, ...props }: React.ComponentProps<"nav">) { + return ( +