From ec79adfbaf8868ac7ac8afc527d3016d2a1d1042 Mon Sep 17 00:00:00 2001 From: ISMAIL MASSERAN Date: Tue, 27 Oct 2026 09:36:11 +0800 Subject: [PATCH] first init --- .DS_Store | Bin 0 -> 10244 bytes .dockerignore | 7 + .editorconfig | 8 + .env.development | 7 + .gitea/workflows/build.yml | 43 + .gitea/workflows/deploy-prod.yml | 113 + .gitignore | 4 + .npmrc | 1 + .prettierrc.json | 6 + README.md | 70 + cypress.config.ts | 8 + docker/Dockerfile | 27 + docker/docker-compose.production.yml | 25 + docker/nginx.conf | 29 + env.d.ts | 15 + eslint.config.ts | 38 + index.html | 16 + package.json | 97 + pnpm-lock.yaml | 7016 +++++++++++++++++ pnpm-workspace.yaml | 5 + public/favicon.ico | Bin 0 -> 209280 bytes src/.DS_Store | Bin 0 -> 8196 bytes src/App.vue | 3 + src/assets/.DS_Store | Bin 0 -> 6148 bytes src/assets/css/themes/enigma/side-menu.css | 309 + src/assets/css/themes/enigma/top-menu.css | 262 + src/assets/images/accent.svg | 44 + src/assets/images/bg-pattern.svg | 66 + src/assets/images/error-illustration.svg | 72 + src/assets/images/illustration.svg | 121 + src/assets/images/logo-original.svg | 115 + src/assets/images/logo.svg | 649 ++ src/assets/images/noise.png | Bin 0 -> 63712 bytes src/assets/images/phone-illustration.svg | 11 + src/assets/images/placeholders/200x200.jpg | Bin 0 -> 1851 bytes src/assets/images/placeholders/800x800.jpg | Bin 0 -> 14451 bytes src/assets/images/woman-illustration.svg | 32 + .../account-dropdown/AccountDropdown.vue | 125 + .../account-dropdown/AccountTrigger.vue | 73 + src/components/account-dropdown/index.ts | 2 + src/components/chart-presets/Bar1.vue | 99 + src/components/chart-presets/Bar2.vue | 85 + src/components/chart-presets/Donut1.vue | 43 + src/components/chart-presets/Donut2.vue | 43 + src/components/chart-presets/Line1.vue | 92 + src/components/chart-presets/Line2.vue | 72 + src/components/chart-presets/Line3.vue | 82 + src/components/chart-presets/Pie1.vue | 42 + src/components/chart-presets/index.ts | 8 + src/components/daily-notes/DailyNotes.vue | 122 + src/components/daily-notes/index.ts | 1 + src/components/docs/ApiButton.vue | 9 + src/components/docs/InstallPackage.vue | 101 + src/components/docs/Menu.vue | 8 + src/components/docs/Preview.vue | 42 + src/components/docs/PreviewCode.vue | 88 + src/components/docs/SectionContent.vue | 13 + src/components/docs/SectionTitle.vue | 5 + src/components/docs/Subtitle.vue | 5 + src/components/docs/Title.vue | 5 + src/components/docs/Wrapper.vue | 18 + src/components/docs/index.ts | 10 + .../NotificationDropdown.vue | 151 + src/components/notification-dropdown/index.ts | 1 + .../official-stores/OfficialStores.vue | 143 + src/components/official-stores/index.ts | 1 + .../quick-search-dialog/QuickSearchDialog.vue | 142 + src/components/quick-search-dialog/index.ts | 1 + .../recent-activities/RecentActivities.vue | 182 + src/components/recent-activities/index.ts | 1 + src/components/schedules/Schedules.vue | 167 + src/components/schedules/index.ts | 1 + src/components/side-menu/SideMenu.vue | 245 + src/components/side-menu/index.ts | 1 + .../theme-switcher/ThemeSwitcher.vue | 121 + src/components/theme-switcher/index.ts | 1 + src/components/top-menu/TopMenu.vue | 166 + src/components/top-menu/index.ts | 3 + src/components/transactions/Transactions.vue | 104 + src/components/transactions/index.ts | 1 + .../ui/accordion/AccordionContent.vue | 28 + src/components/ui/accordion/AccordionItem.vue | 39 + src/components/ui/accordion/AccordionRoot.vue | 44 + .../ui/accordion/AccordionTrigger.vue | 35 + src/components/ui/accordion/index.ts | 4 + src/components/ui/alert/AlertCloseTrigger.vue | 32 + src/components/ui/alert/AlertDescription.vue | 23 + src/components/ui/alert/AlertRoot.vue | 36 + src/components/ui/alert/AlertTitle.vue | 23 + src/components/ui/alert/index.ts | 4 + src/components/ui/avatar/AvatarFallback.vue | 27 + src/components/ui/avatar/AvatarImage.vue | 16 + src/components/ui/avatar/AvatarRoot.vue | 50 + src/components/ui/avatar/index.ts | 3 + src/components/ui/badge/Badge.vue | 39 + src/components/ui/badge/index.ts | 1 + src/components/ui/box/box.vue | 29 + src/components/ui/box/index.ts | 1 + src/components/ui/breadcrumb/Breadcrumb.vue | 61 + .../ui/breadcrumb/BreadcrumbItem.vue | 14 + .../ui/breadcrumb/BreadcrumbLink.vue | 14 + .../ui/breadcrumb/BreadcrumbList.vue | 14 + src/components/ui/breadcrumb/index.ts | 4 + src/components/ui/button/Button.vue | 31 + src/components/ui/button/index.ts | 1 + .../ui/carousel/CarouselControl.vue | 27 + .../ui/carousel/CarouselIndicator.vue | 25 + .../ui/carousel/CarouselIndicatorGroup.vue | 28 + src/components/ui/carousel/CarouselItem.vue | 31 + .../ui/carousel/CarouselItemGroup.vue | 27 + .../ui/carousel/CarouselNextTrigger.vue | 30 + .../ui/carousel/CarouselPrevTrigger.vue | 30 + src/components/ui/carousel/CarouselRoot.vue | 41 + src/components/ui/carousel/index.ts | 8 + src/components/ui/chart/Chart.vue | 36 + src/components/ui/chart/index.ts | 2 + src/components/ui/chart/utils.ts | 11 + .../ui/checkbox/CheckboxControl.vue | 31 + .../ui/checkbox/CheckboxHiddenInput.vue | 16 + .../ui/checkbox/CheckboxIndicator.vue | 27 + src/components/ui/checkbox/CheckboxLabel.vue | 28 + src/components/ui/checkbox/CheckboxRoot.vue | 35 + src/components/ui/checkbox/index.ts | 5 + .../ui/combobox/ComboboxClearTrigger.vue | 27 + .../ui/combobox/ComboboxContent.vue | 35 + .../ui/combobox/ComboboxControl.vue | 27 + src/components/ui/combobox/ComboboxInput.vue | 17 + src/components/ui/combobox/ComboboxItem.vue | 29 + .../ui/combobox/ComboboxItemGroup.vue | 31 + .../ui/combobox/ComboboxItemGroupLabel.vue | 32 + .../ui/combobox/ComboboxItemIndicator.vue | 31 + .../ui/combobox/ComboboxItemText.vue | 28 + src/components/ui/combobox/ComboboxLabel.vue | 28 + .../ui/combobox/ComboboxPositioner.vue | 27 + src/components/ui/combobox/ComboboxRoot.vue | 47 + .../ui/combobox/ComboboxTrigger.vue | 32 + src/components/ui/combobox/index.ts | 13 + .../ui/datepicker/DatePickerClearTrigger.vue | 30 + .../ui/datepicker/DatePickerContent.vue | 30 + .../ui/datepicker/DatePickerContext.vue | 10 + .../ui/datepicker/DatePickerControl.vue | 27 + .../ui/datepicker/DatePickerInput.vue | 26 + .../ui/datepicker/DatePickerLabel.vue | 28 + .../ui/datepicker/DatePickerMonthSelect.vue | 26 + .../ui/datepicker/DatePickerNextTrigger.vue | 29 + .../ui/datepicker/DatePickerPositioner.vue | 29 + .../ui/datepicker/DatePickerPresetTrigger.vue | 30 + .../ui/datepicker/DatePickerPrevTrigger.vue | 29 + .../ui/datepicker/DatePickerRangeText.vue | 18 + .../ui/datepicker/DatePickerRoot.vue | 40 + .../ui/datepicker/DatePickerTable.vue | 27 + .../ui/datepicker/DatePickerTableBody.vue | 27 + .../ui/datepicker/DatePickerTableCell.vue | 45 + .../datepicker/DatePickerTableCellTrigger.vue | 44 + .../ui/datepicker/DatePickerTableHead.vue | 27 + .../ui/datepicker/DatePickerTableHeader.vue | 27 + .../ui/datepicker/DatePickerTableRow.vue | 27 + .../ui/datepicker/DatePickerTrigger.vue | 30 + .../ui/datepicker/DatePickerView.vue | 31 + .../ui/datepicker/DatePickerViewControl.vue | 30 + .../ui/datepicker/DatePickerViewTrigger.vue | 28 + .../ui/datepicker/DatePickerYearSelect.vue | 27 + src/components/ui/datepicker/index.ts | 25 + src/components/ui/dialog/DialogBackdrop.vue | 27 + .../ui/dialog/DialogCloseTrigger.vue | 44 + src/components/ui/dialog/DialogContent.vue | 38 + .../ui/dialog/DialogDescription.vue | 27 + src/components/ui/dialog/DialogPositioner.vue | 27 + src/components/ui/dialog/DialogRoot.vue | 36 + src/components/ui/dialog/DialogTitle.vue | 27 + src/components/ui/dialog/DialogTrigger.vue | 28 + src/components/ui/dialog/index.ts | 8 + src/components/ui/field/Field.vue | 24 + src/components/ui/field/FieldContent.vue | 14 + src/components/ui/field/FieldDescription.vue | 14 + src/components/ui/field/FieldError.vue | 32 + src/components/ui/field/FieldGroup.vue | 14 + src/components/ui/field/FieldLabel.vue | 15 + src/components/ui/field/FieldLegend.vue | 19 + src/components/ui/field/FieldSeparator.vue | 19 + src/components/ui/field/FieldSet.vue | 14 + src/components/ui/field/FieldTitle.vue | 14 + src/components/ui/field/index.ts | 10 + src/components/ui/file-icon/FileIcon.vue | 37 + src/components/ui/file-icon/index.ts | 1 + src/components/ui/frame/Frame.vue | 53 + src/components/ui/frame/index.ts | 1 + src/components/ui/input/Input.vue | 18 + src/components/ui/input/index.ts | 1 + src/components/ui/label/Label.vue | 14 + src/components/ui/label/index.ts | 1 + src/components/ui/lucide/Lucide.vue | 22 + src/components/ui/lucide/index.ts | 1 + src/components/ui/map/Map.vue | 224 + src/components/ui/map/index.ts | 1 + src/components/ui/menu/MenuCheckboxItem.vue | 41 + src/components/ui/menu/MenuContent.vue | 30 + src/components/ui/menu/MenuIndicator.vue | 21 + src/components/ui/menu/MenuItem.vue | 34 + src/components/ui/menu/MenuItemGroupLabel.vue | 23 + src/components/ui/menu/MenuPositioner.vue | 29 + src/components/ui/menu/MenuRadioItem.vue | 43 + src/components/ui/menu/MenuRadioItemGroup.vue | 26 + src/components/ui/menu/MenuRoot.vue | 36 + src/components/ui/menu/MenuSeparator.vue | 31 + src/components/ui/menu/MenuTrigger.vue | 30 + src/components/ui/menu/MenuTriggerItem.vue | 27 + src/components/ui/menu/index.ts | 12 + .../ui/pagination/PaginationContext.vue | 10 + .../ui/pagination/PaginationEllipsis.vue | 32 + .../ui/pagination/PaginationItem.vue | 29 + .../ui/pagination/PaginationNextTrigger.vue | 27 + .../ui/pagination/PaginationPrevTrigger.vue | 27 + .../ui/pagination/PaginationRoot.vue | 36 + src/components/ui/pagination/index.ts | 6 + .../ui/password-input/PasswordInput.vue | 57 + src/components/ui/password-input/index.ts | 1 + src/components/ui/popover/PopoverArrow.vue | 18 + src/components/ui/popover/PopoverArrowTip.vue | 18 + src/components/ui/popover/PopoverContent.vue | 34 + .../ui/popover/PopoverDescription.vue | 27 + .../ui/popover/PopoverIndicator.vue | 26 + .../ui/popover/PopoverPositioner.vue | 29 + src/components/ui/popover/PopoverRoot.vue | 36 + src/components/ui/popover/PopoverTitle.vue | 27 + src/components/ui/popover/PopoverTrigger.vue | 30 + src/components/ui/popover/index.ts | 9 + src/components/ui/presence/Presence.vue | 44 + src/components/ui/presence/index.ts | 1 + .../ui/progress-circular/ProgressCircle.vue | 18 + .../progress-circular/ProgressCircleRange.vue | 16 + .../progress-circular/ProgressCircleTrack.vue | 16 + .../ui/progress-circular/ProgressLabel.vue | 28 + .../ui/progress-circular/ProgressRoot.vue | 32 + .../progress-circular/ProgressValueText.vue | 23 + src/components/ui/progress-circular/index.ts | 6 + .../ui/progress-linear/ProgressLabel.vue | 28 + .../ui/progress-linear/ProgressRange.vue | 16 + .../ui/progress-linear/ProgressRoot.vue | 32 + .../ui/progress-linear/ProgressTrack.vue | 18 + .../ui/progress-linear/ProgressValueText.vue | 23 + src/components/ui/progress-linear/index.ts | 5 + .../ui/radio-group/RadioGroupIndicator.vue | 27 + .../ui/radio-group/RadioGroupItem.vue | 33 + .../ui/radio-group/RadioGroupItemControl.vue | 29 + .../radio-group/RadioGroupItemHiddenInput.vue | 18 + .../ui/radio-group/RadioGroupItemText.vue | 29 + .../ui/radio-group/RadioGroupLabel.vue | 28 + .../ui/radio-group/RadioGroupRoot.vue | 37 + src/components/ui/radio-group/index.ts | 7 + .../ui/scroll-area/ScrollAreaContent.vue | 16 + .../ui/scroll-area/ScrollAreaCorner.vue | 14 + .../ui/scroll-area/ScrollAreaRoot.vue | 29 + .../ui/scroll-area/ScrollAreaScrollbar.vue | 18 + .../ui/scroll-area/ScrollAreaThumb.vue | 16 + .../ui/scroll-area/ScrollAreaViewport.vue | 16 + src/components/ui/scroll-area/index.ts | 7 + .../ui/select/SelectClearTrigger.vue | 27 + src/components/ui/select/SelectContent.vue | 35 + src/components/ui/select/SelectControl.vue | 27 + .../ui/select/SelectHiddenSelect.vue | 16 + src/components/ui/select/SelectIndicator.vue | 29 + src/components/ui/select/SelectItem.vue | 33 + src/components/ui/select/SelectItemGroup.vue | 31 + .../ui/select/SelectItemGroupLabel.vue | 32 + .../ui/select/SelectItemIndicator.vue | 31 + src/components/ui/select/SelectItemText.vue | 28 + src/components/ui/select/SelectLabel.vue | 28 + src/components/ui/select/SelectPositioner.vue | 27 + src/components/ui/select/SelectRoot.vue | 41 + src/components/ui/select/SelectTrigger.vue | 31 + src/components/ui/select/SelectValueText.vue | 26 + src/components/ui/select/index.ts | 15 + src/components/ui/separator/Separator.vue | 21 + src/components/ui/separator/index.ts | 1 + src/components/ui/sheet/SheetBackdrop.vue | 27 + src/components/ui/sheet/SheetCloseTrigger.vue | 44 + src/components/ui/sheet/SheetContent.vue | 40 + src/components/ui/sheet/SheetDescription.vue | 27 + src/components/ui/sheet/SheetPositioner.vue | 27 + src/components/ui/sheet/SheetRoot.vue | 36 + src/components/ui/sheet/SheetTitle.vue | 27 + src/components/ui/sheet/SheetTrigger.vue | 28 + src/components/ui/sheet/index.ts | 8 + src/components/ui/slider/SliderControl.vue | 27 + .../ui/slider/SliderHiddenInput.vue | 18 + src/components/ui/slider/SliderLabel.vue | 28 + src/components/ui/slider/SliderMarker.vue | 29 + .../ui/slider/SliderMarkerGroup.vue | 27 + src/components/ui/slider/SliderRange.vue | 27 + src/components/ui/slider/SliderRoot.vue | 32 + src/components/ui/slider/SliderThumb.vue | 31 + src/components/ui/slider/SliderTrack.vue | 27 + src/components/ui/slider/SliderValueText.vue | 25 + src/components/ui/slider/index.ts | 10 + src/components/ui/slot/index.ts | 59 + src/components/ui/slot/slot.ts | 133 + src/components/ui/styles/accordion.styles.ts | 39 + src/components/ui/styles/alert.styles.ts | 134 + src/components/ui/styles/avatar.styles.ts | 24 + src/components/ui/styles/badge.styles.ts | 130 + src/components/ui/styles/box.styles.ts | 24 + src/components/ui/styles/breadcrumb.styles.ts | 4 + src/components/ui/styles/button.styles.ts | 137 + src/components/ui/styles/carousel.styles.ts | 14 + src/components/ui/styles/chart.styles.ts | 1 + src/components/ui/styles/checkbox.styles.ts | 7 + src/components/ui/styles/combobox.styles.ts | 18 + src/components/ui/styles/datepicker.styles.ts | 34 + src/components/ui/styles/dialog.styles.ts | 14 + src/components/ui/styles/field.styles.ts | 51 + src/components/ui/styles/input.styles.ts | 5 + src/components/ui/styles/label.styles.ts | 1 + src/components/ui/styles/map.styles.ts | 9 + src/components/ui/styles/menu.styles.ts | 33 + .../ui/styles/native-select.styles.ts | 3 + src/components/ui/styles/pagination.styles.ts | 9 + src/components/ui/styles/popover.styles.ts | 13 + .../ui/styles/progress-circular.styles.ts | 8 + .../ui/styles/progress-linear.styles.ts | 6 + .../ui/styles/radio-group.styles.ts | 9 + .../ui/styles/scroll-area.styles.ts | 16 + src/components/ui/styles/select.styles.ts | 21 + src/components/ui/styles/separator.style.ts | 2 + src/components/ui/styles/separator.styles.ts | 2 + src/components/ui/styles/sheet.styles.ts | 30 + src/components/ui/styles/slider.styles.ts | 14 + src/components/ui/styles/switch.styles.ts | 7 + src/components/ui/styles/table.styles.ts | 63 + src/components/ui/styles/tabs.styles.ts | 8 + src/components/ui/styles/textarea.styles.ts | 5 + src/components/ui/styles/toast.styles.ts | 15 + src/components/ui/styles/tooltip.styles.ts | 9 + src/components/ui/switch/SwitchControl.vue | 28 + .../ui/switch/SwitchHiddenInput.vue | 21 + src/components/ui/switch/SwitchLabel.vue | 28 + src/components/ui/switch/SwitchRoot.vue | 36 + src/components/ui/switch/SwitchThumb.vue | 27 + src/components/ui/switch/index.ts | 5 + src/components/ui/table/Table.vue | 31 + src/components/ui/table/TableBody.vue | 14 + src/components/ui/table/TableCaption.vue | 14 + src/components/ui/table/TableCell.vue | 23 + src/components/ui/table/TableContainer.vue | 14 + src/components/ui/table/TableFooter.vue | 14 + src/components/ui/table/TableHead.vue | 14 + src/components/ui/table/TableHeader.vue | 14 + src/components/ui/table/TableRow.vue | 14 + src/components/ui/table/index.ts | 9 + src/components/ui/tabs/TabsContent.vue | 29 + src/components/ui/tabs/TabsIndicator.vue | 27 + src/components/ui/tabs/TabsList.vue | 29 + src/components/ui/tabs/TabsRoot.vue | 32 + src/components/ui/tabs/TabsTrigger.vue | 29 + src/components/ui/tabs/index.ts | 5 + src/components/ui/textarea/Textarea.vue | 14 + src/components/ui/textarea/index.ts | 1 + src/components/ui/toast/ToastCloseTrigger.vue | 44 + src/components/ui/toast/ToastDescription.vue | 27 + src/components/ui/toast/ToastItem.vue | 32 + src/components/ui/toast/ToastRoot.vue | 38 + src/components/ui/toast/ToastTitle.vue | 27 + src/components/ui/toast/ToasterContainer.vue | 35 + src/components/ui/toast/index.ts | 7 + src/components/ui/toast/toaster.ts | 9 + src/components/ui/tooltip/TooltipArrow.vue | 27 + src/components/ui/tooltip/TooltipArrowTip.vue | 27 + src/components/ui/tooltip/TooltipContent.vue | 31 + .../ui/tooltip/TooltipPositioner.vue | 29 + src/components/ui/tooltip/TooltipRoot.vue | 34 + src/components/ui/tooltip/TooltipTrigger.vue | 28 + src/components/ui/tooltip/index.ts | 6 + src/components/ui/usage/Accordion.vue | 126 + src/components/ui/usage/Alert.vue | 207 + src/components/ui/usage/Avatar.vue | 38 + src/components/ui/usage/Badge.vue | 115 + src/components/ui/usage/Box.vue | 32 + src/components/ui/usage/Breadcrumb.vue | 15 + src/components/ui/usage/Button.vue | 905 +++ src/components/ui/usage/Carousel.vue | 85 + src/components/ui/usage/Chart.vue | 64 + src/components/ui/usage/Checkbox.vue | 22 + src/components/ui/usage/Combobox.vue | 244 + src/components/ui/usage/DataTable.vue | 934 +++ src/components/ui/usage/Datepicker.vue | 493 ++ src/components/ui/usage/Dialog.vue | 96 + src/components/ui/usage/Field.vue | 227 + src/components/ui/usage/Input.vue | 15 + src/components/ui/usage/Map.vue | 74 + src/components/ui/usage/Menu.vue | 157 + src/components/ui/usage/Pagination.vue | 25 + src/components/ui/usage/Popover.vue | 44 + src/components/ui/usage/ProgressCircular.vue | 21 + src/components/ui/usage/ProgressLinear.vue | 19 + src/components/ui/usage/RadioGroup.vue | 21 + src/components/ui/usage/Select.vue | 174 + src/components/ui/usage/Sheet.vue | 77 + src/components/ui/usage/Slider.vue | 70 + src/components/ui/usage/Switch.vue | 16 + src/components/ui/usage/Table.vue | 226 + src/components/ui/usage/Tabs.vue | 57 + src/components/ui/usage/Textarea.vue | 13 + src/components/ui/usage/Toast.vue | 37 + src/components/ui/usage/Tooltip.vue | 17 + src/components/ui/utils/cn.ts | 15 + .../weekly-best-sellers/WeeklyBestSellers.vue | 99 + src/components/weekly-best-sellers/index.ts | 1 + .../weekly-top-products/WeeklyTopProducts.vue | 169 + src/components/weekly-top-products/index.ts | 1 + src/composables/useApiPagination.ts | 51 + src/composables/useBreadcrumb.ts | 83 + src/composables/useFilteredMenu.ts | 14 + src/composables/usePermissions.ts | 45 + src/composables/useQuickSearch.ts | 30 + src/composables/useRoleSwitcher.ts | 108 + src/composables/useSideMenu.ts | 84 + src/constants/employers.ts | 32 + src/core/services/api.ts | 10 + src/core/types/api.ts | 16 + src/core/types/menu.ts | 11 + src/core/utils/activeRolePermission.ts | 38 + src/core/utils/filterMenuByPermission.ts | 75 + src/core/utils/getApiErrorMessage.ts | 42 + src/core/utils/routePermission.ts | 17 + src/index.css | 162 + src/main.ts | 16 + src/main/side-menu.ts | 27 + .../composables/useActivityLogList.ts | 74 + src/modules/activity-log/index.ts | 2 + src/modules/activity-log/menu.ts | 10 + .../activity-log/pages/ActivityLogList.vue | 105 + src/modules/activity-log/routes.ts | 14 + .../services/activity-log.service.ts | 17 + .../activity-log/types/activity-log.types.ts | 26 + .../activity-log/utils/activity-log.utils.ts | 6 + .../components/ActivityReportsSection.vue | 328 + .../components/ActivityTypeSelectField.vue | 296 + .../activity/composables/useActivityDetail.ts | 49 + .../activity/composables/useActivityList.ts | 84 + src/modules/activity/index.ts | 2 + src/modules/activity/menu.ts | 10 + src/modules/activity/pages/ActivityCreate.vue | 405 + src/modules/activity/pages/ActivityDetail.vue | 547 ++ src/modules/activity/pages/ActivityEdit.vue | 504 ++ src/modules/activity/pages/ActivityList.vue | 369 + src/modules/activity/routes.ts | 44 + .../activity/services/activity.service.ts | 337 + src/modules/activity/types/activity.types.ts | 126 + .../components/EmailVerificationBanner.vue | 46 + src/modules/auth/index.ts | 44 + src/modules/auth/menu.ts | 14 + src/modules/auth/pages/AccountPending.vue | 125 + src/modules/auth/pages/ForgotPassword.vue | 102 + src/modules/auth/pages/Login.vue | 146 + src/modules/auth/pages/PrivacyPolicy.vue | 126 + src/modules/auth/pages/Register.vue | 421 + src/modules/auth/pages/ResetPassword.vue | 168 + src/modules/auth/pages/TermsConditions.vue | 138 + src/modules/auth/routes.ts | 46 + src/modules/auth/services/auth.service.ts | 154 + src/modules/auth/types/auth.types.ts | 139 + src/modules/dashboard/index.ts | 1 + src/modules/dashboard/menu.ts | 9 + .../pages/DashboardOverview-backup.vue | 552 ++ .../dashboard/pages/DashboardOverview.vue | 258 + src/modules/dashboard/routes.ts | 10 + .../composables/useExternalSystemDetail.ts | 61 + .../composables/useExternalSystemLaunch.ts | 49 + .../composables/useExternalSystemList.ts | 71 + src/modules/external-system/index.ts | 2 + src/modules/external-system/menu.ts | 9 + .../pages/ExternalSystemDetail.vue | 116 + .../pages/ExternalSystemList.vue | 111 + src/modules/external-system/routes.ts | 22 + .../services/external-system.service.ts | 41 + .../types/external-system.types.ts | 42 + .../utils/external-system.utils.ts | 74 + .../feedback/components/HelpdeskFab.vue | 54 + .../feedback/composables/useFeedbackList.ts | 104 + src/modules/feedback/index.ts | 22 + src/modules/feedback/menu.ts | 10 + src/modules/feedback/pages/FeedbackDetail.vue | 486 ++ src/modules/feedback/pages/FeedbackList.vue | 289 + src/modules/feedback/pages/FeedbackSubmit.vue | 347 + src/modules/feedback/routes.ts | 33 + .../feedback/services/feedback.service.ts | 170 + src/modules/feedback/types/feedback.types.ts | 180 + .../useMembershipApplicationList.ts | 93 + src/modules/membership-application/index.ts | 10 + src/modules/membership-application/menu.ts | 10 + .../pages/MembershipApplication.vue | 970 +++ .../pages/MembershipApplicationDetail.vue | 1123 +++ .../pages/MembershipApplicationEdit.vue | 1246 +++ .../pages/MembershipApplicationList.vue | 480 ++ src/modules/membership-application/routes.ts | 43 + .../membership-application.service.ts | 290 + .../types/membership-application.types.ts | 258 + .../membership-application-badge.utils.ts | 68 + .../membership-application-form.utils.ts | 232 + .../composables/useNotifications.ts | 72 + src/modules/notification/index.ts | 3 + .../services/notification.service.ts | 51 + .../notification/types/notification.types.ts | 62 + .../utils/notification-navigation.ts | 30 + .../profile/components/MemberDigitalCard.vue | 186 + .../components/MemberDigitalCardBack.vue | 104 + .../components/MemberDigitalCardFlip.vue | 34 + .../components/MemberDigitalCardFront.vue | 97 + .../components/PhoneVerificationSection.vue | 184 + src/modules/profile/index.ts | 2 + src/modules/profile/menu.ts | 9 + src/modules/profile/pages/BankDetailTab.vue | 548 ++ .../profile/pages/ChangePasswordTab.vue | 136 + src/modules/profile/pages/EmploymentTab.vue | 577 ++ src/modules/profile/pages/HeirTab.vue | 473 ++ .../profile/pages/ProfileOverview2.vue | 295 + src/modules/profile/pages/ProfileTab.vue | 830 ++ .../profile/pages/PublicMemberProfile.vue | 140 + src/modules/profile/routes.ts | 19 + .../profile/services/address.service.ts | 51 + src/modules/profile/services/bank.service.ts | 12 + .../profile/services/bankDetail.service.ts | 51 + .../profile/services/employment.service.ts | 51 + src/modules/profile/services/heir.service.ts | 44 + .../services/member-digital-card.service.ts | 35 + .../profile/services/profile.service.ts | 70 + .../services/public-member-profile.service.ts | 12 + src/modules/profile/types/address.types.ts | 41 + src/modules/profile/types/bank.types.ts | 15 + src/modules/profile/types/bankDetail.types.ts | 35 + src/modules/profile/types/employment.types.ts | 41 + src/modules/profile/types/heir.types.ts | 39 + src/modules/profile/types/profile.types.ts | 30 + .../types/public-member-profile.types.ts | 16 + .../utils/member-digital-card.utils.ts | 35 + .../role/components/RolePermissionsPicker.vue | 68 + src/modules/role/composables/useRoleList.ts | 126 + .../role/composables/useRoleSelectFields.ts | 73 + src/modules/role/index.ts | 2 + src/modules/role/menu.ts | 10 + src/modules/role/pages/RoleCreate.vue | 196 + src/modules/role/pages/RoleEdit.vue | 210 + src/modules/role/pages/RoleList.vue | 195 + src/modules/role/routes.ts | 22 + src/modules/role/services/role.service.ts | 85 + src/modules/role/types/role.types.ts | 40 + src/modules/role/utils/groupPermissions.ts | 57 + .../user/composables/useDeletedUserList.ts | 99 + .../user/composables/useImpersonate.ts | 172 + src/modules/user/composables/useUserList.ts | 168 + src/modules/user/index.ts | 2 + src/modules/user/menu.ts | 10 + src/modules/user/pages/UserBankDetailTab.vue | 57 + src/modules/user/pages/UserCreate.vue | 479 ++ src/modules/user/pages/UserEdit.vue | 962 +++ src/modules/user/pages/UserEmploymentTab.vue | 79 + src/modules/user/pages/UserList.vue | 830 ++ src/modules/user/pages/UserProfileTab.vue | 198 + src/modules/user/pages/UserProfileView.vue | 202 + src/modules/user/routes.ts | 28 + .../user/services/impersonate.service.ts | 21 + src/modules/user/services/user.service.ts | 135 + .../user/services/userEmployment.service.ts | 47 + src/modules/user/types/impersonate.types.ts | 31 + src/modules/user/types/user.types.ts | 113 + src/pinia.ts | 4 + src/router.d.ts | 14 + src/router/index.ts | 118 + src/stores/auth.ts | 111 + src/stores/color-scheme.ts | 39 + src/stores/dark-mode.ts | 26 + src/stores/theme.ts | 76 + src/themes/Enigma/SideMenu/SideMenu.vue | 249 + src/themes/Enigma/SideMenu/index.ts | 3 + src/themes/Layout.vue | 104 + src/themes/index.ts | 3 + src/utils/applyAppearance.ts | 24 + src/utils/cn.ts | 15 + src/utils/faker.ts | 407 + src/utils/form-input.utils.ts | 7 + src/utils/frame.ts | 325 + src/utils/helper.ts | 201 + tsconfig.app.json | 22 + tsconfig.json | 17 + tsconfig.node.json | 19 + tsconfig.vitest.json | 11 + vite.config.ts | 29 + vitest.config.ts | 14 + 588 files changed, 49098 insertions(+) create mode 100644 .DS_Store create mode 100644 .dockerignore create mode 100644 .editorconfig create mode 100644 .env.development create mode 100644 .gitea/workflows/build.yml create mode 100644 .gitea/workflows/deploy-prod.yml create mode 100644 .gitignore create mode 100644 .npmrc create mode 100644 .prettierrc.json create mode 100644 README.md create mode 100644 cypress.config.ts create mode 100644 docker/Dockerfile create mode 100644 docker/docker-compose.production.yml create mode 100644 docker/nginx.conf create mode 100644 env.d.ts create mode 100644 eslint.config.ts create mode 100644 index.html create mode 100644 package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml create mode 100644 public/favicon.ico create mode 100644 src/.DS_Store create mode 100644 src/App.vue create mode 100644 src/assets/.DS_Store create mode 100644 src/assets/css/themes/enigma/side-menu.css create mode 100644 src/assets/css/themes/enigma/top-menu.css create mode 100644 src/assets/images/accent.svg create mode 100644 src/assets/images/bg-pattern.svg create mode 100644 src/assets/images/error-illustration.svg create mode 100644 src/assets/images/illustration.svg create mode 100644 src/assets/images/logo-original.svg create mode 100644 src/assets/images/logo.svg create mode 100644 src/assets/images/noise.png create mode 100644 src/assets/images/phone-illustration.svg create mode 100755 src/assets/images/placeholders/200x200.jpg create mode 100755 src/assets/images/placeholders/800x800.jpg create mode 100644 src/assets/images/woman-illustration.svg create mode 100644 src/components/account-dropdown/AccountDropdown.vue create mode 100644 src/components/account-dropdown/AccountTrigger.vue create mode 100644 src/components/account-dropdown/index.ts create mode 100644 src/components/chart-presets/Bar1.vue create mode 100644 src/components/chart-presets/Bar2.vue create mode 100644 src/components/chart-presets/Donut1.vue create mode 100644 src/components/chart-presets/Donut2.vue create mode 100644 src/components/chart-presets/Line1.vue create mode 100644 src/components/chart-presets/Line2.vue create mode 100644 src/components/chart-presets/Line3.vue create mode 100644 src/components/chart-presets/Pie1.vue create mode 100644 src/components/chart-presets/index.ts create mode 100644 src/components/daily-notes/DailyNotes.vue create mode 100644 src/components/daily-notes/index.ts create mode 100644 src/components/docs/ApiButton.vue create mode 100644 src/components/docs/InstallPackage.vue create mode 100644 src/components/docs/Menu.vue create mode 100644 src/components/docs/Preview.vue create mode 100644 src/components/docs/PreviewCode.vue create mode 100644 src/components/docs/SectionContent.vue create mode 100644 src/components/docs/SectionTitle.vue create mode 100644 src/components/docs/Subtitle.vue create mode 100644 src/components/docs/Title.vue create mode 100644 src/components/docs/Wrapper.vue create mode 100644 src/components/docs/index.ts create mode 100644 src/components/notification-dropdown/NotificationDropdown.vue create mode 100644 src/components/notification-dropdown/index.ts create mode 100644 src/components/official-stores/OfficialStores.vue create mode 100644 src/components/official-stores/index.ts create mode 100644 src/components/quick-search-dialog/QuickSearchDialog.vue create mode 100644 src/components/quick-search-dialog/index.ts create mode 100644 src/components/recent-activities/RecentActivities.vue create mode 100644 src/components/recent-activities/index.ts create mode 100644 src/components/schedules/Schedules.vue create mode 100644 src/components/schedules/index.ts create mode 100644 src/components/side-menu/SideMenu.vue create mode 100644 src/components/side-menu/index.ts create mode 100644 src/components/theme-switcher/ThemeSwitcher.vue create mode 100644 src/components/theme-switcher/index.ts create mode 100644 src/components/top-menu/TopMenu.vue create mode 100644 src/components/top-menu/index.ts create mode 100644 src/components/transactions/Transactions.vue create mode 100644 src/components/transactions/index.ts create mode 100644 src/components/ui/accordion/AccordionContent.vue create mode 100644 src/components/ui/accordion/AccordionItem.vue create mode 100644 src/components/ui/accordion/AccordionRoot.vue create mode 100644 src/components/ui/accordion/AccordionTrigger.vue create mode 100644 src/components/ui/accordion/index.ts create mode 100644 src/components/ui/alert/AlertCloseTrigger.vue create mode 100644 src/components/ui/alert/AlertDescription.vue create mode 100644 src/components/ui/alert/AlertRoot.vue create mode 100644 src/components/ui/alert/AlertTitle.vue create mode 100644 src/components/ui/alert/index.ts create mode 100644 src/components/ui/avatar/AvatarFallback.vue create mode 100644 src/components/ui/avatar/AvatarImage.vue create mode 100644 src/components/ui/avatar/AvatarRoot.vue create mode 100644 src/components/ui/avatar/index.ts create mode 100644 src/components/ui/badge/Badge.vue create mode 100644 src/components/ui/badge/index.ts create mode 100644 src/components/ui/box/box.vue create mode 100644 src/components/ui/box/index.ts create mode 100644 src/components/ui/breadcrumb/Breadcrumb.vue create mode 100644 src/components/ui/breadcrumb/BreadcrumbItem.vue create mode 100644 src/components/ui/breadcrumb/BreadcrumbLink.vue create mode 100644 src/components/ui/breadcrumb/BreadcrumbList.vue create mode 100644 src/components/ui/breadcrumb/index.ts create mode 100644 src/components/ui/button/Button.vue create mode 100644 src/components/ui/button/index.ts create mode 100644 src/components/ui/carousel/CarouselControl.vue create mode 100644 src/components/ui/carousel/CarouselIndicator.vue create mode 100644 src/components/ui/carousel/CarouselIndicatorGroup.vue create mode 100644 src/components/ui/carousel/CarouselItem.vue create mode 100644 src/components/ui/carousel/CarouselItemGroup.vue create mode 100644 src/components/ui/carousel/CarouselNextTrigger.vue create mode 100644 src/components/ui/carousel/CarouselPrevTrigger.vue create mode 100644 src/components/ui/carousel/CarouselRoot.vue create mode 100644 src/components/ui/carousel/index.ts create mode 100644 src/components/ui/chart/Chart.vue create mode 100644 src/components/ui/chart/index.ts create mode 100644 src/components/ui/chart/utils.ts create mode 100644 src/components/ui/checkbox/CheckboxControl.vue create mode 100644 src/components/ui/checkbox/CheckboxHiddenInput.vue create mode 100644 src/components/ui/checkbox/CheckboxIndicator.vue create mode 100644 src/components/ui/checkbox/CheckboxLabel.vue create mode 100644 src/components/ui/checkbox/CheckboxRoot.vue create mode 100644 src/components/ui/checkbox/index.ts create mode 100644 src/components/ui/combobox/ComboboxClearTrigger.vue create mode 100644 src/components/ui/combobox/ComboboxContent.vue create mode 100644 src/components/ui/combobox/ComboboxControl.vue create mode 100644 src/components/ui/combobox/ComboboxInput.vue create mode 100644 src/components/ui/combobox/ComboboxItem.vue create mode 100644 src/components/ui/combobox/ComboboxItemGroup.vue create mode 100644 src/components/ui/combobox/ComboboxItemGroupLabel.vue create mode 100644 src/components/ui/combobox/ComboboxItemIndicator.vue create mode 100644 src/components/ui/combobox/ComboboxItemText.vue create mode 100644 src/components/ui/combobox/ComboboxLabel.vue create mode 100644 src/components/ui/combobox/ComboboxPositioner.vue create mode 100644 src/components/ui/combobox/ComboboxRoot.vue create mode 100644 src/components/ui/combobox/ComboboxTrigger.vue create mode 100644 src/components/ui/combobox/index.ts create mode 100644 src/components/ui/datepicker/DatePickerClearTrigger.vue create mode 100644 src/components/ui/datepicker/DatePickerContent.vue create mode 100644 src/components/ui/datepicker/DatePickerContext.vue create mode 100644 src/components/ui/datepicker/DatePickerControl.vue create mode 100644 src/components/ui/datepicker/DatePickerInput.vue create mode 100644 src/components/ui/datepicker/DatePickerLabel.vue create mode 100644 src/components/ui/datepicker/DatePickerMonthSelect.vue create mode 100644 src/components/ui/datepicker/DatePickerNextTrigger.vue create mode 100644 src/components/ui/datepicker/DatePickerPositioner.vue create mode 100644 src/components/ui/datepicker/DatePickerPresetTrigger.vue create mode 100644 src/components/ui/datepicker/DatePickerPrevTrigger.vue create mode 100644 src/components/ui/datepicker/DatePickerRangeText.vue create mode 100644 src/components/ui/datepicker/DatePickerRoot.vue create mode 100644 src/components/ui/datepicker/DatePickerTable.vue create mode 100644 src/components/ui/datepicker/DatePickerTableBody.vue create mode 100644 src/components/ui/datepicker/DatePickerTableCell.vue create mode 100644 src/components/ui/datepicker/DatePickerTableCellTrigger.vue create mode 100644 src/components/ui/datepicker/DatePickerTableHead.vue create mode 100644 src/components/ui/datepicker/DatePickerTableHeader.vue create mode 100644 src/components/ui/datepicker/DatePickerTableRow.vue create mode 100644 src/components/ui/datepicker/DatePickerTrigger.vue create mode 100644 src/components/ui/datepicker/DatePickerView.vue create mode 100644 src/components/ui/datepicker/DatePickerViewControl.vue create mode 100644 src/components/ui/datepicker/DatePickerViewTrigger.vue create mode 100644 src/components/ui/datepicker/DatePickerYearSelect.vue create mode 100644 src/components/ui/datepicker/index.ts create mode 100644 src/components/ui/dialog/DialogBackdrop.vue create mode 100644 src/components/ui/dialog/DialogCloseTrigger.vue create mode 100644 src/components/ui/dialog/DialogContent.vue create mode 100644 src/components/ui/dialog/DialogDescription.vue create mode 100644 src/components/ui/dialog/DialogPositioner.vue create mode 100644 src/components/ui/dialog/DialogRoot.vue create mode 100644 src/components/ui/dialog/DialogTitle.vue create mode 100644 src/components/ui/dialog/DialogTrigger.vue create mode 100644 src/components/ui/dialog/index.ts create mode 100644 src/components/ui/field/Field.vue create mode 100644 src/components/ui/field/FieldContent.vue create mode 100644 src/components/ui/field/FieldDescription.vue create mode 100644 src/components/ui/field/FieldError.vue create mode 100644 src/components/ui/field/FieldGroup.vue create mode 100644 src/components/ui/field/FieldLabel.vue create mode 100644 src/components/ui/field/FieldLegend.vue create mode 100644 src/components/ui/field/FieldSeparator.vue create mode 100644 src/components/ui/field/FieldSet.vue create mode 100644 src/components/ui/field/FieldTitle.vue create mode 100644 src/components/ui/field/index.ts create mode 100644 src/components/ui/file-icon/FileIcon.vue create mode 100644 src/components/ui/file-icon/index.ts create mode 100644 src/components/ui/frame/Frame.vue create mode 100644 src/components/ui/frame/index.ts create mode 100644 src/components/ui/input/Input.vue create mode 100644 src/components/ui/input/index.ts create mode 100644 src/components/ui/label/Label.vue create mode 100644 src/components/ui/label/index.ts create mode 100644 src/components/ui/lucide/Lucide.vue create mode 100644 src/components/ui/lucide/index.ts create mode 100644 src/components/ui/map/Map.vue create mode 100644 src/components/ui/map/index.ts create mode 100644 src/components/ui/menu/MenuCheckboxItem.vue create mode 100644 src/components/ui/menu/MenuContent.vue create mode 100644 src/components/ui/menu/MenuIndicator.vue create mode 100644 src/components/ui/menu/MenuItem.vue create mode 100644 src/components/ui/menu/MenuItemGroupLabel.vue create mode 100644 src/components/ui/menu/MenuPositioner.vue create mode 100644 src/components/ui/menu/MenuRadioItem.vue create mode 100644 src/components/ui/menu/MenuRadioItemGroup.vue create mode 100644 src/components/ui/menu/MenuRoot.vue create mode 100644 src/components/ui/menu/MenuSeparator.vue create mode 100644 src/components/ui/menu/MenuTrigger.vue create mode 100644 src/components/ui/menu/MenuTriggerItem.vue create mode 100644 src/components/ui/menu/index.ts create mode 100644 src/components/ui/pagination/PaginationContext.vue create mode 100644 src/components/ui/pagination/PaginationEllipsis.vue create mode 100644 src/components/ui/pagination/PaginationItem.vue create mode 100644 src/components/ui/pagination/PaginationNextTrigger.vue create mode 100644 src/components/ui/pagination/PaginationPrevTrigger.vue create mode 100644 src/components/ui/pagination/PaginationRoot.vue create mode 100644 src/components/ui/pagination/index.ts create mode 100644 src/components/ui/password-input/PasswordInput.vue create mode 100644 src/components/ui/password-input/index.ts create mode 100644 src/components/ui/popover/PopoverArrow.vue create mode 100644 src/components/ui/popover/PopoverArrowTip.vue create mode 100644 src/components/ui/popover/PopoverContent.vue create mode 100644 src/components/ui/popover/PopoverDescription.vue create mode 100644 src/components/ui/popover/PopoverIndicator.vue create mode 100644 src/components/ui/popover/PopoverPositioner.vue create mode 100644 src/components/ui/popover/PopoverRoot.vue create mode 100644 src/components/ui/popover/PopoverTitle.vue create mode 100644 src/components/ui/popover/PopoverTrigger.vue create mode 100644 src/components/ui/popover/index.ts create mode 100644 src/components/ui/presence/Presence.vue create mode 100644 src/components/ui/presence/index.ts create mode 100644 src/components/ui/progress-circular/ProgressCircle.vue create mode 100644 src/components/ui/progress-circular/ProgressCircleRange.vue create mode 100644 src/components/ui/progress-circular/ProgressCircleTrack.vue create mode 100644 src/components/ui/progress-circular/ProgressLabel.vue create mode 100644 src/components/ui/progress-circular/ProgressRoot.vue create mode 100644 src/components/ui/progress-circular/ProgressValueText.vue create mode 100644 src/components/ui/progress-circular/index.ts create mode 100644 src/components/ui/progress-linear/ProgressLabel.vue create mode 100644 src/components/ui/progress-linear/ProgressRange.vue create mode 100644 src/components/ui/progress-linear/ProgressRoot.vue create mode 100644 src/components/ui/progress-linear/ProgressTrack.vue create mode 100644 src/components/ui/progress-linear/ProgressValueText.vue create mode 100644 src/components/ui/progress-linear/index.ts create mode 100644 src/components/ui/radio-group/RadioGroupIndicator.vue create mode 100644 src/components/ui/radio-group/RadioGroupItem.vue create mode 100644 src/components/ui/radio-group/RadioGroupItemControl.vue create mode 100644 src/components/ui/radio-group/RadioGroupItemHiddenInput.vue create mode 100644 src/components/ui/radio-group/RadioGroupItemText.vue create mode 100644 src/components/ui/radio-group/RadioGroupLabel.vue create mode 100644 src/components/ui/radio-group/RadioGroupRoot.vue create mode 100644 src/components/ui/radio-group/index.ts create mode 100644 src/components/ui/scroll-area/ScrollAreaContent.vue create mode 100644 src/components/ui/scroll-area/ScrollAreaCorner.vue create mode 100644 src/components/ui/scroll-area/ScrollAreaRoot.vue create mode 100644 src/components/ui/scroll-area/ScrollAreaScrollbar.vue create mode 100644 src/components/ui/scroll-area/ScrollAreaThumb.vue create mode 100644 src/components/ui/scroll-area/ScrollAreaViewport.vue create mode 100644 src/components/ui/scroll-area/index.ts create mode 100644 src/components/ui/select/SelectClearTrigger.vue create mode 100644 src/components/ui/select/SelectContent.vue create mode 100644 src/components/ui/select/SelectControl.vue create mode 100644 src/components/ui/select/SelectHiddenSelect.vue create mode 100644 src/components/ui/select/SelectIndicator.vue create mode 100644 src/components/ui/select/SelectItem.vue create mode 100644 src/components/ui/select/SelectItemGroup.vue create mode 100644 src/components/ui/select/SelectItemGroupLabel.vue create mode 100644 src/components/ui/select/SelectItemIndicator.vue create mode 100644 src/components/ui/select/SelectItemText.vue create mode 100644 src/components/ui/select/SelectLabel.vue create mode 100644 src/components/ui/select/SelectPositioner.vue create mode 100644 src/components/ui/select/SelectRoot.vue create mode 100644 src/components/ui/select/SelectTrigger.vue create mode 100644 src/components/ui/select/SelectValueText.vue create mode 100644 src/components/ui/select/index.ts create mode 100644 src/components/ui/separator/Separator.vue create mode 100644 src/components/ui/separator/index.ts create mode 100644 src/components/ui/sheet/SheetBackdrop.vue create mode 100644 src/components/ui/sheet/SheetCloseTrigger.vue create mode 100644 src/components/ui/sheet/SheetContent.vue create mode 100644 src/components/ui/sheet/SheetDescription.vue create mode 100644 src/components/ui/sheet/SheetPositioner.vue create mode 100644 src/components/ui/sheet/SheetRoot.vue create mode 100644 src/components/ui/sheet/SheetTitle.vue create mode 100644 src/components/ui/sheet/SheetTrigger.vue create mode 100644 src/components/ui/sheet/index.ts create mode 100644 src/components/ui/slider/SliderControl.vue create mode 100644 src/components/ui/slider/SliderHiddenInput.vue create mode 100644 src/components/ui/slider/SliderLabel.vue create mode 100644 src/components/ui/slider/SliderMarker.vue create mode 100644 src/components/ui/slider/SliderMarkerGroup.vue create mode 100644 src/components/ui/slider/SliderRange.vue create mode 100644 src/components/ui/slider/SliderRoot.vue create mode 100644 src/components/ui/slider/SliderThumb.vue create mode 100644 src/components/ui/slider/SliderTrack.vue create mode 100644 src/components/ui/slider/SliderValueText.vue create mode 100644 src/components/ui/slider/index.ts create mode 100644 src/components/ui/slot/index.ts create mode 100644 src/components/ui/slot/slot.ts create mode 100644 src/components/ui/styles/accordion.styles.ts create mode 100644 src/components/ui/styles/alert.styles.ts create mode 100644 src/components/ui/styles/avatar.styles.ts create mode 100644 src/components/ui/styles/badge.styles.ts create mode 100644 src/components/ui/styles/box.styles.ts create mode 100644 src/components/ui/styles/breadcrumb.styles.ts create mode 100644 src/components/ui/styles/button.styles.ts create mode 100644 src/components/ui/styles/carousel.styles.ts create mode 100644 src/components/ui/styles/chart.styles.ts create mode 100644 src/components/ui/styles/checkbox.styles.ts create mode 100644 src/components/ui/styles/combobox.styles.ts create mode 100644 src/components/ui/styles/datepicker.styles.ts create mode 100644 src/components/ui/styles/dialog.styles.ts create mode 100644 src/components/ui/styles/field.styles.ts create mode 100644 src/components/ui/styles/input.styles.ts create mode 100644 src/components/ui/styles/label.styles.ts create mode 100644 src/components/ui/styles/map.styles.ts create mode 100644 src/components/ui/styles/menu.styles.ts create mode 100644 src/components/ui/styles/native-select.styles.ts create mode 100644 src/components/ui/styles/pagination.styles.ts create mode 100644 src/components/ui/styles/popover.styles.ts create mode 100644 src/components/ui/styles/progress-circular.styles.ts create mode 100644 src/components/ui/styles/progress-linear.styles.ts create mode 100644 src/components/ui/styles/radio-group.styles.ts create mode 100644 src/components/ui/styles/scroll-area.styles.ts create mode 100644 src/components/ui/styles/select.styles.ts create mode 100644 src/components/ui/styles/separator.style.ts create mode 100644 src/components/ui/styles/separator.styles.ts create mode 100644 src/components/ui/styles/sheet.styles.ts create mode 100644 src/components/ui/styles/slider.styles.ts create mode 100644 src/components/ui/styles/switch.styles.ts create mode 100644 src/components/ui/styles/table.styles.ts create mode 100644 src/components/ui/styles/tabs.styles.ts create mode 100644 src/components/ui/styles/textarea.styles.ts create mode 100644 src/components/ui/styles/toast.styles.ts create mode 100644 src/components/ui/styles/tooltip.styles.ts create mode 100644 src/components/ui/switch/SwitchControl.vue create mode 100644 src/components/ui/switch/SwitchHiddenInput.vue create mode 100644 src/components/ui/switch/SwitchLabel.vue create mode 100644 src/components/ui/switch/SwitchRoot.vue create mode 100644 src/components/ui/switch/SwitchThumb.vue create mode 100644 src/components/ui/switch/index.ts create mode 100644 src/components/ui/table/Table.vue create mode 100644 src/components/ui/table/TableBody.vue create mode 100644 src/components/ui/table/TableCaption.vue create mode 100644 src/components/ui/table/TableCell.vue create mode 100644 src/components/ui/table/TableContainer.vue create mode 100644 src/components/ui/table/TableFooter.vue create mode 100644 src/components/ui/table/TableHead.vue create mode 100644 src/components/ui/table/TableHeader.vue create mode 100644 src/components/ui/table/TableRow.vue create mode 100644 src/components/ui/table/index.ts create mode 100644 src/components/ui/tabs/TabsContent.vue create mode 100644 src/components/ui/tabs/TabsIndicator.vue create mode 100644 src/components/ui/tabs/TabsList.vue create mode 100644 src/components/ui/tabs/TabsRoot.vue create mode 100644 src/components/ui/tabs/TabsTrigger.vue create mode 100644 src/components/ui/tabs/index.ts create mode 100644 src/components/ui/textarea/Textarea.vue create mode 100644 src/components/ui/textarea/index.ts create mode 100644 src/components/ui/toast/ToastCloseTrigger.vue create mode 100644 src/components/ui/toast/ToastDescription.vue create mode 100644 src/components/ui/toast/ToastItem.vue create mode 100644 src/components/ui/toast/ToastRoot.vue create mode 100644 src/components/ui/toast/ToastTitle.vue create mode 100644 src/components/ui/toast/ToasterContainer.vue create mode 100644 src/components/ui/toast/index.ts create mode 100644 src/components/ui/toast/toaster.ts create mode 100644 src/components/ui/tooltip/TooltipArrow.vue create mode 100644 src/components/ui/tooltip/TooltipArrowTip.vue create mode 100644 src/components/ui/tooltip/TooltipContent.vue create mode 100644 src/components/ui/tooltip/TooltipPositioner.vue create mode 100644 src/components/ui/tooltip/TooltipRoot.vue create mode 100644 src/components/ui/tooltip/TooltipTrigger.vue create mode 100644 src/components/ui/tooltip/index.ts create mode 100644 src/components/ui/usage/Accordion.vue create mode 100644 src/components/ui/usage/Alert.vue create mode 100644 src/components/ui/usage/Avatar.vue create mode 100644 src/components/ui/usage/Badge.vue create mode 100644 src/components/ui/usage/Box.vue create mode 100644 src/components/ui/usage/Breadcrumb.vue create mode 100644 src/components/ui/usage/Button.vue create mode 100644 src/components/ui/usage/Carousel.vue create mode 100644 src/components/ui/usage/Chart.vue create mode 100644 src/components/ui/usage/Checkbox.vue create mode 100644 src/components/ui/usage/Combobox.vue create mode 100644 src/components/ui/usage/DataTable.vue create mode 100644 src/components/ui/usage/Datepicker.vue create mode 100644 src/components/ui/usage/Dialog.vue create mode 100644 src/components/ui/usage/Field.vue create mode 100644 src/components/ui/usage/Input.vue create mode 100644 src/components/ui/usage/Map.vue create mode 100644 src/components/ui/usage/Menu.vue create mode 100644 src/components/ui/usage/Pagination.vue create mode 100644 src/components/ui/usage/Popover.vue create mode 100644 src/components/ui/usage/ProgressCircular.vue create mode 100644 src/components/ui/usage/ProgressLinear.vue create mode 100644 src/components/ui/usage/RadioGroup.vue create mode 100644 src/components/ui/usage/Select.vue create mode 100644 src/components/ui/usage/Sheet.vue create mode 100644 src/components/ui/usage/Slider.vue create mode 100644 src/components/ui/usage/Switch.vue create mode 100644 src/components/ui/usage/Table.vue create mode 100644 src/components/ui/usage/Tabs.vue create mode 100644 src/components/ui/usage/Textarea.vue create mode 100644 src/components/ui/usage/Toast.vue create mode 100644 src/components/ui/usage/Tooltip.vue create mode 100644 src/components/ui/utils/cn.ts create mode 100644 src/components/weekly-best-sellers/WeeklyBestSellers.vue create mode 100644 src/components/weekly-best-sellers/index.ts create mode 100644 src/components/weekly-top-products/WeeklyTopProducts.vue create mode 100644 src/components/weekly-top-products/index.ts create mode 100644 src/composables/useApiPagination.ts create mode 100644 src/composables/useBreadcrumb.ts create mode 100644 src/composables/useFilteredMenu.ts create mode 100644 src/composables/usePermissions.ts create mode 100644 src/composables/useQuickSearch.ts create mode 100644 src/composables/useRoleSwitcher.ts create mode 100644 src/composables/useSideMenu.ts create mode 100644 src/constants/employers.ts create mode 100644 src/core/services/api.ts create mode 100644 src/core/types/api.ts create mode 100644 src/core/types/menu.ts create mode 100644 src/core/utils/activeRolePermission.ts create mode 100644 src/core/utils/filterMenuByPermission.ts create mode 100644 src/core/utils/getApiErrorMessage.ts create mode 100644 src/core/utils/routePermission.ts create mode 100644 src/index.css create mode 100644 src/main.ts create mode 100644 src/main/side-menu.ts create mode 100644 src/modules/activity-log/composables/useActivityLogList.ts create mode 100644 src/modules/activity-log/index.ts create mode 100644 src/modules/activity-log/menu.ts create mode 100644 src/modules/activity-log/pages/ActivityLogList.vue create mode 100644 src/modules/activity-log/routes.ts create mode 100644 src/modules/activity-log/services/activity-log.service.ts create mode 100644 src/modules/activity-log/types/activity-log.types.ts create mode 100644 src/modules/activity-log/utils/activity-log.utils.ts create mode 100644 src/modules/activity/components/ActivityReportsSection.vue create mode 100644 src/modules/activity/components/ActivityTypeSelectField.vue create mode 100644 src/modules/activity/composables/useActivityDetail.ts create mode 100644 src/modules/activity/composables/useActivityList.ts create mode 100644 src/modules/activity/index.ts create mode 100644 src/modules/activity/menu.ts create mode 100644 src/modules/activity/pages/ActivityCreate.vue create mode 100644 src/modules/activity/pages/ActivityDetail.vue create mode 100644 src/modules/activity/pages/ActivityEdit.vue create mode 100644 src/modules/activity/pages/ActivityList.vue create mode 100644 src/modules/activity/routes.ts create mode 100644 src/modules/activity/services/activity.service.ts create mode 100644 src/modules/activity/types/activity.types.ts create mode 100644 src/modules/auth/components/EmailVerificationBanner.vue create mode 100644 src/modules/auth/index.ts create mode 100644 src/modules/auth/menu.ts create mode 100644 src/modules/auth/pages/AccountPending.vue create mode 100644 src/modules/auth/pages/ForgotPassword.vue create mode 100644 src/modules/auth/pages/Login.vue create mode 100644 src/modules/auth/pages/PrivacyPolicy.vue create mode 100644 src/modules/auth/pages/Register.vue create mode 100644 src/modules/auth/pages/ResetPassword.vue create mode 100644 src/modules/auth/pages/TermsConditions.vue create mode 100644 src/modules/auth/routes.ts create mode 100644 src/modules/auth/services/auth.service.ts create mode 100644 src/modules/auth/types/auth.types.ts create mode 100644 src/modules/dashboard/index.ts create mode 100644 src/modules/dashboard/menu.ts create mode 100644 src/modules/dashboard/pages/DashboardOverview-backup.vue create mode 100644 src/modules/dashboard/pages/DashboardOverview.vue create mode 100644 src/modules/dashboard/routes.ts create mode 100644 src/modules/external-system/composables/useExternalSystemDetail.ts create mode 100644 src/modules/external-system/composables/useExternalSystemLaunch.ts create mode 100644 src/modules/external-system/composables/useExternalSystemList.ts create mode 100644 src/modules/external-system/index.ts create mode 100644 src/modules/external-system/menu.ts create mode 100644 src/modules/external-system/pages/ExternalSystemDetail.vue create mode 100644 src/modules/external-system/pages/ExternalSystemList.vue create mode 100644 src/modules/external-system/routes.ts create mode 100644 src/modules/external-system/services/external-system.service.ts create mode 100644 src/modules/external-system/types/external-system.types.ts create mode 100644 src/modules/external-system/utils/external-system.utils.ts create mode 100644 src/modules/feedback/components/HelpdeskFab.vue create mode 100644 src/modules/feedback/composables/useFeedbackList.ts create mode 100644 src/modules/feedback/index.ts create mode 100644 src/modules/feedback/menu.ts create mode 100644 src/modules/feedback/pages/FeedbackDetail.vue create mode 100644 src/modules/feedback/pages/FeedbackList.vue create mode 100644 src/modules/feedback/pages/FeedbackSubmit.vue create mode 100644 src/modules/feedback/routes.ts create mode 100644 src/modules/feedback/services/feedback.service.ts create mode 100644 src/modules/feedback/types/feedback.types.ts create mode 100644 src/modules/membership-application/composables/useMembershipApplicationList.ts create mode 100644 src/modules/membership-application/index.ts create mode 100644 src/modules/membership-application/menu.ts create mode 100644 src/modules/membership-application/pages/MembershipApplication.vue create mode 100644 src/modules/membership-application/pages/MembershipApplicationDetail.vue create mode 100644 src/modules/membership-application/pages/MembershipApplicationEdit.vue create mode 100644 src/modules/membership-application/pages/MembershipApplicationList.vue create mode 100644 src/modules/membership-application/routes.ts create mode 100644 src/modules/membership-application/services/membership-application.service.ts create mode 100644 src/modules/membership-application/types/membership-application.types.ts create mode 100644 src/modules/membership-application/utils/membership-application-badge.utils.ts create mode 100644 src/modules/membership-application/utils/membership-application-form.utils.ts create mode 100644 src/modules/notification/composables/useNotifications.ts create mode 100644 src/modules/notification/index.ts create mode 100644 src/modules/notification/services/notification.service.ts create mode 100644 src/modules/notification/types/notification.types.ts create mode 100644 src/modules/notification/utils/notification-navigation.ts create mode 100644 src/modules/profile/components/MemberDigitalCard.vue create mode 100644 src/modules/profile/components/MemberDigitalCardBack.vue create mode 100644 src/modules/profile/components/MemberDigitalCardFlip.vue create mode 100644 src/modules/profile/components/MemberDigitalCardFront.vue create mode 100644 src/modules/profile/components/PhoneVerificationSection.vue create mode 100644 src/modules/profile/index.ts create mode 100644 src/modules/profile/menu.ts create mode 100644 src/modules/profile/pages/BankDetailTab.vue create mode 100644 src/modules/profile/pages/ChangePasswordTab.vue create mode 100644 src/modules/profile/pages/EmploymentTab.vue create mode 100644 src/modules/profile/pages/HeirTab.vue create mode 100644 src/modules/profile/pages/ProfileOverview2.vue create mode 100644 src/modules/profile/pages/ProfileTab.vue create mode 100644 src/modules/profile/pages/PublicMemberProfile.vue create mode 100644 src/modules/profile/routes.ts create mode 100644 src/modules/profile/services/address.service.ts create mode 100644 src/modules/profile/services/bank.service.ts create mode 100644 src/modules/profile/services/bankDetail.service.ts create mode 100644 src/modules/profile/services/employment.service.ts create mode 100644 src/modules/profile/services/heir.service.ts create mode 100644 src/modules/profile/services/member-digital-card.service.ts create mode 100644 src/modules/profile/services/profile.service.ts create mode 100644 src/modules/profile/services/public-member-profile.service.ts create mode 100644 src/modules/profile/types/address.types.ts create mode 100644 src/modules/profile/types/bank.types.ts create mode 100644 src/modules/profile/types/bankDetail.types.ts create mode 100644 src/modules/profile/types/employment.types.ts create mode 100644 src/modules/profile/types/heir.types.ts create mode 100644 src/modules/profile/types/profile.types.ts create mode 100644 src/modules/profile/types/public-member-profile.types.ts create mode 100644 src/modules/profile/utils/member-digital-card.utils.ts create mode 100644 src/modules/role/components/RolePermissionsPicker.vue create mode 100644 src/modules/role/composables/useRoleList.ts create mode 100644 src/modules/role/composables/useRoleSelectFields.ts create mode 100644 src/modules/role/index.ts create mode 100644 src/modules/role/menu.ts create mode 100644 src/modules/role/pages/RoleCreate.vue create mode 100644 src/modules/role/pages/RoleEdit.vue create mode 100644 src/modules/role/pages/RoleList.vue create mode 100644 src/modules/role/routes.ts create mode 100644 src/modules/role/services/role.service.ts create mode 100644 src/modules/role/types/role.types.ts create mode 100644 src/modules/role/utils/groupPermissions.ts create mode 100644 src/modules/user/composables/useDeletedUserList.ts create mode 100644 src/modules/user/composables/useImpersonate.ts create mode 100644 src/modules/user/composables/useUserList.ts create mode 100644 src/modules/user/index.ts create mode 100644 src/modules/user/menu.ts create mode 100644 src/modules/user/pages/UserBankDetailTab.vue create mode 100644 src/modules/user/pages/UserCreate.vue create mode 100644 src/modules/user/pages/UserEdit.vue create mode 100644 src/modules/user/pages/UserEmploymentTab.vue create mode 100644 src/modules/user/pages/UserList.vue create mode 100644 src/modules/user/pages/UserProfileTab.vue create mode 100644 src/modules/user/pages/UserProfileView.vue create mode 100644 src/modules/user/routes.ts create mode 100644 src/modules/user/services/impersonate.service.ts create mode 100644 src/modules/user/services/user.service.ts create mode 100644 src/modules/user/services/userEmployment.service.ts create mode 100644 src/modules/user/types/impersonate.types.ts create mode 100644 src/modules/user/types/user.types.ts create mode 100644 src/pinia.ts create mode 100644 src/router.d.ts create mode 100644 src/router/index.ts create mode 100644 src/stores/auth.ts create mode 100644 src/stores/color-scheme.ts create mode 100644 src/stores/dark-mode.ts create mode 100644 src/stores/theme.ts create mode 100644 src/themes/Enigma/SideMenu/SideMenu.vue create mode 100644 src/themes/Enigma/SideMenu/index.ts create mode 100644 src/themes/Layout.vue create mode 100644 src/themes/index.ts create mode 100644 src/utils/applyAppearance.ts create mode 100644 src/utils/cn.ts create mode 100644 src/utils/faker.ts create mode 100644 src/utils/form-input.utils.ts create mode 100644 src/utils/frame.ts create mode 100644 src/utils/helper.ts create mode 100644 tsconfig.app.json create mode 100644 tsconfig.json create mode 100644 tsconfig.node.json create mode 100644 tsconfig.vitest.json create mode 100644 vite.config.ts create mode 100644 vitest.config.ts diff --git a/.DS_Store b/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..8dd97991b0502b2095e5ef9df740a949fc231a32 GIT binary patch literal 10244 zcmeHM&2Jk;6o2D{)^0w!PVGV~kXH2tsi~VlOIsmSbMV(7+cGVmOUjU6n(1Q z1JO{Tw-`jh@xCq0QC76F!>K z7rbOVawUa7Cy_pSd5-99^wETH_!-H!DacdS>>#m7lwiFXW5G;>FkBxODmQ zn|14g>v%hjNIdR69`dLfw&_OTaaIeyq#Fr+o(QFG&86(tsQ>h^YkjwcHig3u>FcA2 zQue431^&v`R!ozP0e!P>osYeUhv6!ZgCyW=^Kpz!FDJCQ%(gg=*g=+8TH;pxfJQOO z5zNM>6GaYd(CY4!&~a(F!m2z;cvDykZ#a?Fhzd_~>{`q50@f(q{YOz*s;u^vx0PZ+ zNhuh4g}$aGDgEO2q`uBLqq$tE@~OU+g{$x(d;&F$m@a$+-@y;?6Z{H)z~AsMnIsp< z6>^o_ARmysO{_6tl7*5E#lyab=2 zEMwgG!?7UOlkW%ClL?H>C>=2%R*^AQCnZ+&q)n8Z+$hnnI29jxkzwVT`C$%pFmtqy z%26^O4o1Sv7!PB!o6L%X$hk2{hFMPJ)}u0HCKZQ;F+Mt&@e-NkMSdUqEHcv$KFchA zK`7KKzX)We9mHA(*ciusC0=IVK|D^$6vKdFz%XDKFbtdu1}4-jZE^m8|LFh!PX!ld zl7@lP$^e;Msx65lz5WJ2O@#R1x3PYKRTN>@Q&K{(5hkKv9>?Q_IF6U671*~R?umkW dMa!O&*n{PN|1;oNo|T#X|A{{(J4XBe{{T36E&~7n literal 0 HcmV?d00001 diff --git a/.dockerignore b/.dockerignore new file mode 100644 index 0000000..e621c68 --- /dev/null +++ b/.dockerignore @@ -0,0 +1,7 @@ +node_modules +dist +.git +.gitea +.DS_Store +.idea +.vscode diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..3b510aa --- /dev/null +++ b/.editorconfig @@ -0,0 +1,8 @@ +[*.{js,jsx,mjs,cjs,ts,tsx,mts,cts,vue,css,scss,sass,less,styl}] +charset = utf-8 +indent_size = 2 +indent_style = space +insert_final_newline = true +trim_trailing_whitespace = true +end_of_line = lf +max_line_length = 100 diff --git a/.env.development b/.env.development new file mode 100644 index 0000000..921d0eb --- /dev/null +++ b/.env.development @@ -0,0 +1,7 @@ +VITE_APP_NAME="MyKOPKB" +VITE_APP_VERSION="1.0" +VITE_API_BASE_URL=http://localhost +VITE_APP_URL=http://localhost +VITE_APP_PORT=5173 +VITE_APP_ENV=development +VITE_APP_DEBUG=true \ No newline at end of file diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml new file mode 100644 index 0000000..8240cd6 --- /dev/null +++ b/.gitea/workflows/build.yml @@ -0,0 +1,43 @@ +name: Build Docker Image + +on: + push: + tags: + - "v*" + +jobs: + build-frontend: + runs-on: docker + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to Docker registry + run: | + echo "${{ secrets.REGISTRY_PASSWORD }}" | \ + docker login git.koppkb.com \ + -u "${{ secrets.REGISTRY_USERNAME }}" \ + --password-stdin + + - name: Build & push frontend image + run: | + set -e + + IMAGE="git.koppkb.com/kopkb/my-kopkb-fe" + TAGS="-t ${IMAGE}:${{ gitea.sha }}" + + if [ "${{ gitea.ref_type }}" = "tag" ] && echo "${{ gitea.ref_name }}" | grep -q '^v'; then + TAGS="${TAGS} -t ${IMAGE}:${{ gitea.ref_name }}" + fi + + echo "Building and pushing frontend: ${TAGS}" + docker buildx build \ + --platform linux/amd64 \ + --cache-from type=registry,ref=${IMAGE}:buildcache,ignore-error=true \ + --cache-to type=registry,ref=${IMAGE}:buildcache,mode=max \ + -f docker/Dockerfile \ + --build-arg VITE_API_BASE_URL=https://api.koppkb.com \ + --build-arg VITE_APP_URL=https://mykopkb.koppkb.com \ + ${TAGS} \ + --push . diff --git a/.gitea/workflows/deploy-prod.yml b/.gitea/workflows/deploy-prod.yml new file mode 100644 index 0000000..2d3bc5d --- /dev/null +++ b/.gitea/workflows/deploy-prod.yml @@ -0,0 +1,113 @@ +name: Deploy to Production + +# Manual production deploy — pulls pre-built images from the registry +on: + workflow_dispatch: + inputs: + image_tag: + description: "Docker image tag to deploy (commit SHA or version tag, e.g. v1.0.0)" + required: true + default: "latest" + type: string + +env: + FRONTEND_IMAGE: git.koppkb.com/kopkb/my-kopkb-fe + +jobs: + deploy: + runs-on: mykopkb-production + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + with: + ref: ${{ inputs.image_tag }} + + - name: Verify image exists in registry + run: | + set -e + echo "${{ secrets.REGISTRY_PASSWORD }}" | \ + docker login git.koppkb.com \ + -u "${{ secrets.REGISTRY_USERNAME }}" \ + --password-stdin + + IMAGE="${FRONTEND_IMAGE}:${{ inputs.image_tag }}" + echo "Checking if image exists: ${IMAGE}" + docker manifest inspect "${IMAGE}" > /dev/null + echo "✓ ${IMAGE} found" + + - name: Deploy over SSH + env: + PROD_HOST: ${{ secrets.PROD_HOST }} + PROD_USER: ${{ secrets.PROD_USER }} + PROD_SSH_KEY: ${{ secrets.PROD_SSH_KEY }} + PROD_DEPLOY_DIR: ${{ secrets.PROD_DEPLOY_DIR }} + REGISTRY_USERNAME: ${{ secrets.REGISTRY_USERNAME }} + REGISTRY_PASSWORD: ${{ secrets.REGISTRY_PASSWORD }} + IMAGE_TAG: ${{ inputs.image_tag }} + run: | + set -euo pipefail + + if ! command -v ssh >/dev/null 2>&1; then + apt-get update && apt-get install -y openssh-client + fi + + mkdir -p ~/.ssh + umask 077 + # Gitea often stores a multiline key as one line. Prefer a base64 + # secret (one line). A raw key that still contains BEGIN is accepted too. + if printf '%s' "$PROD_SSH_KEY" | grep -q -- '-----BEGIN'; then + printf '%b\n' "$PROD_SSH_KEY" | tr -d '\r' > ~/.ssh/id_ed25519 + else + printf '%s' "$PROD_SSH_KEY" | tr -d '[:space:]' | base64 -d > ~/.ssh/id_ed25519 + fi + chmod 600 ~/.ssh/id_ed25519 + if ! ssh-keygen -y -f ~/.ssh/id_ed25519 >/dev/null; then + echo "ERROR: PROD_SSH_KEY is not a readable private key." + echo "On the runner, run: base64 -w0 ~/.ssh/mykopkb_prod" + echo "Put that single line in the PROD_SSH_KEY secret." + exit 1 + fi + ssh-keyscan -H "$PROD_HOST" >> ~/.ssh/known_hosts + + SSH=(ssh -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes "${PROD_USER}@${PROD_HOST}") + IMAGE="${FRONTEND_IMAGE}:${IMAGE_TAG}" + + "${SSH[@]}" "mkdir -p '${PROD_DEPLOY_DIR}'" + scp -i ~/.ssh/id_ed25519 -o IdentitiesOnly=yes \ + docker/docker-compose.production.yml \ + "${PROD_USER}@${PROD_HOST}:${PROD_DEPLOY_DIR}/docker-compose.frontend.yml" + + "${SSH[@]}" "bash -s" << EOF + set -euo pipefail + echo "${REGISTRY_PASSWORD}" | docker login git.koppkb.com \ + -u "${REGISTRY_USERNAME}" --password-stdin + + echo "Checking if image exists: ${IMAGE}" + docker manifest inspect "${IMAGE}" > /dev/null + echo "✓ ${IMAGE} found" + + echo "Deploying frontend IMAGE=${IMAGE}" + + docker network inspect mykopkb-production-network >/dev/null 2>&1 \ + || docker network create mykopkb-production-network + + cd "${PROD_DEPLOY_DIR}" + export IMAGE_TAG="${IMAGE_TAG}" + + docker rm -f mykopkb-fe-production || true + docker compose -f docker-compose.frontend.yml -p mykopkb-fe pull + docker compose -f docker-compose.frontend.yml -p mykopkb-fe up -d + + sleep 10 + STATUS=\$(docker compose -f docker-compose.frontend.yml -p mykopkb-fe ps --status running --format '{{.Name}}' frontend || true) + if [ -z "\$STATUS" ]; then + docker compose -f docker-compose.frontend.yml -p mykopkb-fe logs --tail=50 frontend || true + exit 1 + fi + + FE_PORT=\$(grep -E '^FE_PORT=' .env 2>/dev/null | cut -d= -f2- | tr -d '"' || true) + FE_PORT=\${FE_PORT:-8081} + curl -sf "http://127.0.0.1:\${FE_PORT}/health" + echo "✓ Deployed frontend IMAGE_TAG=${IMAGE_TAG}" + EOF diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7e4d949 --- /dev/null +++ b/.gitignore @@ -0,0 +1,4 @@ +node_modules/ +.env +.env.production +dist/ \ No newline at end of file diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000..d13e841 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +only-built-dependencies[]=esbuild diff --git a/.prettierrc.json b/.prettierrc.json new file mode 100644 index 0000000..29a2402 --- /dev/null +++ b/.prettierrc.json @@ -0,0 +1,6 @@ +{ + "$schema": "https://json.schemastore.org/prettierrc", + "semi": false, + "singleQuote": true, + "printWidth": 100 +} diff --git a/README.md b/README.md new file mode 100644 index 0000000..6ce3e21 --- /dev/null +++ b/README.md @@ -0,0 +1,70 @@ +# midone-vue + +This template should help get you started developing with Vue 3 in Vite. + +## Recommended IDE Setup + +[VS Code](https://code.visualstudio.com/) + [Vue (Official)](https://marketplace.visualstudio.com/items?itemName=Vue.volar) (and disable Vetur). + +## Recommended Browser Setup + +- Chromium-based browsers (Chrome, Edge, Brave, etc.): + - [Vue.js devtools](https://chromewebstore.google.com/detail/vuejs-devtools/nhdogjmejiglipccpnnnanhbledajbpd) + - [Turn on Custom Object Formatter in Chrome DevTools](http://bit.ly/object-formatters) +- Firefox: + - [Vue.js devtools](https://addons.mozilla.org/en-US/firefox/addon/vue-js-devtools/) + - [Turn on Custom Object Formatter in Firefox DevTools](https://fxdx.dev/firefox-devtools-custom-object-formatters/) + +## Type Support for `.vue` Imports in TS + +TypeScript cannot handle type information for `.vue` imports by default, so we replace the `tsc` CLI with `vue-tsc` for type checking. In editors, we need [Volar](https://marketplace.visualstudio.com/items?itemName=Vue.volar) to make the TypeScript language service aware of `.vue` types. + +## Customize configuration + +See [Vite Configuration Reference](https://vite.dev/config/). + +## Project Setup + +```sh +yarn +``` + +### Compile and Hot-Reload for Development + +```sh +yarn dev +``` + +### Type-Check, Compile and Minify for Production + +```sh +yarn build +``` + +### Run Unit Tests with [Vitest](https://vitest.dev/) + +```sh +yarn test:unit +``` + +### Run End-to-End Tests with [Cypress](https://www.cypress.io/) + +```sh +yarn test:e2e:dev +``` + +This runs the end-to-end tests against the Vite development server. +It is much faster than the production build. + +But it's still recommended to test the production build with `test:e2e` before deploying (e.g. in CI environments): + +```sh +yarn build +yarn test:e2e +``` + +### Lint with [ESLint](https://eslint.org/) + +```sh +yarn lint +``` diff --git a/cypress.config.ts b/cypress.config.ts new file mode 100644 index 0000000..4a22885 --- /dev/null +++ b/cypress.config.ts @@ -0,0 +1,8 @@ +import { defineConfig } from 'cypress' + +export default defineConfig({ + e2e: { + specPattern: 'cypress/e2e/**/*.{cy,spec}.{js,jsx,ts,tsx}', + baseUrl: 'http://localhost:4173', + }, +}) diff --git a/docker/Dockerfile b/docker/Dockerfile new file mode 100644 index 0000000..ae34a8b --- /dev/null +++ b/docker/Dockerfile @@ -0,0 +1,27 @@ +# Stage 1: Build Vue SPA +FROM node:22 AS builder +WORKDIR /app +COPY package*.json pnpm-lock.yaml .npmrc pnpm-workspace.yaml ./ +# Skip prepare (cypress install); rebuild esbuild only — required for Vite +RUN npm install -g pnpm && \ + pnpm install --frozen-lockfile --ignore-scripts && \ + pnpm rebuild esbuild +COPY . ./ +ARG VITE_APP_NAME="MyKOPKB" +ARG VITE_APP_VERSION="1.0" +ARG VITE_API_BASE_URL=https://api.koppkb.com +ARG VITE_APP_URL=https://mykopkb.com + +ENV VITE_API_BASE_URL=$VITE_API_BASE_URL +ENV VITE_APP_URL=$VITE_APP_URL +ENV VITE_APP_NAME=$VITE_APP_NAME +ENV VITE_APP_VERSION=$VITE_APP_VERSION + +# RUN pnpm run typecheck # uncomment this to run typecheck +RUN pnpm exec vite build --mode=production + +# Stage 2: Serve static files +FROM nginx:1.27-alpine +COPY docker/nginx.conf /etc/nginx/conf.d/default.conf +COPY --from=builder /app/dist /usr/share/nginx/html +EXPOSE 80 diff --git a/docker/docker-compose.production.yml b/docker/docker-compose.production.yml new file mode 100644 index 0000000..680ca2f --- /dev/null +++ b/docker/docker-compose.production.yml @@ -0,0 +1,25 @@ +services: + frontend: + image: git.koppkb.com/kopkb/my-kopkb-fe:${IMAGE_TAG:-latest} + container_name: mykopkb-fe-production + restart: unless-stopped + ports: + - "${FE_PORT:-8081}:80" + networks: + - mykopkb-production-network + healthcheck: + test: ["CMD", "wget", "-q", "--spider", "http://127.0.0.1/health"] + interval: 30s + timeout: 10s + retries: 3 + start_period: 10s + logging: + driver: "json-file" + options: + max-size: "10m" + max-file: "3" + +networks: + mykopkb-production-network: + name: mykopkb-production-network + external: true diff --git a/docker/nginx.conf b/docker/nginx.conf new file mode 100644 index 0000000..d8d230c --- /dev/null +++ b/docker/nginx.conf @@ -0,0 +1,29 @@ +server { + listen 80; + server_name _; + root /usr/share/nginx/html; + index index.html; + + gzip on; + gzip_types text/plain text/css application/json application/javascript text/xml application/xml; + + location = /health { + access_log off; + default_type text/plain; + return 200 'ok'; + } + + location / { + try_files $uri $uri/ /index.html; + } + + location ~* \.(js|css|png|jpg|jpeg|gif|ico|svg|woff|woff2|ttf|eot)$ { + expires 1y; + add_header Cache-Control "public, immutable"; + try_files $uri =404; + } + + location ~ /\. { + deny all; + } +} diff --git a/env.d.ts b/env.d.ts new file mode 100644 index 0000000..f9a4d99 --- /dev/null +++ b/env.d.ts @@ -0,0 +1,15 @@ +/// + +interface ImportMetaEnv { + readonly VITE_API_BASE_URL?: string + readonly VITE_APP_NAME?: string + readonly VITE_APP_VERSION?: string + readonly VITE_APP_URL?: string + readonly VITE_APP_PORT?: string + readonly VITE_APP_ENV?: string + readonly VITE_APP_DEBUG?: string +} + +interface ImportMeta { + readonly env: ImportMetaEnv +} diff --git a/eslint.config.ts b/eslint.config.ts new file mode 100644 index 0000000..5f44e7c --- /dev/null +++ b/eslint.config.ts @@ -0,0 +1,38 @@ +import { globalIgnores } from 'eslint/config' +import { defineConfigWithVueTs, vueTsConfigs } from '@vue/eslint-config-typescript' +import pluginVue from 'eslint-plugin-vue' +import pluginCypress from 'eslint-plugin-cypress' +import pluginVitest from '@vitest/eslint-plugin' +import skipFormatting from '@vue/eslint-config-prettier/skip-formatting' + +// To allow more languages other than `ts` in `.vue` files, uncomment the following lines: +// import { configureVueProject } from '@vue/eslint-config-typescript' +// configureVueProject({ scriptLangs: ['ts', 'tsx'] }) +// More info at https://github.com/vuejs/eslint-config-typescript/#advanced-setup + +export default defineConfigWithVueTs( + { + name: 'app/files-to-lint', + files: ['**/*.{vue,ts,mts,tsx}'], + }, + + globalIgnores(['**/dist/**', '**/dist-ssr/**', '**/coverage/**']), + + ...pluginVue.configs['flat/essential'], + vueTsConfigs.recommended, + + { + ...pluginCypress.configs.recommended, + files: [ + 'cypress/e2e/**/*.{cy,spec}.{js,ts,jsx,tsx}', + 'cypress/support/**/*.{js,ts,jsx,tsx}', + ], + }, + + { + ...pluginVitest.configs.recommended, + files: ['src/**/__tests__/*'], + }, + + skipFormatting, +) diff --git a/index.html b/index.html new file mode 100644 index 0000000..02f0473 --- /dev/null +++ b/index.html @@ -0,0 +1,16 @@ + + + + + + + + MyKOPKB 1.0 + + + +
+ + + + \ No newline at end of file diff --git a/package.json b/package.json new file mode 100644 index 0000000..b54979a --- /dev/null +++ b/package.json @@ -0,0 +1,97 @@ +{ + "name": "@mykopkb/frontend", + "version": "1.0.0", + "private": true, + "type": "module", + "engines": { + "node": "^20.19.0 || >=22.12.0" + }, + "scripts": { + "dev": "vite", + "build": "run-p type-check \"build-only {@}\" --", + "preview": "vite preview", + "test:unit": "vitest", + "prepare": "cypress install", + "test:e2e": "start-server-and-test preview http://localhost:4173 'cypress run --e2e'", + "test:e2e:dev": "start-server-and-test 'vite dev --port 4173' http://localhost:4173 'cypress open --e2e'", + "build-only": "vite build", + "type-check": "vue-tsc --build", + "lint": "eslint . --fix --cache", + "format": "prettier --write --experimental-cli src/" + }, + "dependencies": { + "@iconify/vue": "^5.0.1", + "@internationalized/date": "^3.11.0", + "@lucide/vue": "^1.17.0", + "@tailwindcss/vite": "^4.1.18", + "@tanstack/vue-table": "^8.21.3", + "@zag-js/accordion": "1.26.1", + "@zag-js/avatar": "1.26.1", + "@zag-js/carousel": "1.26.1", + "@zag-js/checkbox": "1.26.1", + "@zag-js/combobox": "1.26.1", + "@zag-js/date-picker": "1.26.1", + "@zag-js/dialog": "1.26.1", + "@zag-js/menu": "1.26.1", + "@zag-js/pagination": "1.26.1", + "@zag-js/popover": "1.26.1", + "@zag-js/presence": "1.26.1", + "@zag-js/progress": "1.26.1", + "@zag-js/radio-group": "1.26.1", + "@zag-js/scroll-area": "1.26.1", + "@zag-js/select": "1.26.1", + "@zag-js/slider": "1.26.1", + "@zag-js/switch": "1.26.1", + "@zag-js/tabs": "1.26.1", + "@zag-js/toast": "1.26.1", + "@zag-js/tooltip": "1.26.1", + "@zag-js/vue": "1.26.1", + "axios": "^1.16.1", + "chart.js": "^4.5.0", + "class-variance-authority": "^0.7.1", + "clsx": "^2.1.1", + "dayjs": "^1.11.21", + "file-saver": "^2.0.5", + "jspdf": "^4.2.1", + "jspdf-autotable": "^5.0.8", + "lodash": "^4.17.21", + "maplibre-gl": "^5.18.0", + "pinia": "^3.0.4", + "qrcode": "^1.5.4", + "sweetalert2": "^11.26.25", + "tailwind-merge": "^3.5.0", + "tailwindcss": "^4.1.18", + "tw-animate-css": "^1.4.0", + "vue": "^3.5.26", + "vue-router": "^4.6.4", + "xlsx": "^0.18.5" + }, + "devDependencies": { + "@tsconfig/node24": "^24.0.3", + "@types/file-saver": "^2.0.7", + "@types/jsdom": "^27.0.0", + "@types/lodash": "^4.17.21", + "@types/node": "^24.10.4", + "@types/qrcode": "^1.5.6", + "@vitejs/plugin-vue": "^6.0.3", + "@vitest/eslint-plugin": "^1.6.4", + "@vue/eslint-config-prettier": "^10.2.0", + "@vue/eslint-config-typescript": "^14.6.0", + "@vue/test-utils": "^2.4.6", + "@vue/tsconfig": "^0.8.1", + "cypress": "^15.8.1", + "eslint": "^9.39.2", + "eslint-plugin-cypress": "^5.2.0", + "eslint-plugin-vue": "~10.6.2", + "jiti": "^2.6.1", + "jsdom": "^27.3.0", + "npm-run-all2": "^8.0.4", + "prettier": "3.7.4", + "start-server-and-test": "^2.1.3", + "typescript": "~5.9.3", + "vite": "^7.3.0", + "vite-plugin-vue-devtools": "^8.0.5", + "vitest": "^4.0.16", + "vue-tsc": "^3.2.1" + } +} \ No newline at end of file diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 0000000..c4f6589 --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,7016 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@iconify/vue': + specifier: ^5.0.1 + version: 5.0.1(vue@3.5.35(typescript@5.9.3)) + '@internationalized/date': + specifier: ^3.11.0 + version: 3.12.2 + '@lucide/vue': + specifier: ^1.17.0 + version: 1.17.0(vue@3.5.35(typescript@5.9.3)) + '@tailwindcss/vite': + specifier: ^4.1.18 + version: 4.3.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + '@tanstack/vue-table': + specifier: ^8.21.3 + version: 8.21.3(vue@3.5.35(typescript@5.9.3)) + '@zag-js/accordion': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/avatar': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/carousel': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/checkbox': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/combobox': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/date-picker': + specifier: 1.26.1 + version: 1.26.1(@internationalized/date@3.12.2) + '@zag-js/dialog': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/menu': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/pagination': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/popover': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/presence': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/progress': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/radio-group': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/scroll-area': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/select': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/slider': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/switch': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/tabs': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/toast': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/tooltip': + specifier: 1.26.1 + version: 1.26.1 + '@zag-js/vue': + specifier: 1.26.1 + version: 1.26.1(vue@3.5.35(typescript@5.9.3)) + axios: + specifier: ^1.16.1 + version: 1.16.1(debug@4.4.3) + chart.js: + specifier: ^4.5.0 + version: 4.5.1 + class-variance-authority: + specifier: ^0.7.1 + version: 0.7.1 + clsx: + specifier: ^2.1.1 + version: 2.1.1 + dayjs: + specifier: ^1.11.21 + version: 1.11.21 + file-saver: + specifier: ^2.0.5 + version: 2.0.5 + jspdf: + specifier: ^4.2.1 + version: 4.2.1 + jspdf-autotable: + specifier: ^5.0.8 + version: 5.0.8(jspdf@4.2.1) + lodash: + specifier: ^4.17.21 + version: 4.18.1 + maplibre-gl: + specifier: ^5.18.0 + version: 5.24.0 + pinia: + specifier: ^3.0.4 + version: 3.0.4(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3)) + qrcode: + specifier: ^1.5.4 + version: 1.5.4 + sweetalert2: + specifier: ^11.26.25 + version: 11.26.25 + tailwind-merge: + specifier: ^3.5.0 + version: 3.6.0 + tailwindcss: + specifier: ^4.1.18 + version: 4.3.0 + tw-animate-css: + specifier: ^1.4.0 + version: 1.4.0 + vue: + specifier: ^3.5.26 + version: 3.5.35(typescript@5.9.3) + vue-router: + specifier: ^4.6.4 + version: 4.6.4(vue@3.5.35(typescript@5.9.3)) + xlsx: + specifier: ^0.18.5 + version: 0.18.5 + devDependencies: + '@tsconfig/node24': + specifier: ^24.0.3 + version: 24.0.4 + '@types/file-saver': + specifier: ^2.0.7 + version: 2.0.7 + '@types/jsdom': + specifier: ^27.0.0 + version: 27.0.0 + '@types/lodash': + specifier: ^4.17.21 + version: 4.17.24 + '@types/node': + specifier: ^24.10.4 + version: 24.12.4 + '@types/qrcode': + specifier: ^1.5.6 + version: 1.5.6 + '@vitejs/plugin-vue': + specifier: ^6.0.3 + version: 6.0.7(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3)) + '@vitest/eslint-plugin': + specifier: ^1.6.4 + version: 1.6.19(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)(vitest@4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))) + '@vue/eslint-config-prettier': + specifier: ^10.2.0 + version: 10.2.0(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4) + '@vue/eslint-config-typescript': + specifier: ^14.6.0 + version: 14.7.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@vue/test-utils': + specifier: ^2.4.6 + version: 2.4.10(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3)) + '@vue/tsconfig': + specifier: ^0.8.1 + version: 0.8.1(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3)) + cypress: + specifier: ^15.8.1 + version: 15.16.0 + eslint: + specifier: ^9.39.2 + version: 9.39.4(jiti@2.7.0) + eslint-plugin-cypress: + specifier: ^5.2.0 + version: 5.4.0(eslint@9.39.4(jiti@2.7.0)) + eslint-plugin-vue: + specifier: ~10.6.2 + version: 10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))) + jiti: + specifier: ^2.6.1 + version: 2.7.0 + jsdom: + specifier: ^27.3.0 + version: 27.4.0 + npm-run-all2: + specifier: ^8.0.4 + version: 8.0.4 + prettier: + specifier: 3.7.4 + version: 3.7.4 + start-server-and-test: + specifier: ^2.1.3 + version: 2.1.5 + typescript: + specifier: ~5.9.3 + version: 5.9.3 + vite: + specifier: ^7.3.0 + version: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-plugin-vue-devtools: + specifier: ^8.0.5 + version: 8.1.2(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3)) + vitest: + specifier: ^4.0.16 + version: 4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + vue-tsc: + specifier: ^3.2.1 + version: 3.3.3(typescript@5.9.3) + +packages: + + '@acemir/cssom@0.9.31': + resolution: {integrity: sha512-ZnR3GSaH+/vJ0YlHau21FjfLYjMpYVIzTD8M8vIEQvIGxeOXyXdzCI140rrCY862p/C/BbzWsjc1dgnM9mkoTA==} + + '@asamuzakjp/css-color@4.1.2': + resolution: {integrity: sha512-NfBUvBaYgKIuq6E/RBLY1m0IohzNHAYyaJGuTK79Z23uNwmz2jl1mPsC5ZxCCxylinKhT1Amn5oNTlx1wN8cQg==} + + '@asamuzakjp/dom-selector@6.8.1': + resolution: {integrity: sha512-MvRz1nCqW0fsy8Qz4dnLIvhOlMzqDVBabZx6lH+YywFDdjXhMY37SmpV1XFX3JzG5GWHn63j6HX6QPr3lZXHvQ==} + + '@asamuzakjp/nwsapi@2.3.9': + resolution: {integrity: sha512-n8GuYSrI9bF7FFZ/SjhwevlHc8xaVlb/7HmHelnc/PZXBD2ZR49NnN9sMMuDdEGPeeRQ5d0hqlSlEpgCX3Wl0Q==} + + '@babel/code-frame@7.29.7': + resolution: {integrity: sha512-Aup7aUOfpbAUg2ROOJN6Iw5f9DMBlzu0mIkm/malLQFN/YQgO48wCj0Kxa3sEHJvPVFg7siR+qRInwXd2qhQKw==} + engines: {node: '>=6.9.0'} + + '@babel/compat-data@7.29.7': + resolution: {integrity: sha512-locTkQyKvwIEgBzVrn8693ebc97F2U8ZHjbXwDXJ5Fn2TCpNwTlKcaKLkdHop5c/icOFE7qt7Q9JC5hnKNa6Gg==} + engines: {node: '>=6.9.0'} + + '@babel/core@7.29.7': + resolution: {integrity: sha512-RgHBCvtjbOK2gXSNBNIkNoEc9qoVEtau3hj8gEqKQuL3HZAibKarWFEI3Lfm6EYKkLalOh8eSrj9b+ch9H/VBA==} + engines: {node: '>=6.9.0'} + + '@babel/generator@7.29.7': + resolution: {integrity: sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-annotate-as-pure@7.29.7': + resolution: {integrity: sha512-OoK6239jHPuSQOoS0kfTVKn0b/rVTk0seKq4Gd2UMLtmOVLjDC0ki3e+c90Trqv2gMfvJFqkiljrr568+qddiw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-compilation-targets@7.29.7': + resolution: {integrity: sha512-wem6WaBj4NaVYVdNhLPPVacES6ZJ+KBBfSkTMD3YZxbP3rm3Di85tJU5ljaUNhaOynt+Aj0xruhYuzQBt8n71g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-create-class-features-plugin@7.29.7': + resolution: {integrity: sha512-IY3ZD9Tmooqr3TUhc3DUWxiuo8xx1DWLhd5M7hQ+ZWJamqM2BbalrBJb2MisSLoYorOj75U03qULCxQTY9r3hg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-globals@7.29.7': + resolution: {integrity: sha512-3nQVUAtvkKH9zahfWgw96Jc/uFOmjACE1kQz82E2lqWmHBgjzbNlsC22nuQTfahmWeQtTq5nQ/4Nnd2A1wj4zA==} + engines: {node: '>=6.9.0'} + + '@babel/helper-member-expression-to-functions@7.29.7': + resolution: {integrity: sha512-j+7JYmk1JYDtACIGj0QJqqWZjoUpMoEikQGADMaHgCMCSDqd2+P32rfcibUNrGOMWrlzK1WJBdxrB3JJQZwWtg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-imports@7.29.7': + resolution: {integrity: sha512-ejHwrQQYcm9xnTivShn2IDOlIzInN34AXskvq9QicvCtEzq1Vzclu/tKF8Jq1Cg8JG2GL6/EmjgsCT7lXepE3g==} + engines: {node: '>=6.9.0'} + + '@babel/helper-module-transforms@7.29.7': + resolution: {integrity: sha512-UPUVSyXbOh627KiCIGQSgwWzGeBKLkaJ9PJEdrngIwMSzxLR4jS4+f1f1jb7VzBbg8nFLaYotvVPFCTqdrmTAg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-optimise-call-expression@7.29.7': + resolution: {integrity: sha512-+kmGVjcT9RGYzoDwdwEqEvGgKe3BYq+O1iGzjFubaNgZHwYHP6lsF2Yghf4kEuv9BV7tYDZ913aBW9am6YKong==} + engines: {node: '>=6.9.0'} + + '@babel/helper-plugin-utils@7.29.7': + resolution: {integrity: sha512-G7sHYigPY17oO5SYWnfD/0MTBwVR781S/JI643e/JhUYgVgWE/61SoW3NH9KWUKyKq5LVh3npif99Wkt6j86Jw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-replace-supers@7.29.7': + resolution: {integrity: sha512-atfGXWSeCiF4DnKZIfmJfQRkSw9b9gNNXR1kqKjbhG4pGYCOnkp8OcTB8E3NXjBu8NpheSnOeNKz8KT7UNFTmQ==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0 + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + resolution: {integrity: sha512-brcMGQaVzIeUb+6/bs1Av0f8YuNNjKY2JyvfRCsFuFsdKccEQ5Ges2y74D74NZ1Rz8lKJ9ksJkfqwQFJ/iNEyQ==} + engines: {node: '>=6.9.0'} + + '@babel/helper-string-parser@7.29.7': + resolution: {integrity: sha512-Pb5ijPrZ89GDH8223L4UP8i6QApWxs04RbPQJTeWDV0/keR2E36MeKnyr6LYmUUvqRRI+Iv87SuF1W6ErINzYw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.29.7': + resolution: {integrity: sha512-qehxGkRj55h/ff8EMaJ+cYhyaKlHIxqYDn682wQD7RNp9UujOQsHog2uS0r2vzr4pW+sXf90NeeayjcNaX3fFg==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-option@7.29.7': + resolution: {integrity: sha512-N9ZErrD+yW5geCDtBqnOoxmR8+tNKiGuxKlDpuJxfsqpa2dFcexaziGAE/qoHLiDDreVNMupxGmSoNlyvsA3gw==} + engines: {node: '>=6.9.0'} + + '@babel/helpers@7.29.7': + resolution: {integrity: sha512-1k2lAGRMfHTcwuNYcCNUmaUffmQv8KWMfh2iJUUeRlwlwH4FdNG7mfPI10NPfLHJFThE4Tyr4mv7kTNZOiPuBg==} + engines: {node: '>=6.9.0'} + + '@babel/parser@7.29.7': + resolution: {integrity: sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==} + engines: {node: '>=6.0.0'} + hasBin: true + + '@babel/plugin-proposal-decorators@7.29.7': + resolution: {integrity: sha512-EtU0Hi3GvrTqD56xKmZvV/uCXK2ZbwVNPNLAquVItcAZpUhkXwWlo3Fmj0c2LxgSf2I8IDULeAepwNP1OefLXg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-decorators@7.29.7': + resolution: {integrity: sha512-9MTTLbF39X6sqM92JPEsoI7++26hjZvzkxKZy64aMhWLH2mPkJ/Q3AV4QLmls3R14FpSpkOwQQfUh962JGQxxg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-attributes@7.29.7': + resolution: {integrity: sha512-zGYcYfq/WmZ4V+kBIXQon9dSSc8ircGZqw9ZaNhhGj9nZkeBu1jHLBDQqYYi5WA9uawvA2sIMbry2nCFhf5Djg==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-import-meta@7.10.4': + resolution: {integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-jsx@7.29.7': + resolution: {integrity: sha512-TSu8+mHCoEaaCDEZ0I3+6mvTBYR4PCxQwf2z9/r5Tbztv6NaLR3B9thGTTxX2WGuGHJqRiAbKPeGTJ5XWXVg6A==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-syntax-typescript@7.29.7': + resolution: {integrity: sha512-ngr+82Sh0xMz25TPCZi+nC2iTzjfCdWS2ONXTp/PtSCHCgaCNBpdMqgvJ2ccdLlClVZ7sisIgB914j/JFe+RZA==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-typescript@7.29.7': + resolution: {integrity: sha512-jK52h8LaLc7JarhQV2ofeFMts4H7vnOXnqZNA6fYglBTZewRBE51KWt3BUltW1P+KoPsYkHoJeXePuz4zo2LMw==} + engines: {node: '>=6.9.0'} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@babel/runtime@7.29.7': + resolution: {integrity: sha512-Nq8OhGWiZIZGV6hLHoyAKLLcJihP/xFeBMGJoUrxTX2psI8dCifzLhZISFb+VWS3wFMRDmCGw5R+dOySCqPLhw==} + engines: {node: '>=6.9.0'} + + '@babel/template@7.29.7': + resolution: {integrity: sha512-puq+Gf35oI24FeN11LkoUQFqv9uwNeWpxXZi/Ji3rRIoKAzKnxRaZ+Gkj0vKS9ZCiTESfng1N9LyOyXvo+m+Gg==} + engines: {node: '>=6.9.0'} + + '@babel/traverse@7.29.7': + resolution: {integrity: sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==} + engines: {node: '>=6.9.0'} + + '@babel/types@7.29.7': + resolution: {integrity: sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==} + engines: {node: '>=6.9.0'} + + '@csstools/color-helpers@6.0.2': + resolution: {integrity: sha512-LMGQLS9EuADloEFkcTBR3BwV/CGHV7zyDxVRtVDTwdI2Ca4it0CCVTT9wCkxSgokjE5Ho41hEPgb8OEUwoXr6Q==} + engines: {node: '>=20.19.0'} + + '@csstools/css-calc@3.2.1': + resolution: {integrity: sha512-DtdHlgXh5ZkA43cwBcAm+huzgJiwx3ZTWVjBs94kwz2xKqSimDA3lBgCjphYgwgVUMWatSM0pDd8TILB1yrVVg==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-color-parser@4.1.1': + resolution: {integrity: sha512-eZ5XOtyhK+mggRafYUWzA0tvaYOFgdY8AkgQiCJF9qNAePnUo/zmsqqYubBBb3sQ8uNUaSKTY9s9klfRaAXL0g==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-parser-algorithms': ^4.0.0 + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-parser-algorithms@4.0.0': + resolution: {integrity: sha512-+B87qS7fIG3L5h3qwJ/IFbjoVoOe/bpOdh9hAjXbvx0o8ImEmUsGXN0inFOnk2ChCFgqkkGFQ+TpM5rbhkKe4w==} + engines: {node: '>=20.19.0'} + peerDependencies: + '@csstools/css-tokenizer': ^4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.4': + resolution: {integrity: sha512-wgsqt92b7C7tQhIdPNxj0n9zuUbQlvAuI1exyzeNrOKOi62SD7ren8zqszmpVREjAOqg8cD2FqYhQfAuKjk4sw==} + peerDependencies: + css-tree: ^3.2.1 + peerDependenciesMeta: + css-tree: + optional: true + + '@csstools/css-tokenizer@4.0.0': + resolution: {integrity: sha512-QxULHAm7cNu72w97JUNCBFODFaXpbDg+dP8b/oWFAZ2MTRppA3U00Y2L1HqaS4J6yBqxwa/Y3nMBaxVKbB/NsA==} + engines: {node: '>=20.19.0'} + + '@cypress/request@4.0.1': + resolution: {integrity: sha512-y20e+e6dFYkOUUJLVUZTsJRuTiXZaUQ32WD+R/ux/HBybbTx4ge7cNINcua0pU8+SNkKuRbOF12mBmzuzM8n5w==} + engines: {node: '>= 14.17.0'} + + '@cypress/xvfb@1.2.4': + resolution: {integrity: sha512-skbBzPggOVYCbnGgV+0dmBdW/s77ZkAOXIC1knS8NagwDjBrNC1LuXtQJeiN6l+m7lzmHtaoUw/ctJKdqkG57Q==} + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.21.2': + resolution: {integrity: sha512-nJl2KGTlrf9GjLimgIru+V/mzgSK0ABCDQRvxw5BjURL7WfH5uoWmizbH7QB6MmnMBd8cIC9uceWnezL1VZWWw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/config-helpers@0.4.2': + resolution: {integrity: sha512-gBrxN88gOIf3R7ja5K9slwNayVcZgK6SOUORm2uBzTeIEfeVaIhOpCtTox3P6R7o2jLFwLFTLnC7kU/RGcYEgw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/core@0.17.0': + resolution: {integrity: sha512-yL/sLrpmtDaFEiUj1osRP4TI2MDz1AddJL+jZ7KSqvBuliN4xqYY54IfdN8qD8Toa6g1iloph1fxQNkjOxrrpQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/eslintrc@3.3.5': + resolution: {integrity: sha512-4IlJx0X0qftVsN5E+/vGujTRIFtwuLbNsVUe7TO6zYPDR1O6nFwvwhIKEKSrl6dZchmYBITazxKoUYOjdtjlRg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/js@9.39.4': + resolution: {integrity: sha512-nE7DEIchvtiFTwBw4Lfbu59PG+kCofhjsKaCWzxTpt4lfRjRMqG6uMBzKXuEcyXhOHoUp9riAm7/aWYGhXZ9cw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/object-schema@2.1.7': + resolution: {integrity: sha512-VtAOaymWVfZcmZbp6E2mympDIHvyjXs/12LqWYjVw6qjrfF+VK+fyG33kChz3nnK+SU5/NeHOqrTEHS8sXO3OA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@eslint/plugin-kit@0.4.1': + resolution: {integrity: sha512-43/qtrDUokr7LJqoF2c3+RInu/t4zfrpYdoSDfYyhg52rwLV6TnOvdG4fXm7IkSB3wErkcmJS9iEhjVtOSEjjA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@exodus/bytes@1.15.1': + resolution: {integrity: sha512-S6mL0yNB/Abt9Ei4tq8gDhcczc4S3+vQ4ra7vxnAf+YHC02srtqxKKZghx2Dq6p0e66THKwR6r8N6P95wEty7Q==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + '@noble/hashes': ^1.8.0 || ^2.0.0 + peerDependenciesMeta: + '@noble/hashes': + optional: true + + '@floating-ui/core@1.7.5': + resolution: {integrity: sha512-1Ih4WTWyw0+lKyFMcBHGbb5U5FtuHJuujoyyr5zTaWS5EYMeT6Jb2AuDeftsCsEuchO+mM2ij5+q9crhydzLhQ==} + + '@floating-ui/dom@1.7.4': + resolution: {integrity: sha512-OOchDgh4F2CchOX94cRVqhvy7b3AFb+/rQXyswmzmGakRfkMgoWVjfnLWkRirfLEfuD4ysVW16eXzwt3jHIzKA==} + + '@floating-ui/utils@0.2.11': + resolution: {integrity: sha512-RiB/yIh78pcIxl6lLMG0CgBXAZ2Y0eVHqMPYugu+9U0AeT6YBeiJpf7lbdJNIugFP5SIjwNRgo4DhR1Qxi26Gg==} + + '@hapi/address@5.1.1': + resolution: {integrity: sha512-A+po2d/dVoY7cYajycYI43ZbYMXukuopIsqCjh5QzsBCipDtdofHntljDlpccMjIfTy6UOkg+5KPriwYch2bXA==} + engines: {node: '>=14.0.0'} + + '@hapi/formula@3.0.2': + resolution: {integrity: sha512-hY5YPNXzw1He7s0iqkRQi+uMGh383CGdyyIGYtB+W5N3KHPXoqychklvHhKCC9M3Xtv0OCs/IHw+r4dcHtBYWw==} + + '@hapi/hoek@11.0.7': + resolution: {integrity: sha512-HV5undWkKzcB4RZUusqOpcgxOaq6VOAH7zhhIr2g3G8NF/MlFO75SjOr2NfuSx0Mh40+1FqCkagKLJRykUWoFQ==} + + '@hapi/pinpoint@2.0.1': + resolution: {integrity: sha512-EKQmr16tM8s16vTT3cA5L0kZZcTMU5DUOZTuvpnY738m+jyP3JIUj+Mm1xc1rsLkGBQ/gVnfKYPwOmPg1tUR4Q==} + + '@hapi/tlds@1.1.6': + resolution: {integrity: sha512-xdi7A/4NZokvV0ewovme3aUO5kQhW9pQ2YD1hRqZGhhSi5rBv4usHYidVocXSi9eihYsznZxLtAiEYYUL6VBGw==} + engines: {node: '>=14.0.0'} + + '@hapi/topo@6.0.2': + resolution: {integrity: sha512-KR3rD5inZbGMrHmgPxsJ9dbi6zEK+C3ZwUwTa+eMwWLz7oijWUTWD2pMSNNYJAU6Qq+65NkxXjqHr/7LM2Xkqg==} + + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} + engines: {node: '>=18.18.0'} + + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} + engines: {node: '>=18.18'} + + '@iconify/types@2.0.0': + resolution: {integrity: sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==} + + '@iconify/vue@5.0.1': + resolution: {integrity: sha512-aumwwooJlFJ5H5qYWB6ZTAyM0C8hpfcSVLB9/a3qnH1GGvIJ+FEbpEs4s/HfErYe/M5qZeLjwmESR5fFm3lXEw==} + peerDependencies: + vue: '>=3.0.0' + + '@internationalized/date@3.12.2': + resolution: {integrity: sha512-FY1Y+H64NDs+HAF6omlnWxm3mEpfgaCSWtL5l551ZZfImA+kGjPFgrnJrGjH6lfmLL0g8Z/mBu1R3kufeCp6Jw==} + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@jridgewell/gen-mapping@0.3.13': + resolution: {integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==} + + '@jridgewell/remapping@2.3.5': + resolution: {integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==} + + '@jridgewell/resolve-uri@3.1.2': + resolution: {integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==} + engines: {node: '>=6.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@jridgewell/trace-mapping@0.3.31': + resolution: {integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==} + + '@kurkle/color@0.3.4': + resolution: {integrity: sha512-M5UknZPHRu3DEDWoipU6sE8PdkZ6Z/S+v4dD+Ke8IaNlpdSQah50lz1KtcFBa2vsdOnwbbnxJwVM4wty6udA5w==} + + '@lucide/vue@1.17.0': + resolution: {integrity: sha512-6Q1ZHgr5FbmJzKWe5BxlNdjLj2lbmuH1zwDtVzUJofX0w9UREwKgq4F4jwKqFYyyIS4Rj3FiJvDi2k6djukmmw==} + peerDependencies: + vue: '>=3.0.1' + + '@mapbox/jsonlint-lines-primitives@2.0.2': + resolution: {integrity: sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==} + engines: {node: '>= 0.6'} + + '@mapbox/point-geometry@1.1.0': + resolution: {integrity: sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==} + + '@mapbox/tiny-sdf@2.2.0': + resolution: {integrity: sha512-LVL4wgI9YAum5V+LNVQO6QgFBPw7/MIIY4XJPNsPDMrjEwcE+JfKk1LuIl8GnF197ejVdC9QdPaxrx5gfgdGXg==} + + '@mapbox/unitbezier@0.0.1': + resolution: {integrity: sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==} + + '@mapbox/vector-tile@2.0.5': + resolution: {integrity: sha512-pXj8m7KTsqZt+1jsE0xIpGvqTSbblfkuEJL/NJmNePMtEwxO8V3XMDo9WMSfDeqHvCtBI9Lmt4mGcGR10zecmw==} + + '@mapbox/whoots-js@3.1.0': + resolution: {integrity: sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==} + engines: {node: '>=6.0.0'} + + '@maplibre/geojson-vt@5.0.4': + resolution: {integrity: sha512-KGg9sma45S+stfH9vPCJk1J0lSDLWZgCT9Y8u8qWZJyjFlP8MNP1WGTxIMYJZjDvVT3PDn05kN1C95Sut1HpgQ==} + + '@maplibre/geojson-vt@6.1.0': + resolution: {integrity: sha512-2eIY4gZxeKIVOZVNkAMb+5NgXhgsMQpOveTQAvnp53LYqHGJZDidk7Ew0Tged9PThidpbS+NFTh0g4zivhPDzQ==} + + '@maplibre/maplibre-gl-style-spec@24.8.5': + resolution: {integrity: sha512-EzEJmMt6thioRH7GI9LWS7ahXTcAhAPGWCe6oTP2Ps4YnsXOOAfeqx854lZaiDnwURfHmcCKV1mr6oo0i23x6w==} + hasBin: true + + '@maplibre/mlt@1.1.11': + resolution: {integrity: sha512-dKvjKdITw9d0y3ndGkSqLUEpWCizMtdq8NB06cHohH/JZ2sJoM7dClR9wzJLUWykjbw9RXDFmhjjNBnNW27mzw==} + + '@maplibre/vt-pbf@4.3.0': + resolution: {integrity: sha512-jIvp8F5hQCcreqOOpEt42TJMUlsrEcpf/kI1T2v85YrQRV6PPXUcEXUg5karKtH6oh47XJZ4kHu56pUkOuqA7w==} + + '@nodelib/fs.scandir@2.1.5': + resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} + engines: {node: '>= 8'} + + '@nodelib/fs.stat@2.0.5': + resolution: {integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==} + engines: {node: '>= 8'} + + '@nodelib/fs.walk@1.2.8': + resolution: {integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==} + engines: {node: '>= 8'} + + '@one-ini/wasm@0.1.1': + resolution: {integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@pkgr/core@0.3.6': + resolution: {integrity: sha512-SEeaJLb3qBNF/OaXnaR1NmmBbFYk1zC0ZH/52fATcRPLFg/p791YrcyFFy44Bo9sLaGuSuLp5Q6axbb/O+v/RA==} + engines: {node: ^14.18.0 || >=16.0.0} + + '@polka/url@1.0.0-next.29': + resolution: {integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==} + + '@rolldown/pluginutils@1.0.1': + resolution: {integrity: sha512-2j9bGt5Jh8hj+vPtgzPtl72j0yRxHAyumoo6TNfAjsLB04UtpSvPbPcDcBMxz7n+9CYB0c1GxQFxYRg2jimqGw==} + + '@rollup/rollup-android-arm-eabi@4.61.0': + resolution: {integrity: sha512-dnxczajOqt0gesZlN5pGQ1s1imQVrsmCw5G2Ci4oM+0WvNz3pyRnlWrT7McoZIb8VlFwCawdmbWRmxRn7HI+VQ==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.61.0': + resolution: {integrity: sha512-Bp3JpGP00Vu3f238ivRrjf7z3xSzVPXqCmaJYA9t2c+c8vKYvOzmXF7LkkeUalTEGd6cZcSWe+PFIP3Vy48fRg==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.61.0': + resolution: {integrity: sha512-zaYIpr670mUmmZ1tVzUFplbQbG7h3Gugx3L5FoqhsC2m/YnLlR1a7zVLmXNPy+iY1tFPEbNG+HHBXZGyId0G5w==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.61.0': + resolution: {integrity: sha512-+P49fvkv2dSoeevUW+lgZ/I2JHSsJCK1Lyjj7Cu6E4UHG4tS9XIefzIjo5qhgELjAclnen1rLzK2PMKJdo+Dyg==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.61.0': + resolution: {integrity: sha512-l3FAAOyKJXH2ea6KNFN+MMgC/rnE94YGLXs2ehYqDcCoHt1DpvgWX75BhUJxN38XojP7Ul+4H8PRn7EdyqSDrw==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.61.0': + resolution: {integrity: sha512-VokPN3TSctKj65cyCNPaUh4vMFA8awxOot/0sp+4J7ZlNRKQEhXhawqPwajoi8H5ZFt61i0ugZJuTKXBjGJ17Q==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.61.0': + resolution: {integrity: sha512-DxH0P3wxm+Yzs/p3zrk9dw1rURu8p0Nv5+MRK/L7OtnLNg5rLZraSBFZ8iUXOd9f2BlhJyEpIZUH/emjq4UJ4g==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm-musleabihf@4.61.0': + resolution: {integrity: sha512-T6ZvMNe84kAz6TBWHC7hGAoEtzP1LWYw/AqayGWEF6uISt3Abk/st06LqRD9THd7Xz3NxzurUpzAuEAUbZf+nw==} + cpu: [arm] + os: [linux] + + '@rollup/rollup-linux-arm64-gnu@4.61.0': + resolution: {integrity: sha512-q/4hzvQkDs8b4jIBab1pnLiiM0ayTZsN2amBFPDzuyZxjEd4wDwx0UJFYM3cOZzSf5Kw8fnWSprJzIBMkcR44Q==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-arm64-musl@4.61.0': + resolution: {integrity: sha512-vvYWX3akdEAY6km+9wAqFDnk6pQsbJKVnj7xawcvs/+fdlYBGp+U+Qq/lLfpIxYIZvZLHMAKD9HLdacSx/r3dw==} + cpu: [arm64] + os: [linux] + + '@rollup/rollup-linux-loong64-gnu@4.61.0': + resolution: {integrity: sha512-DePa5cqOxDP/Zp0VOXpeWaGew5iIv5DXp9NYbzkX5PFQyWVX9184WCTh3hvr/7lhXo8ZVlbFLkz8+o/q1dU6gA==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-loong64-musl@4.61.0': + resolution: {integrity: sha512-LV8aWMB8UChglMCEzs7RkN0GsH29RJaLLqwm9fCIjlqwxQTiWAqNcc7wjBkH31hV0PU/yVxGYvrYsgfea2qw6g==} + cpu: [loong64] + os: [linux] + + '@rollup/rollup-linux-ppc64-gnu@4.61.0': + resolution: {integrity: sha512-QoNSnwQtaeNu5grdBbsL0tt1uyl5EnS8DA8Mr3nluMXbhdQNyhN+G4tBax7VCdxLKj8YJ0/4OO9Ho84jMnJtKA==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-ppc64-musl@4.61.0': + resolution: {integrity: sha512-/zZp5MKapIIApE8trN8qLGNSiRN9TUoaUZ1cmVu4XnVdd5LQLOXTtyi+vtfUbNnT3iyjzpPqYeKXmvJ+gJGYWw==} + cpu: [ppc64] + os: [linux] + + '@rollup/rollup-linux-riscv64-gnu@4.61.0': + resolution: {integrity: sha512-RbrzcD3aJ1k3UbtMRRBNwojdVVyXjuVAFTfn/xPa6EEl6GE9Sm/akPgFTb9aAC9pMKGJ6CtWxaGrqWcabH+ySg==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-riscv64-musl@4.61.0': + resolution: {integrity: sha512-ZF+onDsBso8PJf1XaG9lB+O9RnBpKGnY6OrzC4CSHrtC1jb6jWLTKK4bRqdoCXHd22gyr2hiYmEAm8Wns/BOCw==} + cpu: [riscv64] + os: [linux] + + '@rollup/rollup-linux-s390x-gnu@4.61.0': + resolution: {integrity: sha512-Atk0aSIk5Zx2Wuh9dgRQgLP0Koc8hOeYpbWryMXyk8G8/HmPkwPPkMqIIDhrXHHYqfUzSJA/I7IWSBv8xSmRBA==} + cpu: [s390x] + os: [linux] + + '@rollup/rollup-linux-x64-gnu@4.61.0': + resolution: {integrity: sha512-0uMOcf3eZ5K+K4cYHkdxShFMPlPXCOdfDFEFn9dNYAEEd2cVvmOfH7zFgRVoDgmtQ1m9k5q7qfrHzyMAubKYUA==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-linux-x64-musl@4.61.0': + resolution: {integrity: sha512-mvFtE4A/t/7hRJ7X8Ozmu8FsIkAUat2nzl12pgU337BRmq87AQUJztwHz2Zv5/tjo9/C95E66CK03SI/ToEDJw==} + cpu: [x64] + os: [linux] + + '@rollup/rollup-openbsd-x64@4.61.0': + resolution: {integrity: sha512-z9b9+aTxvt8n2rNltMPvyaUfB8NJ+CVyOrGK/MdIKHx7B+lXmZpm/XbRsU7Rpf3fRqJ2uS6mBJiJveCtq8LHDg==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.61.0': + resolution: {integrity: sha512-jXaXFqKMehsOc+g8R6oo33RRC6w07G9jDBxAE5eAKX7mOcCbZloYIPNhfG9Wl+P9O9IWHFO4OJgPi1Ml2qkt7w==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.61.0': + resolution: {integrity: sha512-OXNWVFocS2IA4+QplhTZZ2a+8hPZR7T8KuozsNmJKK8y7cp83StHvGksfHzPG3wczWTczyWHVQuqeiTUbjiyBg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.61.0': + resolution: {integrity: sha512-AlAbNtBO637LxSldqV43z0FfXoGfl2TW1DgAg/bs7aQswFbDewz2SJm3BUhiGfbOVtW571xbc9p+REdxhyN/Eg==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.61.0': + resolution: {integrity: sha512-QRSrQXyJ1M4tjNXdR0/G/IgV6lzfQQJYBjlWIEYkY2Xs86DRl/iEpQ4blMDjJxSl7n19eDKKXMg0AmuBVYy8pQ==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.61.0': + resolution: {integrity: sha512-tkuFxhvKO/HlGd0VsINF6vHSYH8AF8W0TcNxKDK6JZmrehngFj78pToc8iemtnvwilDjs2G/qSzYFhe9U8q+fw==} + cpu: [x64] + os: [win32] + + '@standard-schema/spec@1.1.0': + resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==} + + '@swc/helpers@0.5.23': + resolution: {integrity: sha512-5lSsMOTXURePglDfvuAQUqkGek9Hg2kksOYay2m0+XR++b2NWYL/4sWyuvVBIs8oKnJaxkdi9whaL/sqN13afw==} + + '@tailwindcss/node@4.3.0': + resolution: {integrity: sha512-aFb4gUhFOgdh9AXo4IzBEOzBkkAxm9VigwDJnMIYv3lcfXCJVesNfbEaBl4BNgVRyid92AmdviqwBUBRKSeY3g==} + + '@tailwindcss/oxide-android-arm64@4.3.0': + resolution: {integrity: sha512-TJPiq67tKlLuObP6RkwvVGDoxCMBVtDgKkLfa/uyj7/FyxvQwHS+UOnVrXXgbEsfUaMgiVvC4KbJnRr26ho4Ng==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [android] + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + resolution: {integrity: sha512-oMN/WZRb+SO37BmUElEgeEWuU8E/HXRkiODxJxLe1UTHVXLrdVSgfaJV7pSlhRGMSOiXLuxTIjfsF3wYvz8cgQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [darwin] + + '@tailwindcss/oxide-darwin-x64@4.3.0': + resolution: {integrity: sha512-N6CUmu4a6bKVADfw77p+iw6Yd9Q3OBhe0veaDX+QazfuVYlQsHfDgxBrsjQ/IW+zywL8mTrNd0SdJT/zgtvMdA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [darwin] + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + resolution: {integrity: sha512-zDL5hBkQdH5C6MpqbK3gQAgP80tsMwSI26vjOzjJtNCMUo0lFgOItzHKBIupOZNQxt3ouPH7RPhvNhiTfCe5CQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [freebsd] + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + resolution: {integrity: sha512-R06HdNi7A7OEoMsf6d4tjZ71RCWnZQPHj2mnotSFURjNLdBC+cIgXQ7l81CqeoiQftjf6OOblxXMInMgN2VzMA==} + engines: {node: '>= 20'} + cpu: [arm] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + resolution: {integrity: sha512-qTJHELX8jetjhRQHCLilkVLmybpzNQAtaI/gaoVoidn/ufbNDbAo8KlK2J+yPoc8wQxvDxCmh/5lr8nC1+lTbg==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + resolution: {integrity: sha512-Z6sukiQsngnWO+l39X4pPbiWT81IC+PLKF+PHxIlyZbGNb9MODfYlXEVlFvej5BOZInWX01kVyzeLvHsXhfczQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + resolution: {integrity: sha512-DRNdQRpSGzRGfARVuVkxvM8Q12nh19l4BF/G7zGA1oe+9wcC6saFBHTISrpIcKzhiXtSrlSrluCfvMuledoCTQ==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + resolution: {integrity: sha512-Z0IADbDo8bh6I7h2IQMx601AdXBLfFpEdUotft86evd/8ZPflZe9COPO8Q1vw+pfLWIUo9zN/JGZvwuAJqduqg==} + engines: {node: '>= 20'} + cpu: [x64] + os: [linux] + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + resolution: {integrity: sha512-HNZGOUxEmElksYR7S6sC5jTeNGpobAsy9u7Gu0AskJ8/20FR9GqebUyB+HBcU/ax6BHuiuJi+Oda4B+YX6H1yA==} + engines: {node: '>=14.0.0'} + cpu: [wasm32] + bundledDependencies: + - '@napi-rs/wasm-runtime' + - '@emnapi/core' + - '@emnapi/runtime' + - '@tybys/wasm-util' + - '@emnapi/wasi-threads' + - tslib + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': + resolution: {integrity: sha512-Pe+RPVTi1T+qymuuRpcdvwSVZjnll/f7n8gBxMMh3xLTctMDKqpdfGimbMyioqtLhUYZxdJ9wGNhV7MKHvgZsQ==} + engines: {node: '>= 20'} + cpu: [arm64] + os: [win32] + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + resolution: {integrity: sha512-Mvrf2kXW/yeW/OTezZlCGOirXRcUuLIBx/5Y12BaPM7wJoryG6dfS/NJL8aBPqtTEx/Vm4T4vKzFUcKDT+TKUA==} + engines: {node: '>= 20'} + cpu: [x64] + os: [win32] + + '@tailwindcss/oxide@4.3.0': + resolution: {integrity: sha512-F7HZGBeN9I0/AuuJS5PwcD8xayx5ri5GhjYUDBEVYUkexyA/giwbDNjRVrxSezE3T250OU2K/wp/ltWx3UOefg==} + engines: {node: '>= 20'} + + '@tailwindcss/vite@4.3.0': + resolution: {integrity: sha512-t6J3OrB5Fc0ExuhohouH0fWUGMYL6PTLhW+E7zIk/pdbnJARZDCwjBznFnkh5ynRnIRSI4YjtTH0t6USjJISrw==} + peerDependencies: + vite: ^5.2.0 || ^6 || ^7 || ^8 + + '@tanstack/table-core@8.21.3': + resolution: {integrity: sha512-ldZXEhOBb8Is7xLs01fR3YEc3DERiz5silj8tnGkFZytt1abEvl/GhUmCE0PMLaMPTa3Jk4HbKmRlHmu+gCftg==} + engines: {node: '>=12'} + + '@tanstack/vue-table@8.21.3': + resolution: {integrity: sha512-rusRyd77c5tDPloPskctMyPLFEQUeBzxdQ+2Eow4F7gDPlPOB1UnnhzfpdvqZ8ZyX2rRNGmqNnQWm87OI2OQPw==} + engines: {node: '>=12'} + peerDependencies: + vue: '>=3.2' + + '@tsconfig/node24@24.0.4': + resolution: {integrity: sha512-2A933l5P5oCbv6qSxHs7ckKwobs8BDAe9SJ/Xr2Hy+nDlwmLE1GhFh/g/vXGRZWgxBg9nX/5piDtHR9Dkw/XuA==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/file-saver@2.0.7': + resolution: {integrity: sha512-dNKVfHd/jk0SkR/exKGj2ggkB45MAkzvWCaqLUUgkyjITkGNzH8H+yUwr+BLJUBjZOe9w8X3wgmXhZDRg1ED6A==} + + '@types/geojson@7946.0.16': + resolution: {integrity: sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==} + + '@types/jsdom@27.0.0': + resolution: {integrity: sha512-NZyFl/PViwKzdEkQg96gtnB8wm+1ljhdDay9ahn4hgb+SfVtPCbm3TlmDUFXTA+MGN3CijicnMhG18SI5H3rFw==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/lodash@4.17.24': + resolution: {integrity: sha512-gIW7lQLZbue7lRSWEFql49QJJWThrTFFeIMJdp3eH4tKoxm1OvEPg02rm4wCCSHS0cL3/Fizimb35b7k8atwsQ==} + + '@types/node@24.12.4': + resolution: {integrity: sha512-GUUEShf+PBCGW2KaXwcIt3Yk+e3pkKwWKb9GSyM9WQVE+ep2jzmHdGsHzu4wgcZy5fN9FBdVzjpBQsYlpfpgLA==} + + '@types/pako@2.0.4': + resolution: {integrity: sha512-VWDCbrLeVXJM9fihYodcLiIv0ku+AlOa/TQ1SvYOaBuyrSKgEcro95LJyIsJ4vSo6BXIxOKxiJAat04CmST9Fw==} + + '@types/qrcode@1.5.6': + resolution: {integrity: sha512-te7NQcV2BOvdj2b1hCAHzAoMNuj65kNBMz0KBaxM6c3VGBOhU0dURQKOtH8CFNI/dsKkwlv32p26qYQTWoB5bw==} + + '@types/raf@3.4.3': + resolution: {integrity: sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==} + + '@types/sinonjs__fake-timers@8.1.1': + resolution: {integrity: sha512-0kSuKjAS0TrGLJ0M/+8MaFkGsQhZpB6pxOmvS3K8FYI72K//YmdfoW9X2qPsAKh1mkwxGD5zib9s1FIFed6E8g==} + + '@types/sizzle@2.3.10': + resolution: {integrity: sha512-TC0dmN0K8YcWEAEfiPi5gJP14eJe30TTGjkvek3iM/1NdHHsdCA/Td6GvNndMOo/iSnIsZ4HuuhrYPDAmbxzww==} + + '@types/supercluster@7.1.3': + resolution: {integrity: sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==} + + '@types/tmp@0.2.6': + resolution: {integrity: sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==} + + '@types/tough-cookie@4.0.5': + resolution: {integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==} + + '@types/trusted-types@2.0.7': + resolution: {integrity: sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==} + + '@typescript-eslint/eslint-plugin@8.60.1': + resolution: {integrity: sha512-JQ4S5GB0tfjO8BuJ4fcX+HodkzJjYBV+7OJ+wLygaX7OGQ7FudyHL4NSCA6ob+w3Yn+5MkKIozOwQhXeM7opVg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.60.1 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.60.1': + resolution: {integrity: sha512-A0M6ua6H252bVjPvvtSgl2QA4+ET9S5Mtkb2GDyTxIhH/C4qDItT7RQNO5PhMC6NXGYXOR9dIalcDDgBKT7oFA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.60.1': + resolution: {integrity: sha512-eXkTH2bxmXlqD1RnOPmLZ9ZM9D3VwSx04JOwBnP9RQ+yUA5a2Mu7SfW8uaV2Aon53NJzZlZYuX7tn91Izf+xaw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.60.1': + resolution: {integrity: sha512-gvI5OQoptnxQnchOirukCuQ55svJSTuD/4k5+pC267xyBtYry748R9/c3tYUzb/iE6RZfllRz2lVulLCHkTm4w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.60.1': + resolution: {integrity: sha512-nh8w4qAteiKuZu3pSSzG/yGKpw0OlkrKnzFmbVRenKaD4qc+7i1GrmZaLVkr8rk4uipiPGMOW4YsM6WmKZ5CvA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.60.1': + resolution: {integrity: sha512-sdwTrpjosW7ANQYJ39ZBF1ZyEMEGVB2UsikrserVM/30a/F1dTLnu9bGxEdosugyu5caigjLrR2qiD11asjI1A==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.60.1': + resolution: {integrity: sha512-4h0tY8ppCkdCzcrl2YM5M3my0xsE1Tf8om3owEu5oPWmXwkKRmk0j0LGDzYBGUcAlesEbxBhazqu/K4cu3Ug7w==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.60.1': + resolution: {integrity: sha512-alpRkfG8hlVE5kdJW2GkfgDgXxold3e8e4l6EnmhRmRLbekgAPCCGDVD++sABy9FcgPFroq+uFcCSM1vR57Cew==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.60.1': + resolution: {integrity: sha512-h2MPBLoNtjc3qZWfY3Tl51yPorQ2McHn8pJfcMNTcIvrrZrr90Ykffit0yjrPFWQcRcUxzH20+6OcVdW4yHtUg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.60.1': + resolution: {integrity: sha512-EbGRQg4FhrmwLodl+t3JNAnXHWVr9Vp+Zl1QBZVPY4ByfkzIT8cX3K6QWODHtkIZqqJVEWvhHSx3v5PDHsaQag==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitejs/plugin-vue@6.0.7': + resolution: {integrity: sha512-km+p+XdSz9Sxm5rqUbqcSfZYaAniKxWBj1KURl+Jr7UaPvvX7BmaWMdP69I5rrFDeQGyxAG7NXdc57vz+snhWg==} + engines: {node: ^20.19.0 || >=22.12.0} + peerDependencies: + vite: ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + vue: ^3.2.25 + + '@vitest/eslint-plugin@1.6.19': + resolution: {integrity: sha512-zodmXRsVKFsuHxHJILuTFaaKsrsxm0YsiOX65clk+LpCW9JrVXaf6ERXr0caDs+NEk0S62Jyk0K7XYQ7gWXheA==} + engines: {node: '>=18'} + peerDependencies: + '@typescript-eslint/eslint-plugin': '*' + eslint: '>=8.57.0' + typescript: '>=5.0.0' + vitest: '*' + peerDependenciesMeta: + '@typescript-eslint/eslint-plugin': + optional: true + typescript: + optional: true + vitest: + optional: true + + '@vitest/expect@4.1.8': + resolution: {integrity: sha512-h3nDO677RDLEGlBxyQ5CW8RlMThSKSRLUePLOx09gNIWRL40edgA1GCZSZgf1W55MFAG6/Sw14KeaAnqv0NKdQ==} + + '@vitest/mocker@4.1.8': + resolution: {integrity: sha512-LEiN/xe4OSIbKe9HQIp5OC24agGD9J5CnmMgsLohVVoOPWL9a2sBoR6VBx43jQZb7Kr1l4RCuyCJzcAa0+dojw==} + peerDependencies: + msw: ^2.4.9 + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@4.1.8': + resolution: {integrity: sha512-9GasEBxpZ1VYIpqHf/0+YGg121uSNwCKOJqIrTwWP/TB7DmFCiaBpNl3aPZzoLWfWkuqhbH8vJIVobZkvdo2cA==} + + '@vitest/runner@4.1.8': + resolution: {integrity: sha512-EmVxeBAfMJvycdjd6Hm+RbFBbA9fKvo0Kx37hNpBYoYeavH3RNsBXWDooR1mgD52dCrxIIuP7UotpfiwOikvcg==} + + '@vitest/snapshot@4.1.8': + resolution: {integrity: sha512-acfZboRmAIf05DEKcBQy33VXojFJjtUdLyo7oOmV9kebb2xdU01UknNiPuPZoJZQyO7DF0gZdTGTpeAzET9QPQ==} + + '@vitest/spy@4.1.8': + resolution: {integrity: sha512-6EevtBp6OZOPF7bmz36HrGMeP3txgVSrgebWxHOafDXGkhIzfXK14f8KF6MuFfgXXUeHxmpD3BQxkV00/3s5mA==} + + '@vitest/utils@4.1.8': + resolution: {integrity: sha512-uOJamYALNhfJ6iolExyQM40yIQwDqYnkKtQ5VCiSe17E33H0aQ/u+1GlRuz4LZBk6Mm3sg90G9hEbmEt37C1Zg==} + + '@volar/language-core@2.4.28': + resolution: {integrity: sha512-w4qhIJ8ZSitgLAkVay6AbcnC7gP3glYM3fYwKV3srj8m494E3xtrCv6E+bWviiK/8hs6e6t1ij1s2Endql7vzQ==} + + '@volar/source-map@2.4.28': + resolution: {integrity: sha512-yX2BDBqJkRXfKw8my8VarTyjv48QwxdJtvRgUpNE5erCsgEUdI2DsLbpa+rOQVAJYshY99szEcRDmyHbF10ggQ==} + + '@volar/typescript@2.4.28': + resolution: {integrity: sha512-Ja6yvWrbis2QtN4ClAKreeUZPVYMARDYZl9LMEv1iQ1QdepB6wn0jTRxA9MftYmYa4DQ4k/DaSZpFPUfxl8giw==} + + '@vue/babel-helper-vue-transform-on@1.5.0': + resolution: {integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==} + + '@vue/babel-plugin-jsx@1.5.0': + resolution: {integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==} + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true + + '@vue/babel-plugin-resolve-type@1.5.0': + resolution: {integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==} + peerDependencies: + '@babel/core': ^7.0.0-0 + + '@vue/compiler-core@3.5.35': + resolution: {integrity: sha512-BUmHaR1J+O+CKZ9uJucdVTEr1LHsdyvv7vG3eNRhK3CczEHeMd/LtsHAuD7PbrxvI2envCY2v7HI1vC1aBRzKw==} + + '@vue/compiler-dom@3.5.35': + resolution: {integrity: sha512-k+bprkXxuqhVajgTx5mUHuir7TwQzUKOWR40ng1ncAqQRPnrLngGGgqVEEhOnTMlc8btHYVKmrP8s5Qyg0hvYA==} + + '@vue/compiler-sfc@3.5.35': + resolution: {integrity: sha512-G5VPMcXTSywXBgtFOZOnHKBxKSrwXUcvY1iaF5/hRcy7t0J6CH/d8ha9F4nzi00Fax1eLV0QHM7v4mQu68jydw==} + + '@vue/compiler-ssr@3.5.35': + resolution: {integrity: sha512-rGhAeXgdM7/ffTJGXT69rCCdTmjDewnFuUZfBQQHTdcEBeWdT5HCGY60y2ytLJr9/Dsu7IntUi5z/w0h6Rjnzw==} + + '@vue/devtools-api@6.6.4': + resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==} + + '@vue/devtools-api@7.7.9': + resolution: {integrity: sha512-kIE8wvwlcZ6TJTbNeU2HQNtaxLx3a84aotTITUuL/4bzfPxzajGBOoqjMhwZJ8L9qFYDU/lAYMEEm11dnZOD6g==} + + '@vue/devtools-core@8.1.2': + resolution: {integrity: sha512-ZGGyaSBP4/+bN2Nd9ZHNYAVDRIzMw1rv2RyXWtyZlo6mQal+IDmTvKY4V+DjAEBhaXt30mHmsgYp1yXJ/2tIWg==} + peerDependencies: + vue: ^3.0.0 + + '@vue/devtools-kit@7.7.9': + resolution: {integrity: sha512-PyQ6odHSgiDVd4hnTP+aDk2X4gl2HmLDfiyEnn3/oV+ckFDuswRs4IbBT7vacMuGdwY/XemxBoh302ctbsptuA==} + + '@vue/devtools-kit@8.1.2': + resolution: {integrity: sha512-f75/upc+GCyjXErpgPGz4582ujS0L/adAltGy+tqXMGUJpgAcfGr6CxnnhpZY8BHuMYt6KpbF8uaFrrQG66rGQ==} + + '@vue/devtools-shared@7.7.9': + resolution: {integrity: sha512-iWAb0v2WYf0QWmxCGy0seZNDPdO3Sp5+u78ORnyeonS6MT4PC7VPrryX2BpMJrwlDeaZ6BD4vP4XKjK0SZqaeA==} + + '@vue/devtools-shared@8.1.2': + resolution: {integrity: sha512-X9RyVFYAdkBe4IUf5v48TxBF/6QPmF8CmWrDAjXzfUHrgQ/HGfTC1A6TqgXqZ03ye66l3AD51BAGD69IvKM9sw==} + + '@vue/eslint-config-prettier@10.2.0': + resolution: {integrity: sha512-GL3YBLwv/+b86yHcNNfPJxOTtVFJ4Mbc9UU3zR+KVoG7SwGTjPT+32fXamscNumElhcpXW3mT0DgzS9w32S7Bw==} + peerDependencies: + eslint: '>= 8.21.0' + prettier: '>= 3.0.0' + + '@vue/eslint-config-typescript@14.7.0': + resolution: {integrity: sha512-iegbMINVc+seZ/QxtzWiOBozctrHiF2WvGedruu2EbLujg9VuU0FQiNcN2z1ycuaoKKpF4m2qzB5HDEMKbxtIg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.10.0 || ^10.0.0 + eslint-plugin-vue: ^9.28.0 || ^10.0.0 + typescript: '>=4.8.4' + peerDependenciesMeta: + typescript: + optional: true + + '@vue/language-core@3.3.3': + resolution: {integrity: sha512-X6p+7nfY7vVT6dQwUJ+v0Jfq/lwIfhL2jMi91dQ3ln4hnlGXlxsDu/FNkeyHYgvYtyQy18ZX76IZy7X4diDbiQ==} + + '@vue/reactivity@3.5.35': + resolution: {integrity: sha512-tVc+SsHConvh/Lz64qq1pP3rYArBmK42xonovEcxY74SQtvctZodG/zhq54P5dr38cVuw25d27cPNRdlMidpGQ==} + + '@vue/runtime-core@3.5.35': + resolution: {integrity: sha512-A/xFNX9loIcWDygeQuNCfKuh0CoYBzxhqEMNah5TSFg9Z53DrFYEN2qi5CU9necjM1OWYegYREUTHmXTmhfXtg==} + + '@vue/runtime-dom@3.5.35': + resolution: {integrity: sha512-odrJ1C391dbGnyDRh8U+rnP7J2amIEzfmRk5vXy7xi3aZhEXofTvpi0T4HJb6jlNqQZTNPR5MPHSB3RHNkIORA==} + + '@vue/server-renderer@3.5.35': + resolution: {integrity: sha512-NkebSOYdB97wi8OQcO3HqzZSlymJi/aWsN/7h74OSVhRTm6qGs3Jp3e0rCXynmWwSlKeRrnlIug+ilYoHBmQDA==} + peerDependencies: + vue: 3.5.35 + + '@vue/shared@3.5.35': + resolution: {integrity: sha512-zSbjL7gRXwks2ZQLRGCajBtBXEOXW9Ddhn/HvSdrGkE2dqGnumzW8XtusRrxrE9LvqtiqDXQ+A60Hp6mvdYxfA==} + + '@vue/test-utils@2.4.10': + resolution: {integrity: sha512-SmoZ5EA1kYiAFs9NkYdiFFQF+cSnUwnvlYEbY+DogWQZUiqOm/Y29eSbc5T6yi75SgSF9863SBeXniIEoPajCA==} + peerDependencies: + '@vue/compiler-dom': 3.x + '@vue/server-renderer': 3.x + vue: 3.x + peerDependenciesMeta: + '@vue/server-renderer': + optional: true + + '@vue/tsconfig@0.8.1': + resolution: {integrity: sha512-aK7feIWPXFSUhsCP9PFqPyFOcz4ENkb8hZ2pneL6m2UjCkccvaOhC/5KCKluuBufvp2KzkbdA2W2pk20vLzu3g==} + peerDependencies: + typescript: 5.x + vue: ^3.4.0 + peerDependenciesMeta: + typescript: + optional: true + vue: + optional: true + + '@zag-js/accordion@1.26.1': + resolution: {integrity: sha512-Rqp5zPyWn7w1D2teZAlLytK7okRjfdU4qLuwO7SPdXgeqxr+bn7qP9Bxs4NU78nySA8ZbLZqPbmTA31m9Ya6lw==} + + '@zag-js/anatomy@1.26.1': + resolution: {integrity: sha512-1GVk5D/gFTvBd06w3MgDkSUGtUyU5n6XL8G6KsmuIh6dq16MgZ0TnDsUOkPVBQL3YEiHqlJfeCS6zkgcsu3q2g==} + + '@zag-js/aria-hidden@1.26.1': + resolution: {integrity: sha512-8zZQDODCfXuJ0zfsx6+WVaYh+ScQoFG2ib2FvKr9sxztoJAn1hiLYFKzzlA1aWOxTAh+dFQC/jJI+C1nWbhBkQ==} + + '@zag-js/avatar@1.26.1': + resolution: {integrity: sha512-s34+KSqv/frY3W4Ng9uuuqQbVlgpeWG8b0CtGcELUw9VSldDSOE2ZMIZ1inFLoby9vOOovttHSd/QdGseXkFqQ==} + + '@zag-js/carousel@1.26.1': + resolution: {integrity: sha512-hwxO1p+fsGpu+b8ufxdQAO2UhfP1jUugmBoYnaT3eQJ7Xl/E3MuJ3OMdxgeM9zbBRZuv7IWXVzfLQTNB1lz78g==} + + '@zag-js/checkbox@1.26.1': + resolution: {integrity: sha512-IESEO/WfQ6o45E8beCIOdg0u8tmgSF9gb2F0S1HNBSTmeTq5KSaz47Z8SDkci0g9cw2i+OZIX7BPZI4XpbT3tg==} + + '@zag-js/collection@1.26.1': + resolution: {integrity: sha512-b23L4urNhCCH89TRr5UIWZsCtV9eaBhgTPu91qO2CAgz0fbvmkZJ/E5yr7EI4KeNg0xExbiQrhinZQt2v0LjCA==} + + '@zag-js/combobox@1.26.1': + resolution: {integrity: sha512-VLTTLvzgurvYrsg7UEb11Ad0ZPxWp3ui9/+J3rzgrTMEuLWj8mPfWT0i0l3AG+ruyFlQv5aZNvA/pupk3UK1Tg==} + + '@zag-js/core@1.26.1': + resolution: {integrity: sha512-JesW6C1dlrG36Aa+yteL0v5nt4Zqa9n9coqDJUQ9L1AYWzjz6NTHubsA7ysJlTKwl411gSsssmH9Ey5sRxFEWQ==} + + '@zag-js/date-picker@1.26.1': + resolution: {integrity: sha512-dh105RY/SKXa0iPDmIH5qpXZ1W/Ls+AU0d2l5phcEsVItbgE+FBKYTSuC91w+LNv+MpGPH+PXvatt10tW6SYGA==} + peerDependencies: + '@internationalized/date': '>=3.0.0' + + '@zag-js/date-utils@1.26.1': + resolution: {integrity: sha512-nMTSfIk0B7MfOIJ0EpFFrHHOGDEI/F0OCG9LVvkwlKZ3evKmgAT5Hw18h2FbQ8ovQ9gNbWoUGPPnrnZJtkzhNw==} + peerDependencies: + '@internationalized/date': '>=3.0.0' + + '@zag-js/dialog@1.26.1': + resolution: {integrity: sha512-kbNzTIMUkn19RcqDKF+3kH5cGPW3bY2FKiw6qtPi072SshHQtuAeE4g5K3wGFdSTJXHBhXYSK04ZR+ok00YbGA==} + + '@zag-js/dismissable@1.26.1': + resolution: {integrity: sha512-n7MdvInqfOh+UJ+VpeIovVU734vf8ekHhfhIugDt41xAzndZW8hdXcBsKnDFK0uY9OVk8cq5FRqpdzhoZuZSgw==} + + '@zag-js/dom-query@1.26.1': + resolution: {integrity: sha512-AcdNV+Zn+Mrz6jq6IpgBJmiooFCuGBzhbbjjU6Drh3TfNDL7q2YXinrZydoD4EGDaFOQ1h71iChTtCZSHw/yNw==} + + '@zag-js/focus-trap@1.26.1': + resolution: {integrity: sha512-88NvG1vxga/Umx54p9K6+nkrC5QLOA/hc5FV68eMKn83u1PCCH8U2+RV/vhMJ7IUTEwI0VTZLOmDfyfbkfomTQ==} + + '@zag-js/focus-visible@1.26.1': + resolution: {integrity: sha512-Hq57XwQWS0a5rjiZcgWhC8ca1e75VoqVLaSGn8XM29lv13423MPRtJ6b/zkEx5G4yZmddgA+wFh2/U2KPztcYA==} + + '@zag-js/interact-outside@1.26.1': + resolution: {integrity: sha512-Kxyg8AuJq4WssVbFyCtY14O611DU7UEiKgDwiNBXdQ5V+XXd4BBBwrA5QK9pk/qjgxZawKOalwjcYsyWhFbwLQ==} + + '@zag-js/live-region@1.26.1': + resolution: {integrity: sha512-Z3c2/ssr5ERIVr0sLchua0e/JrPlbIN3suLZh4oYYPcxpKRjhwZQbN66xa5jm0LfIlW/Z21Obrb8X91GFwXR6w==} + + '@zag-js/menu@1.26.1': + resolution: {integrity: sha512-ElFlY9yqea14XUkRXL1WA3t3SGDh+4jBMXZLIG8GY14GOzoTvruATBg1+Sbd5VVpggAbrUui33F/umWgwh6X4w==} + + '@zag-js/pagination@1.26.1': + resolution: {integrity: sha512-tInkqiMj1+VoFPSN80Y7lS1ABfxTA+xgyjMyx3Y09dgHNhiOKMOYva3eTGIJaEd6OskUayc3TFKqvfT5R43KlQ==} + + '@zag-js/popover@1.26.1': + resolution: {integrity: sha512-nwZfOa7W8NW7npZXqw898nGIBJ7/sk89jglO9Ealqgay5ypOSGBg4v3Afc188Q9c4jFLLqNLQ/LzUhox+h7oLA==} + + '@zag-js/popper@1.26.1': + resolution: {integrity: sha512-wY/YzdXT97gIw8wpPDyU+qf1nlnf6wYwVs3SGDCd6cbgU7iy2jo3Pn6bMJ2OrsFrLZqFVZp6lF2zQtBTNJMZtg==} + + '@zag-js/presence@1.26.1': + resolution: {integrity: sha512-qcbdmwVQdrc4nbHsGTTRBT9UI6lJTmT2ZVv+QQW1ZeegiIEEg/IQAuMHVaPcGGnS2Kec2OJAA174+Br8rZCKtQ==} + + '@zag-js/progress@1.26.1': + resolution: {integrity: sha512-NEmLImi7ZvsTQ1B+AAZARsl3IwvdS4+qv9Wpgf+RIjJVCa0CbE3N7XS+sHuI5X4nWAKbP6Kpc3VKPwZ/9dZ7jQ==} + + '@zag-js/radio-group@1.26.1': + resolution: {integrity: sha512-85BA4b4h6Dq3Qh9VhlRM49gJUk0NGnEqmd86LctNLXMTMeJQ9i40LMeRVlKJqeDDcXMPQDKsINCfATegq2mj2Q==} + + '@zag-js/rect-utils@1.26.1': + resolution: {integrity: sha512-ZvO4kyXXfSPrFmVKgHDTSlTagioU5KNE2VhN6tN/uJYVh2M1us2DBIWtZLGZeGSpdcCuHEpThUp1eES7ZVN8ng==} + + '@zag-js/remove-scroll@1.26.1': + resolution: {integrity: sha512-m1wVmykWfpvmp3Q3jLArCvojR8SM4/DTH6I5KIZAwgIp9QiI16K83ZTSS7TiVkhwt3SgH72F9oAaJT/HA9ZHnQ==} + + '@zag-js/scroll-area@1.26.1': + resolution: {integrity: sha512-+QzuY/zYzl0ZH5Xf7tLg2nTKt8h3B55lu8yvg7WavqT2nLTMcocK6Vr1r7b+9FpGyt3nMYuZ6iUUU1Rdkk2vwg==} + + '@zag-js/scroll-snap@1.26.1': + resolution: {integrity: sha512-fRRvXO0Yl9fMwrjN7zofVcFSQvHEKYRptq4W4lG2DXIKuUrmJwyTLKMREvLka6kRZ420hDfVlTj7PpSPp4OoGg==} + + '@zag-js/select@1.26.1': + resolution: {integrity: sha512-posQbGiEXiLHoUeD2mGsuPPd/cSKat99h78krivAEJqFDijPSmX9l8A0o6sXXxWHFje50gqWxSH4p25IKBGQkA==} + + '@zag-js/slider@1.26.1': + resolution: {integrity: sha512-iHFeugMk9pNZLoijEYeV49h7lLC+twxkpeiTc5KjFgKQB9n8a+H22fIVkl+B+dmIPcfr8tDpri1FfN4hh9kxpA==} + + '@zag-js/store@1.26.1': + resolution: {integrity: sha512-0473Z38EVnl6RcjXecevzfxYbzZWEcCqsx+Q3Eti+5LKvSnl05SomiF5dYDd8qPQ167iWAQWhBYSTvasfjKa4w==} + + '@zag-js/switch@1.26.1': + resolution: {integrity: sha512-OfOF2BYBtEeoI4RU0eYTFH3QAORNQBuVtDrsERJuWldLk9p1sukETXooTFxqaQuLRx98J3Y7duryjvTvNyA8nA==} + + '@zag-js/tabs@1.26.1': + resolution: {integrity: sha512-RI3Od0H6guYfflmCmpKO0hrh1FOjE/OduEEiD1XDn5foeD0uV/qhS8Wdh8R3ikgcaVjb5XrSOrCZXkuc732g8w==} + + '@zag-js/toast@1.26.1': + resolution: {integrity: sha512-TLcN9Bd17fI0069VOV7Ug1kGk5feUK38YKJys8/1cujG+Cu4d5iUif/GUJDrRjcI/P6dPVTzrZ9ag+pCzxkWOA==} + + '@zag-js/tooltip@1.26.1': + resolution: {integrity: sha512-ezBF4DZYo7E+AjVvpOoXnoPwhSnbS3y6Fp9BMvzQRSn5qElZbdQOEZSI9R6MZBTfEo6syXE68MYyCMzKFpkQFg==} + + '@zag-js/types@1.26.1': + resolution: {integrity: sha512-MXRn8x0af7ZVJ50cxCoJU7hLZ3FmPnD53UQnjkYSmOcwr1eE0Wyt7bjGUP1Zv+6hPMTlyZ18XR2rnUkKAtr7/w==} + + '@zag-js/utils@1.26.1': + resolution: {integrity: sha512-OeQia4UV/3osMdrhSa2NmhWvzlnlF1vxOBAdYP5R96ho0FpI15DvAaPQDvE94shzIMgzS4k0pqK5lZWK5FTmqw==} + + '@zag-js/vue@1.26.1': + resolution: {integrity: sha512-uUxMyROrRXYUri+WVN75TDJ5GWXGtZPTgdYXtOmYJBIxAoafPAsxnacwJCe6Lbj0uVX+D8nw7yKVIRJA4TJOvg==} + peerDependencies: + vue: '>=3.0.0' + + abbrev@2.0.0: + resolution: {integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + adler-32@1.3.1: + resolution: {integrity: sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==} + engines: {node: '>=0.8'} + + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + + agent-base@7.1.4: + resolution: {integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==} + engines: {node: '>= 14'} + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + alien-signals@3.2.1: + resolution: {integrity: sha512-I8FjmltrfnDFoZedi5CG8DghVYNhzb/Ijluz7tCSJH0xpd0484Kowhbb1XDYOxfJpU1p5wnM2X54dA+IfGyD1g==} + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + ansis@4.3.1: + resolution: {integrity: sha512-BJ8/l4R5LRE7hW9WdSuGYrLSHi2ynxeFpDFbH0K/CgNeY/tyhk+vO6TYxXC5r5CpUhNVX310xzPsN/H9lCdfOA==} + engines: {node: '>=14'} + + arch@2.2.0: + resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} + + arg@5.0.2: + resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + asn1@0.2.6: + resolution: {integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==} + + assert-plus@1.0.0: + resolution: {integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==} + engines: {node: '>=0.8'} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + at-least-node@1.0.0: + resolution: {integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==} + engines: {node: '>= 4.0.0'} + + aws-sign2@0.7.0: + resolution: {integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==} + + aws4@1.13.2: + resolution: {integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==} + + axios@1.16.1: + resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==} + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + base64-arraybuffer@1.0.2: + resolution: {integrity: sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==} + engines: {node: '>= 0.6.0'} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + baseline-browser-mapping@2.10.33: + resolution: {integrity: sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==} + engines: {node: '>=6.0.0'} + hasBin: true + + bcrypt-pbkdf@1.0.2: + resolution: {integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==} + + bidi-js@1.0.3: + resolution: {integrity: sha512-RKshQI1R3YQ+n9YJz2QQ147P66ELpa1FQEg20Dk8oW9t2KgLbpDLLp9aGZ7y8WHSshDknG0bknqGw5/tyCs5tw==} + + birpc@2.9.0: + resolution: {integrity: sha512-KrayHS5pBi69Xi9JmvoqrIgYGDkD6mcSe/i6YKi3w5kekCLzrX4+nawcXqrj2tIp50Kw/mT/s3p+GVK0A0sKxw==} + + birpc@4.0.0: + resolution: {integrity: sha512-LShSxJP0KTmd101b6DRyGBj57LZxSDYWKitQNW/mi8GRMvZb078Uf9+pveax1DrVL89vm7mWe+TovdI/UDOuPw==} + + blob-util@2.0.2: + resolution: {integrity: sha512-T7JQa+zsXXEa6/8ZhHcQEW1UFfVM49Ts65uBkFL6fz2QmrElqmbajIDJvuA0tEhRe5eIjpV9ZF+0RfZR9voJFQ==} + + bluebird@3.7.2: + resolution: {integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==} + + boolbase@1.0.0: + resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + + brace-expansion@1.1.15: + resolution: {integrity: sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==} + + brace-expansion@2.1.1: + resolution: {integrity: sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + browserslist@4.28.2: + resolution: {integrity: sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==} + engines: {node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7} + hasBin: true + + buffer@5.7.1: + resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + cachedir@2.4.0: + resolution: {integrity: sha512-9EtFOZR8g22CL7BWjJ9BUx1+A/djkofnyW3aOXZORNW2kxoUpx2h+uN2cOqwPmFhnpVmxg+KW2OjOSgChTEvsQ==} + engines: {node: '>=6'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + call-bound@1.0.4: + resolution: {integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camelcase@5.3.1: + resolution: {integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==} + engines: {node: '>=6'} + + caniuse-lite@1.0.30001793: + resolution: {integrity: sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==} + + canvg@3.0.11: + resolution: {integrity: sha512-5ON+q7jCTgMp9cjpu4Jo6XbvfYwSB2Ow3kzHKfIyJfaCAOHLbdKPQqGKgfED/R5B+3TFFfe8pegYA+b423SRyA==} + engines: {node: '>=10.0.0'} + + caseless@0.12.0: + resolution: {integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==} + + cfb@1.2.2: + resolution: {integrity: sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==} + engines: {node: '>=0.8'} + + chai@6.2.2: + resolution: {integrity: sha512-NUPRluOfOiTKBKvWPtSD4PhFvWCqOi0BGStNWs57X9js7XGTprSmFoz5F0tWhR4WPjNeR9jXqdC7/UpSJTnlRg==} + engines: {node: '>=18'} + + chalk@4.1.2: + resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} + engines: {node: '>=10'} + + chart.js@4.5.1: + resolution: {integrity: sha512-GIjfiT9dbmHRiYi6Nl2yFCq7kkwdkp1W/lp2J99rX0yo9tgJGn3lKQATztIjb5tVtevcBtIdICNWqlq5+E8/Pw==} + engines: {pnpm: '>=8'} + + check-more-types@2.24.0: + resolution: {integrity: sha512-Pj779qHxV2tuapviy1bSZNEL1maXr13bPYpsvSDB68HlYcYuhlDrmGd63i0JHMCLKzc7rUSNIrpdJlhVlNwrxA==} + engines: {node: '>= 0.8.0'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + class-variance-authority@0.7.1: + resolution: {integrity: sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-table3@0.6.1: + resolution: {integrity: sha512-w0q/enDHhPLq44ovMGdQeeDLvwxwavsJX7oQGYt/LrBlYsyaxyDnp6z3QzFut/6kLLKnlcUVJLrpB7KBfgG/RA==} + engines: {node: 10.* || >= 12.*} + + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} + + cliui@6.0.0: + resolution: {integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==} + + clsx@2.1.1: + resolution: {integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==} + engines: {node: '>=6'} + + codepage@1.15.0: + resolution: {integrity: sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==} + engines: {node: '>=0.8'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + colors@1.4.0: + resolution: {integrity: sha512-a+UqTh4kgZg/SlGvfbzDHpgRu7AAQOmmqRHJnxhRZICKFUT91brVhNNt58CMWU9PsBbv3PDCZUHbVxuDiH2mtA==} + engines: {node: '>=0.1.90'} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@10.0.1: + resolution: {integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==} + engines: {node: '>=14'} + + commander@6.2.1: + resolution: {integrity: sha512-U7VdrJFnJgo4xjrHpTzu0yrHPGImdsmD95ZlgYSEajAn2JKzDhDTPG9kBTefmObL2w/ngeZnilk+OV9CG3d7UA==} + engines: {node: '>= 6'} + + common-tags@1.8.2: + resolution: {integrity: sha512-gk/Z852D2Wtb//0I+kRFNKKE9dIIVirjoqPoA1wJU+XePVXZfGeBpk45+A1rKO4Q43prqWBNY/MiIeRLbPWUaA==} + engines: {node: '>=4.0.0'} + + concat-map@0.0.1: + resolution: {integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + convert-source-map@2.0.0: + resolution: {integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==} + + copy-anything@4.0.5: + resolution: {integrity: sha512-7Vv6asjS4gMOuILabD3l739tsaxFQmC+a7pLZm02zyvs8p977bL3zEgq3yDk5rn9B0PbYgIv++jmHcuUab4RhA==} + engines: {node: '>=18'} + + core-js@3.49.0: + resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==} + + core-util-is@1.0.2: + resolution: {integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==} + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + css-line-break@2.1.0: + resolution: {integrity: sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==} + + css-tree@3.2.1: + resolution: {integrity: sha512-X7sjQzceUhu1u7Y/ylrRZFU2FS6LRiFVp6rKLPg23y3x3c3DOKAwuXGDp+PAGjh6CSnCjYeAul8pcT8bAl+lSA==} + engines: {node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0} + + cssesc@3.0.0: + resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} + engines: {node: '>=4'} + hasBin: true + + cssstyle@5.3.7: + resolution: {integrity: sha512-7D2EPVltRrsTkhpQmksIu+LxeWAIEk6wRDMJ1qljlv+CKHJM+cJLlfhWIzNA44eAsHXSNe3+vO6DW1yCYx8SuQ==} + engines: {node: '>=20'} + + csstype@3.1.3: + resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} + + csstype@3.2.3: + resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==} + + cypress@15.16.0: + resolution: {integrity: sha512-fy0M0c9xDLEp4v9y7LLKFeAQhIdDsobxDSKpD3JcZpqQefjy9TSzEyVV3HA0zu7hUi0bGHlSYlI7ASub8wgR9A==} + engines: {node: ^20.1.0 || ^22.0.0 || >=24.0.0} + hasBin: true + + dashdash@1.14.1: + resolution: {integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==} + engines: {node: '>=0.10'} + + data-urls@6.0.1: + resolution: {integrity: sha512-euIQENZg6x8mj3fO6o9+fOW8MimUI4PpD/fZBhJfeioZVy9TUpM4UY7KjQNVZFlqwJ0UdzRDzkycB997HEq1BQ==} + engines: {node: '>=20'} + + dayjs@1.11.21: + resolution: {integrity: sha512-98IT+HOahAisibz/yjKbzuOBwYcjJ7BCLPzARyHiyEBmRz4fatF+KPJszEHXsGYjUG234aH/cOjW1wwTbKUZlA==} + + debug@3.2.7: + resolution: {integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decamelize@1.2.0: + resolution: {integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==} + engines: {node: '>=0.10.0'} + + decimal.js@10.6.0: + resolution: {integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-libc@2.1.2: + resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==} + engines: {node: '>=8'} + + dijkstrajs@1.0.3: + resolution: {integrity: sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA==} + + dompurify@3.4.7: + resolution: {integrity: sha512-2jBxDJY4RR06tQNy4w5FlFH7kfxsQZlufd0sbv+chfHCxeJwrFw2baUDsSwvBISD4K4RDbd0PTfy3uNXsR6siA==} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + duplexer@0.1.2: + resolution: {integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==} + + earcut@3.0.2: + resolution: {integrity: sha512-X7hshQbLyMJ/3RPhyObLARM2sNxxmRALLKx1+NVFFnQ9gKzmCrxm9+uLIAdBcvc8FNLpctqlQ2V6AE92Ol9UDQ==} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ecc-jsbn@0.1.2: + resolution: {integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==} + + editorconfig@1.0.7: + resolution: {integrity: sha512-e0GOtq/aTQhVdNyDU9e02+wz9oDDM+SIOQxWME2QRjzRX5yyLAuHDE+0aE8vHb9XRC8XD37eO2u57+F09JqFhw==} + engines: {node: '>=14'} + hasBin: true + + electron-to-chromium@1.5.364: + resolution: {integrity: sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==} + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + end-of-stream@1.4.5: + resolution: {integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==} + + enhanced-resolve@5.22.1: + resolution: {integrity: sha512-6QEuw3zoX1SJQc7b87aBXke/no+mG2bTBgw29gWMQonLmpEkWoCAVkl+M49e48AZlWzxiDzDZzYdp6kobcyLww==} + engines: {node: '>=10.13.0'} + + entities@6.0.1: + resolution: {integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==} + engines: {node: '>=0.12'} + + entities@7.0.1: + resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==} + engines: {node: '>=0.12'} + + entities@8.0.0: + resolution: {integrity: sha512-zwfzJecQ/Uej6tusMqwAqU/6KL2XaB2VZ2Jg54Je6ahNBGNH6Ek6g3jjNCF0fG9EWQKGZNddNjU5F1ZQn/sBnA==} + engines: {node: '>=20.19.0'} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-stack-parser-es@1.0.5: + resolution: {integrity: sha512-5qucVt2XcuGMcEGgWI7i+yZpmpByQ8J1lHhcL7PwqCwu9FPP3VUXzT4ltHe5i2z9dePwEHcDVOAfSnHsOlCXRA==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@2.1.0: + resolution: {integrity: sha512-n27zTYMjYu1aj4MjCWzSP7G9r75utsaoc8m61weK+W8JMBGGQybd43GstCXZ3WNmSFtGT9wi59qQTW6mhTR5LQ==} + + es-object-atoms@1.1.2: + resolution: {integrity: sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-config-prettier@10.1.8: + resolution: {integrity: sha512-82GZUjRS0p/jganf6q1rEO25VSoHH0hKPCTrgillPjdI/3bgBhAE1QzHrHTizjpRvy6pGAvKjDJtk2pF9NDq8w==} + hasBin: true + peerDependencies: + eslint: '>=7.0.0' + + eslint-plugin-cypress@5.4.0: + resolution: {integrity: sha512-XAQYuzMpLWJdFRQorPO3GDx4XHqI362qr1/XIp0N6SNTAa8lyzmpTA26qNRc99I53NnqX9l0SHwbHXX7TAKIkg==} + deprecated: 'deprecate: accidentally includes breaking changes from 6.0.0' + peerDependencies: + eslint: '>=9' + + eslint-plugin-prettier@5.5.6: + resolution: {integrity: sha512-ifetmTcxWfz+4qRW3pH/ujdTq2jQIj59AxJMIN26K5avYgU8dxycUETQonWiW+wPrYXA0j3Try0l1CnwVQtDqQ==} + engines: {node: ^14.18.0 || >=16.0.0} + peerDependencies: + '@types/eslint': '>=8.0.0' + eslint: '>=8.0.0' + eslint-config-prettier: '>= 7.0.0 <10.0.0 || >=10.1.0' + prettier: '>=3.0.0' + peerDependenciesMeta: + '@types/eslint': + optional: true + eslint-config-prettier: + optional: true + + eslint-plugin-vue@10.6.2: + resolution: {integrity: sha512-nA5yUs/B1KmKzvC42fyD0+l9Yd+LtEpVhWRbXuDj0e+ZURcTtyRbMDWUeJmTAh2wC6jC83raS63anNM2YT3NPw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@stylistic/eslint-plugin': ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + '@typescript-eslint/parser': ^7.0.0 || ^8.0.0 + eslint: ^8.57.0 || ^9.0.0 + vue-eslint-parser: ^10.0.0 + peerDependenciesMeta: + '@stylistic/eslint-plugin': + optional: true + '@typescript-eslint/parser': + optional: true + + eslint-scope@8.4.0: + resolution: {integrity: sha512-sNXOfKCn74rt8RICKMvJS7XKV/Xk9kA7DyJr8mJik3S7Cwgy3qlkkmyS2uQB3jiJg6VNdZd/pDBJu0nvG2NlTg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@9.39.4: + resolution: {integrity: sha512-XoMjdBOwe/esVgEvLmNsD3IRHkm7fbKIUGvrleloJXUZgDHig2IPWNniv+GwjyJXzuNqVjlr5+4yVUZjycJwfQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@2.0.2: + resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-stream@3.3.4: + resolution: {integrity: sha512-QHpkERcGsR0T7Qm3HNJSyXKEEj8AHNxkY3PK8TS2KJvQ7NiSHe3DDpwVKKtoYprL/AreyzFBeIkBIWChAqn60g==} + + eventemitter2@6.4.7: + resolution: {integrity: sha512-tYUSVOGeQPKt/eC1ABfhHy5Xd96N3oIijJvN3O9+TsC28T5V9yX9oEfEK5faP0EFSNVOG97qtAS68GBrQB2hDg==} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + execa@4.1.0: + resolution: {integrity: sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==} + engines: {node: '>=10'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + executable@4.1.1: + resolution: {integrity: sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==} + engines: {node: '>=4'} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + extend@3.0.2: + resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==} + + extsprintf@1.3.0: + resolution: {integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==} + engines: {'0': node >=0.6.0} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-diff@1.3.0: + resolution: {integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==} + + fast-glob@3.3.3: + resolution: {integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==} + engines: {node: '>=8.6.0'} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-png@6.4.0: + resolution: {integrity: sha512-kAqZq1TlgBjZcLr5mcN6NP5Rv4V2f22z00c3g8vRrwkcqjerx7BEhPbOnWCPqaHUl2XWQBJQvOT/FQhdMT7X/Q==} + + fastq@1.20.1: + resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + fflate@0.8.3: + resolution: {integrity: sha512-tbZNuJrLwGUp3zshBtdy4W+ORxZuIh8a5ilyIEQDC5rY1f3U20JMry0Ll3WBzU58EZKsEuJFXhb5gwv8CsPvgA==} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + file-saver@2.0.5: + resolution: {integrity: sha512-P9bmyZ3h/PRG+Nzga+rbdI4OEpNDzAVyy74uVO9ATgzLK6VtAsYybF/+TOCvrc0MO793d6+42lLyZTw7/ArVzA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@4.1.0: + resolution: {integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + forever-agent@0.6.1: + resolution: {integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + frac@1.1.2: + resolution: {integrity: sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==} + engines: {node: '>=0.8'} + + from@0.1.7: + resolution: {integrity: sha512-twe20eF1OxVxp/ML/kq2p1uc6KvFK/+vs8WjEbeKmV2He22MKm7YF2ANIt+EOqhJ5L3K/SuuPhk0hWQDjOM23g==} + + fs-extra@9.1.0: + resolution: {integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==} + engines: {node: '>=10'} + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + gensync@1.0.0-beta.2: + resolution: {integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==} + engines: {node: '>=6.9.0'} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stream@5.2.0: + resolution: {integrity: sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==} + engines: {node: '>=8'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + getpass@0.1.7: + resolution: {integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==} + + gl-matrix@3.4.4: + resolution: {integrity: sha512-latSnyDNt/8zYUB6VIJ6PCh2jBjJX6gnDsoCZ7LyW7GkqrD51EWwa9qCoGixj8YqBtETQK/xY7OmpTF8xz1DdQ==} + + glob-parent@5.1.2: + resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==} + engines: {node: '>= 6'} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + global-dirs@3.0.1: + resolution: {integrity: sha512-NBcGGFbBA9s1VzD41QXDG+3++t9Mn5t1FpLdhESY6oKY4gYTFpX4wO3sqGUa0Srjtbfj3szX0RnemmrVRUdULA==} + engines: {node: '>=10'} + + globals@14.0.0: + resolution: {integrity: sha512-oahGvuMGQlPw/ivIYBjVSrWAfWLBeku5tpPE2fOPLi+WHffIWbuh2tCjhyQhTBPMf5E9jDEH4FOmTYgYwbKwtQ==} + engines: {node: '>=18'} + + globals@17.6.0: + resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasha@5.2.2: + resolution: {integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==} + engines: {node: '>=8'} + + hasown@2.0.4: + resolution: {integrity: sha512-T2UbfbBEF32wiepXIsMlTW9+dDYC6wMh/t/vYA4tuOMKqWz/n3vr1NFSxQiyP+zk2mXsoMA/i/7qV6LKut1t1A==} + engines: {node: '>= 0.4'} + + hookable@5.5.3: + resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} + + html-encoding-sniffer@6.0.0: + resolution: {integrity: sha512-CV9TW3Y3f8/wT0BRFc1/KAVQ3TUHiXmaAb6VW9vtiMFf7SLoMd1PdAc4W3KFOFETBJUb90KatHqlsZMWV+R9Gg==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + + html2canvas@1.4.1: + resolution: {integrity: sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==} + engines: {node: '>=8.0.0'} + + http-proxy-agent@7.0.2: + resolution: {integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==} + engines: {node: '>= 14'} + + http-signature@1.4.0: + resolution: {integrity: sha512-G5akfn7eKbpDN+8nPS/cb57YeA1jLTVxjpCj7tmm3QKPdyDy7T+qSC40e9ptydSWvkwjSXw1VbkpyEm39ukeAg==} + engines: {node: '>=0.10'} + + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + + https-proxy-agent@7.0.6: + resolution: {integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==} + engines: {node: '>= 14'} + + human-signals@1.1.1: + resolution: {integrity: sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==} + engines: {node: '>=8.12.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@2.0.0: + resolution: {integrity: sha512-7PnF4oN3CvZF23ADhA5wRaYEQpJ8qygSkbtTXWBeXWXmEVRXK+1ITciHWwHhsjv1TmW0MgacIv6hEi5pX5NQdA==} + engines: {node: '>=10'} + + iobuffer@5.4.0: + resolution: {integrity: sha512-DRebOWuqDvxunfkNJAlc3IzWIPD5xVxwUNbHr7xKB8E6aLJxIPfNX3CoMJghcFjpv6RWQsrcJbghtEwSPoJqMA==} + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-installed-globally@0.4.0: + resolution: {integrity: sha512-iwGqO3J21aaSkC7jWnHP/difazwS7SFeIqxv6wEtLU8Y5KlzFTjyqcSIT0d8s4+dDhKytsk9PJZ2BkS5eZwQRQ==} + engines: {node: '>=10'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-path-inside@3.0.3: + resolution: {integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==} + engines: {node: '>=8'} + + is-potential-custom-element-name@1.0.1: + resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-typedarray@1.0.0: + resolution: {integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==} + + is-unicode-supported@0.1.0: + resolution: {integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==} + engines: {node: '>=10'} + + is-what@5.5.0: + resolution: {integrity: sha512-oG7cgbmg5kLYae2N5IVd3jm2s+vldjxJzK1pcu9LfpGuQ93MQSzo0okvRna+7y5ifrD+20FE8FvjusyGaz14fw==} + engines: {node: '>=18'} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + isexe@3.1.5: + resolution: {integrity: sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==} + engines: {node: '>=18'} + + isstream@0.1.2: + resolution: {integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + joi@18.2.1: + resolution: {integrity: sha512-2/OKlogiESf2Nh3TFCrRjrr9z1DRHeW0I+KReF67+4J0Ns+8hBtHRmoWAZ2OFU6I5+TWLEe6sVlSdXPjHm5UbQ==} + engines: {node: '>= 20'} + + js-beautify@1.15.4: + resolution: {integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==} + engines: {node: '>=14'} + hasBin: true + + js-cookie@3.0.8: + resolution: {integrity: sha512-yeJd4aNAdYZQjaon2bpD/Gb0B/omw7HQOsynXXcOiWVCacbBcPlgn8S/d1X6blFSaHao7ozqtW7NZW19xpCtIw==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-yaml@4.2.0: + resolution: {integrity: sha512-ePWsvanv0DWuDRsW8dnt+R4jQ31SCRCQ7hhNcPXZPsoBZiemuZNYGf7adZdqX2D86j6rvKp3RpCxVTSb8WQlOw==} + hasBin: true + + jsbn@0.1.1: + resolution: {integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==} + + jsdom@27.4.0: + resolution: {integrity: sha512-mjzqwWRD9Y1J1KUi7W97Gja1bwOOM5Ug0EZ6UDK3xS7j7mndrkwozHtSblfomlzyB4NepioNt+B2sOSzczVgtQ==} + engines: {node: ^20.19.0 || ^22.12.0 || >=24.0.0} + peerDependencies: + canvas: ^3.0.0 + peerDependenciesMeta: + canvas: + optional: true + + jsesc@3.1.0: + resolution: {integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==} + engines: {node: '>=6'} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-even-better-errors@4.0.0: + resolution: {integrity: sha512-lR4MXjGNgkJc7tkQ97kb2nuEMnNCyU//XYVH0MKTGcXEiSudQ5MKGKen3C5QubYy0vmq+JGitUg92uuywGEwIA==} + engines: {node: ^18.17.0 || >=20.5.0} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema@0.4.0: + resolution: {integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stringify-pretty-compact@4.0.0: + resolution: {integrity: sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==} + + json-stringify-safe@5.0.1: + resolution: {integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@6.2.1: + resolution: {integrity: sha512-zwOTdL3rFQ/lRdBnntKVOX6k5cKJwEc1HdilT71BWEu7J41gXIB2MRp+vxduPSwZJPWBxEzv4yH1wYLJGUHX4Q==} + + jspdf-autotable@5.0.8: + resolution: {integrity: sha512-Hy05N86yBO7CXBrnSLOge7i1ZYpKH2DjQ94iybaP7vBhSInjvRBgDc99ngKzSbSO8Jc98ZCally8I6n0tj2RJQ==} + peerDependencies: + jspdf: ^2 || ^3 || ^4 + + jspdf@4.2.1: + resolution: {integrity: sha512-YyAXyvnmjTbR4bHQRLzex3CuINCDlQnBqoSYyjJwTP2x9jDLuKDzy7aKUl0hgx3uhcl7xzg32agn5vlie6HIlQ==} + + jsprim@2.0.2: + resolution: {integrity: sha512-gqXddjPqQ6G40VdnI6T6yObEC+pDNvyP95wdQhkWkg7crHH3km5qP1FsOXEkzEQwnz6gz5qGTn1c2Y52wP3OyQ==} + engines: {'0': node >=0.6.0} + + kdbush@4.1.0: + resolution: {integrity: sha512-e9vurzrXJQrFX6ckpHP3bvj5l+9CnYzkxDNnNQ1h2QTqdWsUAJgXiKdGNcOa1EY85dU8KbQ+z/FdQdB7P+9yfQ==} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kolorist@1.8.0: + resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + + lazy-ass@1.6.0: + resolution: {integrity: sha512-cc8oEVoctTvsFZ/Oje/kGnHbpWHYBe8IAJe4C0QNc3t8uM/0Y8+erSz/7Y1ALuXTEZTMvxXwO6YbX1ey3ujiZw==} + engines: {node: '> 0.8'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lightningcss-android-arm64@1.32.0: + resolution: {integrity: sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [android] + + lightningcss-darwin-arm64@1.32.0: + resolution: {integrity: sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [darwin] + + lightningcss-darwin-x64@1.32.0: + resolution: {integrity: sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [darwin] + + lightningcss-freebsd-x64@1.32.0: + resolution: {integrity: sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [freebsd] + + lightningcss-linux-arm-gnueabihf@1.32.0: + resolution: {integrity: sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==} + engines: {node: '>= 12.0.0'} + cpu: [arm] + os: [linux] + + lightningcss-linux-arm64-gnu@1.32.0: + resolution: {integrity: sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-arm64-musl@1.32.0: + resolution: {integrity: sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [linux] + + lightningcss-linux-x64-gnu@1.32.0: + resolution: {integrity: sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-linux-x64-musl@1.32.0: + resolution: {integrity: sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [linux] + + lightningcss-win32-arm64-msvc@1.32.0: + resolution: {integrity: sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==} + engines: {node: '>= 12.0.0'} + cpu: [arm64] + os: [win32] + + lightningcss-win32-x64-msvc@1.32.0: + resolution: {integrity: sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==} + engines: {node: '>= 12.0.0'} + cpu: [x64] + os: [win32] + + lightningcss@1.32.0: + resolution: {integrity: sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==} + engines: {node: '>= 12.0.0'} + + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} + + locate-path@5.0.0: + resolution: {integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==} + engines: {node: '>=8'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash.merge@4.6.2: + resolution: {integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==} + + lodash.once@4.1.1: + resolution: {integrity: sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + log-symbols@4.1.0: + resolution: {integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==} + engines: {node: '>=10'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.5.1: + resolution: {integrity: sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==} + engines: {node: 20 || >=22} + + lru-cache@5.1.1: + resolution: {integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + map-stream@0.1.0: + resolution: {integrity: sha512-CkYQrPYZfWnu/DAmVCpTSX/xHpKZ80eKh2lAkyA6AJTef6bW+6JpbQZN5rofum7da+SyN1bi5ctTm+lTfcCW3g==} + + maplibre-gl@5.24.0: + resolution: {integrity: sha512-ALyFxgtd5R+65UqZ/++lOqwWcC0SNho9c27fYSyLmG7AfnAul2o46F05aDJGPbFU57wos9dgcIySHs0Xe6ia3A==} + engines: {node: '>=16.14.0', npm: '>=8.1.0'} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + mdn-data@2.27.1: + resolution: {integrity: sha512-9Yubnt3e8A0OKwxYSXyhLymGW4sCufcLG6VdiDdUGVkPhpqLxlvP5vl1983gQjJl3tqbrM731mjaZaP68AgosQ==} + + memorystream@0.3.1: + resolution: {integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==} + engines: {node: '>= 0.10.0'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + merge2@1.4.1: + resolution: {integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==} + engines: {node: '>= 8'} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@3.1.5: + resolution: {integrity: sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + mitt@3.0.1: + resolution: {integrity: sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==} + + mrmime@2.0.1: + resolution: {integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==} + engines: {node: '>=10'} + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + muggle-string@0.4.1: + resolution: {integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==} + + murmurhash-js@1.0.0: + resolution: {integrity: sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + node-releases@2.0.46: + resolution: {integrity: sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==} + engines: {node: '>=18'} + + nopt@7.2.1: + resolution: {integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + hasBin: true + + npm-normalize-package-bin@4.0.0: + resolution: {integrity: sha512-TZKxPvItzai9kN9H/TkmCtx/ZN/hvr3vUycjlfmH0ootY9yFBzNOpiXAdIn1Iteqsvk4lQn6B5PTrt+n6h8k/w==} + engines: {node: ^18.17.0 || >=20.5.0} + + npm-run-all2@8.0.4: + resolution: {integrity: sha512-wdbB5My48XKp2ZfJUlhnLVihzeuA1hgBnqB2J9ahV77wLS+/YAJAlN8I+X3DIFIPZ3m5L7nplmlbhNiFDmXRDA==} + engines: {node: ^20.5.0 || >=22.0.0, npm: '>= 10'} + hasBin: true + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + nth-check@2.1.1: + resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} + + object-inspect@1.13.4: + resolution: {integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==} + engines: {node: '>= 0.4'} + + obug@2.1.1: + resolution: {integrity: sha512-uTqF9MuPraAQ+IsnPf366RG4cP9RtUi7MLO1N3KEc+wb0a6yKpeL0lmk2IB1jY5KHPAlTc6T/JRdC/YqxHNwkQ==} + + ohash@2.0.11: + resolution: {integrity: sha512-RdR9FQrFwNBNXAr4GixM8YaRZRJ5PUWbKYbE5eOsrwAjJW0q2REGcf79oYPsLyskQCZG1PLN+S/K1V00joZAoQ==} + + once@1.4.0: + resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==} + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} + engines: {node: '>= 0.8.0'} + + ospath@1.2.2: + resolution: {integrity: sha512-o6E5qJV5zkAbIDNhGSIlyOhScKXgQrSRMilfph0clDfM0nEnBOlKlH4sWDmG95BW/CvwNz0vmm7dJVtU2KlMiA==} + + p-limit@2.3.0: + resolution: {integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==} + engines: {node: '>=6'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@4.1.0: + resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} + engines: {node: '>=8'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-try@2.2.0: + resolution: {integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==} + engines: {node: '>=6'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + pako@2.1.0: + resolution: {integrity: sha512-w+eufiZ1WuJYgPXbV/PO3NCMEc3xqylkKHzp8bxp1uW4qaSNQUkwmLLEc3kKsfz8lpV1F8Ht3U1Cm+9Srog2ug==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse5@7.3.0: + resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==} + + parse5@8.0.1: + resolution: {integrity: sha512-z1e/HMG90obSGeidlli3hj7cbocou0/wa5HacvI3ASx34PecNjNQeaHNo5WIZpWofN9kgkqV1q5YvXe3F0FoPw==} + + path-browserify@1.0.1: + resolution: {integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pause-stream@0.0.11: + resolution: {integrity: sha512-e3FBlXLmN/D1S+zHzanP4E/4Z60oFAa3O051qt1pxa7DEJWKAyil6upYVXCWadEnuoqa4Pkc9oUx9zsxYeRv8A==} + + pbf@4.0.2: + resolution: {integrity: sha512-J0ajxARhZfpUEebxYs1vhMGMuLSXtBe1e+fFPDrf2uA2hgo+UshKfNUWOz92HJNz6/NFEXseQPddnHkTreWRqg==} + hasBin: true + + pend@1.2.0: + resolution: {integrity: sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==} + + perfect-debounce@1.0.0: + resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} + + perfect-debounce@2.1.0: + resolution: {integrity: sha512-LjgdTytVFXeUgtHZr9WYViYSM/g8MkcTPYDlPa3cDqMirHjKiSZPYd6DoL7pK8AJQr+uWkQvCjHNdiMqsrJs+g==} + + performance-now@2.1.0: + resolution: {integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + pidtree@0.6.0: + resolution: {integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==} + engines: {node: '>=0.10'} + hasBin: true + + pify@2.3.0: + resolution: {integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==} + engines: {node: '>=0.10.0'} + + pinia@3.0.4: + resolution: {integrity: sha512-l7pqLUFTI/+ESXn6k3nu30ZIzW5E2WZF/LaHJEpoq6ElcLD+wduZoB2kBN19du6K/4FDpPMazY2wJr+IndBtQw==} + peerDependencies: + typescript: '>=4.5.0' + vue: ^3.5.11 + peerDependenciesMeta: + typescript: + optional: true + + pngjs@5.0.0: + resolution: {integrity: sha512-40QW5YalBNfQo5yRYmiw7Yz6TKKVr3h6970B2YE+3fQpsWcrbj1PzJgxeJ19DRQjhMbKPIuMY8rFaXc8moolVw==} + engines: {node: '>=10.13.0'} + + postcss-selector-parser@7.1.1: + resolution: {integrity: sha512-orRsuYpJVw8LdAwqqLykBj9ecS5/cRHlI5+nvTo8LcCKmzDmqVORXtOIYEEQuL9D4BxtA1lm5isAqzQZCoQ6Eg==} + engines: {node: '>=4'} + + postcss@8.5.15: + resolution: {integrity: sha512-FfR8sjd4em2T6fb3I2MwAJU7HWVMr9zba+enmQeeWFfCbm+UOC/0X4DS8XtpUTMwWMGbjKYP7xjfNekzyGmB3A==} + engines: {node: ^10 || ^12 || >=14} + + potpack@2.1.0: + resolution: {integrity: sha512-pcaShQc1Shq0y+E7GqJqvZj8DTthWV1KeHGdi0Z6IAin2Oi3JnLCOfwnCo84qc+HAp52wT9nK9H7FAJp5a44GQ==} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + prettier-linter-helpers@1.0.1: + resolution: {integrity: sha512-SxToR7P8Y2lWmv/kTzVLC1t/GDI2WGjMwNhLLE9qtH8Q13C+aEmuRlzDst4Up4s0Wc8sF2M+J57iB3cMLqftfg==} + engines: {node: '>=6.0.0'} + + prettier@3.7.4: + resolution: {integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==} + engines: {node: '>=14'} + hasBin: true + + pretty-bytes@5.6.0: + resolution: {integrity: sha512-FFw039TmrBqFK8ma/7OL3sDz/VytdtJr044/QUJtH0wK9lb9jLq9tJyIxUwtQJHwar2BqtiA4iCWSwo9JLkzFg==} + engines: {node: '>=6'} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + protocol-buffers-schema@3.6.1: + resolution: {integrity: sha512-VG2K63Igkiv9p76tk1lilczEK1cT+kCjKtkdhw1dQZV3k3IXJbd3o6Ho8b9zJZaHSnT2hKe4I+ObmX9w6m5SmQ==} + + proxy-compare@3.0.1: + resolution: {integrity: sha512-V9plBAt3qjMlS1+nC8771KNf6oJ12gExvaxnNzN/9yVRLdTv/lc+oJlnSzrdYDAvBfTStPCoiaCOTmTs0adv7Q==} + + proxy-from-env@1.0.0: + resolution: {integrity: sha512-F2JHgJQ1iqwnHDcQjVBsq3n/uoaFL+iPW/eAeL7kVxy/2RrWaN4WroKjjvbsoRtv0ftelNyC01bjRhn/bhcf4A==} + + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + + ps-tree@1.2.0: + resolution: {integrity: sha512-0VnamPPYHl4uaU/nSFeZZpR21QAWRz+sRv4iW9+v/GS/J5U5iZB5BNN6J0RMoOvdx2gWM2+ZFMIm58q24e4UYA==} + engines: {node: '>= 0.10'} + hasBin: true + + pump@3.0.4: + resolution: {integrity: sha512-VS7sjc6KR7e1ukRFhQSY5LM2uBWAUPiOPa/A3mkKmiMwSmRFUITt0xuj+/lesgnCv+dPIEYlkzrcyXgquIHMcA==} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + qrcode@1.5.4: + resolution: {integrity: sha512-1ca71Zgiu6ORjHqFBDpnSMTR2ReToX4l1Au1VFLyVeBTFavzQnv5JxMFr3ukHVKpSrSA2MCk0lNJSykjUfz7Zg==} + engines: {node: '>=10.13.0'} + hasBin: true + + qs@6.15.2: + resolution: {integrity: sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==} + engines: {node: '>=0.6'} + + queue-microtask@1.2.3: + resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} + + quickselect@3.0.0: + resolution: {integrity: sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==} + + raf@3.4.1: + resolution: {integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==} + + read-package-json-fast@4.0.0: + resolution: {integrity: sha512-qpt8EwugBWDw2cgE2W+/3oxC+KTez2uSVR8JU9Q36TXPAGCaozfQUs59v4j4GFpWTaw0i6hAZSvOmu1J0uOEUg==} + engines: {node: ^18.17.0 || >=20.5.0} + + regenerator-runtime@0.13.11: + resolution: {integrity: sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==} + + request-progress@3.0.0: + resolution: {integrity: sha512-MnWzEHHaxHO2iWiQuHrUPBi/1WeBf5PkxQqNyNvLl9VAYSdXkP8tQ3pBSeCPD+yw0v0Aq1zosWLz0BdeXpWwZg==} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + require-main-filename@2.0.0: + resolution: {integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-protobuf-schema@2.1.0: + resolution: {integrity: sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + reusify@1.1.0: + resolution: {integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==} + engines: {iojs: '>=1.0.0', node: '>=0.10.0'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rgbcolor@1.0.1: + resolution: {integrity: sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==} + engines: {node: '>= 0.8.15'} + + rollup@4.61.0: + resolution: {integrity: sha512-T9mWdbWfQtp0B5lv/HX+wrhYsmXRlcWnXXmJbXqKJhlRaoS6KMhq0gpyzW4UJfclcxrEdLnTgjT2NjruLONu0g==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + run-parallel@1.2.0: + resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} + + rxjs@7.8.2: + resolution: {integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + saxes@6.0.0: + resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} + engines: {node: '>=v12.22.7'} + + semver@6.3.1: + resolution: {integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==} + hasBin: true + + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} + engines: {node: '>=10'} + hasBin: true + + set-blocking@2.0.0: + resolution: {integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + shell-quote@1.8.4: + resolution: {integrity: sha512-VsC6n6vz1ihYYyZZwX7YZSF5l5x36ca17OC+a69h94YqB7X6XLwf+5MOgynYir2SLFUbl8gIYvBo8K8RoNQ6bQ==} + engines: {node: '>= 0.4'} + + side-channel-list@1.0.1: + resolution: {integrity: sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==} + engines: {node: '>= 0.4'} + + side-channel-map@1.0.1: + resolution: {integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==} + engines: {node: '>= 0.4'} + + side-channel-weakmap@1.0.2: + resolution: {integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==} + engines: {node: '>= 0.4'} + + side-channel@1.1.0: + resolution: {integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==} + engines: {node: '>= 0.4'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + sirv@3.0.2: + resolution: {integrity: sha512-2wcC/oGxHis/BoHkkPwldgiPSYcpZK3JU28WoMVv55yHJgcZ8rlXvuG9iZggz+sU1d4bRgIGASwyWqjxu3FM0g==} + engines: {node: '>=18'} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + speakingurl@14.0.1: + resolution: {integrity: sha512-1POYv7uv2gXoyGFpBCmpDVSNV74IfsWlDW216UPjbWufNf+bSU6GdbDsxdcxtfwb4xlI3yxzOTKClUosxARYrQ==} + engines: {node: '>=0.10.0'} + + split@0.3.3: + resolution: {integrity: sha512-wD2AeVmxXRBoX44wAycgjVpMhvbwdI2aZjCkvfNcH1YqHQvJVa1duWc73OyVGJUc05fhFaTZeQ/PYsrmyH0JVA==} + + ssf@0.11.2: + resolution: {integrity: sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==} + engines: {node: '>=0.8'} + + sshpk@1.18.0: + resolution: {integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==} + engines: {node: '>=0.10.0'} + hasBin: true + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + stackblur-canvas@2.7.0: + resolution: {integrity: sha512-yf7OENo23AGJhBriGx0QivY5JP6Y1HbrrDI6WLt6C5auYZXlQrheoY8hD4ibekFKz1HOfE48Ww8kMWMnJD/zcQ==} + engines: {node: '>=0.1.14'} + + start-server-and-test@2.1.5: + resolution: {integrity: sha512-A/SbXpgXE25ScSkpLLqvGvVZT0ykN6+AzS8tVqMBCTxbJy2Nwuen59opT+afalK5aS+AuQmZs0EsLwjnuDN+/g==} + engines: {node: '>=16'} + hasBin: true + + std-env@4.1.0: + resolution: {integrity: sha512-Rq7ybcX2RuC55r9oaPVEW7/xu3tj8u4GeBYHBWCychFtzMIr86A7e3PPEBPT37sHStKX3+TiX/Fr/ACmJLVlLQ==} + + stream-combiner@0.0.4: + resolution: {integrity: sha512-rT00SPnTVyRsaSz5zgSPma/aHSOic5U1prhYdRy5HS2kTZviFpmDgzilbtsJsxiroqACmayynDN/9VzIbX5DOw==} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-json-comments@3.1.1: + resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==} + engines: {node: '>=8'} + + supercluster@8.0.1: + resolution: {integrity: sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==} + + superjson@2.2.6: + resolution: {integrity: sha512-H+ue8Zo4vJmV2nRjpx86P35lzwDT3nItnIsocgumgr0hHMQ+ZGq5vrERg9kJBo5AWGmxZDhzDo+WVIJqkB0cGA==} + engines: {node: '>=16'} + + supports-color@7.2.0: + resolution: {integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==} + engines: {node: '>=8'} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + svg-pathdata@6.0.3: + resolution: {integrity: sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==} + engines: {node: '>=12.0.0'} + + sweetalert2@11.26.25: + resolution: {integrity: sha512-+hunCOJdJ6FLj04T9YSLvvZXRjsvIkTeTKP2e4VF8CaBias961BTnWiSFAy7F/CM5eq3QK2Rraoc5Gzftslvkg==} + + symbol-tree@3.2.4: + resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + + synckit@0.11.13: + resolution: {integrity: sha512-eNRKgb3z66Yp3D2CixVujOUvXLFUTij/zVnV8KRyvFdQwpz7I5DS8UfRkTeLzb64u+dkzDSdelE24izu+zSSUg==} + engines: {node: ^14.18.0 || >=16.0.0} + + systeminformation@5.31.7: + resolution: {integrity: sha512-/8NC53e5nP9nmhn42/ncdOkyJnOoue/Vy+tJOyUGd1Yv66G069wK4rrziwhrqDETgk78CudTQupw5z19S5uoZw==} + engines: {node: '>=8.0.0'} + os: [darwin, linux, win32, freebsd, openbsd, netbsd, sunos, android] + hasBin: true + + tailwind-merge@3.6.0: + resolution: {integrity: sha512-uxL7qAVQriqRQPAyK3pj66VqskWqoZ37PW94jwOTwNfq/z9oyu1V+eqrZqtR2+fCiXdYOZe/Modt8GtvqNzu+w==} + + tailwindcss@4.3.0: + resolution: {integrity: sha512-y6nxMGB1nMW9R6k96e5gdIFzcfL/gTJRNaqGes1YvkLnPVXzWgbqFF2yLC0T8G774n24cx3Pe8XrKoniCOAH+Q==} + + tapable@2.3.3: + resolution: {integrity: sha512-uxc/zpqFg6x7C8vOE7lh6Lbda8eEL9zmVm/PLeTPBRhh1xCgdWaQ+J1CUieGpIfm2HdtsUpRv+HshiasBMcc6A==} + engines: {node: '>=6'} + + text-segmentation@1.0.3: + resolution: {integrity: sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==} + + throttleit@1.0.1: + resolution: {integrity: sha512-vDZpf9Chs9mAdfY046mcPt8fg5QSZr37hEH4TXYBnDF+izxgrbRGUAAaBvIk/fJm9aOFCGFd1EsNg5AZCbnQCQ==} + + through@2.3.8: + resolution: {integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@1.2.4: + resolution: {integrity: sha512-SHf/r48b7vOrjve9PxJo3MN5v5yuyjHvdUcrQffT3WXMUfnGmHDVbC4k3sHJaJTgZCwpUplIaAo5ANtMyp3YHg==} + engines: {node: '>=18'} + + tinyglobby@0.2.17: + resolution: {integrity: sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==} + engines: {node: '>=12.0.0'} + + tinyqueue@3.0.0: + resolution: {integrity: sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==} + + tinyrainbow@3.1.0: + resolution: {integrity: sha512-Bf+ILmBgretUrdJxzXM0SgXLZ3XfiaUuOj/IKQHuTXip+05Xn+uyEYdVg0kYDipTBcLrCVyUzAPz7QmArb0mmw==} + engines: {node: '>=14.0.0'} + + tldts-core@6.1.86: + resolution: {integrity: sha512-Je6p7pkk+KMzMv2XXKmAE3McmolOQFdxkKw0R8EYNr7sELW46JqnNeTX8ybPiQgvg1ymCoF8LXs5fzFaZvJPTA==} + + tldts-core@7.4.2: + resolution: {integrity: sha512-nwEyF4vl4RSJjwSjBUmOSxc3BFPoIFdlRthJ6e+5v9P3bHNsoD06UjuqMUspqp7vsEZ1beaHi1km+optiE17yA==} + + tldts@6.1.86: + resolution: {integrity: sha512-WMi/OQ2axVTf/ykqCQgXiIct+mSQDFdH2fkwhPwgEwvJ1kSzZRiinb0zF2Xb8u4+OqPChmyI6MEu4EezNJz+FQ==} + hasBin: true + + tldts@7.4.2: + resolution: {integrity: sha512-kCwffuaH8ntKtygnWe1b4BJKWiCUH30n5KfoTr6IchcXOwR7chAOFJxFrH3vjANafUYrIA4a7SDL+nn7SiR4Sw==} + hasBin: true + + tmp@0.2.7: + resolution: {integrity: sha512-e0votIpp4Uo2AJYSzVHV6xCcawuiez3DzqDAbrTc3YxBkplN6e+dM13ZeIcZnDg/QpSuU2zfZ3rzwY8ukEnaXw==} + engines: {node: '>=14.14'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + totalist@3.0.1: + resolution: {integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==} + engines: {node: '>=6'} + + tough-cookie@5.1.2: + resolution: {integrity: sha512-FVDYdxtnj0G6Qm/DhNPSb8Ju59ULcup3tuJxkFb5K8Bv2pUXILbf0xZWU8PX8Ov19OXljbUyveOFwRMwkXzO+A==} + engines: {node: '>=16'} + + tough-cookie@6.0.1: + resolution: {integrity: sha512-LktZQb3IeoUWB9lqR5EWTHgW/VTITCXg4D21M+lvybRVdylLrRMnqaIONLVb5mav8vM19m44HIcGq4qASeu2Qw==} + engines: {node: '>=16'} + + tr46@6.0.0: + resolution: {integrity: sha512-bLVMLPtstlZ4iMQHpFHTR7GAGj2jxi8Dg0s2h2MafAE4uSWF98FC/3MomU51iQAMf8/qDUbKWf5GxuvvVcXEhw==} + engines: {node: '>=20'} + + tree-kill@1.2.2: + resolution: {integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==} + hasBin: true + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@1.14.1: + resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tw-animate-css@1.4.0: + resolution: {integrity: sha512-7bziOlRqH0hJx80h/3mbicLW7o8qLsH5+RaLR2t+OHM3D0JlWGODQKQ4cxbK7WlvmUxpcj6Kgu6EKqjrGFe3QQ==} + + tweetnacl@0.14.5: + resolution: {integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.8.1: + resolution: {integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==} + engines: {node: '>=8'} + + typescript-eslint@8.60.1: + resolution: {integrity: sha512-6m5hkkRAp8lKvhVpcprAIn5KkehQEh+47oHH2VGnExEh7dhNxXlg6GPAOIu6TxbVQxhebrJDvjl3020ooiWCMA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@5.9.3: + resolution: {integrity: sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==} + engines: {node: '>=14.17'} + hasBin: true + + undici-types@7.16.0: + resolution: {integrity: sha512-Zz+aZWSj8LE6zoxD+xrjh4VfkIG8Ya6LvYkZqtUQGJPZjYl53ypCaUwWqo7eI0x66KBGeRo+mlBEkMSeSZ38Nw==} + + universalify@2.0.1: + resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} + engines: {node: '>= 10.0.0'} + + unplugin-utils@0.3.1: + resolution: {integrity: sha512-5lWVjgi6vuHhJ526bI4nlCOmkCIF3nnfXkCMDeMJrtdvxTs6ZFCM8oNufGTsDbKv/tJ/xj8RpvXjRuPBZJuJog==} + engines: {node: '>=20.19.0'} + + untildify@4.0.0: + resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} + engines: {node: '>=8'} + + update-browserslist-db@1.2.3: + resolution: {integrity: sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==} + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + utrie@1.0.2: + resolution: {integrity: sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==} + + verror@1.10.0: + resolution: {integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==} + engines: {'0': node >=0.6.0} + + vite-dev-rpc@2.0.0: + resolution: {integrity: sha512-yKwbTwdHKSD2k/aGqyWpPHepo45OQc8lH3/6IfT4ZqeKE26ooKvi4WIEKzqWav8v+9Is8u1k8q54hvOmqASazA==} + peerDependencies: + vite: ^2.9.0 || ^3.0.0-0 || ^4.0.0-0 || ^5.0.0-0 || ^6.0.1 || ^7.0.0-0 || ^8.0.0 + + vite-hot-client@2.2.0: + resolution: {integrity: sha512-76Zs9zrHbH7M7wqeyooGQKdX+yg0pQ0xuQ1PbFp4z5a0Lzn2e5IPFoCswnmqZ4GiwqB4Jo3WcDAMO9jARTJl8w==} + peerDependencies: + vite: ^2.6.0 || ^3.0.0 || ^4.0.0 || ^5.0.0-0 || ^6.0.0-0 || ^7.0.0-0 || ^8.0.0 + + vite-plugin-inspect@11.4.1: + resolution: {integrity: sha512-ShOFe2PURXGvRS5OrgmOLZOCwDTD7dEBVt0tMpFPKb9AsvqXKCRGM8QgKrUbRbJYFXScHvDPpGRd28rYidC0tA==} + engines: {node: '>=14'} + peerDependencies: + '@nuxt/kit': '*' + vite: ^6.0.0 || ^7.0.0-0 || ^8.0.0-0 + peerDependenciesMeta: + '@nuxt/kit': + optional: true + + vite-plugin-vue-devtools@8.1.2: + resolution: {integrity: sha512-gt5h1CNryR9Hy0tvhSbqY3j0F7aj0pGxBxWLa1lXSiZVkhdWDf0vbCOZyjh8ivFGE6FDHTGy3zkcZGlMZdVHig==} + engines: {node: '>=v14.21.3'} + peerDependencies: + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + + vite-plugin-vue-inspector@6.0.0: + resolution: {integrity: sha512-OpyITJLgZNibxlrik1EmRtvXHDjLRxNPsWkGFTERZs2LgMEdG4W0WoFt5GIgp3a3jRou+eJR8U1zOBk/XQgEbw==} + peerDependencies: + vite: ^3.0.0 || ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 + + vite@7.3.5: + resolution: {integrity: sha512-KuOaNhcnGFN2zIPGA7wRmzF+lJA1sea7rHq17aiJ++9lzY1WWG6Jpwqwe1KNbRVPIqHmr8GLYx7jbrQcN/7/ww==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@4.1.8: + resolution: {integrity: sha512-flY6ScbCIt9HThs+C5HS7jvGOB560DJtk/Z15IQROTA6zEy49Nh8T/dofWTQL+n3vswqn87sbJNiuqw1SDp5Ig==} + engines: {node: ^20.0.0 || ^22.0.0 || >=24.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@opentelemetry/api': ^1.9.0 + '@types/node': ^20.0.0 || ^22.0.0 || >=24.0.0 + '@vitest/browser-playwright': 4.1.8 + '@vitest/browser-preview': 4.1.8 + '@vitest/browser-webdriverio': 4.1.8 + '@vitest/coverage-istanbul': 4.1.8 + '@vitest/coverage-v8': 4.1.8 + '@vitest/ui': 4.1.8 + happy-dom: '*' + jsdom: '*' + vite: ^6.0.0 || ^7.0.0 || ^8.0.0 + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@opentelemetry/api': + optional: true + '@types/node': + optional: true + '@vitest/browser-playwright': + optional: true + '@vitest/browser-preview': + optional: true + '@vitest/browser-webdriverio': + optional: true + '@vitest/coverage-istanbul': + optional: true + '@vitest/coverage-v8': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + vscode-uri@3.1.0: + resolution: {integrity: sha512-/BpdSx+yCQGnCvecbyXdxHDkuk55/G3xwnC0GqY4gmQ3j+A+g8kzzgB4Nk/SINjqn6+waqw3EgbVF2QKExkRxQ==} + + vue-component-type-helpers@3.3.3: + resolution: {integrity: sha512-x4nsFpy5Pe8fqPzp/5vkTPeTTDBpAx4WVtV47Ejt0+2FQrq4pRRsJs7JmYRqMFzTu/LW+pCWEjQ3YVCkPV7f9g==} + + vue-eslint-parser@10.4.0: + resolution: {integrity: sha512-Vxi9pJdbN3ZnVGLODVtZ7y4Y2kzAAE2Cm0CZ3ZDRvydVYxZ6VrnBhLikBsRS+dpwj4Jv4UCv21PTEwF5rQ9WXg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + + vue-router@4.6.4: + resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==} + peerDependencies: + vue: ^3.5.0 + + vue-tsc@3.3.3: + resolution: {integrity: sha512-SWUEG7YRUeDJHT7Xsuhf02elYX2gxPzzAII7OxDAh4KNOr4QHQ0Lls0YfnaO5GNd560CwVa2HTfdqmA5MqvRqQ==} + hasBin: true + peerDependencies: + typescript: '>=5.0.0' + + vue@3.5.35: + resolution: {integrity: sha512-cx89fnr+0kVGHiNFG6y6s0bdjypJRFNZn6x3WPstNdQR1bi1mbB7h4v5IBGTsPJU3nK1+0Iqj3Zf+hZWMieR4Q==} + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true + + w3c-xmlserializer@5.0.0: + resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==} + engines: {node: '>=18'} + + wait-on@9.0.4: + resolution: {integrity: sha512-k8qrgfwrPVJXTeFY8tl6BxVHiclK11u72DVKhpybHfUL/K6KM4bdyK9EhIVYGytB5MJe/3lq4Tf0hrjM+pvJZQ==} + engines: {node: '>=20.0.0'} + hasBin: true + + webidl-conversions@8.0.1: + resolution: {integrity: sha512-BMhLD/Sw+GbJC21C/UgyaZX41nPt8bUTg+jWyDeg7e7YN4xOM05YPSIXceACnXVtqyEw/LMClUQMtMZ+PGGpqQ==} + engines: {node: '>=20'} + + whatwg-mimetype@4.0.0: + resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} + engines: {node: '>=18'} + + whatwg-mimetype@5.0.0: + resolution: {integrity: sha512-sXcNcHOC51uPGF0P/D4NVtrkjSU2fNsm9iog4ZvZJsL3rjoDAzXZhkm2MWt1y+PUdggKAYVoMAIYcs78wJ51Cw==} + engines: {node: '>=20'} + + whatwg-url@15.1.0: + resolution: {integrity: sha512-2ytDk0kiEj/yu90JOAp44PVPUkO9+jVhyf+SybKlRHSDlvOOZhdPIrr7xTH64l4WixO2cP+wQIcgujkGBPPz6g==} + engines: {node: '>=20'} + + which-module@2.0.1: + resolution: {integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + which@5.0.0: + resolution: {integrity: sha512-JEdGzHwwkrbWoGOlIHqQ5gtprKGOenpDHpxE9zVR1bWbOtYRyPPHMe9FaP6x61CmNaTThSkb0DAJte5jD+DmzQ==} + engines: {node: ^18.17.0 || >=20.5.0} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + wmf@1.0.2: + resolution: {integrity: sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==} + engines: {node: '>=0.8'} + + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + + word@0.3.0: + resolution: {integrity: sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==} + engines: {node: '>=0.8'} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + wrappy@1.0.2: + resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==} + + ws@8.21.0: + resolution: {integrity: sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + + xlsx@0.18.5: + resolution: {integrity: sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==} + engines: {node: '>=0.8'} + hasBin: true + + xml-name-validator@4.0.0: + resolution: {integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==} + engines: {node: '>=12'} + + xml-name-validator@5.0.0: + resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} + engines: {node: '>=18'} + + xmlchars@2.2.0: + resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + + y18n@4.0.3: + resolution: {integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==} + + yallist@3.1.1: + resolution: {integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==} + + yargs-parser@18.1.3: + resolution: {integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==} + engines: {node: '>=6'} + + yargs@15.4.1: + resolution: {integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==} + engines: {node: '>=8'} + + yauzl@3.3.2: + resolution: {integrity: sha512-Md9ankxxN23wncAN8s7+Tn3Co52zLUPMtnrLAbVCnfG5d2tKBFfmygYSgXlqFgXObtzIgqkx7aNgDBpso9+4qA==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + +snapshots: + + '@acemir/cssom@0.9.31': {} + + '@asamuzakjp/css-color@4.1.2': + dependencies: + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-color-parser': 4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + lru-cache: 11.5.1 + + '@asamuzakjp/dom-selector@6.8.1': + dependencies: + '@asamuzakjp/nwsapi': 2.3.9 + bidi-js: 1.0.3 + css-tree: 3.2.1 + is-potential-custom-element-name: 1.0.1 + lru-cache: 11.5.1 + + '@asamuzakjp/nwsapi@2.3.9': {} + + '@babel/code-frame@7.29.7': + dependencies: + '@babel/helper-validator-identifier': 7.29.7 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/compat-data@7.29.7': {} + + '@babel/core@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-compilation-targets': 7.29.7 + '@babel/helper-module-transforms': 7.29.7(@babel/core@7.29.7) + '@babel/helpers': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3(supports-color@8.1.1) + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/generator@7.29.7': + dependencies: + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 + + '@babel/helper-annotate-as-pure@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-compilation-targets@7.29.7': + dependencies: + '@babel/compat-data': 7.29.7 + '@babel/helper-validator-option': 7.29.7 + browserslist: 4.28.2 + lru-cache: 5.1.1 + semver: 6.3.1 + + '@babel/helper-create-class-features-plugin@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/helper-replace-supers': 7.29.7(@babel/core@7.29.7) + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/traverse': 7.29.7 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color + + '@babel/helper-globals@7.29.7': {} + + '@babel/helper-member-expression-to-functions@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-imports@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-module-transforms@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-optimise-call-expression@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/helper-plugin-utils@7.29.7': {} + + '@babel/helper-replace-supers@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-member-expression-to-functions': 7.29.7 + '@babel/helper-optimise-call-expression': 7.29.7 + '@babel/traverse': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-skip-transparent-expression-wrappers@7.29.7': + dependencies: + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@babel/helper-string-parser@7.29.7': {} + + '@babel/helper-validator-identifier@7.29.7': {} + + '@babel/helper-validator-option@7.29.7': {} + + '@babel/helpers@7.29.7': + dependencies: + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/parser@7.29.7': + dependencies: + '@babel/types': 7.29.7 + + '@babel/plugin-proposal-decorators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-decorators': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/plugin-syntax-decorators@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-attributes@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-jsx@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-syntax-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + + '@babel/plugin-transform-typescript@7.29.7(@babel/core@7.29.7)': + dependencies: + '@babel/core': 7.29.7 + '@babel/helper-annotate-as-pure': 7.29.7 + '@babel/helper-create-class-features-plugin': 7.29.7(@babel/core@7.29.7) + '@babel/helper-plugin-utils': 7.29.7 + '@babel/helper-skip-transparent-expression-wrappers': 7.29.7 + '@babel/plugin-syntax-typescript': 7.29.7(@babel/core@7.29.7) + transitivePeerDependencies: + - supports-color + + '@babel/runtime@7.29.7': {} + + '@babel/template@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/types': 7.29.7 + + '@babel/traverse@7.29.7': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/generator': 7.29.7 + '@babel/helper-globals': 7.29.7 + '@babel/parser': 7.29.7 + '@babel/template': 7.29.7 + '@babel/types': 7.29.7 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + '@babel/types@7.29.7': + dependencies: + '@babel/helper-string-parser': 7.29.7 + '@babel/helper-validator-identifier': 7.29.7 + + '@csstools/color-helpers@6.0.2': {} + + '@csstools/css-calc@3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-color-parser@4.1.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/color-helpers': 6.0.2 + '@csstools/css-calc': 3.2.1(@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0))(@csstools/css-tokenizer@4.0.0) + '@csstools/css-parser-algorithms': 4.0.0(@csstools/css-tokenizer@4.0.0) + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-parser-algorithms@4.0.0(@csstools/css-tokenizer@4.0.0)': + dependencies: + '@csstools/css-tokenizer': 4.0.0 + + '@csstools/css-syntax-patches-for-csstree@1.1.4(css-tree@3.2.1)': + optionalDependencies: + css-tree: 3.2.1 + + '@csstools/css-tokenizer@4.0.0': {} + + '@cypress/request@4.0.1': + dependencies: + aws-sign2: 0.7.0 + aws4: 1.13.2 + caseless: 0.12.0 + combined-stream: 1.0.8 + extend: 3.0.2 + forever-agent: 0.6.1 + form-data: 4.0.5 + http-signature: 1.4.0 + is-typedarray: 1.0.0 + isstream: 0.1.2 + json-stringify-safe: 5.0.1 + mime-types: 2.1.35 + performance-now: 2.1.0 + qs: 6.15.2 + safe-buffer: 5.2.1 + tough-cookie: 5.1.2 + tunnel-agent: 0.6.0 + + '@cypress/xvfb@1.2.4(supports-color@8.1.1)': + dependencies: + debug: 3.2.7(supports-color@8.1.1) + lodash.once: 4.1.1 + transitivePeerDependencies: + - supports-color + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@9.39.4(jiti@2.7.0))': + dependencies: + eslint: 9.39.4(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.21.2': + dependencies: + '@eslint/object-schema': 2.1.7 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 3.1.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.4.2': + dependencies: + '@eslint/core': 0.17.0 + + '@eslint/core@0.17.0': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/eslintrc@3.3.5': + dependencies: + ajv: 6.15.0 + debug: 4.4.3(supports-color@8.1.1) + espree: 10.4.0 + globals: 14.0.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.2.0 + minimatch: 3.1.5 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color + + '@eslint/js@9.39.4': {} + + '@eslint/object-schema@2.1.7': {} + + '@eslint/plugin-kit@0.4.1': + dependencies: + '@eslint/core': 0.17.0 + levn: 0.4.1 + + '@exodus/bytes@1.15.1': {} + + '@floating-ui/core@1.7.5': + dependencies: + '@floating-ui/utils': 0.2.11 + + '@floating-ui/dom@1.7.4': + dependencies: + '@floating-ui/core': 1.7.5 + '@floating-ui/utils': 0.2.11 + + '@floating-ui/utils@0.2.11': {} + + '@hapi/address@5.1.1': + dependencies: + '@hapi/hoek': 11.0.7 + + '@hapi/formula@3.0.2': {} + + '@hapi/hoek@11.0.7': {} + + '@hapi/pinpoint@2.0.1': {} + + '@hapi/tlds@1.1.6': {} + + '@hapi/topo@6.0.2': + dependencies: + '@hapi/hoek': 11.0.7 + + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 + + '@humanfs/node@0.16.8': + dependencies: + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 + + '@humanfs/types@0.15.0': {} + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.4.3': {} + + '@iconify/types@2.0.0': {} + + '@iconify/vue@5.0.1(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@iconify/types': 2.0.0 + vue: 3.5.35(typescript@5.9.3) + + '@internationalized/date@3.12.2': + dependencies: + '@swc/helpers': 0.5.23 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@jridgewell/gen-mapping@0.3.13': + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + + '@jridgewell/resolve-uri@3.1.2': {} + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@jridgewell/trace-mapping@0.3.31': + dependencies: + '@jridgewell/resolve-uri': 3.1.2 + '@jridgewell/sourcemap-codec': 1.5.5 + + '@kurkle/color@0.3.4': {} + + '@lucide/vue@1.17.0(vue@3.5.35(typescript@5.9.3))': + dependencies: + vue: 3.5.35(typescript@5.9.3) + + '@mapbox/jsonlint-lines-primitives@2.0.2': {} + + '@mapbox/point-geometry@1.1.0': {} + + '@mapbox/tiny-sdf@2.2.0': {} + + '@mapbox/unitbezier@0.0.1': {} + + '@mapbox/vector-tile@2.0.5': + dependencies: + '@mapbox/point-geometry': 1.1.0 + '@types/geojson': 7946.0.16 + pbf: 4.0.2 + + '@mapbox/whoots-js@3.1.0': {} + + '@maplibre/geojson-vt@5.0.4': {} + + '@maplibre/geojson-vt@6.1.0': + dependencies: + kdbush: 4.1.0 + + '@maplibre/maplibre-gl-style-spec@24.8.5': + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/unitbezier': 0.0.1 + json-stringify-pretty-compact: 4.0.0 + minimist: 1.2.8 + quickselect: 3.0.0 + tinyqueue: 3.0.0 + + '@maplibre/mlt@1.1.11': + dependencies: + '@mapbox/point-geometry': 1.1.0 + + '@maplibre/vt-pbf@4.3.0': + dependencies: + '@mapbox/point-geometry': 1.1.0 + '@mapbox/vector-tile': 2.0.5 + '@maplibre/geojson-vt': 5.0.4 + '@types/geojson': 7946.0.16 + '@types/supercluster': 7.1.3 + pbf: 4.0.2 + supercluster: 8.0.1 + + '@nodelib/fs.scandir@2.1.5': + dependencies: + '@nodelib/fs.stat': 2.0.5 + run-parallel: 1.2.0 + + '@nodelib/fs.stat@2.0.5': {} + + '@nodelib/fs.walk@1.2.8': + dependencies: + '@nodelib/fs.scandir': 2.1.5 + fastq: 1.20.1 + + '@one-ini/wasm@0.1.1': {} + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@pkgr/core@0.3.6': {} + + '@polka/url@1.0.0-next.29': {} + + '@rolldown/pluginutils@1.0.1': {} + + '@rollup/rollup-android-arm-eabi@4.61.0': + optional: true + + '@rollup/rollup-android-arm64@4.61.0': + optional: true + + '@rollup/rollup-darwin-arm64@4.61.0': + optional: true + + '@rollup/rollup-darwin-x64@4.61.0': + optional: true + + '@rollup/rollup-freebsd-arm64@4.61.0': + optional: true + + '@rollup/rollup-freebsd-x64@4.61.0': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.61.0': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.61.0': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.61.0': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.61.0': + optional: true + + '@rollup/rollup-linux-x64-musl@4.61.0': + optional: true + + '@rollup/rollup-openbsd-x64@4.61.0': + optional: true + + '@rollup/rollup-openharmony-arm64@4.61.0': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.61.0': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.61.0': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.61.0': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.61.0': + optional: true + + '@standard-schema/spec@1.1.0': {} + + '@swc/helpers@0.5.23': + dependencies: + tslib: 2.8.1 + + '@tailwindcss/node@4.3.0': + dependencies: + '@jridgewell/remapping': 2.3.5 + enhanced-resolve: 5.22.1 + jiti: 2.7.0 + lightningcss: 1.32.0 + magic-string: 0.30.21 + source-map-js: 1.2.1 + tailwindcss: 4.3.0 + + '@tailwindcss/oxide-android-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-arm64@4.3.0': + optional: true + + '@tailwindcss/oxide-darwin-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-freebsd-x64@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm-gnueabihf@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-arm64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-gnu@4.3.0': + optional: true + + '@tailwindcss/oxide-linux-x64-musl@4.3.0': + optional: true + + '@tailwindcss/oxide-wasm32-wasi@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-arm64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide-win32-x64-msvc@4.3.0': + optional: true + + '@tailwindcss/oxide@4.3.0': + optionalDependencies: + '@tailwindcss/oxide-android-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-arm64': 4.3.0 + '@tailwindcss/oxide-darwin-x64': 4.3.0 + '@tailwindcss/oxide-freebsd-x64': 4.3.0 + '@tailwindcss/oxide-linux-arm-gnueabihf': 4.3.0 + '@tailwindcss/oxide-linux-arm64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-arm64-musl': 4.3.0 + '@tailwindcss/oxide-linux-x64-gnu': 4.3.0 + '@tailwindcss/oxide-linux-x64-musl': 4.3.0 + '@tailwindcss/oxide-wasm32-wasi': 4.3.0 + '@tailwindcss/oxide-win32-arm64-msvc': 4.3.0 + '@tailwindcss/oxide-win32-x64-msvc': 4.3.0 + + '@tailwindcss/vite@4.3.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))': + dependencies: + '@tailwindcss/node': 4.3.0 + '@tailwindcss/oxide': 4.3.0 + tailwindcss: 4.3.0 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + + '@tanstack/table-core@8.21.3': {} + + '@tanstack/vue-table@8.21.3(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@tanstack/table-core': 8.21.3 + vue: 3.5.35(typescript@5.9.3) + + '@tsconfig/node24@24.0.4': {} + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/deep-eql@4.0.2': {} + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.9': {} + + '@types/file-saver@2.0.7': {} + + '@types/geojson@7946.0.16': {} + + '@types/jsdom@27.0.0': + dependencies: + '@types/node': 24.12.4 + '@types/tough-cookie': 4.0.5 + parse5: 7.3.0 + + '@types/json-schema@7.0.15': {} + + '@types/lodash@4.17.24': {} + + '@types/node@24.12.4': + dependencies: + undici-types: 7.16.0 + + '@types/pako@2.0.4': {} + + '@types/qrcode@1.5.6': + dependencies: + '@types/node': 24.12.4 + + '@types/raf@3.4.3': + optional: true + + '@types/sinonjs__fake-timers@8.1.1': {} + + '@types/sizzle@2.3.10': {} + + '@types/supercluster@7.1.3': + dependencies: + '@types/geojson': 7946.0.16 + + '@types/tmp@0.2.6': {} + + '@types/tough-cookie@4.0.5': {} + + '@types/trusted-types@2.0.7': + optional: true + + '@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/type-utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.60.1 + eslint: 9.39.4(jiti@2.7.0) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + '@typescript-eslint/visitor-keys': 8.60.1 + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.60.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@5.9.3) + '@typescript-eslint/types': 8.60.1 + debug: 4.4.3(supports-color@8.1.1) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.60.1': + dependencies: + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/visitor-keys': 8.60.1 + + '@typescript-eslint/tsconfig-utils@8.60.1(typescript@5.9.3)': + dependencies: + typescript: 5.9.3 + + '@typescript-eslint/type-utils@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.4(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.60.1': {} + + '@typescript-eslint/typescript-estree@8.60.1(typescript@5.9.3)': + dependencies: + '@typescript-eslint/project-service': 8.60.1(typescript@5.9.3) + '@typescript-eslint/tsconfig-utils': 8.60.1(typescript@5.9.3) + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/visitor-keys': 8.60.1 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + semver: 7.8.1 + tinyglobby: 0.2.17 + ts-api-utils: 2.5.0(typescript@5.9.3) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/types': 8.60.1 + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.60.1': + dependencies: + '@typescript-eslint/types': 8.60.1 + eslint-visitor-keys: 5.0.1 + + '@vitejs/plugin-vue@6.0.7(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@rolldown/pluginutils': 1.0.1 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vue: 3.5.35(typescript@5.9.3) + + '@vitest/eslint-plugin@1.6.19(@typescript-eslint/eslint-plugin@8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)(vitest@4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)))': + dependencies: + '@typescript-eslint/scope-manager': 8.60.1 + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + optionalDependencies: + '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + typescript: 5.9.3 + vitest: 4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + transitivePeerDependencies: + - supports-color + + '@vitest/expect@4.1.8': + dependencies: + '@standard-schema/spec': 1.1.0 + '@types/chai': 5.2.3 + '@vitest/spy': 4.1.8 + '@vitest/utils': 4.1.8 + chai: 6.2.2 + tinyrainbow: 3.1.0 + + '@vitest/mocker@4.1.8(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))': + dependencies: + '@vitest/spy': 4.1.8 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + + '@vitest/pretty-format@4.1.8': + dependencies: + tinyrainbow: 3.1.0 + + '@vitest/runner@4.1.8': + dependencies: + '@vitest/utils': 4.1.8 + pathe: 2.0.3 + + '@vitest/snapshot@4.1.8': + dependencies: + '@vitest/pretty-format': 4.1.8 + '@vitest/utils': 4.1.8 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@4.1.8': {} + + '@vitest/utils@4.1.8': + dependencies: + '@vitest/pretty-format': 4.1.8 + convert-source-map: 2.0.0 + tinyrainbow: 3.1.0 + + '@volar/language-core@2.4.28': + dependencies: + '@volar/source-map': 2.4.28 + + '@volar/source-map@2.4.28': {} + + '@volar/typescript@2.4.28': + dependencies: + '@volar/language-core': 2.4.28 + path-browserify: 1.0.1 + vscode-uri: 3.1.0 + + '@vue/babel-helper-vue-transform-on@1.5.0': {} + + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.29.7)': + dependencies: + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/plugin-syntax-jsx': 7.29.7(@babel/core@7.29.7) + '@babel/template': 7.29.7 + '@babel/traverse': 7.29.7 + '@babel/types': 7.29.7 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.29.7) + '@vue/shared': 3.5.35 + optionalDependencies: + '@babel/core': 7.29.7 + transitivePeerDependencies: + - supports-color + + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.29.7)': + dependencies: + '@babel/code-frame': 7.29.7 + '@babel/core': 7.29.7 + '@babel/helper-module-imports': 7.29.7 + '@babel/helper-plugin-utils': 7.29.7 + '@babel/parser': 7.29.7 + '@vue/compiler-sfc': 3.5.35 + transitivePeerDependencies: + - supports-color + + '@vue/compiler-core@3.5.35': + dependencies: + '@babel/parser': 7.29.7 + '@vue/shared': 3.5.35 + entities: 7.0.1 + estree-walker: 2.0.2 + source-map-js: 1.2.1 + + '@vue/compiler-dom@3.5.35': + dependencies: + '@vue/compiler-core': 3.5.35 + '@vue/shared': 3.5.35 + + '@vue/compiler-sfc@3.5.35': + dependencies: + '@babel/parser': 7.29.7 + '@vue/compiler-core': 3.5.35 + '@vue/compiler-dom': 3.5.35 + '@vue/compiler-ssr': 3.5.35 + '@vue/shared': 3.5.35 + estree-walker: 2.0.2 + magic-string: 0.30.21 + postcss: 8.5.15 + source-map-js: 1.2.1 + + '@vue/compiler-ssr@3.5.35': + dependencies: + '@vue/compiler-dom': 3.5.35 + '@vue/shared': 3.5.35 + + '@vue/devtools-api@6.6.4': {} + + '@vue/devtools-api@7.7.9': + dependencies: + '@vue/devtools-kit': 7.7.9 + + '@vue/devtools-core@8.1.2(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@vue/devtools-kit': 8.1.2 + '@vue/devtools-shared': 8.1.2 + vue: 3.5.35(typescript@5.9.3) + + '@vue/devtools-kit@7.7.9': + dependencies: + '@vue/devtools-shared': 7.7.9 + birpc: 2.9.0 + hookable: 5.5.3 + mitt: 3.0.1 + perfect-debounce: 1.0.0 + speakingurl: 14.0.1 + superjson: 2.2.6 + + '@vue/devtools-kit@8.1.2': + dependencies: + '@vue/devtools-shared': 8.1.2 + birpc: 2.9.0 + hookable: 5.5.3 + perfect-debounce: 2.1.0 + + '@vue/devtools-shared@7.7.9': + dependencies: + rfdc: 1.4.1 + + '@vue/devtools-shared@8.1.2': {} + + '@vue/eslint-config-prettier@10.2.0(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4)': + dependencies: + eslint: 9.39.4(jiti@2.7.0) + eslint-config-prettier: 10.1.8(eslint@9.39.4(jiti@2.7.0)) + eslint-plugin-prettier: 5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4) + prettier: 3.7.4 + transitivePeerDependencies: + - '@types/eslint' + + '@vue/eslint-config-typescript@14.7.0(eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3)': + dependencies: + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + eslint-plugin-vue: 10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))) + fast-glob: 3.3.3 + typescript-eslint: 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + vue-eslint-parser: 10.4.0(eslint@9.39.4(jiti@2.7.0)) + optionalDependencies: + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + '@vue/language-core@3.3.3': + dependencies: + '@volar/language-core': 2.4.28 + '@vue/compiler-dom': 3.5.35 + '@vue/shared': 3.5.35 + alien-signals: 3.2.1 + muggle-string: 0.4.1 + path-browserify: 1.0.1 + picomatch: 4.0.4 + + '@vue/reactivity@3.5.35': + dependencies: + '@vue/shared': 3.5.35 + + '@vue/runtime-core@3.5.35': + dependencies: + '@vue/reactivity': 3.5.35 + '@vue/shared': 3.5.35 + + '@vue/runtime-dom@3.5.35': + dependencies: + '@vue/reactivity': 3.5.35 + '@vue/runtime-core': 3.5.35 + '@vue/shared': 3.5.35 + csstype: 3.2.3 + + '@vue/server-renderer@3.5.35(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@vue/compiler-ssr': 3.5.35 + '@vue/shared': 3.5.35 + vue: 3.5.35(typescript@5.9.3) + + '@vue/shared@3.5.35': {} + + '@vue/test-utils@2.4.10(@vue/compiler-dom@3.5.35)(@vue/server-renderer@3.5.35(vue@3.5.35(typescript@5.9.3)))(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@vue/compiler-dom': 3.5.35 + js-beautify: 1.15.4 + vue: 3.5.35(typescript@5.9.3) + vue-component-type-helpers: 3.3.3 + optionalDependencies: + '@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@5.9.3)) + + '@vue/tsconfig@0.8.1(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3))': + optionalDependencies: + typescript: 5.9.3 + vue: 3.5.35(typescript@5.9.3) + + '@zag-js/accordion@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/anatomy@1.26.1': {} + + '@zag-js/aria-hidden@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/avatar@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/carousel@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/scroll-snap': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/checkbox@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/collection@1.26.1': + dependencies: + '@zag-js/utils': 1.26.1 + + '@zag-js/combobox@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/aria-hidden': 1.26.1 + '@zag-js/collection': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/core@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/date-picker@1.26.1(@internationalized/date@3.12.2)': + dependencies: + '@internationalized/date': 3.12.2 + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/date-utils': 1.26.1(@internationalized/date@3.12.2) + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/live-region': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/date-utils@1.26.1(@internationalized/date@3.12.2)': + dependencies: + '@internationalized/date': 3.12.2 + + '@zag-js/dialog@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/aria-hidden': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-trap': 1.26.1 + '@zag-js/remove-scroll': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/dismissable@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + '@zag-js/interact-outside': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/dom-query@1.26.1': + dependencies: + '@zag-js/types': 1.26.1 + + '@zag-js/focus-trap@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/focus-visible@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/interact-outside@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/live-region@1.26.1': {} + + '@zag-js/menu@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/rect-utils': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/pagination@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/popover@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/aria-hidden': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-trap': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/remove-scroll': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/popper@1.26.1': + dependencies: + '@floating-ui/dom': 1.7.4 + '@zag-js/dom-query': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/presence@1.26.1': + dependencies: + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + + '@zag-js/progress@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/radio-group@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/rect-utils@1.26.1': {} + + '@zag-js/remove-scroll@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/scroll-area@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/scroll-snap@1.26.1': + dependencies: + '@zag-js/dom-query': 1.26.1 + + '@zag-js/select@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/collection': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/slider@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/store@1.26.1': + dependencies: + proxy-compare: 3.0.1 + + '@zag-js/switch@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/tabs@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/toast@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dismissable': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/tooltip@1.26.1': + dependencies: + '@zag-js/anatomy': 1.26.1 + '@zag-js/core': 1.26.1 + '@zag-js/dom-query': 1.26.1 + '@zag-js/focus-visible': 1.26.1 + '@zag-js/popper': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + + '@zag-js/types@1.26.1': + dependencies: + csstype: 3.1.3 + + '@zag-js/utils@1.26.1': {} + + '@zag-js/vue@1.26.1(vue@3.5.35(typescript@5.9.3))': + dependencies: + '@zag-js/core': 1.26.1 + '@zag-js/store': 1.26.1 + '@zag-js/types': 1.26.1 + '@zag-js/utils': 1.26.1 + vue: 3.5.35(typescript@5.9.3) + + abbrev@2.0.0: {} + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + adler-32@1.3.1: {} + + agent-base@6.0.2: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + agent-base@7.1.4: {} + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + alien-signals@3.2.1: {} + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + ansis@4.3.1: {} + + arch@2.2.0: {} + + arg@5.0.2: {} + + argparse@2.0.1: {} + + asn1@0.2.6: + dependencies: + safer-buffer: 2.1.2 + + assert-plus@1.0.0: {} + + assertion-error@2.0.1: {} + + asynckit@0.4.0: {} + + at-least-node@1.0.0: {} + + aws-sign2@0.7.0: {} + + aws4@1.13.2: {} + + axios@1.16.1(debug@4.4.3): + dependencies: + follow-redirects: 1.16.0(debug@4.4.3) + form-data: 4.0.5 + https-proxy-agent: 5.0.1 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + - supports-color + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + base64-arraybuffer@1.0.2: + optional: true + + base64-js@1.5.1: {} + + baseline-browser-mapping@2.10.33: {} + + bcrypt-pbkdf@1.0.2: + dependencies: + tweetnacl: 0.14.5 + + bidi-js@1.0.3: + dependencies: + require-from-string: 2.0.2 + + birpc@2.9.0: {} + + birpc@4.0.0: {} + + blob-util@2.0.2: {} + + bluebird@3.7.2: {} + + boolbase@1.0.0: {} + + brace-expansion@1.1.15: + dependencies: + balanced-match: 1.0.2 + concat-map: 0.0.1 + + brace-expansion@2.1.1: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + browserslist@4.28.2: + dependencies: + baseline-browser-mapping: 2.10.33 + caniuse-lite: 1.0.30001793 + electron-to-chromium: 1.5.364 + node-releases: 2.0.46 + update-browserslist-db: 1.2.3(browserslist@4.28.2) + + buffer@5.7.1: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + cachedir@2.4.0: {} + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 + + callsites@3.1.0: {} + + camelcase@5.3.1: {} + + caniuse-lite@1.0.30001793: {} + + canvg@3.0.11: + dependencies: + '@babel/runtime': 7.29.7 + '@types/raf': 3.4.3 + core-js: 3.49.0 + raf: 3.4.1 + regenerator-runtime: 0.13.11 + rgbcolor: 1.0.1 + stackblur-canvas: 2.7.0 + svg-pathdata: 6.0.3 + optional: true + + caseless@0.12.0: {} + + cfb@1.2.2: + dependencies: + adler-32: 1.3.1 + crc-32: 1.2.2 + + chai@6.2.2: {} + + chalk@4.1.2: + dependencies: + ansi-styles: 4.3.0 + supports-color: 7.2.0 + + chart.js@4.5.1: + dependencies: + '@kurkle/color': 0.3.4 + + check-more-types@2.24.0: {} + + ci-info@4.4.0: {} + + class-variance-authority@0.7.1: + dependencies: + clsx: 2.1.1 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-table3@0.6.1: + dependencies: + string-width: 4.2.3 + optionalDependencies: + colors: 1.4.0 + + cli-truncate@5.2.0: + dependencies: + slice-ansi: 8.0.0 + string-width: 8.2.1 + + cliui@6.0.0: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + + clsx@2.1.1: {} + + codepage@1.15.0: {} + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + colors@1.4.0: + optional: true + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@10.0.1: {} + + commander@6.2.1: {} + + common-tags@1.8.2: {} + + concat-map@0.0.1: {} + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + convert-source-map@2.0.0: {} + + copy-anything@4.0.5: + dependencies: + is-what: 5.5.0 + + core-js@3.49.0: + optional: true + + core-util-is@1.0.2: {} + + crc-32@1.2.2: {} + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + css-line-break@2.1.0: + dependencies: + utrie: 1.0.2 + optional: true + + css-tree@3.2.1: + dependencies: + mdn-data: 2.27.1 + source-map-js: 1.2.1 + + cssesc@3.0.0: {} + + cssstyle@5.3.7: + dependencies: + '@asamuzakjp/css-color': 4.1.2 + '@csstools/css-syntax-patches-for-csstree': 1.1.4(css-tree@3.2.1) + css-tree: 3.2.1 + lru-cache: 11.5.1 + + csstype@3.1.3: {} + + csstype@3.2.3: {} + + cypress@15.16.0: + dependencies: + '@cypress/request': 4.0.1 + '@cypress/xvfb': 1.2.4(supports-color@8.1.1) + '@types/sinonjs__fake-timers': 8.1.1 + '@types/sizzle': 2.3.10 + '@types/tmp': 0.2.6 + arch: 2.2.0 + blob-util: 2.0.2 + bluebird: 3.7.2 + buffer: 5.7.1 + cachedir: 2.4.0 + chalk: 4.1.2 + ci-info: 4.4.0 + cli-table3: 0.6.1 + commander: 6.2.1 + common-tags: 1.8.2 + dayjs: 1.11.21 + debug: 4.4.3(supports-color@8.1.1) + eventemitter2: 6.4.7 + execa: 4.1.0 + executable: 4.1.1 + fs-extra: 9.1.0 + hasha: 5.2.2 + is-installed-globally: 0.4.0 + listr2: 9.0.5 + lodash: 4.18.1 + log-symbols: 4.1.0 + minimist: 1.2.8 + ospath: 1.2.2 + pretty-bytes: 5.6.0 + process: 0.11.10 + proxy-from-env: 1.0.0 + request-progress: 3.0.0 + supports-color: 8.1.1 + systeminformation: 5.31.7 + tmp: 0.2.7 + tree-kill: 1.2.2 + tslib: 1.14.1 + untildify: 4.0.0 + yauzl: 3.3.2 + + dashdash@1.14.1: + dependencies: + assert-plus: 1.0.0 + + data-urls@6.0.1: + dependencies: + whatwg-mimetype: 5.0.0 + whatwg-url: 15.1.0 + + dayjs@1.11.21: {} + + debug@3.2.7(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decamelize@1.2.0: {} + + decimal.js@10.6.0: {} + + deep-is@0.1.4: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + detect-libc@2.1.2: {} + + dijkstrajs@1.0.3: {} + + dompurify@3.4.7: + optionalDependencies: + '@types/trusted-types': 2.0.7 + optional: true + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + duplexer@0.1.2: {} + + earcut@3.0.2: {} + + eastasianwidth@0.2.0: {} + + ecc-jsbn@0.1.2: + dependencies: + jsbn: 0.1.1 + safer-buffer: 2.1.2 + + editorconfig@1.0.7: + dependencies: + '@one-ini/wasm': 0.1.1 + commander: 10.0.1 + minimatch: 9.0.9 + semver: 7.8.1 + + electron-to-chromium@1.5.364: {} + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + end-of-stream@1.4.5: + dependencies: + once: 1.4.0 + + enhanced-resolve@5.22.1: + dependencies: + graceful-fs: 4.2.11 + tapable: 2.3.3 + + entities@6.0.1: {} + + entities@7.0.1: {} + + entities@8.0.0: {} + + environment@1.1.0: {} + + error-stack-parser-es@1.0.5: {} + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@2.1.0: {} + + es-object-atoms@1.1.2: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.4 + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.7.0)): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + + eslint-plugin-cypress@5.4.0(eslint@9.39.4(jiti@2.7.0)): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + globals: 17.6.0 + + eslint-plugin-prettier@5.5.6(eslint-config-prettier@10.1.8(eslint@9.39.4(jiti@2.7.0)))(eslint@9.39.4(jiti@2.7.0))(prettier@3.7.4): + dependencies: + eslint: 9.39.4(jiti@2.7.0) + prettier: 3.7.4 + prettier-linter-helpers: 1.0.1 + synckit: 0.11.13 + optionalDependencies: + eslint-config-prettier: 10.1.8(eslint@9.39.4(jiti@2.7.0)) + + eslint-plugin-vue@10.6.2(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0))): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + eslint: 9.39.4(jiti@2.7.0) + natural-compare: 1.4.0 + nth-check: 2.1.1 + postcss-selector-parser: 7.1.1 + semver: 7.8.1 + vue-eslint-parser: 10.4.0(eslint@9.39.4(jiti@2.7.0)) + xml-name-validator: 4.0.0 + optionalDependencies: + '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + + eslint-scope@8.4.0: + dependencies: + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@9.39.4(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@9.39.4(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.21.2 + '@eslint/config-helpers': 0.4.2 + '@eslint/core': 0.17.0 + '@eslint/eslintrc': 3.3.5 + '@eslint/js': 9.39.4 + '@eslint/plugin-kit': 0.4.1 + '@humanfs/node': 0.16.8 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.3 + '@types/estree': 1.0.9 + ajv: 6.15.0 + chalk: 4.1.2 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 8.4.0 + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + lodash.merge: 4.6.2 + minimatch: 3.1.5 + natural-compare: 1.4.0 + optionator: 0.9.4 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + + espree@11.2.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@2.0.2: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + event-stream@3.3.4: + dependencies: + duplexer: 0.1.2 + from: 0.1.7 + map-stream: 0.1.0 + pause-stream: 0.0.11 + split: 0.3.3 + stream-combiner: 0.0.4 + through: 2.3.8 + + eventemitter2@6.4.7: {} + + eventemitter3@5.0.4: {} + + execa@4.1.0: + dependencies: + cross-spawn: 7.0.6 + get-stream: 5.2.0 + human-signals: 1.1.1 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + executable@4.1.1: + dependencies: + pify: 2.3.0 + + expect-type@1.3.0: {} + + extend@3.0.2: {} + + extsprintf@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-diff@1.3.0: {} + + fast-glob@3.3.3: + dependencies: + '@nodelib/fs.stat': 2.0.5 + '@nodelib/fs.walk': 1.2.8 + glob-parent: 5.1.2 + merge2: 1.4.1 + micromatch: 4.0.8 + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-png@6.4.0: + dependencies: + '@types/pako': 2.0.4 + iobuffer: 5.4.0 + pako: 2.1.0 + + fastq@1.20.1: + dependencies: + reusify: 1.1.0 + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + fflate@0.8.3: {} + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + file-saver@2.0.5: {} + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@4.1.0: + dependencies: + locate-path: 5.0.0 + path-exists: 4.0.0 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + follow-redirects@1.16.0(debug@4.4.3): + optionalDependencies: + debug: 4.4.3(supports-color@8.1.1) + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + forever-agent@0.6.1: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.4 + mime-types: 2.1.35 + + frac@1.1.2: {} + + from@0.1.7: {} + + fs-extra@9.1.0: + dependencies: + at-least-node: 1.0.0 + graceful-fs: 4.2.11 + jsonfile: 6.2.1 + universalify: 2.0.1 + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + gensync@1.0.0-beta.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.2 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.4 + math-intrinsics: 1.1.0 + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.2 + + get-stream@5.2.0: + dependencies: + pump: 3.0.4 + + get-stream@6.0.1: {} + + getpass@0.1.7: + dependencies: + assert-plus: 1.0.0 + + gl-matrix@3.4.4: {} + + glob-parent@5.1.2: + dependencies: + is-glob: 4.0.3 + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + global-dirs@3.0.1: + dependencies: + ini: 2.0.0 + + globals@14.0.0: {} + + globals@17.6.0: {} + + gopd@1.2.0: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasha@5.2.2: + dependencies: + is-stream: 2.0.1 + type-fest: 0.8.1 + + hasown@2.0.4: + dependencies: + function-bind: 1.1.2 + + hookable@5.5.3: {} + + html-encoding-sniffer@6.0.0: + dependencies: + '@exodus/bytes': 1.15.1 + transitivePeerDependencies: + - '@noble/hashes' + + html2canvas@1.4.1: + dependencies: + css-line-break: 2.1.0 + text-segmentation: 1.0.3 + optional: true + + http-proxy-agent@7.0.2: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + http-signature@1.4.0: + dependencies: + assert-plus: 1.0.0 + jsprim: 2.0.2 + sshpk: 1.18.0 + + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + https-proxy-agent@7.0.6: + dependencies: + agent-base: 7.1.4 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + + human-signals@1.1.1: {} + + human-signals@2.1.0: {} + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + imurmurhash@0.1.4: {} + + ini@1.3.8: {} + + ini@2.0.0: {} + + iobuffer@5.4.0: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.6.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-installed-globally@0.4.0: + dependencies: + global-dirs: 3.0.1 + is-path-inside: 3.0.3 + + is-number@7.0.0: {} + + is-path-inside@3.0.3: {} + + is-potential-custom-element-name@1.0.1: {} + + is-stream@2.0.1: {} + + is-typedarray@1.0.0: {} + + is-unicode-supported@0.1.0: {} + + is-what@5.5.0: {} + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isexe@2.0.0: {} + + isexe@3.1.5: {} + + isstream@0.1.2: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jiti@2.7.0: {} + + joi@18.2.1: + dependencies: + '@hapi/address': 5.1.1 + '@hapi/formula': 3.0.2 + '@hapi/hoek': 11.0.7 + '@hapi/pinpoint': 2.0.1 + '@hapi/tlds': 1.1.6 + '@hapi/topo': 6.0.2 + '@standard-schema/spec': 1.1.0 + + js-beautify@1.15.4: + dependencies: + config-chain: 1.1.13 + editorconfig: 1.0.7 + glob: 10.5.0 + js-cookie: 3.0.8 + nopt: 7.2.1 + + js-cookie@3.0.8: {} + + js-tokens@4.0.0: {} + + js-yaml@4.2.0: + dependencies: + argparse: 2.0.1 + + jsbn@0.1.1: {} + + jsdom@27.4.0: + dependencies: + '@acemir/cssom': 0.9.31 + '@asamuzakjp/dom-selector': 6.8.1 + '@exodus/bytes': 1.15.1 + cssstyle: 5.3.7 + data-urls: 6.0.1 + decimal.js: 10.6.0 + html-encoding-sniffer: 6.0.0 + http-proxy-agent: 7.0.2 + https-proxy-agent: 7.0.6 + is-potential-custom-element-name: 1.0.1 + parse5: 8.0.1 + saxes: 6.0.0 + symbol-tree: 3.2.4 + tough-cookie: 6.0.1 + w3c-xmlserializer: 5.0.0 + webidl-conversions: 8.0.1 + whatwg-mimetype: 4.0.0 + whatwg-url: 15.1.0 + ws: 8.21.0 + xml-name-validator: 5.0.0 + transitivePeerDependencies: + - '@noble/hashes' + - bufferutil + - supports-color + - utf-8-validate + + jsesc@3.1.0: {} + + json-buffer@3.0.1: {} + + json-parse-even-better-errors@4.0.0: {} + + json-schema-traverse@0.4.1: {} + + json-schema@0.4.0: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stringify-pretty-compact@4.0.0: {} + + json-stringify-safe@5.0.1: {} + + json5@2.2.3: {} + + jsonfile@6.2.1: + dependencies: + universalify: 2.0.1 + optionalDependencies: + graceful-fs: 4.2.11 + + jspdf-autotable@5.0.8(jspdf@4.2.1): + dependencies: + jspdf: 4.2.1 + + jspdf@4.2.1: + dependencies: + '@babel/runtime': 7.29.7 + fast-png: 6.4.0 + fflate: 0.8.3 + optionalDependencies: + canvg: 3.0.11 + core-js: 3.49.0 + dompurify: 3.4.7 + html2canvas: 1.4.1 + + jsprim@2.0.2: + dependencies: + assert-plus: 1.0.0 + extsprintf: 1.3.0 + json-schema: 0.4.0 + verror: 1.10.0 + + kdbush@4.1.0: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kolorist@1.8.0: {} + + lazy-ass@1.6.0: {} + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lightningcss-android-arm64@1.32.0: + optional: true + + lightningcss-darwin-arm64@1.32.0: + optional: true + + lightningcss-darwin-x64@1.32.0: + optional: true + + lightningcss-freebsd-x64@1.32.0: + optional: true + + lightningcss-linux-arm-gnueabihf@1.32.0: + optional: true + + lightningcss-linux-arm64-gnu@1.32.0: + optional: true + + lightningcss-linux-arm64-musl@1.32.0: + optional: true + + lightningcss-linux-x64-gnu@1.32.0: + optional: true + + lightningcss-linux-x64-musl@1.32.0: + optional: true + + lightningcss-win32-arm64-msvc@1.32.0: + optional: true + + lightningcss-win32-x64-msvc@1.32.0: + optional: true + + lightningcss@1.32.0: + dependencies: + detect-libc: 2.1.2 + optionalDependencies: + lightningcss-android-arm64: 1.32.0 + lightningcss-darwin-arm64: 1.32.0 + lightningcss-darwin-x64: 1.32.0 + lightningcss-freebsd-x64: 1.32.0 + lightningcss-linux-arm-gnueabihf: 1.32.0 + lightningcss-linux-arm64-gnu: 1.32.0 + lightningcss-linux-arm64-musl: 1.32.0 + lightningcss-linux-x64-gnu: 1.32.0 + lightningcss-linux-x64-musl: 1.32.0 + lightningcss-win32-arm64-msvc: 1.32.0 + lightningcss-win32-x64-msvc: 1.32.0 + + listr2@9.0.5: + dependencies: + cli-truncate: 5.2.0 + colorette: 2.0.20 + eventemitter3: 5.0.4 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.2 + + locate-path@5.0.0: + dependencies: + p-locate: 4.1.0 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash.merge@4.6.2: {} + + lodash.once@4.1.1: {} + + lodash@4.18.1: {} + + log-symbols@4.1.0: + dependencies: + chalk: 4.1.2 + is-unicode-supported: 0.1.0 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.3.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + lru-cache@10.4.3: {} + + lru-cache@11.5.1: {} + + lru-cache@5.1.1: + dependencies: + yallist: 3.1.1 + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + map-stream@0.1.0: {} + + maplibre-gl@5.24.0: + dependencies: + '@mapbox/jsonlint-lines-primitives': 2.0.2 + '@mapbox/point-geometry': 1.1.0 + '@mapbox/tiny-sdf': 2.2.0 + '@mapbox/unitbezier': 0.0.1 + '@mapbox/vector-tile': 2.0.5 + '@mapbox/whoots-js': 3.1.0 + '@maplibre/geojson-vt': 6.1.0 + '@maplibre/maplibre-gl-style-spec': 24.8.5 + '@maplibre/mlt': 1.1.11 + '@maplibre/vt-pbf': 4.3.0 + '@types/geojson': 7946.0.16 + earcut: 3.0.2 + gl-matrix: 3.4.4 + kdbush: 4.1.0 + murmurhash-js: 1.0.0 + pbf: 4.0.2 + potpack: 2.1.0 + quickselect: 3.0.0 + tinyqueue: 3.0.0 + + math-intrinsics@1.1.0: {} + + mdn-data@2.27.1: {} + + memorystream@0.3.1: {} + + merge-stream@2.0.0: {} + + merge2@1.4.1: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minimatch@3.1.5: + dependencies: + brace-expansion: 1.1.15 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.1 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + mitt@3.0.1: {} + + mrmime@2.0.1: {} + + ms@2.1.3: {} + + muggle-string@0.4.1: {} + + murmurhash-js@1.0.0: {} + + nanoid@3.3.12: {} + + natural-compare@1.4.0: {} + + node-releases@2.0.46: {} + + nopt@7.2.1: + dependencies: + abbrev: 2.0.0 + + npm-normalize-package-bin@4.0.0: {} + + npm-run-all2@8.0.4: + dependencies: + ansi-styles: 6.2.3 + cross-spawn: 7.0.6 + memorystream: 0.3.1 + picomatch: 4.0.4 + pidtree: 0.6.0 + read-package-json-fast: 4.0.0 + shell-quote: 1.8.4 + which: 5.0.0 + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + nth-check@2.1.1: + dependencies: + boolbase: 1.0.0 + + object-inspect@1.13.4: {} + + obug@2.1.1: {} + + ohash@2.0.11: {} + + once@1.4.0: + dependencies: + wrappy: 1.0.2 + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + + optionator@0.9.4: + dependencies: + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + word-wrap: 1.2.5 + + ospath@1.2.2: {} + + p-limit@2.3.0: + dependencies: + p-try: 2.2.0 + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@4.1.0: + dependencies: + p-limit: 2.3.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-try@2.2.0: {} + + package-json-from-dist@1.0.1: {} + + pako@2.1.0: {} + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse5@7.3.0: + dependencies: + entities: 6.0.1 + + parse5@8.0.1: + dependencies: + entities: 8.0.0 + + path-browserify@1.0.1: {} + + path-exists@4.0.0: {} + + path-key@3.1.1: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + pathe@2.0.3: {} + + pause-stream@0.0.11: + dependencies: + through: 2.3.8 + + pbf@4.0.2: + dependencies: + resolve-protobuf-schema: 2.1.0 + + pend@1.2.0: {} + + perfect-debounce@1.0.0: {} + + perfect-debounce@2.1.0: {} + + performance-now@2.1.0: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + pidtree@0.6.0: {} + + pify@2.3.0: {} + + pinia@3.0.4(typescript@5.9.3)(vue@3.5.35(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 7.7.9 + vue: 3.5.35(typescript@5.9.3) + optionalDependencies: + typescript: 5.9.3 + + pngjs@5.0.0: {} + + postcss-selector-parser@7.1.1: + dependencies: + cssesc: 3.0.0 + util-deprecate: 1.0.2 + + postcss@8.5.15: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + potpack@2.1.0: {} + + powershell-utils@0.1.0: {} + + prelude-ls@1.2.1: {} + + prettier-linter-helpers@1.0.1: + dependencies: + fast-diff: 1.3.0 + + prettier@3.7.4: {} + + pretty-bytes@5.6.0: {} + + process@0.11.10: {} + + proto-list@1.2.4: {} + + protocol-buffers-schema@3.6.1: {} + + proxy-compare@3.0.1: {} + + proxy-from-env@1.0.0: {} + + proxy-from-env@2.1.0: {} + + ps-tree@1.2.0: + dependencies: + event-stream: 3.3.4 + + pump@3.0.4: + dependencies: + end-of-stream: 1.4.5 + once: 1.4.0 + + punycode@2.3.1: {} + + qrcode@1.5.4: + dependencies: + dijkstrajs: 1.0.3 + pngjs: 5.0.0 + yargs: 15.4.1 + + qs@6.15.2: + dependencies: + side-channel: 1.1.0 + + queue-microtask@1.2.3: {} + + quickselect@3.0.0: {} + + raf@3.4.1: + dependencies: + performance-now: 2.1.0 + optional: true + + read-package-json-fast@4.0.0: + dependencies: + json-parse-even-better-errors: 4.0.0 + npm-normalize-package-bin: 4.0.0 + + regenerator-runtime@0.13.11: + optional: true + + request-progress@3.0.0: + dependencies: + throttleit: 1.0.1 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + require-main-filename@2.0.0: {} + + resolve-from@4.0.0: {} + + resolve-protobuf-schema@2.1.0: + dependencies: + protocol-buffers-schema: 3.6.1 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + reusify@1.1.0: {} + + rfdc@1.4.1: {} + + rgbcolor@1.0.1: + optional: true + + rollup@4.61.0: + dependencies: + '@types/estree': 1.0.9 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.61.0 + '@rollup/rollup-android-arm64': 4.61.0 + '@rollup/rollup-darwin-arm64': 4.61.0 + '@rollup/rollup-darwin-x64': 4.61.0 + '@rollup/rollup-freebsd-arm64': 4.61.0 + '@rollup/rollup-freebsd-x64': 4.61.0 + '@rollup/rollup-linux-arm-gnueabihf': 4.61.0 + '@rollup/rollup-linux-arm-musleabihf': 4.61.0 + '@rollup/rollup-linux-arm64-gnu': 4.61.0 + '@rollup/rollup-linux-arm64-musl': 4.61.0 + '@rollup/rollup-linux-loong64-gnu': 4.61.0 + '@rollup/rollup-linux-loong64-musl': 4.61.0 + '@rollup/rollup-linux-ppc64-gnu': 4.61.0 + '@rollup/rollup-linux-ppc64-musl': 4.61.0 + '@rollup/rollup-linux-riscv64-gnu': 4.61.0 + '@rollup/rollup-linux-riscv64-musl': 4.61.0 + '@rollup/rollup-linux-s390x-gnu': 4.61.0 + '@rollup/rollup-linux-x64-gnu': 4.61.0 + '@rollup/rollup-linux-x64-musl': 4.61.0 + '@rollup/rollup-openbsd-x64': 4.61.0 + '@rollup/rollup-openharmony-arm64': 4.61.0 + '@rollup/rollup-win32-arm64-msvc': 4.61.0 + '@rollup/rollup-win32-ia32-msvc': 4.61.0 + '@rollup/rollup-win32-x64-gnu': 4.61.0 + '@rollup/rollup-win32-x64-msvc': 4.61.0 + fsevents: 2.3.3 + + run-applescript@7.1.0: {} + + run-parallel@1.2.0: + dependencies: + queue-microtask: 1.2.3 + + rxjs@7.8.2: + dependencies: + tslib: 2.8.1 + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + saxes@6.0.0: + dependencies: + xmlchars: 2.2.0 + + semver@6.3.1: {} + + semver@7.8.1: {} + + set-blocking@2.0.0: {} + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + shell-quote@1.8.4: {} + + side-channel-list@1.0.1: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 + + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.1 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + sirv@3.0.2: + dependencies: + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 + totalist: 3.0.1 + + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + source-map-js@1.2.1: {} + + speakingurl@14.0.1: {} + + split@0.3.3: + dependencies: + through: 2.3.8 + + ssf@0.11.2: + dependencies: + frac: 1.1.2 + + sshpk@1.18.0: + dependencies: + asn1: 0.2.6 + assert-plus: 1.0.0 + bcrypt-pbkdf: 1.0.2 + dashdash: 1.14.1 + ecc-jsbn: 0.1.2 + getpass: 0.1.7 + jsbn: 0.1.1 + safer-buffer: 2.1.2 + tweetnacl: 0.14.5 + + stackback@0.0.2: {} + + stackblur-canvas@2.7.0: + optional: true + + start-server-and-test@2.1.5: + dependencies: + arg: 5.0.2 + bluebird: 3.7.2 + check-more-types: 2.24.0 + debug: 4.4.3(supports-color@8.1.1) + execa: 5.1.1 + lazy-ass: 1.6.0 + ps-tree: 1.2.0 + wait-on: 9.0.4(debug@4.4.3) + transitivePeerDependencies: + - supports-color + + std-env@4.1.0: {} + + stream-combiner@0.0.4: + dependencies: + duplexer: 0.1.2 + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string-width@8.2.1: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-final-newline@2.0.0: {} + + strip-json-comments@3.1.1: {} + + supercluster@8.0.1: + dependencies: + kdbush: 4.1.0 + + superjson@2.2.6: + dependencies: + copy-anything: 4.0.5 + + supports-color@7.2.0: + dependencies: + has-flag: 4.0.0 + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + svg-pathdata@6.0.3: + optional: true + + sweetalert2@11.26.25: {} + + symbol-tree@3.2.4: {} + + synckit@0.11.13: + dependencies: + '@pkgr/core': 0.3.6 + + systeminformation@5.31.7: {} + + tailwind-merge@3.6.0: {} + + tailwindcss@4.3.0: {} + + tapable@2.3.3: {} + + text-segmentation@1.0.3: + dependencies: + utrie: 1.0.2 + optional: true + + throttleit@1.0.1: {} + + through@2.3.8: {} + + tinybench@2.9.0: {} + + tinyexec@1.2.4: {} + + tinyglobby@0.2.17: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinyqueue@3.0.0: {} + + tinyrainbow@3.1.0: {} + + tldts-core@6.1.86: {} + + tldts-core@7.4.2: {} + + tldts@6.1.86: + dependencies: + tldts-core: 6.1.86 + + tldts@7.4.2: + dependencies: + tldts-core: 7.4.2 + + tmp@0.2.7: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + totalist@3.0.1: {} + + tough-cookie@5.1.2: + dependencies: + tldts: 6.1.86 + + tough-cookie@6.0.1: + dependencies: + tldts: 7.4.2 + + tr46@6.0.0: + dependencies: + punycode: 2.3.1 + + tree-kill@1.2.2: {} + + ts-api-utils@2.5.0(typescript@5.9.3): + dependencies: + typescript: 5.9.3 + + tslib@1.14.1: {} + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tw-animate-css@1.4.0: {} + + tweetnacl@0.14.5: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.8.1: {} + + typescript-eslint@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.60.1(@typescript-eslint/parser@8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3))(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/parser': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + '@typescript-eslint/typescript-estree': 8.60.1(typescript@5.9.3) + '@typescript-eslint/utils': 8.60.1(eslint@9.39.4(jiti@2.7.0))(typescript@5.9.3) + eslint: 9.39.4(jiti@2.7.0) + typescript: 5.9.3 + transitivePeerDependencies: + - supports-color + + typescript@5.9.3: {} + + undici-types@7.16.0: {} + + universalify@2.0.1: {} + + unplugin-utils@0.3.1: + dependencies: + pathe: 2.0.3 + picomatch: 4.0.4 + + untildify@4.0.0: {} + + update-browserslist-db@1.2.3(browserslist@4.28.2): + dependencies: + browserslist: 4.28.2 + escalade: 3.2.0 + picocolors: 1.1.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + utrie@1.0.2: + dependencies: + base64-arraybuffer: 1.0.2 + optional: true + + verror@1.10.0: + dependencies: + assert-plus: 1.0.0 + core-util-is: 1.0.2 + extsprintf: 1.3.0 + + vite-dev-rpc@2.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + birpc: 4.0.0 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-hot-client: 2.2.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + + vite-hot-client@2.2.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + + vite-plugin-inspect@11.4.1(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + ansis: 4.3.1 + error-stack-parser-es: 1.0.5 + obug: 2.1.1 + ohash: 2.0.11 + open: 11.0.0 + perfect-debounce: 2.1.0 + sirv: 3.0.2 + unplugin-utils: 0.3.1 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-dev-rpc: 2.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + + vite-plugin-vue-devtools@8.1.2(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0))(vue@3.5.35(typescript@5.9.3)): + dependencies: + '@vue/devtools-core': 8.1.2(vue@3.5.35(typescript@5.9.3)) + '@vue/devtools-kit': 8.1.2 + '@vue/devtools-shared': 8.1.2 + sirv: 3.0.2 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + vite-plugin-inspect: 11.4.1(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + vite-plugin-vue-inspector: 6.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + transitivePeerDependencies: + - '@nuxt/kit' + - supports-color + - vue + + vite-plugin-vue-inspector@6.0.0(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + '@babel/core': 7.29.7 + '@babel/plugin-proposal-decorators': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-attributes': 7.29.7(@babel/core@7.29.7) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.29.7) + '@babel/plugin-transform-typescript': 7.29.7(@babel/core@7.29.7) + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.29.7) + '@vue/compiler-dom': 3.5.35 + kolorist: 1.8.0 + magic-string: 0.30.21 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + transitivePeerDependencies: + - supports-color + + vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.15 + rollup: 4.61.0 + tinyglobby: 0.2.17 + optionalDependencies: + '@types/node': 24.12.4 + fsevents: 2.3.3 + jiti: 2.7.0 + lightningcss: 1.32.0 + + vitest@4.1.8(@types/node@24.12.4)(jsdom@27.4.0)(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)): + dependencies: + '@vitest/expect': 4.1.8 + '@vitest/mocker': 4.1.8(vite@7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0)) + '@vitest/pretty-format': 4.1.8 + '@vitest/runner': 4.1.8 + '@vitest/snapshot': 4.1.8 + '@vitest/spy': 4.1.8 + '@vitest/utils': 4.1.8 + es-module-lexer: 2.1.0 + expect-type: 1.3.0 + magic-string: 0.30.21 + obug: 2.1.1 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 4.1.0 + tinybench: 2.9.0 + tinyexec: 1.2.4 + tinyglobby: 0.2.17 + tinyrainbow: 3.1.0 + vite: 7.3.5(@types/node@24.12.4)(jiti@2.7.0)(lightningcss@1.32.0) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/node': 24.12.4 + jsdom: 27.4.0 + transitivePeerDependencies: + - msw + + vscode-uri@3.1.0: {} + + vue-component-type-helpers@3.3.3: {} + + vue-eslint-parser@10.4.0(eslint@9.39.4(jiti@2.7.0)): + dependencies: + debug: 4.4.3(supports-color@8.1.1) + eslint: 9.39.4(jiti@2.7.0) + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + semver: 7.8.1 + transitivePeerDependencies: + - supports-color + + vue-router@4.6.4(vue@3.5.35(typescript@5.9.3)): + dependencies: + '@vue/devtools-api': 6.6.4 + vue: 3.5.35(typescript@5.9.3) + + vue-tsc@3.3.3(typescript@5.9.3): + dependencies: + '@volar/typescript': 2.4.28 + '@vue/language-core': 3.3.3 + typescript: 5.9.3 + + vue@3.5.35(typescript@5.9.3): + dependencies: + '@vue/compiler-dom': 3.5.35 + '@vue/compiler-sfc': 3.5.35 + '@vue/runtime-dom': 3.5.35 + '@vue/server-renderer': 3.5.35(vue@3.5.35(typescript@5.9.3)) + '@vue/shared': 3.5.35 + optionalDependencies: + typescript: 5.9.3 + + w3c-xmlserializer@5.0.0: + dependencies: + xml-name-validator: 5.0.0 + + wait-on@9.0.4(debug@4.4.3): + dependencies: + axios: 1.16.1(debug@4.4.3) + joi: 18.2.1 + lodash: 4.18.1 + minimist: 1.2.8 + rxjs: 7.8.2 + transitivePeerDependencies: + - debug + - supports-color + + webidl-conversions@8.0.1: {} + + whatwg-mimetype@4.0.0: {} + + whatwg-mimetype@5.0.0: {} + + whatwg-url@15.1.0: + dependencies: + tr46: 6.0.0 + webidl-conversions: 8.0.1 + + which-module@2.0.1: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + which@5.0.0: + dependencies: + isexe: 3.1.5 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + wmf@1.0.2: {} + + word-wrap@1.2.5: {} + + word@0.3.0: {} + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + wrappy@1.0.2: {} + + ws@8.21.0: {} + + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + + xlsx@0.18.5: + dependencies: + adler-32: 1.3.1 + cfb: 1.2.2 + codepage: 1.15.0 + crc-32: 1.2.2 + ssf: 0.11.2 + wmf: 1.0.2 + word: 0.3.0 + + xml-name-validator@4.0.0: {} + + xml-name-validator@5.0.0: {} + + xmlchars@2.2.0: {} + + y18n@4.0.3: {} + + yallist@3.1.1: {} + + yargs-parser@18.1.3: + dependencies: + camelcase: 5.3.1 + decamelize: 1.2.0 + + yargs@15.4.1: + dependencies: + cliui: 6.0.0 + decamelize: 1.2.0 + find-up: 4.1.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + require-main-filename: 2.0.0 + set-blocking: 2.0.0 + string-width: 4.2.3 + which-module: 2.0.1 + y18n: 4.0.3 + yargs-parser: 18.1.3 + + yauzl@3.3.2: + dependencies: + pend: 1.2.0 + + yocto-queue@0.1.0: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 0000000..03cbbe5 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,5 @@ +packages: + - . + +allowBuilds: + esbuild: true diff --git a/public/favicon.ico b/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..4aea46d963c96b0d98cef78afa2f1711d0c8a908 GIT binary patch literal 209280 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 literal 0 HcmV?d00001 diff --git a/src/.DS_Store b/src/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..16ce73f5f45f5b12ff27a46a581302ab87ca5bc7 GIT binary patch literal 8196 zcmeHM&2JM&6o2CwXN^nQgoFkJ(h6TH5m7?<6sm9y6{I~RiX)ovQL`TtXUlrV+Fi%c zD3b53dg!r-9{UIM1h-y#>1umAuSRw3;gHWP{%7j>+Zbk8hGg7yGA&x^(5AyMU>GnA7zPXjhJm+% z0X(xsv0ifSt5MS$1`Gr5Bm-i9aIgy5&~m7x+&Zw4R{)e{?3M*}yaz}dN6UtmLnWmt z`c$_EqD_guVi0AHkX2g7fI|>uNQ?$diLyd zQkp6ss7zbaR?WKK+UA2+>Zbjq>Be`(w{^}VFVkJ`c1Qi*R@JJu?PI&U=dN5_bUt1>zqjb@E-hWYvglm6aA|L^YR%U_y1LeW z7-aGXEVS8rw$jsc#{QUgU z4;GFcKYpTZAMsrOVJ8;hUgr^yn^B)`gg$4j@Ef|3(nqOK+V*S#w?>1nUUaQL?jdIG zMThitGp3Z??ZjcQvbB}abR(y4w(Y}-AM+?$ev2ORMs1- znew4hY^W;*e~`{)nwF&gYcQ1hI^&F1tM$egddPy)_}BY6v|t+s@ICwpKf@FF4St8e z;2%;ZN69I2nw%$}kZa@?StfUgPqs-&zE<|7>_MN@{y`YB`$(v&e%8EeknBekfR#rB$50SIcs(Bo4s5_bP-KMSvb3 zVJ7<`M@O@>^k>1MjPbj|Y7{rMR=`bXIP^Q7^J0JaDYrieG{-pllU4^}hsdKXWKhH% zVk8s1OAhn+3dHEWk8x0lN8^^v<*~Iq7QF|PW{^DQtt!Y|igO_2V+_WH=qrfaMqGCS zRUkzYG8X literal 0 HcmV?d00001 diff --git a/src/App.vue b/src/App.vue new file mode 100644 index 0000000..7c2aa3f --- /dev/null +++ b/src/App.vue @@ -0,0 +1,3 @@ + diff --git a/src/assets/.DS_Store b/src/assets/.DS_Store new file mode 100644 index 0000000000000000000000000000000000000000..6b03fd7645ae1d5b5383e58faeecdcc10b38526c GIT binary patch literal 6148 zcmeHKPfyf96n_JYbU~!RE&|b{aW5tiWffFn3~RyY>H$ItE&{G?cUUUj&ZaG_NJ#ds z@dNk)`~aTx=Eb8|4_^EN9z1!~H`8fwUG=6B)0fQr-n>6EeZQtN9RMKuP9+bZ0)T>z zW2y(cp9uH!)+Qa&(uGL)9L%;{X5olWmq@}u!oa`I0RMJ7!G-{WqTBNQ>gYN5Rfs6! z7&uS^6RJSlVqg9))@lTGxi7r7>aG)nlaudBM`x<*Shv!x^eP+17Hb%x8SVtS>96t8 zGGne4>!!8h&_-F!%rP%C9gq4V!KqLTS-L|L;MlveDDo~Y z>Z7X0Wu<$1kN2JER|f`%1~LQLY_(R+ht=vB}E$`JaCUa;IbKUeQ_13DsQ(4&D3}{&TPG2pn{ekT>*Ii_R z6FSUWT@R4yVn}O6ZIaBzIi*$8_f4-#^}P+(w5Yq_=`0LcjYsm? zu#iQc@|nciM%}a>ubP|v95IcgNFl li { + > .side-menu__link { + .side-menu__link__icon { + margin-left: 0; + } + } + li { + .side-menu__link { + .side-menu__link__icon { + margin-left: 0; + } + } + } + } + } + } + .side-menu__group-label { + position: relative; + color: transparent; + transition-property: theme(transitionProperty.colors); + transition-duration: 100ms; + &:before { + content: '...'; + position: absolute; + text-align: center; + left: 0; + right: 0; + color: var(--color-background); + transition-property: opacity; + transition-duration: 100ms; + } + } + .side-menu__link { + .side-menu__link__title { + white-space: nowrap; + color: transparent; + transition-property: color; + transition-duration: theme(transitionDuration.300); + } + .side-menu__link__badge { + opacity: 0; + transition-property: opacity; + transition-duration: theme(transitionDuration.300); + } + .side-menu__link__chevron { + opacity: 0; + transition-property: opacity; + transition-duration: theme(transitionDuration.300); + } + .side-menu__link__icon { + transition-property: margin; + transition-duration: 100ms; + } + } + ul.scrollable { + > li { + > .side-menu__link { + .side-menu__link__icon { + margin-left: theme(spacing[2.5]); + } + } + li { + .side-menu__link { + .side-menu__link__icon { + margin-left: theme(spacing[1.5]); + } + } + } + } + } + } + ul.scrollable { + > li { + > .side-menu__link { + &.side-menu__link--active { + } + } + } + } + } + .side-menu__group-label { + white-space: nowrap; + font-size: theme(fontSize.xs); + opacity: theme(opacity.50); + margin-left: theme(spacing.2); + margin-top: theme(spacing.7); + margin-bottom: theme(spacing.3); + text-transform: uppercase; + } + .side-menu__link { + display: flex; + align-items: center; + margin-bottom: theme(spacing[1.5]); + padding: theme(spacing.4) theme(spacing.5); + &.side-menu__link--active { + font-weight: theme(fontWeight.medium); + .side-menu__link__icon { + } + .side-menu__link__title { + color: var(--color-primary); + } + .side-menu__link__chevron { + } + } + .side-menu__link__icon { + flex: none; + width: 1.15rem; + height: 1.15rem; + --color: color-mix(in oklch, var(--color-primary), transparent 30%); + } + .side-menu__link__title { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; + margin-left: theme(spacing.3); + color: color-mix(in oklch, var(--color-foreground), transparent 20%); + } + .side-menu__link__badge { + min-width: 1.15rem; + height: 1.2rem; + padding: 0 theme(spacing.2); + display: flex; + align-items: center; + justify-content: center; + font-size: theme(fontSize.xs); + margin-left: theme(spacing[3.5]); + font-weight: theme(fontWeight.medium); + color: color-mix(in oklch, var(--color-primary), transparent 20%); + background-color: color-mix(in oklch, var(--color-primary), transparent 85%); + border: 1px solid color-mix(in oklch, var(--color-primary), transparent 85%); + border-radius: theme(borderRadius.lg); + } + .side-menu__link__chevron { + margin-left: auto; + stroke-width: 1.2; + color: color-mix(in oklch, var(--color-foreground), transparent 20%); + } + } + ul.scrollable { + position: relative; + > li { + > .side-menu__link { + border-radius: theme(borderRadius.full); + &.side-menu__link--active { + background: color-mix(in oklch, var(--color-background), var(--color-foreground) 3%); + border: 1px solid color-mix(in oklch, var(--color-foreground), transparent 90%); + box-shadow: theme('boxShadow.sm'); + &:before { + content: ''; + width: 7.8rem; + height: 7.8rem; + opacity: 0.1; + background-color: color-mix( + in oklch, + var(--color-background), + var(--color-foreground) 90% + ); + z-index: -2; + position: absolute; + right: 0px; + margin-right: -11.7em; + mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + } + &:after { + content: ''; + width: 7.8rem; + height: 7.8rem; + background-color: color-mix( + in oklch, + var(--color-background), + var(--color-foreground) 2% + ); + z-index: -1; + position: absolute; + right: -1px; + margin-right: -11.7em; + mask-repeat: no-repeat; + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + } + } + &:hover:not(.side-menu__link--active) { + background: color-mix(in oklch, var(--color-background), transparent 50%); + } + } + ul { + padding: theme(spacing.1) 0; + background: color-mix(in oklch, var(--color-background), transparent 50%); + border-radius: theme(borderRadius.2xl); + border: 1px solid color-mix(in oklch, var(--color-foreground), transparent 90%); + margin-left: theme(spacing.1); + margin-right: theme(spacing.1); + margin-bottom: theme(spacing.2); + .side-menu__link { + margin-bottom: 0; + } + ul { + margin: 0px -1px; + } + } + } + } + } +} + +.dark { + .enigma { + .side-menu { + .side-menu__group-label { + opacity: theme(opacity.30); + } + .side-menu__link { + .side-menu__link__icon { + --color: --alpha(var(--color-foreground) / 70%); + } + .side-menu__link__title { + color: --alpha(var(--color-foreground) / 70%); + } + .side-menu__link__badge { + --color-primary: --alpha(var(--color-foreground) / 70%); + } + &.side-menu__link--active { + .side-menu__link__title { + color: var(--color-foreground); + } + } + } + ul.scrollable { + > li { + > .side-menu__link { + &.side-menu__link--active { + background: color-mix(in oklch, var(--color-background), white 14%); + &:before { + background-color: var(--color-foreground); + } + &:after { + background-color: color-mix(in oklch, var(--color-foreground), black 84%); + } + } + &:hover:not(.side-menu__link--active) { + background: color-mix(in oklch, var(--color-background), white 14%); + } + } + ul { + background: color-mix(in oklch, var(--color-background), white 10%); + } + } + } + } + } +} + +[data-theme='default']:not(.dark) .enigma .top-bar::before { + background-color: transparent; + background-image: var(--color-primary-gradient); + border-color: color-mix(in oklch, var(--color-blue-600), transparent 40%); +} + +[data-theme='default']:not(.dark) .enigma .top-bar::after { + background-color: transparent; + background-image: var(--color-primary-gradient); + opacity: 0.3; + border-color: transparent; +} diff --git a/src/assets/css/themes/enigma/top-menu.css b/src/assets/css/themes/enigma/top-menu.css new file mode 100644 index 0000000..aa8eb32 --- /dev/null +++ b/src/assets/css/themes/enigma/top-menu.css @@ -0,0 +1,262 @@ +.enigma { + .top-menu { + @media (min-width: theme(screens.xl)) { + @apply border-0; + display: flex; + z-index: 20; + height: theme(spacing.14); + gap: theme(spacing.6); + padding: 0 theme(spacing.14); + margin-bottom: -1px; + + &>li { + height: 100%; + position: relative; + + &>.top-menu__link { + height: 100%; + display: flex; + align-items: center; + gap: theme(spacing.3); + position: relative; + padding: 0 theme(spacing.7); + border-radius: theme(borderRadius.full); + + &.top-menu__link--active { + background: color-mix(in oklch, + var(--color-background), + var(--color-foreground) 3%); + border: 1px solid color-mix(in oklch, + var(--color-foreground), + transparent 90%); + box-shadow: theme("boxShadow.sm"); + + &:before { + content: ""; + width: 7.8rem; + height: 7.8rem; + opacity: 0.1; + background-color: color-mix(in oklch, + var(--color-background), + var(--color-foreground) 90%); + z-index: -2; + position: absolute; + bottom: 0px; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-bottom: -10.1em; + mask-repeat: no-repeat; + transform: rotate(90deg); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + pointer-events: none; + } + + &:after { + content: ""; + width: 7.8rem; + height: 7.8rem; + background-color: color-mix(in oklch, + var(--color-background), + var(--color-foreground) 2%); + z-index: -1; + position: absolute; + bottom: -1px; + left: 0px; + right: 0px; + margin-left: auto; + margin-right: auto; + margin-bottom: -10.1em; + mask-repeat: no-repeat; + transform: rotate(90deg); + mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='100%' height='100%' viewBox='0 0 16.039 122.1'%3E%3Cpath id='Union_1' data-name='Union 1' d='M16.038,122H16v-2.213a95.8,95.8,0,0,0-2.886-20.735A94.894,94.894,0,0,0,5.331,78.618,39.039,39.039,0,0,1,0,61.051,39.035,39.035,0,0,1,5.331,43.484a94.9,94.9,0,0,0,7.783-20.435A95.747,95.747,0,0,0,16,2.314V0l.039,122v0Z'/%3E%3C/svg%3E"); + pointer-events: none; + } + + .top-menu__link__title { + font-weight: theme(fontWeight.medium); + } + + .top-menu__link__icon { + --color: var(--color-primary); + } + } + + .top-menu__link__icon { + &>svg { + --color: var(--color-primary); + } + } + + .top-menu__link__title { + display: flex; + align-items: center; + gap: theme(spacing.3); + } + + .top-menu__link__chevron { + margin-left: auto; + } + } + + &:hover>ul { + display: block; + } + + ul { + display: none; + width: theme(spacing.72); + position: absolute; + left: 50%; + transform: translateX(-50%); + margin-top: calc(theme(spacing.20) * -1); + background: var(--color-background); + border: 1px solid --alpha(var(--color-foreground) / 10%); + border-radius: theme(borderRadius.2xl); + padding: theme(spacing.3) theme(spacing.2); + box-shadow: theme(boxShadow.lg); + z-index: 2; + + .top-menu__link { + height: theme(spacing.12); + display: flex; + align-items: center; + gap: theme(spacing.3); + padding: 0 theme(spacing.5); + position: relative; + + .top-menu__link__title { + width: 100%; + display: flex; + align-items: center; + gap: theme(spacing.3); + } + + .top-menu__link__chevron { + margin-left: auto; + } + } + + li { + position: relative; + + &:hover>ul { + display: block; + } + } + + ul { + display: none; + margin-top: 0; + left: 100%; + top: 0; + transform: translateX(0); + } + } + } + } + + @media (max-width: theme(screens.xl)) { + padding: theme(spacing.5) theme(spacing.4); + + >li { + z-index: 10; + position: relative; + + ul { + padding: theme(spacing.1) 0; + background: color-mix(in oklch, + var(--color-background), + transparent 90%); + border-radius: theme(borderRadius.2xl); + border: 1px solid color-mix(in oklch, + var(--color-background), + transparent 87%); + margin-left: theme(spacing.2); + margin-right: theme(spacing.2); + margin-bottom: theme(spacing.2); + + .top-menu__link { + margin-bottom: 0; + } + + ul { + margin: 0px -1px; + } + } + + .top-menu__link { + display: flex; + align-items: center; + margin-bottom: theme(spacing[1.5]); + padding: theme(spacing.4) theme(spacing.5); + + &.top-menu__link--active { + font-weight: theme(fontWeight.medium); + + .top-menu__link__title { + color: var(--color-background); + } + } + + .top-menu__link__icon>svg { + width: 1.15rem; + height: 1.15rem; + --color: var(--color-background); + } + + .top-menu__link__title { + width: 100%; + display: flex; + align-items: center; + margin-left: theme(spacing.3); + color: --alpha(var(--color-background) / 80%); + + .top-menu__link__chevron { + margin-left: auto; + stroke-width: 1.2; + color: color-mix(in oklch, + var(--color-background), + transparent 20%); + } + } + } + } + } + } +} + +.dark { + .enigma { + .top-menu { + @media (min-width: theme(screens.xl)) { + >li { + >.top-menu__link { + &.top-menu__link--active { + background: color-mix(in oklch, + var(--color-background), + white 14%); + + &:before { + background-color: var(--color-foreground); + } + + &:after { + background-color: color-mix(in oklch, + var(--color-foreground), + black 85%); + } + } + } + } + } + + @media (max-width: theme(screens.xl)) { + >li { + --color-background: var(--color-foreground); + } + } + } + } +} \ No newline at end of file diff --git a/src/assets/images/accent.svg b/src/assets/images/accent.svg new file mode 100644 index 0000000..9569b68 --- /dev/null +++ b/src/assets/images/accent.svg @@ -0,0 +1,44 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/bg-pattern.svg b/src/assets/images/bg-pattern.svg new file mode 100644 index 0000000..e6a7c20 --- /dev/null +++ b/src/assets/images/bg-pattern.svg @@ -0,0 +1,66 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/error-illustration.svg b/src/assets/images/error-illustration.svg new file mode 100644 index 0000000..19f09e9 --- /dev/null +++ b/src/assets/images/error-illustration.svg @@ -0,0 +1,72 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/illustration.svg b/src/assets/images/illustration.svg new file mode 100644 index 0000000..a0ae933 --- /dev/null +++ b/src/assets/images/illustration.svg @@ -0,0 +1,121 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/logo-original.svg b/src/assets/images/logo-original.svg new file mode 100644 index 0000000..9fa3c6a --- /dev/null +++ b/src/assets/images/logo-original.svg @@ -0,0 +1,115 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + KOPERASI PERMODALAN KELANTAN BERHAD + + + diff --git a/src/assets/images/logo.svg b/src/assets/images/logo.svg new file mode 100644 index 0000000..5498014 --- /dev/null +++ b/src/assets/images/logo.svg @@ -0,0 +1,649 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/assets/images/noise.png b/src/assets/images/noise.png new file mode 100644 index 0000000000000000000000000000000000000000..37afd82678ea03ef10fc0dd04d4c8a9eb290a687 GIT binary patch literal 63712 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 hueoi9;8_Rx#ZR3a;JT% + + + + + + + + + + diff --git a/src/assets/images/placeholders/200x200.jpg b/src/assets/images/placeholders/200x200.jpg new file mode 100755 index 0000000000000000000000000000000000000000..4d40faa8ef56fc445d43de95a9fb0252352a0c02 GIT binary patch literal 1851 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 literal 0 HcmV?d00001 diff --git a/src/assets/images/woman-illustration.svg b/src/assets/images/woman-illustration.svg new file mode 100644 index 0000000..f023ddf --- /dev/null +++ b/src/assets/images/woman-illustration.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/src/components/account-dropdown/AccountDropdown.vue b/src/components/account-dropdown/AccountDropdown.vue new file mode 100644 index 0000000..302a1dd --- /dev/null +++ b/src/components/account-dropdown/AccountDropdown.vue @@ -0,0 +1,125 @@ + + + diff --git a/src/components/account-dropdown/AccountTrigger.vue b/src/components/account-dropdown/AccountTrigger.vue new file mode 100644 index 0000000..2091312 --- /dev/null +++ b/src/components/account-dropdown/AccountTrigger.vue @@ -0,0 +1,73 @@ + + + diff --git a/src/components/account-dropdown/index.ts b/src/components/account-dropdown/index.ts new file mode 100644 index 0000000..735218a --- /dev/null +++ b/src/components/account-dropdown/index.ts @@ -0,0 +1,2 @@ +export { default as AccountDropdown } from './AccountDropdown.vue' +export { default as AccountTrigger } from './AccountTrigger.vue' diff --git a/src/components/chart-presets/Bar1.vue b/src/components/chart-presets/Bar1.vue new file mode 100644 index 0000000..90f11b3 --- /dev/null +++ b/src/components/chart-presets/Bar1.vue @@ -0,0 +1,99 @@ + + + diff --git a/src/components/chart-presets/Bar2.vue b/src/components/chart-presets/Bar2.vue new file mode 100644 index 0000000..cc296da --- /dev/null +++ b/src/components/chart-presets/Bar2.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/components/chart-presets/Donut1.vue b/src/components/chart-presets/Donut1.vue new file mode 100644 index 0000000..02ac1ab --- /dev/null +++ b/src/components/chart-presets/Donut1.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/chart-presets/Donut2.vue b/src/components/chart-presets/Donut2.vue new file mode 100644 index 0000000..e883f56 --- /dev/null +++ b/src/components/chart-presets/Donut2.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/chart-presets/Line1.vue b/src/components/chart-presets/Line1.vue new file mode 100644 index 0000000..35956a6 --- /dev/null +++ b/src/components/chart-presets/Line1.vue @@ -0,0 +1,92 @@ + + + diff --git a/src/components/chart-presets/Line2.vue b/src/components/chart-presets/Line2.vue new file mode 100644 index 0000000..5cdb4f1 --- /dev/null +++ b/src/components/chart-presets/Line2.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/components/chart-presets/Line3.vue b/src/components/chart-presets/Line3.vue new file mode 100644 index 0000000..36630d5 --- /dev/null +++ b/src/components/chart-presets/Line3.vue @@ -0,0 +1,82 @@ + + + diff --git a/src/components/chart-presets/Pie1.vue b/src/components/chart-presets/Pie1.vue new file mode 100644 index 0000000..714f941 --- /dev/null +++ b/src/components/chart-presets/Pie1.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/components/chart-presets/index.ts b/src/components/chart-presets/index.ts new file mode 100644 index 0000000..63b68f3 --- /dev/null +++ b/src/components/chart-presets/index.ts @@ -0,0 +1,8 @@ +export { default as Line1 } from './Line1.vue' //report-line-chart +export { default as Line2 } from './Line2.vue' //simple-line-chart-1 +export { default as Line3 } from './Line3.vue' //simple-line-chart-3, simple-line-chart-4 +export { default as Pie1 } from './Pie1.vue' //report-pie-chart +export { default as Donut1 } from './Donut1.vue' //report-donut-chart +export { default as Donut2 } from './Donut2.vue' //report-donut-chart-1 +export { default as Bar1 } from './Bar1.vue' //report-bar-chart +export { default as Bar2 } from './Bar2.vue' //report-bar-chart-1 diff --git a/src/components/daily-notes/DailyNotes.vue b/src/components/daily-notes/DailyNotes.vue new file mode 100644 index 0000000..e10bc45 --- /dev/null +++ b/src/components/daily-notes/DailyNotes.vue @@ -0,0 +1,122 @@ + + + diff --git a/src/components/daily-notes/index.ts b/src/components/daily-notes/index.ts new file mode 100644 index 0000000..ec217b6 --- /dev/null +++ b/src/components/daily-notes/index.ts @@ -0,0 +1 @@ +export { default as DailyNotes } from './DailyNotes.vue' diff --git a/src/components/docs/ApiButton.vue b/src/components/docs/ApiButton.vue new file mode 100644 index 0000000..7633727 --- /dev/null +++ b/src/components/docs/ApiButton.vue @@ -0,0 +1,9 @@ + diff --git a/src/components/docs/InstallPackage.vue b/src/components/docs/InstallPackage.vue new file mode 100644 index 0000000..d680ead --- /dev/null +++ b/src/components/docs/InstallPackage.vue @@ -0,0 +1,101 @@ + + + diff --git a/src/components/docs/Menu.vue b/src/components/docs/Menu.vue new file mode 100644 index 0000000..70870cf --- /dev/null +++ b/src/components/docs/Menu.vue @@ -0,0 +1,8 @@ + diff --git a/src/components/docs/Preview.vue b/src/components/docs/Preview.vue new file mode 100644 index 0000000..4ab05a5 --- /dev/null +++ b/src/components/docs/Preview.vue @@ -0,0 +1,42 @@ + + + diff --git a/src/components/docs/PreviewCode.vue b/src/components/docs/PreviewCode.vue new file mode 100644 index 0000000..ec3bd0d --- /dev/null +++ b/src/components/docs/PreviewCode.vue @@ -0,0 +1,88 @@ + + + diff --git a/src/components/docs/SectionContent.vue b/src/components/docs/SectionContent.vue new file mode 100644 index 0000000..af1d956 --- /dev/null +++ b/src/components/docs/SectionContent.vue @@ -0,0 +1,13 @@ + + + diff --git a/src/components/docs/SectionTitle.vue b/src/components/docs/SectionTitle.vue new file mode 100644 index 0000000..636a005 --- /dev/null +++ b/src/components/docs/SectionTitle.vue @@ -0,0 +1,5 @@ + diff --git a/src/components/docs/Subtitle.vue b/src/components/docs/Subtitle.vue new file mode 100644 index 0000000..db126de --- /dev/null +++ b/src/components/docs/Subtitle.vue @@ -0,0 +1,5 @@ + diff --git a/src/components/docs/Title.vue b/src/components/docs/Title.vue new file mode 100644 index 0000000..7c0a60b --- /dev/null +++ b/src/components/docs/Title.vue @@ -0,0 +1,5 @@ + diff --git a/src/components/docs/Wrapper.vue b/src/components/docs/Wrapper.vue new file mode 100644 index 0000000..cc3f2ed --- /dev/null +++ b/src/components/docs/Wrapper.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/docs/index.ts b/src/components/docs/index.ts new file mode 100644 index 0000000..d3e7dfe --- /dev/null +++ b/src/components/docs/index.ts @@ -0,0 +1,10 @@ +export { default as Wrapper } from "./Wrapper.vue"; +export { default as Menu } from "./Menu.vue"; +export { default as Title } from "./Title.vue"; +export { default as Subtitle } from "./Subtitle.vue"; +export { default as Preview } from "./Preview.vue"; +export { default as SectionTitle } from "./SectionTitle.vue"; +export { default as SectionContent } from "./SectionContent.vue"; +export { default as InstallPackage } from "./InstallPackage.vue"; +export { default as PreviewCode } from "./PreviewCode.vue"; +export { default as ApiButton } from "./ApiButton.vue"; diff --git a/src/components/notification-dropdown/NotificationDropdown.vue b/src/components/notification-dropdown/NotificationDropdown.vue new file mode 100644 index 0000000..2ec7241 --- /dev/null +++ b/src/components/notification-dropdown/NotificationDropdown.vue @@ -0,0 +1,151 @@ + + + diff --git a/src/components/notification-dropdown/index.ts b/src/components/notification-dropdown/index.ts new file mode 100644 index 0000000..17b5536 --- /dev/null +++ b/src/components/notification-dropdown/index.ts @@ -0,0 +1 @@ +export { default as NotificationDropdown } from './NotificationDropdown.vue' diff --git a/src/components/official-stores/OfficialStores.vue b/src/components/official-stores/OfficialStores.vue new file mode 100644 index 0000000..cdec6a8 --- /dev/null +++ b/src/components/official-stores/OfficialStores.vue @@ -0,0 +1,143 @@ + + + diff --git a/src/components/official-stores/index.ts b/src/components/official-stores/index.ts new file mode 100644 index 0000000..91bb4d7 --- /dev/null +++ b/src/components/official-stores/index.ts @@ -0,0 +1 @@ +export { default as OfficialStores } from './OfficialStores.vue' diff --git a/src/components/quick-search-dialog/QuickSearchDialog.vue b/src/components/quick-search-dialog/QuickSearchDialog.vue new file mode 100644 index 0000000..15e56bb --- /dev/null +++ b/src/components/quick-search-dialog/QuickSearchDialog.vue @@ -0,0 +1,142 @@ + + + diff --git a/src/components/quick-search-dialog/index.ts b/src/components/quick-search-dialog/index.ts new file mode 100644 index 0000000..7a201c7 --- /dev/null +++ b/src/components/quick-search-dialog/index.ts @@ -0,0 +1 @@ +export { default as QuickSearchDialog } from './QuickSearchDialog.vue' diff --git a/src/components/recent-activities/RecentActivities.vue b/src/components/recent-activities/RecentActivities.vue new file mode 100644 index 0000000..e77ccf2 --- /dev/null +++ b/src/components/recent-activities/RecentActivities.vue @@ -0,0 +1,182 @@ + + + diff --git a/src/components/recent-activities/index.ts b/src/components/recent-activities/index.ts new file mode 100644 index 0000000..ba48953 --- /dev/null +++ b/src/components/recent-activities/index.ts @@ -0,0 +1 @@ +export { default as RecentActivities } from './RecentActivities.vue' diff --git a/src/components/schedules/Schedules.vue b/src/components/schedules/Schedules.vue new file mode 100644 index 0000000..2a1e600 --- /dev/null +++ b/src/components/schedules/Schedules.vue @@ -0,0 +1,167 @@ + + + diff --git a/src/components/schedules/index.ts b/src/components/schedules/index.ts new file mode 100644 index 0000000..ceb8c37 --- /dev/null +++ b/src/components/schedules/index.ts @@ -0,0 +1 @@ +export { default as Schedules } from './Schedules.vue' diff --git a/src/components/side-menu/SideMenu.vue b/src/components/side-menu/SideMenu.vue new file mode 100644 index 0000000..df4aed4 --- /dev/null +++ b/src/components/side-menu/SideMenu.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/src/components/side-menu/index.ts b/src/components/side-menu/index.ts new file mode 100644 index 0000000..c249b31 --- /dev/null +++ b/src/components/side-menu/index.ts @@ -0,0 +1 @@ +export { default as SideMenu } from './SideMenu.vue' diff --git a/src/components/theme-switcher/ThemeSwitcher.vue b/src/components/theme-switcher/ThemeSwitcher.vue new file mode 100644 index 0000000..68d599e --- /dev/null +++ b/src/components/theme-switcher/ThemeSwitcher.vue @@ -0,0 +1,121 @@ + + + diff --git a/src/components/theme-switcher/index.ts b/src/components/theme-switcher/index.ts new file mode 100644 index 0000000..8ad3e96 --- /dev/null +++ b/src/components/theme-switcher/index.ts @@ -0,0 +1 @@ +export { default as ThemeSwitcher } from './ThemeSwitcher.vue' diff --git a/src/components/top-menu/TopMenu.vue b/src/components/top-menu/TopMenu.vue new file mode 100644 index 0000000..04a0172 --- /dev/null +++ b/src/components/top-menu/TopMenu.vue @@ -0,0 +1,166 @@ + + + diff --git a/src/components/top-menu/index.ts b/src/components/top-menu/index.ts new file mode 100644 index 0000000..d4a4b17 --- /dev/null +++ b/src/components/top-menu/index.ts @@ -0,0 +1,3 @@ +import TopMenu from "./TopMenu.vue"; + +export { TopMenu }; diff --git a/src/components/transactions/Transactions.vue b/src/components/transactions/Transactions.vue new file mode 100644 index 0000000..b582b7e --- /dev/null +++ b/src/components/transactions/Transactions.vue @@ -0,0 +1,104 @@ + + + diff --git a/src/components/transactions/index.ts b/src/components/transactions/index.ts new file mode 100644 index 0000000..1ec6838 --- /dev/null +++ b/src/components/transactions/index.ts @@ -0,0 +1 @@ +export { default as Transactions } from './Transactions.vue' diff --git a/src/components/ui/accordion/AccordionContent.vue b/src/components/ui/accordion/AccordionContent.vue new file mode 100644 index 0000000..40a71af --- /dev/null +++ b/src/components/ui/accordion/AccordionContent.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/accordion/AccordionItem.vue b/src/components/ui/accordion/AccordionItem.vue new file mode 100644 index 0000000..f5759fa --- /dev/null +++ b/src/components/ui/accordion/AccordionItem.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/ui/accordion/AccordionRoot.vue b/src/components/ui/accordion/AccordionRoot.vue new file mode 100644 index 0000000..8bf948e --- /dev/null +++ b/src/components/ui/accordion/AccordionRoot.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/accordion/AccordionTrigger.vue b/src/components/ui/accordion/AccordionTrigger.vue new file mode 100644 index 0000000..46d7292 --- /dev/null +++ b/src/components/ui/accordion/AccordionTrigger.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/accordion/index.ts b/src/components/ui/accordion/index.ts new file mode 100644 index 0000000..85d9eb2 --- /dev/null +++ b/src/components/ui/accordion/index.ts @@ -0,0 +1,4 @@ +export { default as AccordionRoot } from "./AccordionRoot.vue"; +export { default as AccordionItem } from "./AccordionItem.vue"; +export { default as AccordionTrigger } from "./AccordionTrigger.vue"; +export { default as AccordionContent } from "./AccordionContent.vue"; diff --git a/src/components/ui/alert/AlertCloseTrigger.vue b/src/components/ui/alert/AlertCloseTrigger.vue new file mode 100644 index 0000000..7f9ef68 --- /dev/null +++ b/src/components/ui/alert/AlertCloseTrigger.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/alert/AlertDescription.vue b/src/components/ui/alert/AlertDescription.vue new file mode 100644 index 0000000..e84cdcc --- /dev/null +++ b/src/components/ui/alert/AlertDescription.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/alert/AlertRoot.vue b/src/components/ui/alert/AlertRoot.vue new file mode 100644 index 0000000..86ca297 --- /dev/null +++ b/src/components/ui/alert/AlertRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/alert/AlertTitle.vue b/src/components/ui/alert/AlertTitle.vue new file mode 100644 index 0000000..3891b27 --- /dev/null +++ b/src/components/ui/alert/AlertTitle.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/alert/index.ts b/src/components/ui/alert/index.ts new file mode 100644 index 0000000..d1619d8 --- /dev/null +++ b/src/components/ui/alert/index.ts @@ -0,0 +1,4 @@ +export { default as AlertRoot } from "./AlertRoot.vue"; +export { default as AlertTitle } from "./AlertTitle.vue"; +export { default as AlertDescription } from "./AlertDescription.vue"; +export { default as AlertCloseTrigger } from "./AlertCloseTrigger.vue"; diff --git a/src/components/ui/avatar/AvatarFallback.vue b/src/components/ui/avatar/AvatarFallback.vue new file mode 100644 index 0000000..92fe74b --- /dev/null +++ b/src/components/ui/avatar/AvatarFallback.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/avatar/AvatarImage.vue b/src/components/ui/avatar/AvatarImage.vue new file mode 100644 index 0000000..6de2fc0 --- /dev/null +++ b/src/components/ui/avatar/AvatarImage.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/avatar/AvatarRoot.vue b/src/components/ui/avatar/AvatarRoot.vue new file mode 100644 index 0000000..1a38d5d --- /dev/null +++ b/src/components/ui/avatar/AvatarRoot.vue @@ -0,0 +1,50 @@ + + + diff --git a/src/components/ui/avatar/index.ts b/src/components/ui/avatar/index.ts new file mode 100644 index 0000000..ece62de --- /dev/null +++ b/src/components/ui/avatar/index.ts @@ -0,0 +1,3 @@ +export { default as AvatarRoot } from "./AvatarRoot.vue"; +export { default as AvatarFallback } from "./AvatarFallback.vue"; +export { default as AvatarImage } from "./AvatarImage.vue"; diff --git a/src/components/ui/badge/Badge.vue b/src/components/ui/badge/Badge.vue new file mode 100644 index 0000000..d0d5c8d --- /dev/null +++ b/src/components/ui/badge/Badge.vue @@ -0,0 +1,39 @@ + + + diff --git a/src/components/ui/badge/index.ts b/src/components/ui/badge/index.ts new file mode 100644 index 0000000..0934d6b --- /dev/null +++ b/src/components/ui/badge/index.ts @@ -0,0 +1 @@ +export { default as Badge } from "./Badge.vue"; diff --git a/src/components/ui/box/box.vue b/src/components/ui/box/box.vue new file mode 100644 index 0000000..d076bb0 --- /dev/null +++ b/src/components/ui/box/box.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/box/index.ts b/src/components/ui/box/index.ts new file mode 100644 index 0000000..1582e30 --- /dev/null +++ b/src/components/ui/box/index.ts @@ -0,0 +1 @@ +export { default as Box } from "./box.vue"; diff --git a/src/components/ui/breadcrumb/Breadcrumb.vue b/src/components/ui/breadcrumb/Breadcrumb.vue new file mode 100644 index 0000000..aed4e6f --- /dev/null +++ b/src/components/ui/breadcrumb/Breadcrumb.vue @@ -0,0 +1,61 @@ + + + diff --git a/src/components/ui/breadcrumb/BreadcrumbItem.vue b/src/components/ui/breadcrumb/BreadcrumbItem.vue new file mode 100644 index 0000000..54408ee --- /dev/null +++ b/src/components/ui/breadcrumb/BreadcrumbItem.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/breadcrumb/BreadcrumbLink.vue b/src/components/ui/breadcrumb/BreadcrumbLink.vue new file mode 100644 index 0000000..da9e41b --- /dev/null +++ b/src/components/ui/breadcrumb/BreadcrumbLink.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/breadcrumb/BreadcrumbList.vue b/src/components/ui/breadcrumb/BreadcrumbList.vue new file mode 100644 index 0000000..a8e1611 --- /dev/null +++ b/src/components/ui/breadcrumb/BreadcrumbList.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/breadcrumb/index.ts b/src/components/ui/breadcrumb/index.ts new file mode 100644 index 0000000..34d8639 --- /dev/null +++ b/src/components/ui/breadcrumb/index.ts @@ -0,0 +1,4 @@ +export { default as Breadcrumb } from "./Breadcrumb.vue"; +export { default as BreadcrumbItem } from "./BreadcrumbItem.vue"; +export { default as BreadcrumbLink } from "./BreadcrumbLink.vue"; +export { default as BreadcrumbList } from "./BreadcrumbList.vue"; diff --git a/src/components/ui/button/Button.vue b/src/components/ui/button/Button.vue new file mode 100644 index 0000000..b5a06b5 --- /dev/null +++ b/src/components/ui/button/Button.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/button/index.ts b/src/components/ui/button/index.ts new file mode 100644 index 0000000..28c00c1 --- /dev/null +++ b/src/components/ui/button/index.ts @@ -0,0 +1 @@ +export { default as Button } from "./Button.vue"; diff --git a/src/components/ui/carousel/CarouselControl.vue b/src/components/ui/carousel/CarouselControl.vue new file mode 100644 index 0000000..edd610c --- /dev/null +++ b/src/components/ui/carousel/CarouselControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/carousel/CarouselIndicator.vue b/src/components/ui/carousel/CarouselIndicator.vue new file mode 100644 index 0000000..9d798d4 --- /dev/null +++ b/src/components/ui/carousel/CarouselIndicator.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/ui/carousel/CarouselIndicatorGroup.vue b/src/components/ui/carousel/CarouselIndicatorGroup.vue new file mode 100644 index 0000000..32f2dfe --- /dev/null +++ b/src/components/ui/carousel/CarouselIndicatorGroup.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/carousel/CarouselItem.vue b/src/components/ui/carousel/CarouselItem.vue new file mode 100644 index 0000000..2c1ee75 --- /dev/null +++ b/src/components/ui/carousel/CarouselItem.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/carousel/CarouselItemGroup.vue b/src/components/ui/carousel/CarouselItemGroup.vue new file mode 100644 index 0000000..07a3626 --- /dev/null +++ b/src/components/ui/carousel/CarouselItemGroup.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/carousel/CarouselNextTrigger.vue b/src/components/ui/carousel/CarouselNextTrigger.vue new file mode 100644 index 0000000..161e92a --- /dev/null +++ b/src/components/ui/carousel/CarouselNextTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/carousel/CarouselPrevTrigger.vue b/src/components/ui/carousel/CarouselPrevTrigger.vue new file mode 100644 index 0000000..937d2a0 --- /dev/null +++ b/src/components/ui/carousel/CarouselPrevTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/carousel/CarouselRoot.vue b/src/components/ui/carousel/CarouselRoot.vue new file mode 100644 index 0000000..e29f7b6 --- /dev/null +++ b/src/components/ui/carousel/CarouselRoot.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/ui/carousel/index.ts b/src/components/ui/carousel/index.ts new file mode 100644 index 0000000..49898ba --- /dev/null +++ b/src/components/ui/carousel/index.ts @@ -0,0 +1,8 @@ +export { default as CarouselRoot } from "./CarouselRoot.vue"; +export { default as CarouselControl } from "./CarouselControl.vue"; +export { default as CarouselPrevTrigger } from "./CarouselPrevTrigger.vue"; +export { default as CarouselNextTrigger } from "./CarouselNextTrigger.vue"; +export { default as CarouselIndicatorGroup } from "./CarouselIndicatorGroup.vue"; +export { default as CarouselIndicator } from "./CarouselIndicator.vue"; +export { default as CarouselItemGroup } from "./CarouselItemGroup.vue"; +export { default as CarouselItem } from "./CarouselItem.vue"; diff --git a/src/components/ui/chart/Chart.vue b/src/components/ui/chart/Chart.vue new file mode 100644 index 0000000..068f0b2 --- /dev/null +++ b/src/components/ui/chart/Chart.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/chart/index.ts b/src/components/ui/chart/index.ts new file mode 100644 index 0000000..aae8060 --- /dev/null +++ b/src/components/ui/chart/index.ts @@ -0,0 +1,2 @@ +export { default as Chart } from "./Chart.vue"; +export { getColor } from "./utils.ts"; diff --git a/src/components/ui/chart/utils.ts b/src/components/ui/chart/utils.ts new file mode 100644 index 0000000..8c063fa --- /dev/null +++ b/src/components/ui/chart/utils.ts @@ -0,0 +1,11 @@ +export function getColor(name: string, opacity = 1) { + const color = getComputedStyle(document.documentElement) + .getPropertyValue(name) + .trim(); + if (opacity < 1) { + return `color-mix(in oklch, ${color} ${opacity * 100}%, transparent ${ + 100 - opacity * 100 + }%)`; + } + return color; +} diff --git a/src/components/ui/checkbox/CheckboxControl.vue b/src/components/ui/checkbox/CheckboxControl.vue new file mode 100644 index 0000000..07ca539 --- /dev/null +++ b/src/components/ui/checkbox/CheckboxControl.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxHiddenInput.vue b/src/components/ui/checkbox/CheckboxHiddenInput.vue new file mode 100644 index 0000000..eb70fd8 --- /dev/null +++ b/src/components/ui/checkbox/CheckboxHiddenInput.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxIndicator.vue b/src/components/ui/checkbox/CheckboxIndicator.vue new file mode 100644 index 0000000..887376c --- /dev/null +++ b/src/components/ui/checkbox/CheckboxIndicator.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxLabel.vue b/src/components/ui/checkbox/CheckboxLabel.vue new file mode 100644 index 0000000..852425f --- /dev/null +++ b/src/components/ui/checkbox/CheckboxLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/checkbox/CheckboxRoot.vue b/src/components/ui/checkbox/CheckboxRoot.vue new file mode 100644 index 0000000..ec63e53 --- /dev/null +++ b/src/components/ui/checkbox/CheckboxRoot.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/checkbox/index.ts b/src/components/ui/checkbox/index.ts new file mode 100644 index 0000000..10741ed --- /dev/null +++ b/src/components/ui/checkbox/index.ts @@ -0,0 +1,5 @@ +export { default as CheckboxRoot } from "./CheckboxRoot.vue"; +export { default as CheckboxLabel } from "./CheckboxLabel.vue"; +export { default as CheckboxControl } from "./CheckboxControl.vue"; +export { default as CheckboxIndicator } from "./CheckboxIndicator.vue"; +export { default as CheckboxHiddenInput } from "./CheckboxHiddenInput.vue"; diff --git a/src/components/ui/combobox/ComboboxClearTrigger.vue b/src/components/ui/combobox/ComboboxClearTrigger.vue new file mode 100644 index 0000000..1168b42 --- /dev/null +++ b/src/components/ui/combobox/ComboboxClearTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/combobox/ComboboxContent.vue b/src/components/ui/combobox/ComboboxContent.vue new file mode 100644 index 0000000..836f6b2 --- /dev/null +++ b/src/components/ui/combobox/ComboboxContent.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/combobox/ComboboxControl.vue b/src/components/ui/combobox/ComboboxControl.vue new file mode 100644 index 0000000..67d8883 --- /dev/null +++ b/src/components/ui/combobox/ComboboxControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/combobox/ComboboxInput.vue b/src/components/ui/combobox/ComboboxInput.vue new file mode 100644 index 0000000..e05a4d0 --- /dev/null +++ b/src/components/ui/combobox/ComboboxInput.vue @@ -0,0 +1,17 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItem.vue b/src/components/ui/combobox/ComboboxItem.vue new file mode 100644 index 0000000..7fd022b --- /dev/null +++ b/src/components/ui/combobox/ComboboxItem.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemGroup.vue b/src/components/ui/combobox/ComboboxItemGroup.vue new file mode 100644 index 0000000..dba8bce --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemGroup.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemGroupLabel.vue b/src/components/ui/combobox/ComboboxItemGroupLabel.vue new file mode 100644 index 0000000..15b56cf --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemGroupLabel.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemIndicator.vue b/src/components/ui/combobox/ComboboxItemIndicator.vue new file mode 100644 index 0000000..9691fc3 --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemIndicator.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/combobox/ComboboxItemText.vue b/src/components/ui/combobox/ComboboxItemText.vue new file mode 100644 index 0000000..bb949ef --- /dev/null +++ b/src/components/ui/combobox/ComboboxItemText.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/combobox/ComboboxLabel.vue b/src/components/ui/combobox/ComboboxLabel.vue new file mode 100644 index 0000000..4afa7a5 --- /dev/null +++ b/src/components/ui/combobox/ComboboxLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/combobox/ComboboxPositioner.vue b/src/components/ui/combobox/ComboboxPositioner.vue new file mode 100644 index 0000000..c61539c --- /dev/null +++ b/src/components/ui/combobox/ComboboxPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/combobox/ComboboxRoot.vue b/src/components/ui/combobox/ComboboxRoot.vue new file mode 100644 index 0000000..b0b8fb3 --- /dev/null +++ b/src/components/ui/combobox/ComboboxRoot.vue @@ -0,0 +1,47 @@ + + + diff --git a/src/components/ui/combobox/ComboboxTrigger.vue b/src/components/ui/combobox/ComboboxTrigger.vue new file mode 100644 index 0000000..9a729c7 --- /dev/null +++ b/src/components/ui/combobox/ComboboxTrigger.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/combobox/index.ts b/src/components/ui/combobox/index.ts new file mode 100644 index 0000000..ad0e146 --- /dev/null +++ b/src/components/ui/combobox/index.ts @@ -0,0 +1,13 @@ +export { default as ComboboxRoot } from "./ComboboxRoot.vue"; +export { default as ComboboxLabel } from "./ComboboxLabel.vue"; +export { default as ComboboxControl } from "./ComboboxControl.vue"; +export { default as ComboboxInput } from "./ComboboxInput.vue"; +export { default as ComboboxTrigger } from "./ComboboxTrigger.vue"; +export { default as ComboboxClearTrigger } from "./ComboboxClearTrigger.vue"; +export { default as ComboboxPositioner } from "./ComboboxPositioner.vue"; +export { default as ComboboxContent } from "./ComboboxContent.vue"; +export { default as ComboboxItemGroup } from "./ComboboxItemGroup.vue"; +export { default as ComboboxItemGroupLabel } from "./ComboboxItemGroupLabel.vue"; +export { default as ComboboxItem } from "./ComboboxItem.vue"; +export { default as ComboboxItemText } from "./ComboboxItemText.vue"; +export { default as ComboboxItemIndicator } from "./ComboboxItemIndicator.vue"; diff --git a/src/components/ui/datepicker/DatePickerClearTrigger.vue b/src/components/ui/datepicker/DatePickerClearTrigger.vue new file mode 100644 index 0000000..dbf8c39 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerClearTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerContent.vue b/src/components/ui/datepicker/DatePickerContent.vue new file mode 100644 index 0000000..0ffba93 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerContent.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerContext.vue b/src/components/ui/datepicker/DatePickerContext.vue new file mode 100644 index 0000000..a2d113d --- /dev/null +++ b/src/components/ui/datepicker/DatePickerContext.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerControl.vue b/src/components/ui/datepicker/DatePickerControl.vue new file mode 100644 index 0000000..ae17782 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerInput.vue b/src/components/ui/datepicker/DatePickerInput.vue new file mode 100644 index 0000000..d560f73 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerInput.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerLabel.vue b/src/components/ui/datepicker/DatePickerLabel.vue new file mode 100644 index 0000000..a04f4dc --- /dev/null +++ b/src/components/ui/datepicker/DatePickerLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerMonthSelect.vue b/src/components/ui/datepicker/DatePickerMonthSelect.vue new file mode 100644 index 0000000..89cd30d --- /dev/null +++ b/src/components/ui/datepicker/DatePickerMonthSelect.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerNextTrigger.vue b/src/components/ui/datepicker/DatePickerNextTrigger.vue new file mode 100644 index 0000000..8f758fc --- /dev/null +++ b/src/components/ui/datepicker/DatePickerNextTrigger.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerPositioner.vue b/src/components/ui/datepicker/DatePickerPositioner.vue new file mode 100644 index 0000000..f166e69 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerPositioner.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerPresetTrigger.vue b/src/components/ui/datepicker/DatePickerPresetTrigger.vue new file mode 100644 index 0000000..e9e5f95 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerPresetTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerPrevTrigger.vue b/src/components/ui/datepicker/DatePickerPrevTrigger.vue new file mode 100644 index 0000000..299fe73 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerPrevTrigger.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerRangeText.vue b/src/components/ui/datepicker/DatePickerRangeText.vue new file mode 100644 index 0000000..9cf24e8 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerRangeText.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerRoot.vue b/src/components/ui/datepicker/DatePickerRoot.vue new file mode 100644 index 0000000..21f0caf --- /dev/null +++ b/src/components/ui/datepicker/DatePickerRoot.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTable.vue b/src/components/ui/datepicker/DatePickerTable.vue new file mode 100644 index 0000000..fe7cb65 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTable.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableBody.vue b/src/components/ui/datepicker/DatePickerTableBody.vue new file mode 100644 index 0000000..b23b3cd --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableBody.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableCell.vue b/src/components/ui/datepicker/DatePickerTableCell.vue new file mode 100644 index 0000000..2ac4d20 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableCell.vue @@ -0,0 +1,45 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableCellTrigger.vue b/src/components/ui/datepicker/DatePickerTableCellTrigger.vue new file mode 100644 index 0000000..a0a2887 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableCellTrigger.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableHead.vue b/src/components/ui/datepicker/DatePickerTableHead.vue new file mode 100644 index 0000000..3536df3 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableHead.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableHeader.vue b/src/components/ui/datepicker/DatePickerTableHeader.vue new file mode 100644 index 0000000..d98f7c6 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableHeader.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTableRow.vue b/src/components/ui/datepicker/DatePickerTableRow.vue new file mode 100644 index 0000000..cf77514 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTableRow.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerTrigger.vue b/src/components/ui/datepicker/DatePickerTrigger.vue new file mode 100644 index 0000000..cb3fda1 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerView.vue b/src/components/ui/datepicker/DatePickerView.vue new file mode 100644 index 0000000..9b8c829 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerView.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerViewControl.vue b/src/components/ui/datepicker/DatePickerViewControl.vue new file mode 100644 index 0000000..02fd0c0 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerViewControl.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerViewTrigger.vue b/src/components/ui/datepicker/DatePickerViewTrigger.vue new file mode 100644 index 0000000..5e99f62 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerViewTrigger.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/datepicker/DatePickerYearSelect.vue b/src/components/ui/datepicker/DatePickerYearSelect.vue new file mode 100644 index 0000000..288f452 --- /dev/null +++ b/src/components/ui/datepicker/DatePickerYearSelect.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/datepicker/index.ts b/src/components/ui/datepicker/index.ts new file mode 100644 index 0000000..38d8257 --- /dev/null +++ b/src/components/ui/datepicker/index.ts @@ -0,0 +1,25 @@ +export { default as DatePickerRoot } from "./DatePickerRoot.vue"; +export { default as DatePickerLabel } from "./DatePickerLabel.vue"; +export { default as DatePickerControl } from "./DatePickerControl.vue"; +export { default as DatePickerInput } from "./DatePickerInput.vue"; +export { default as DatePickerTrigger } from "./DatePickerTrigger.vue"; +export { default as DatePickerClearTrigger } from "./DatePickerClearTrigger.vue"; +export { default as DatePickerPositioner } from "./DatePickerPositioner.vue"; +export { default as DatePickerContent } from "./DatePickerContent.vue"; +export { default as DatePickerYearSelect } from "./DatePickerYearSelect.vue"; +export { default as DatePickerMonthSelect } from "./DatePickerMonthSelect.vue"; +export { default as DatePickerView } from "./DatePickerView.vue"; +export { default as DatePickerViewControl } from "./DatePickerViewControl.vue"; +export { default as DatePickerPresetTrigger } from "./DatePickerPresetTrigger.vue"; +export { default as DatePickerPrevTrigger } from "./DatePickerPrevTrigger.vue"; +export { default as DatePickerViewTrigger } from "./DatePickerViewTrigger.vue"; +export { default as DatePickerNextTrigger } from "./DatePickerNextTrigger.vue"; +export { default as DatePickerRangeText } from "./DatePickerRangeText.vue"; +export { default as DatePickerTable } from "./DatePickerTable.vue"; +export { default as DatePickerTableHead } from "./DatePickerTableHead.vue"; +export { default as DatePickerTableRow } from "./DatePickerTableRow.vue"; +export { default as DatePickerTableHeader } from "./DatePickerTableHeader.vue"; +export { default as DatePickerTableBody } from "./DatePickerTableBody.vue"; +export { default as DatePickerTableCell } from "./DatePickerTableCell.vue"; +export { default as DatePickerTableCellTrigger } from "./DatePickerTableCellTrigger.vue"; +export { default as DatePickerContext } from "./DatePickerContext.vue"; diff --git a/src/components/ui/dialog/DialogBackdrop.vue b/src/components/ui/dialog/DialogBackdrop.vue new file mode 100644 index 0000000..2dce0b1 --- /dev/null +++ b/src/components/ui/dialog/DialogBackdrop.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogCloseTrigger.vue b/src/components/ui/dialog/DialogCloseTrigger.vue new file mode 100644 index 0000000..25f221a --- /dev/null +++ b/src/components/ui/dialog/DialogCloseTrigger.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/dialog/DialogContent.vue b/src/components/ui/dialog/DialogContent.vue new file mode 100644 index 0000000..f004126 --- /dev/null +++ b/src/components/ui/dialog/DialogContent.vue @@ -0,0 +1,38 @@ + + + diff --git a/src/components/ui/dialog/DialogDescription.vue b/src/components/ui/dialog/DialogDescription.vue new file mode 100644 index 0000000..0bc61dc --- /dev/null +++ b/src/components/ui/dialog/DialogDescription.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogPositioner.vue b/src/components/ui/dialog/DialogPositioner.vue new file mode 100644 index 0000000..945bd42 --- /dev/null +++ b/src/components/ui/dialog/DialogPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogRoot.vue b/src/components/ui/dialog/DialogRoot.vue new file mode 100644 index 0000000..d97f151 --- /dev/null +++ b/src/components/ui/dialog/DialogRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/dialog/DialogTitle.vue b/src/components/ui/dialog/DialogTitle.vue new file mode 100644 index 0000000..5436553 --- /dev/null +++ b/src/components/ui/dialog/DialogTitle.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/dialog/DialogTrigger.vue b/src/components/ui/dialog/DialogTrigger.vue new file mode 100644 index 0000000..29b3169 --- /dev/null +++ b/src/components/ui/dialog/DialogTrigger.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/dialog/index.ts b/src/components/ui/dialog/index.ts new file mode 100644 index 0000000..2599b5b --- /dev/null +++ b/src/components/ui/dialog/index.ts @@ -0,0 +1,8 @@ +export { default as DialogRoot } from "./DialogRoot.vue"; +export { default as DialogTrigger } from "./DialogTrigger.vue"; +export { default as DialogBackdrop } from "./DialogBackdrop.vue"; +export { default as DialogPositioner } from "./DialogPositioner.vue"; +export { default as DialogContent } from "./DialogContent.vue"; +export { default as DialogTitle } from "./DialogTitle.vue"; +export { default as DialogDescription } from "./DialogDescription.vue"; +export { default as DialogCloseTrigger } from "./DialogCloseTrigger.vue"; diff --git a/src/components/ui/field/Field.vue b/src/components/ui/field/Field.vue new file mode 100644 index 0000000..d74ec9b --- /dev/null +++ b/src/components/ui/field/Field.vue @@ -0,0 +1,24 @@ + + + diff --git a/src/components/ui/field/FieldContent.vue b/src/components/ui/field/FieldContent.vue new file mode 100644 index 0000000..a51efeb --- /dev/null +++ b/src/components/ui/field/FieldContent.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldDescription.vue b/src/components/ui/field/FieldDescription.vue new file mode 100644 index 0000000..bdb0934 --- /dev/null +++ b/src/components/ui/field/FieldDescription.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldError.vue b/src/components/ui/field/FieldError.vue new file mode 100644 index 0000000..db0f4d4 --- /dev/null +++ b/src/components/ui/field/FieldError.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/field/FieldGroup.vue b/src/components/ui/field/FieldGroup.vue new file mode 100644 index 0000000..a03cd06 --- /dev/null +++ b/src/components/ui/field/FieldGroup.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldLabel.vue b/src/components/ui/field/FieldLabel.vue new file mode 100644 index 0000000..3ae5b56 --- /dev/null +++ b/src/components/ui/field/FieldLabel.vue @@ -0,0 +1,15 @@ + + + diff --git a/src/components/ui/field/FieldLegend.vue b/src/components/ui/field/FieldLegend.vue new file mode 100644 index 0000000..52cc0b9 --- /dev/null +++ b/src/components/ui/field/FieldLegend.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/field/FieldSeparator.vue b/src/components/ui/field/FieldSeparator.vue new file mode 100644 index 0000000..8c0ceae --- /dev/null +++ b/src/components/ui/field/FieldSeparator.vue @@ -0,0 +1,19 @@ + + + diff --git a/src/components/ui/field/FieldSet.vue b/src/components/ui/field/FieldSet.vue new file mode 100644 index 0000000..07d94be --- /dev/null +++ b/src/components/ui/field/FieldSet.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/FieldTitle.vue b/src/components/ui/field/FieldTitle.vue new file mode 100644 index 0000000..934cc95 --- /dev/null +++ b/src/components/ui/field/FieldTitle.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/field/index.ts b/src/components/ui/field/index.ts new file mode 100644 index 0000000..909f2d6 --- /dev/null +++ b/src/components/ui/field/index.ts @@ -0,0 +1,10 @@ +export { default as Field } from "./Field.vue"; +export { default as FieldContent } from "./FieldContent.vue"; +export { default as FieldDescription } from "./FieldDescription.vue"; +export { default as FieldError } from "./FieldError.vue"; +export { default as FieldGroup } from "./FieldGroup.vue"; +export { default as FieldLabel } from "./FieldLabel.vue"; +export { default as FieldLegend } from "./FieldLegend.vue"; +export { default as FieldSeparator } from "./FieldSeparator.vue"; +export { default as FieldSet } from "./FieldSet.vue"; +export { default as FieldTitle } from "./FieldTitle.vue"; diff --git a/src/components/ui/file-icon/FileIcon.vue b/src/components/ui/file-icon/FileIcon.vue new file mode 100644 index 0000000..6b14b59 --- /dev/null +++ b/src/components/ui/file-icon/FileIcon.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/ui/file-icon/index.ts b/src/components/ui/file-icon/index.ts new file mode 100644 index 0000000..98b6760 --- /dev/null +++ b/src/components/ui/file-icon/index.ts @@ -0,0 +1 @@ +export { default as FileIcon } from "./FileIcon.vue"; diff --git a/src/components/ui/frame/Frame.vue b/src/components/ui/frame/Frame.vue new file mode 100644 index 0000000..662e944 --- /dev/null +++ b/src/components/ui/frame/Frame.vue @@ -0,0 +1,53 @@ + + + diff --git a/src/components/ui/frame/index.ts b/src/components/ui/frame/index.ts new file mode 100644 index 0000000..414d1e6 --- /dev/null +++ b/src/components/ui/frame/index.ts @@ -0,0 +1 @@ +export { default as Frame } from "./Frame.vue"; diff --git a/src/components/ui/input/Input.vue b/src/components/ui/input/Input.vue new file mode 100644 index 0000000..b8a8ca3 --- /dev/null +++ b/src/components/ui/input/Input.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/input/index.ts b/src/components/ui/input/index.ts new file mode 100644 index 0000000..110f046 --- /dev/null +++ b/src/components/ui/input/index.ts @@ -0,0 +1 @@ +export { default as Input } from "./Input.vue"; diff --git a/src/components/ui/label/Label.vue b/src/components/ui/label/Label.vue new file mode 100644 index 0000000..4c2138d --- /dev/null +++ b/src/components/ui/label/Label.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/label/index.ts b/src/components/ui/label/index.ts new file mode 100644 index 0000000..38eaa35 --- /dev/null +++ b/src/components/ui/label/index.ts @@ -0,0 +1 @@ +export { default as Label } from "./Label.vue"; diff --git a/src/components/ui/lucide/Lucide.vue b/src/components/ui/lucide/Lucide.vue new file mode 100644 index 0000000..1aa3974 --- /dev/null +++ b/src/components/ui/lucide/Lucide.vue @@ -0,0 +1,22 @@ + + + diff --git a/src/components/ui/lucide/index.ts b/src/components/ui/lucide/index.ts new file mode 100644 index 0000000..a2d4653 --- /dev/null +++ b/src/components/ui/lucide/index.ts @@ -0,0 +1 @@ +export { default as Lucide, type Icon } from './Lucide.vue' diff --git a/src/components/ui/map/Map.vue b/src/components/ui/map/Map.vue new file mode 100644 index 0000000..6ea0da3 --- /dev/null +++ b/src/components/ui/map/Map.vue @@ -0,0 +1,224 @@ + + + diff --git a/src/components/ui/map/index.ts b/src/components/ui/map/index.ts new file mode 100644 index 0000000..8aefb13 --- /dev/null +++ b/src/components/ui/map/index.ts @@ -0,0 +1 @@ +export { default as Map } from "./Map.vue"; diff --git a/src/components/ui/menu/MenuCheckboxItem.vue b/src/components/ui/menu/MenuCheckboxItem.vue new file mode 100644 index 0000000..9598658 --- /dev/null +++ b/src/components/ui/menu/MenuCheckboxItem.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/ui/menu/MenuContent.vue b/src/components/ui/menu/MenuContent.vue new file mode 100644 index 0000000..2b04673 --- /dev/null +++ b/src/components/ui/menu/MenuContent.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/menu/MenuIndicator.vue b/src/components/ui/menu/MenuIndicator.vue new file mode 100644 index 0000000..d4874e4 --- /dev/null +++ b/src/components/ui/menu/MenuIndicator.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/menu/MenuItem.vue b/src/components/ui/menu/MenuItem.vue new file mode 100644 index 0000000..bbdbcf1 --- /dev/null +++ b/src/components/ui/menu/MenuItem.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/ui/menu/MenuItemGroupLabel.vue b/src/components/ui/menu/MenuItemGroupLabel.vue new file mode 100644 index 0000000..bd586c4 --- /dev/null +++ b/src/components/ui/menu/MenuItemGroupLabel.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/menu/MenuPositioner.vue b/src/components/ui/menu/MenuPositioner.vue new file mode 100644 index 0000000..243228e --- /dev/null +++ b/src/components/ui/menu/MenuPositioner.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/menu/MenuRadioItem.vue b/src/components/ui/menu/MenuRadioItem.vue new file mode 100644 index 0000000..295f4a3 --- /dev/null +++ b/src/components/ui/menu/MenuRadioItem.vue @@ -0,0 +1,43 @@ + + + diff --git a/src/components/ui/menu/MenuRadioItemGroup.vue b/src/components/ui/menu/MenuRadioItemGroup.vue new file mode 100644 index 0000000..cf43fad --- /dev/null +++ b/src/components/ui/menu/MenuRadioItemGroup.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/menu/MenuRoot.vue b/src/components/ui/menu/MenuRoot.vue new file mode 100644 index 0000000..47df4c8 --- /dev/null +++ b/src/components/ui/menu/MenuRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/menu/MenuSeparator.vue b/src/components/ui/menu/MenuSeparator.vue new file mode 100644 index 0000000..5428aa7 --- /dev/null +++ b/src/components/ui/menu/MenuSeparator.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/menu/MenuTrigger.vue b/src/components/ui/menu/MenuTrigger.vue new file mode 100644 index 0000000..0d047eb --- /dev/null +++ b/src/components/ui/menu/MenuTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/menu/MenuTriggerItem.vue b/src/components/ui/menu/MenuTriggerItem.vue new file mode 100644 index 0000000..0001452 --- /dev/null +++ b/src/components/ui/menu/MenuTriggerItem.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/menu/index.ts b/src/components/ui/menu/index.ts new file mode 100644 index 0000000..33285b1 --- /dev/null +++ b/src/components/ui/menu/index.ts @@ -0,0 +1,12 @@ +export { default as MenuRoot } from "./MenuRoot.vue"; +export { default as MenuTrigger } from "./MenuTrigger.vue"; +export { default as MenuIndicator } from "./MenuIndicator.vue"; +export { default as MenuPositioner } from "./MenuPositioner.vue"; +export { default as MenuContent } from "./MenuContent.vue"; +export { default as MenuItem } from "./MenuItem.vue"; +export { default as MenuTriggerItem } from "./MenuTriggerItem.vue"; +export { default as MenuCheckboxItem } from "./MenuCheckboxItem.vue"; +export { default as MenuRadioItemGroup } from "./MenuRadioItemGroup.vue"; +export { default as MenuItemGroupLabel } from "./MenuItemGroupLabel.vue"; +export { default as MenuRadioItem } from "./MenuRadioItem.vue"; +export { default as MenuSeparator } from "./MenuSeparator.vue"; diff --git a/src/components/ui/pagination/PaginationContext.vue b/src/components/ui/pagination/PaginationContext.vue new file mode 100644 index 0000000..e63be73 --- /dev/null +++ b/src/components/ui/pagination/PaginationContext.vue @@ -0,0 +1,10 @@ + + + diff --git a/src/components/ui/pagination/PaginationEllipsis.vue b/src/components/ui/pagination/PaginationEllipsis.vue new file mode 100644 index 0000000..30beb0e --- /dev/null +++ b/src/components/ui/pagination/PaginationEllipsis.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/pagination/PaginationItem.vue b/src/components/ui/pagination/PaginationItem.vue new file mode 100644 index 0000000..fc8771f --- /dev/null +++ b/src/components/ui/pagination/PaginationItem.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/pagination/PaginationNextTrigger.vue b/src/components/ui/pagination/PaginationNextTrigger.vue new file mode 100644 index 0000000..541f454 --- /dev/null +++ b/src/components/ui/pagination/PaginationNextTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/pagination/PaginationPrevTrigger.vue b/src/components/ui/pagination/PaginationPrevTrigger.vue new file mode 100644 index 0000000..8762871 --- /dev/null +++ b/src/components/ui/pagination/PaginationPrevTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/pagination/PaginationRoot.vue b/src/components/ui/pagination/PaginationRoot.vue new file mode 100644 index 0000000..a1c85e9 --- /dev/null +++ b/src/components/ui/pagination/PaginationRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/pagination/index.ts b/src/components/ui/pagination/index.ts new file mode 100644 index 0000000..45612c8 --- /dev/null +++ b/src/components/ui/pagination/index.ts @@ -0,0 +1,6 @@ +export { default as PaginationContext } from "./PaginationContext.vue"; +export { default as PaginationEllipsis } from "./PaginationEllipsis.vue"; +export { default as PaginationItem } from "./PaginationItem.vue"; +export { default as PaginationNextTrigger } from "./PaginationNextTrigger.vue"; +export { default as PaginationPrevTrigger } from "./PaginationPrevTrigger.vue"; +export { default as PaginationRoot } from "./PaginationRoot.vue"; diff --git a/src/components/ui/password-input/PasswordInput.vue b/src/components/ui/password-input/PasswordInput.vue new file mode 100644 index 0000000..1dcef63 --- /dev/null +++ b/src/components/ui/password-input/PasswordInput.vue @@ -0,0 +1,57 @@ + + + diff --git a/src/components/ui/password-input/index.ts b/src/components/ui/password-input/index.ts new file mode 100644 index 0000000..3e7aa3f --- /dev/null +++ b/src/components/ui/password-input/index.ts @@ -0,0 +1 @@ +export { default as PasswordInput } from './PasswordInput.vue' diff --git a/src/components/ui/popover/PopoverArrow.vue b/src/components/ui/popover/PopoverArrow.vue new file mode 100644 index 0000000..129e0fb --- /dev/null +++ b/src/components/ui/popover/PopoverArrow.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/popover/PopoverArrowTip.vue b/src/components/ui/popover/PopoverArrowTip.vue new file mode 100644 index 0000000..18fca0e --- /dev/null +++ b/src/components/ui/popover/PopoverArrowTip.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/popover/PopoverContent.vue b/src/components/ui/popover/PopoverContent.vue new file mode 100644 index 0000000..b4ded8f --- /dev/null +++ b/src/components/ui/popover/PopoverContent.vue @@ -0,0 +1,34 @@ + + + diff --git a/src/components/ui/popover/PopoverDescription.vue b/src/components/ui/popover/PopoverDescription.vue new file mode 100644 index 0000000..96f547d --- /dev/null +++ b/src/components/ui/popover/PopoverDescription.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/popover/PopoverIndicator.vue b/src/components/ui/popover/PopoverIndicator.vue new file mode 100644 index 0000000..bfe0ea6 --- /dev/null +++ b/src/components/ui/popover/PopoverIndicator.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/popover/PopoverPositioner.vue b/src/components/ui/popover/PopoverPositioner.vue new file mode 100644 index 0000000..b66cec1 --- /dev/null +++ b/src/components/ui/popover/PopoverPositioner.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/popover/PopoverRoot.vue b/src/components/ui/popover/PopoverRoot.vue new file mode 100644 index 0000000..83bb860 --- /dev/null +++ b/src/components/ui/popover/PopoverRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/popover/PopoverTitle.vue b/src/components/ui/popover/PopoverTitle.vue new file mode 100644 index 0000000..84a4ace --- /dev/null +++ b/src/components/ui/popover/PopoverTitle.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/popover/PopoverTrigger.vue b/src/components/ui/popover/PopoverTrigger.vue new file mode 100644 index 0000000..7c3af4f --- /dev/null +++ b/src/components/ui/popover/PopoverTrigger.vue @@ -0,0 +1,30 @@ + + + diff --git a/src/components/ui/popover/index.ts b/src/components/ui/popover/index.ts new file mode 100644 index 0000000..5bdeecf --- /dev/null +++ b/src/components/ui/popover/index.ts @@ -0,0 +1,9 @@ +export { default as PopoverArrow } from "./PopoverArrow.vue"; +export { default as PopoverArrowTip } from "./PopoverArrowTip.vue"; +export { default as PopoverContent } from "./PopoverContent.vue"; +export { default as PopoverDescription } from "./PopoverDescription.vue"; +export { default as PopoverIndicator } from "./PopoverIndicator.vue"; +export { default as PopoverPositioner } from "./PopoverPositioner.vue"; +export { default as PopoverRoot } from "./PopoverRoot.vue"; +export { default as PopoverTitle } from "./PopoverTitle.vue"; +export { default as PopoverTrigger } from "./PopoverTrigger.vue"; diff --git a/src/components/ui/presence/Presence.vue b/src/components/ui/presence/Presence.vue new file mode 100644 index 0000000..018190f --- /dev/null +++ b/src/components/ui/presence/Presence.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/presence/index.ts b/src/components/ui/presence/index.ts new file mode 100644 index 0000000..fa686f8 --- /dev/null +++ b/src/components/ui/presence/index.ts @@ -0,0 +1 @@ +export { default as Presence } from "./Presence.vue"; diff --git a/src/components/ui/progress-circular/ProgressCircle.vue b/src/components/ui/progress-circular/ProgressCircle.vue new file mode 100644 index 0000000..148f538 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressCircle.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressCircleRange.vue b/src/components/ui/progress-circular/ProgressCircleRange.vue new file mode 100644 index 0000000..f824a93 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressCircleRange.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressCircleTrack.vue b/src/components/ui/progress-circular/ProgressCircleTrack.vue new file mode 100644 index 0000000..e21812f --- /dev/null +++ b/src/components/ui/progress-circular/ProgressCircleTrack.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressLabel.vue b/src/components/ui/progress-circular/ProgressLabel.vue new file mode 100644 index 0000000..34d27b5 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressRoot.vue b/src/components/ui/progress-circular/ProgressRoot.vue new file mode 100644 index 0000000..fceab70 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/progress-circular/ProgressValueText.vue b/src/components/ui/progress-circular/ProgressValueText.vue new file mode 100644 index 0000000..c0ed330 --- /dev/null +++ b/src/components/ui/progress-circular/ProgressValueText.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/progress-circular/index.ts b/src/components/ui/progress-circular/index.ts new file mode 100644 index 0000000..5c951ad --- /dev/null +++ b/src/components/ui/progress-circular/index.ts @@ -0,0 +1,6 @@ +export { default as ProgressCircle } from "./ProgressCircle.vue"; +export { default as ProgressCircleRange } from "./ProgressCircleRange.vue"; +export { default as ProgressCircleTrack } from "./ProgressCircleTrack.vue"; +export { default as ProgressLabel } from "./ProgressLabel.vue"; +export { default as ProgressRoot } from "./ProgressRoot.vue"; +export { default as ProgressValueText } from "./ProgressValueText.vue"; diff --git a/src/components/ui/progress-linear/ProgressLabel.vue b/src/components/ui/progress-linear/ProgressLabel.vue new file mode 100644 index 0000000..279ffc0 --- /dev/null +++ b/src/components/ui/progress-linear/ProgressLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressRange.vue b/src/components/ui/progress-linear/ProgressRange.vue new file mode 100644 index 0000000..c9c6314 --- /dev/null +++ b/src/components/ui/progress-linear/ProgressRange.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressRoot.vue b/src/components/ui/progress-linear/ProgressRoot.vue new file mode 100644 index 0000000..f005c65 --- /dev/null +++ b/src/components/ui/progress-linear/ProgressRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressTrack.vue b/src/components/ui/progress-linear/ProgressTrack.vue new file mode 100644 index 0000000..edb15bd --- /dev/null +++ b/src/components/ui/progress-linear/ProgressTrack.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/progress-linear/ProgressValueText.vue b/src/components/ui/progress-linear/ProgressValueText.vue new file mode 100644 index 0000000..4f5319d --- /dev/null +++ b/src/components/ui/progress-linear/ProgressValueText.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/progress-linear/index.ts b/src/components/ui/progress-linear/index.ts new file mode 100644 index 0000000..32eec20 --- /dev/null +++ b/src/components/ui/progress-linear/index.ts @@ -0,0 +1,5 @@ +export { default as ProgressLabel } from "./ProgressLabel.vue"; +export { default as ProgressRange } from "./ProgressRange.vue"; +export { default as ProgressRoot } from "./ProgressRoot.vue"; +export { default as ProgressTrack } from "./ProgressTrack.vue"; +export { default as ProgressValueText } from "./ProgressValueText.vue"; diff --git a/src/components/ui/radio-group/RadioGroupIndicator.vue b/src/components/ui/radio-group/RadioGroupIndicator.vue new file mode 100644 index 0000000..c008874 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupIndicator.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItem.vue b/src/components/ui/radio-group/RadioGroupItem.vue new file mode 100644 index 0000000..7780b01 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItem.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItemControl.vue b/src/components/ui/radio-group/RadioGroupItemControl.vue new file mode 100644 index 0000000..c2c89f1 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItemControl.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItemHiddenInput.vue b/src/components/ui/radio-group/RadioGroupItemHiddenInput.vue new file mode 100644 index 0000000..118cf69 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItemHiddenInput.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupItemText.vue b/src/components/ui/radio-group/RadioGroupItemText.vue new file mode 100644 index 0000000..3a23b1b --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupItemText.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupLabel.vue b/src/components/ui/radio-group/RadioGroupLabel.vue new file mode 100644 index 0000000..74ca31c --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/radio-group/RadioGroupRoot.vue b/src/components/ui/radio-group/RadioGroupRoot.vue new file mode 100644 index 0000000..2801467 --- /dev/null +++ b/src/components/ui/radio-group/RadioGroupRoot.vue @@ -0,0 +1,37 @@ + + + diff --git a/src/components/ui/radio-group/index.ts b/src/components/ui/radio-group/index.ts new file mode 100644 index 0000000..d6deb3c --- /dev/null +++ b/src/components/ui/radio-group/index.ts @@ -0,0 +1,7 @@ +export { default as RadioGroupRoot } from "./RadioGroupRoot.vue"; +export { default as RadioGroupLabel } from "./RadioGroupLabel.vue"; +export { default as RadioGroupIndicator } from "./RadioGroupIndicator.vue"; +export { default as RadioGroupItem } from "./RadioGroupItem.vue"; +export { default as RadioGroupItemText } from "./RadioGroupItemText.vue"; +export { default as RadioGroupItemControl } from "./RadioGroupItemControl.vue"; +export { default as RadioGroupItemHiddenInput } from "./RadioGroupItemHiddenInput.vue"; diff --git a/src/components/ui/scroll-area/ScrollAreaContent.vue b/src/components/ui/scroll-area/ScrollAreaContent.vue new file mode 100644 index 0000000..27b74b3 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaContent.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaCorner.vue b/src/components/ui/scroll-area/ScrollAreaCorner.vue new file mode 100644 index 0000000..de52649 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaCorner.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaRoot.vue b/src/components/ui/scroll-area/ScrollAreaRoot.vue new file mode 100644 index 0000000..7f57fa1 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaRoot.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaScrollbar.vue b/src/components/ui/scroll-area/ScrollAreaScrollbar.vue new file mode 100644 index 0000000..e2ba072 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaScrollbar.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaThumb.vue b/src/components/ui/scroll-area/ScrollAreaThumb.vue new file mode 100644 index 0000000..8de60a1 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaThumb.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/scroll-area/ScrollAreaViewport.vue b/src/components/ui/scroll-area/ScrollAreaViewport.vue new file mode 100644 index 0000000..2623b98 --- /dev/null +++ b/src/components/ui/scroll-area/ScrollAreaViewport.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/scroll-area/index.ts b/src/components/ui/scroll-area/index.ts new file mode 100644 index 0000000..ec972b4 --- /dev/null +++ b/src/components/ui/scroll-area/index.ts @@ -0,0 +1,7 @@ +export { default as ScrollAreaRoot } from "./ScrollAreaRoot.vue"; +export { default as ScrollAreaViewport } from "./ScrollAreaViewport.vue"; +export { default as ScrollAreaContent } from "./ScrollAreaContent.vue"; +export { default as ScrollAreaScrollbar } from "./ScrollAreaScrollbar.vue"; +export { default as ScrollAreaThumb } from "./ScrollAreaThumb.vue"; +export { default as ScrollAreaCorner } from "./ScrollAreaCorner.vue"; + diff --git a/src/components/ui/select/SelectClearTrigger.vue b/src/components/ui/select/SelectClearTrigger.vue new file mode 100644 index 0000000..3b5212e --- /dev/null +++ b/src/components/ui/select/SelectClearTrigger.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/select/SelectContent.vue b/src/components/ui/select/SelectContent.vue new file mode 100644 index 0000000..b0866df --- /dev/null +++ b/src/components/ui/select/SelectContent.vue @@ -0,0 +1,35 @@ + + + diff --git a/src/components/ui/select/SelectControl.vue b/src/components/ui/select/SelectControl.vue new file mode 100644 index 0000000..5080d27 --- /dev/null +++ b/src/components/ui/select/SelectControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/select/SelectHiddenSelect.vue b/src/components/ui/select/SelectHiddenSelect.vue new file mode 100644 index 0000000..d9c0ca5 --- /dev/null +++ b/src/components/ui/select/SelectHiddenSelect.vue @@ -0,0 +1,16 @@ + + + diff --git a/src/components/ui/select/SelectIndicator.vue b/src/components/ui/select/SelectIndicator.vue new file mode 100644 index 0000000..46b2b65 --- /dev/null +++ b/src/components/ui/select/SelectIndicator.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/select/SelectItem.vue b/src/components/ui/select/SelectItem.vue new file mode 100644 index 0000000..912d1a6 --- /dev/null +++ b/src/components/ui/select/SelectItem.vue @@ -0,0 +1,33 @@ + + + diff --git a/src/components/ui/select/SelectItemGroup.vue b/src/components/ui/select/SelectItemGroup.vue new file mode 100644 index 0000000..a5a1e57 --- /dev/null +++ b/src/components/ui/select/SelectItemGroup.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/select/SelectItemGroupLabel.vue b/src/components/ui/select/SelectItemGroupLabel.vue new file mode 100644 index 0000000..cab17e3 --- /dev/null +++ b/src/components/ui/select/SelectItemGroupLabel.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/select/SelectItemIndicator.vue b/src/components/ui/select/SelectItemIndicator.vue new file mode 100644 index 0000000..a0b123c --- /dev/null +++ b/src/components/ui/select/SelectItemIndicator.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/select/SelectItemText.vue b/src/components/ui/select/SelectItemText.vue new file mode 100644 index 0000000..6b821e5 --- /dev/null +++ b/src/components/ui/select/SelectItemText.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/select/SelectLabel.vue b/src/components/ui/select/SelectLabel.vue new file mode 100644 index 0000000..865b5ce --- /dev/null +++ b/src/components/ui/select/SelectLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/select/SelectPositioner.vue b/src/components/ui/select/SelectPositioner.vue new file mode 100644 index 0000000..c01b96b --- /dev/null +++ b/src/components/ui/select/SelectPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/select/SelectRoot.vue b/src/components/ui/select/SelectRoot.vue new file mode 100644 index 0000000..6f53b9a --- /dev/null +++ b/src/components/ui/select/SelectRoot.vue @@ -0,0 +1,41 @@ + + + diff --git a/src/components/ui/select/SelectTrigger.vue b/src/components/ui/select/SelectTrigger.vue new file mode 100644 index 0000000..69f4017 --- /dev/null +++ b/src/components/ui/select/SelectTrigger.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/select/SelectValueText.vue b/src/components/ui/select/SelectValueText.vue new file mode 100644 index 0000000..7356d93 --- /dev/null +++ b/src/components/ui/select/SelectValueText.vue @@ -0,0 +1,26 @@ + + + diff --git a/src/components/ui/select/index.ts b/src/components/ui/select/index.ts new file mode 100644 index 0000000..42cd444 --- /dev/null +++ b/src/components/ui/select/index.ts @@ -0,0 +1,15 @@ +export { default as SelectClearTrigger } from "./SelectClearTrigger.vue"; +export { default as SelectContent } from "./SelectContent.vue"; +export { default as SelectControl } from "./SelectControl.vue"; +export { default as SelectHiddenSelect } from "./SelectHiddenSelect.vue"; +export { default as SelectIndicator } from "./SelectIndicator.vue"; +export { default as SelectItem } from "./SelectItem.vue"; +export { default as SelectItemGroup } from "./SelectItemGroup.vue"; +export { default as SelectItemGroupLabel } from "./SelectItemGroupLabel.vue"; +export { default as SelectItemIndicator } from "./SelectItemIndicator.vue"; +export { default as SelectItemText } from "./SelectItemText.vue"; +export { default as SelectLabel } from "./SelectLabel.vue"; +export { default as SelectPositioner } from "./SelectPositioner.vue"; +export { default as SelectRoot } from "./SelectRoot.vue"; +export { default as SelectTrigger } from "./SelectTrigger.vue"; +export { default as SelectValueText } from "./SelectValueText.vue"; diff --git a/src/components/ui/separator/Separator.vue b/src/components/ui/separator/Separator.vue new file mode 100644 index 0000000..f1dadc5 --- /dev/null +++ b/src/components/ui/separator/Separator.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/separator/index.ts b/src/components/ui/separator/index.ts new file mode 100644 index 0000000..aae7f1a --- /dev/null +++ b/src/components/ui/separator/index.ts @@ -0,0 +1 @@ +export { default as Separator } from "./Separator.vue"; diff --git a/src/components/ui/sheet/SheetBackdrop.vue b/src/components/ui/sheet/SheetBackdrop.vue new file mode 100644 index 0000000..1e84cf7 --- /dev/null +++ b/src/components/ui/sheet/SheetBackdrop.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetCloseTrigger.vue b/src/components/ui/sheet/SheetCloseTrigger.vue new file mode 100644 index 0000000..fb8d404 --- /dev/null +++ b/src/components/ui/sheet/SheetCloseTrigger.vue @@ -0,0 +1,44 @@ + + + diff --git a/src/components/ui/sheet/SheetContent.vue b/src/components/ui/sheet/SheetContent.vue new file mode 100644 index 0000000..9eb9c01 --- /dev/null +++ b/src/components/ui/sheet/SheetContent.vue @@ -0,0 +1,40 @@ + + + diff --git a/src/components/ui/sheet/SheetDescription.vue b/src/components/ui/sheet/SheetDescription.vue new file mode 100644 index 0000000..362e013 --- /dev/null +++ b/src/components/ui/sheet/SheetDescription.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetPositioner.vue b/src/components/ui/sheet/SheetPositioner.vue new file mode 100644 index 0000000..9abde8b --- /dev/null +++ b/src/components/ui/sheet/SheetPositioner.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetRoot.vue b/src/components/ui/sheet/SheetRoot.vue new file mode 100644 index 0000000..e3d5894 --- /dev/null +++ b/src/components/ui/sheet/SheetRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/sheet/SheetTitle.vue b/src/components/ui/sheet/SheetTitle.vue new file mode 100644 index 0000000..5a2e13a --- /dev/null +++ b/src/components/ui/sheet/SheetTitle.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/sheet/SheetTrigger.vue b/src/components/ui/sheet/SheetTrigger.vue new file mode 100644 index 0000000..634db69 --- /dev/null +++ b/src/components/ui/sheet/SheetTrigger.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/sheet/index.ts b/src/components/ui/sheet/index.ts new file mode 100644 index 0000000..08a9d59 --- /dev/null +++ b/src/components/ui/sheet/index.ts @@ -0,0 +1,8 @@ +export { default as SheetRoot } from "./SheetRoot.vue"; +export { default as SheetTrigger } from "./SheetTrigger.vue"; +export { default as SheetBackdrop } from "./SheetBackdrop.vue"; +export { default as SheetPositioner } from "./SheetPositioner.vue"; +export { default as SheetContent } from "./SheetContent.vue"; +export { default as SheetTitle } from "./SheetTitle.vue"; +export { default as SheetDescription } from "./SheetDescription.vue"; +export { default as SheetCloseTrigger } from "./SheetCloseTrigger.vue"; diff --git a/src/components/ui/slider/SliderControl.vue b/src/components/ui/slider/SliderControl.vue new file mode 100644 index 0000000..cf5a95a --- /dev/null +++ b/src/components/ui/slider/SliderControl.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderHiddenInput.vue b/src/components/ui/slider/SliderHiddenInput.vue new file mode 100644 index 0000000..296650e --- /dev/null +++ b/src/components/ui/slider/SliderHiddenInput.vue @@ -0,0 +1,18 @@ + + + diff --git a/src/components/ui/slider/SliderLabel.vue b/src/components/ui/slider/SliderLabel.vue new file mode 100644 index 0000000..f314b9a --- /dev/null +++ b/src/components/ui/slider/SliderLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/slider/SliderMarker.vue b/src/components/ui/slider/SliderMarker.vue new file mode 100644 index 0000000..0d8fc9a --- /dev/null +++ b/src/components/ui/slider/SliderMarker.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/slider/SliderMarkerGroup.vue b/src/components/ui/slider/SliderMarkerGroup.vue new file mode 100644 index 0000000..53dcca0 --- /dev/null +++ b/src/components/ui/slider/SliderMarkerGroup.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderRange.vue b/src/components/ui/slider/SliderRange.vue new file mode 100644 index 0000000..93f63e2 --- /dev/null +++ b/src/components/ui/slider/SliderRange.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderRoot.vue b/src/components/ui/slider/SliderRoot.vue new file mode 100644 index 0000000..4e9c79d --- /dev/null +++ b/src/components/ui/slider/SliderRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/slider/SliderThumb.vue b/src/components/ui/slider/SliderThumb.vue new file mode 100644 index 0000000..1f52346 --- /dev/null +++ b/src/components/ui/slider/SliderThumb.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/slider/SliderTrack.vue b/src/components/ui/slider/SliderTrack.vue new file mode 100644 index 0000000..b033aa3 --- /dev/null +++ b/src/components/ui/slider/SliderTrack.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/slider/SliderValueText.vue b/src/components/ui/slider/SliderValueText.vue new file mode 100644 index 0000000..2617a0f --- /dev/null +++ b/src/components/ui/slider/SliderValueText.vue @@ -0,0 +1,25 @@ + + + diff --git a/src/components/ui/slider/index.ts b/src/components/ui/slider/index.ts new file mode 100644 index 0000000..f41c7f4 --- /dev/null +++ b/src/components/ui/slider/index.ts @@ -0,0 +1,10 @@ +export { default as SliderRoot } from "./SliderRoot.vue"; +export { default as SliderLabel } from "./SliderLabel.vue"; +export { default as SliderValueText } from "./SliderValueText.vue"; +export { default as SliderControl } from "./SliderControl.vue"; +export { default as SliderTrack } from "./SliderTrack.vue"; +export { default as SliderRange } from "./SliderRange.vue"; +export { default as SliderThumb } from "./SliderThumb.vue"; +export { default as SliderHiddenInput } from "./SliderHiddenInput.vue"; +export { default as SliderMarkerGroup } from "./SliderMarkerGroup.vue"; +export { default as SliderMarker } from "./SliderMarker.vue"; diff --git a/src/components/ui/slot/index.ts b/src/components/ui/slot/index.ts new file mode 100644 index 0000000..90871a5 --- /dev/null +++ b/src/components/ui/slot/index.ts @@ -0,0 +1,59 @@ +import { + defineComponent, + h, + cloneVNode, + Fragment, + isVNode, + type VNode, + type PropType, +} from "vue"; +import { calculateSlot, flattenItems, type AnyProps } from "./slot"; + +/* ------------------------------------------------------------------------------------------------- + * Vue Implementation (Component Shell) + * -----------------------------------------------------------------------------------------------*/ + +export const Slot = defineComponent({ + name: "Slot", + inheritAttrs: false, + props: { + children: { + type: [Object, Array] as PropType, + }, + }, + setup(props, { attrs, slots }) { + return () => { + const raw = props.children ?? slots.default?.(); + + const isValidVNode = (item: any): item is VNode => isVNode(item) && typeof item.type !== "symbol"; + + // Use generic flatten logic with Vue-specific adapter + // Aligned with React's flatten(children) logic + const items = flattenItems( + raw as any, + (item) => isVNode(item) && item.type === Fragment, + (item) => (isVNode(item) && Array.isArray(item.children) ? (item.children as VNode[]) : []) + ).filter(isValidVNode); + + // Use our vanilla logic to determine the transform + const result = calculateSlot({ + props: attrs as AnyProps, + items, + isValid: isValidVNode, + getProps: (item) => (item.props as AnyProps) || {}, + getChildren: (item) => item.children, + }); + + // If it's a wrapper, we render a real div + if (result.type === "wrapper") { + return h("div", result.props, result.children as any); + } + + // If it's slotted, we clone the target VNode with merged props + const target = result.target; + return cloneVNode(target, result.props, false); + }; + }, +}); + +export { Slot as Root }; diff --git a/src/components/ui/slot/slot.ts b/src/components/ui/slot/slot.ts new file mode 100644 index 0000000..e7ce2ac --- /dev/null +++ b/src/components/ui/slot/slot.ts @@ -0,0 +1,133 @@ +export type AnyProps = Record; + +export interface SlotParams { + props: AnyProps; + items: T[]; + isValid: (item: T) => boolean; + getProps: (item: T) => AnyProps; + getChildren: (item: T) => any; +} + +export type SlotResult = + | { + type: "slotted"; + target: T; + props: AnyProps; + children: any; + } + | { + type: "wrapper"; + target: "div"; + props: AnyProps; + children: T[]; + }; + +/** + * mergeProps: Pure vanilla logic to combine attributes/props. + * Enhanced to handle framework-agnostic class merging and deduplication. + */ +export function mergeProps(slotProps: AnyProps, childProps: AnyProps): AnyProps { + const result: AnyProps = { ...childProps }; + + for (const key in slotProps) { + const slotValue = slotProps[key]; + + // 1. Event Handlers (Merge them to execute both) + const isHandler = /^on[A-Z]/.test(key); + if (isHandler) { + const childValue = childProps[key]; + if (typeof slotValue === "function" && typeof childValue === "function") { + result[key] = (...args: any[]) => { + childValue(...args); + slotValue(...args); + }; + } else if (slotValue) { + result[key] = slotValue; + } + continue; + } + + // 2. Class Names (Handle 'class' and 'className' as synonyms) + if (key === "class" || key === "className") { + const slotClasses = (slotValue || "").split(/\s+/); + const childClasses = (childProps.class || childProps.className || "").split(/\s+/); + + // Deduplicate classes + const combined = Array.from(new Set([...slotClasses, ...childClasses])) + .filter(Boolean) + .join(" "); + + // Update the key that was provided, and sync the other if it exists + result[key] = combined; + const otherKey = key === "class" ? "className" : "class"; + if (otherKey in childProps) { + result[otherKey] = combined; + } + continue; + } + + // 3. Styles (Object merge) + if (key === "style") { + result[key] = { ...slotValue, ...childProps.style }; + continue; + } + + // 4. Default attribute override + if (childProps[key] === undefined) { + result[key] = slotValue; + } + } + + return result; +} + +/** + * flattenItems: A generic utility to flatten hierarchies based on a marker (like Fragments). + */ +export function flattenItems( + items: T | T[], + isFragment: (item: T) => boolean, + getChildren: (item: T) => T | T[] +): T[] { + const result: T[] = []; + const list = Array.isArray(items) ? items : [items]; + + list.forEach((item) => { + if (item === null || item === undefined) return; + + if (isFragment(item)) { + const children = getChildren(item); + result.push(...flattenItems(children, isFragment, getChildren)); + } else { + result.push(item); + } + }); + + return result; +} + +/** + * calculateSlot: Decides which element gets the props. + */ +export function calculateSlot(params: SlotParams): SlotResult { + const { props, items, isValid, getProps, getChildren } = params; + + if (items.length === 1) { + const primary = items[0]; + if (primary !== undefined && isValid(primary)) { + return { + type: "slotted", + target: primary, + props: mergeProps(props, getProps(primary)), + children: getChildren(primary), + }; + } + } + + return { + type: "wrapper", + target: "div", + props: props, + children: items, + }; +} diff --git a/src/components/ui/styles/accordion.styles.ts b/src/components/ui/styles/accordion.styles.ts new file mode 100644 index 0000000..74b9857 --- /dev/null +++ b/src/components/ui/styles/accordion.styles.ts @@ -0,0 +1,39 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const accordionRootVariants = cva("flex flex-col", { + variants: { + variant: { + default: "-mt-4 -mb-3", + boxed: "gap-3", + }, + }, + defaultVariants: { + variant: "default", + }, +}); +export const accordionItemVariants = cva("group", { + variants: { + variant: { + default: "border-b border-b-foreground/10 last:border-b-transparent", + boxed: "py-0 px-4", + }, + }, + defaultVariants: { + variant: "default", + }, +}); +export const accordionTrigger = + "group-hover:underline cursor-pointer w-full flex items-center font-medium py-4"; +export const accordionItemIndicator = + "ms-auto opacity-70 [&>svg]:size-4 data-[state=open]:rotate-180 transition"; +export const accordionContent = + "-mt-1 pb-4 opacity-80 data-[state=open]:animate-in data-[state=open]:zoom-in-95 data-[state=open]:fade-in-0"; + +// Types +export type AccordionRootVariants = { + variant?: VariantProps["variant"]; +}; +export type AccordionItemVariants = { + variant?: VariantProps["variant"]; +}; diff --git a/src/components/ui/styles/alert.styles.ts b/src/components/ui/styles/alert.styles.ts new file mode 100644 index 0000000..99077f6 --- /dev/null +++ b/src/components/ui/styles/alert.styles.ts @@ -0,0 +1,134 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +export const alertRootVariants = cva( + [ + "flex flex-col gap-1 [&>svg]:size-5 [&>svg]:absolute [&>svg]:my-auto [&>svg]:inset-y-0 [&>svg]:left-5 [&>svg]:stroke-[1.5] has-[>svg]:ps-14 ps-5 pe-20 py-4", + "rounded-xl shadow-md/5 isolate relative cursor-pointer", + "before:absolute after:absolute before:z-[-1] after:z-[-1] before:rounded-[inherit] after:rounded-[inherit]", + ], + { + variants: { + variant: { + ghost: "after:from-transparent bg-transparent text-foreground", + primary: "after:from-primary/40 bg-primary text-primary-foreground", + secondary: + "after:from-secondary/40 bg-secondary text-secondary-foreground", + success: "after:from-success/40 bg-success text-success-foreground", + danger: "after:from-danger/40 bg-danger text-danger-foreground", + pending: "after:from-pending/40 bg-pending text-pending-foreground", + warning: "after:from-warning/40 bg-warning text-warning-foreground", + }, + look: { + filled: [ + "dark:outline-2 dark:outline-black/30", + "before:inset-0 before:bg-gradient-to-b before:from-white/40 before:to-white/[.05]", + "after:inset-[2px] after:bg-gradient-to-b after:to-white/[.08] after:rounded-[calc(var(--radius)*0.9)]", + "dark:before:from-black/[.5] dark:before:to-black/70", + "dark:after:from-black/[.3] dark:after:to-black/[.1]", + ], + outline: + "before:bg-none before:border before:rounded-[inherit] before:inset-0 after:hidden bg-background", + flat: "before:inset-0 dark:before:inset-0 dark:before:bg-black/60", + text: "before:hidden shadow-none bg-transparent", + }, + }, + compoundVariants: [ + { + variant: "ghost", + look: "flat", + class: "dark:before:bg-transparent", + }, + { + variant: "ghost", + look: "outline", + class: + "before:bg-foreground/10 dark:before:bg-foreground/[.15] before:border-foreground/40 dark:before:border-foreground/20 text-foreground", + }, + { + variant: "primary", + look: "outline", + class: + "before:bg-primary/10 dark:before:bg-primary/[.15] before:border-primary/40 dark:before:border-primary/20 text-primary", + }, + { + variant: "secondary", + look: "outline", + class: + "before:bg-secondary/10 dark:before:bg-secondary/[.15] before:border-secondary/40 dark:before:border-secondary/20 text-secondary", + }, + { + variant: "success", + look: "outline", + class: + "before:bg-success/10 dark:before:bg-success/[.15] before:border-success/40 dark:before:border-success/20 text-success", + }, + { + variant: "danger", + look: "outline", + class: + "before:bg-danger/10 dark:before:bg-danger/[.15] before:border-danger/40 dark:before:border-danger/20 text-danger", + }, + { + variant: "pending", + look: "outline", + class: + "before:bg-pending/10 dark:before:bg-pending/[.15] before:border-pending/40 dark:before:border-pending/20 text-pending", + }, + { + variant: "warning", + look: "outline", + class: + "before:bg-warning/10 dark:before:bg-warning/[.15] before:border-warning/40 dark:before:border-warning/20 text-warning", + }, + { + variant: "ghost", + look: "text", + class: "text-foreground", + }, + { + variant: "primary", + look: "text", + class: "text-primary", + }, + { + variant: "secondary", + look: "text", + class: "text-secondary", + }, + { + variant: "success", + look: "text", + class: "text-success", + }, + { + variant: "danger", + look: "text", + class: "text-danger", + }, + { + variant: "pending", + look: "text", + class: "text-pending", + }, + { + variant: "warning", + look: "text", + class: "text-warning", + }, + ], + defaultVariants: { + variant: "primary", + look: "flat", + }, + } +); + +export type AlertRootVariants = { + look?: VariantProps["look"]; + variant?: VariantProps["variant"]; +}; + +export const alertTitle = "font-medium"; +export const alertDescription = "opacity-70"; +export const alertCloseTrigger = + "absolute right-5 inset-y-0 my-auto size-4 [&>svg]:size-full cursor-pointer"; diff --git a/src/components/ui/styles/avatar.styles.ts b/src/components/ui/styles/avatar.styles.ts new file mode 100644 index 0000000..a941c4c --- /dev/null +++ b/src/components/ui/styles/avatar.styles.ts @@ -0,0 +1,24 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const avatarRootVariants = cva( + "size-14 rounded-xl overflow-hidden relative bg-foreground/5 flex items-center justify-center border-3 ring-1 border-transparent", + { + variants: { + bordered: { + true: "ring-foreground/20", + false: "ring-transparent border-none", + }, + }, + defaultVariants: { + bordered: true, + }, + } +); +export const avatarFallback = "font-medium"; +export const avatarImage = "absolute top-0 size-full object-cover"; + +// Types +export type AvatarRootVariants = { + bordered?: VariantProps["bordered"]; +}; diff --git a/src/components/ui/styles/badge.styles.ts b/src/components/ui/styles/badge.styles.ts new file mode 100644 index 0000000..44dbac6 --- /dev/null +++ b/src/components/ui/styles/badge.styles.ts @@ -0,0 +1,130 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const badgeVariants = cva( + [ + "text-xs rounded-lg shadow-md/5 isolate relative px-2 py-0.5 cursor-pointer inline-flex items-center justify-center gap-1 whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 [&_svg]:pointer-events-none [&_svg]:size-3.5 [&_svg]:stroke-2 [&_svg]:shrink-0", + "before:absolute after:absolute before:z-[-1] after:z-[-1] before:rounded-[inherit] after:rounded-[inherit]", + ], + { + variants: { + variant: { + ghost: "after:from-transparent bg-transparent text-foreground", + primary: "after:from-primary/40 bg-primary text-primary-foreground", + secondary: + "after:from-secondary/40 bg-secondary text-secondary-foreground", + success: "after:from-success/40 bg-success text-success-foreground", + danger: "after:from-danger/40 bg-danger text-danger-foreground", + pending: "after:from-pending/40 bg-pending text-pending-foreground", + warning: "after:from-warning/40 bg-warning text-warning-foreground", + }, + look: { + filled: [ + "dark:outline-2 dark:outline-black/30", + "before:inset-0 before:bg-gradient-to-b before:from-white/40 before:to-white/[.05]", + "after:inset-[2px] after:bg-gradient-to-b after:to-white/[.08] after:rounded-[calc(var(--radius)*0.7)]", + "dark:before:from-black/[.5] dark:before:to-black/70", + "dark:after:from-black/[.3] dark:after:to-black/[.1]", + ], + outline: + "before:bg-none before:border before:rounded-[inherit] before:inset-0 after:hidden bg-background", + flat: "before:inset-0 dark:before:inset-0 dark:before:bg-black/60", + text: "before:hidden shadow-none bg-transparent", + }, + }, + compoundVariants: [ + { + variant: "ghost", + look: "flat", + class: "dark:before:bg-transparent", + }, + { + variant: "ghost", + look: "outline", + class: + "before:bg-foreground/10 dark:before:bg-foreground/[.15] before:border-foreground/40 dark:before:border-foreground/20 text-foreground", + }, + { + variant: "primary", + look: "outline", + class: + "before:bg-primary/10 dark:before:bg-primary/[.15] before:border-primary/40 dark:before:border-primary/20 text-primary", + }, + { + variant: "secondary", + look: "outline", + class: + "before:bg-secondary/10 dark:before:bg-secondary/[.15] before:border-secondary/40 dark:before:border-secondary/20 text-secondary", + }, + { + variant: "success", + look: "outline", + class: + "before:bg-success/10 dark:before:bg-success/[.15] before:border-success/40 dark:before:border-success/20 text-success", + }, + { + variant: "danger", + look: "outline", + class: + "before:bg-danger/10 dark:before:bg-danger/[.15] before:border-danger/40 dark:before:border-danger/20 text-danger", + }, + { + variant: "pending", + look: "outline", + class: + "before:bg-pending/10 dark:before:bg-pending/[.15] before:border-pending/40 dark:before:border-pending/20 text-pending", + }, + { + variant: "warning", + look: "outline", + class: + "before:bg-warning/10 dark:before:bg-warning/[.15] before:border-warning/40 dark:before:border-warning/20 text-warning", + }, + { + variant: "ghost", + look: "text", + class: "text-foreground", + }, + { + variant: "primary", + look: "text", + class: "text-primary", + }, + { + variant: "secondary", + look: "text", + class: "text-secondary", + }, + { + variant: "success", + look: "text", + class: "text-success", + }, + { + variant: "danger", + look: "text", + class: "text-danger", + }, + { + variant: "pending", + look: "text", + class: "text-pending", + }, + { + variant: "warning", + look: "text", + class: "text-warning", + }, + ], + defaultVariants: { + variant: "primary", + look: "flat", + }, + } +); + +// Types +export type BadgeVariants = { + look?: VariantProps["look"]; + variant?: VariantProps["variant"]; +}; diff --git a/src/components/ui/styles/box.styles.ts b/src/components/ui/styles/box.styles.ts new file mode 100644 index 0000000..eb3a081 --- /dev/null +++ b/src/components/ui/styles/box.styles.ts @@ -0,0 +1,24 @@ +import { cva, type VariantProps } from 'class-variance-authority' + +export const boxVariants = cva( + 'shadow-md/5 bg-background bg-gradient-to-b from-transparent to-foreground/[.03] dark:to-foreground/5 border border-foreground/10 rounded-xl p-5 outline-none relative before:absolute after:absolute', + { + variants: { + raised: { + single: [ + 'mb-3', + 'before:inset-x-2.5 before:h-[10px] before:bg-background before:-bottom-[11px] before:rounded-b-xl before:border-x before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60 dark:before:opacity-100', + ], + double: [ + 'mb-5', + 'before:inset-x-2.5 before:h-[10px] before:bg-background before:-bottom-[11px] before:rounded-b-xl before:border-x before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60 dark:before:opacity-100', + 'after:inset-x-5 after:h-[10px] after:bg-background after:-bottom-[21px] after:rounded-b-xl after:border-x after:border-b after:border-foreground/10 after:z-[-2] after:shadow-md/5 after:opacity-50 dark:after:opacity-90', + ], + }, + }, + }, +) + +export type BoxVariants = { + raised?: VariantProps['raised'] +} diff --git a/src/components/ui/styles/breadcrumb.styles.ts b/src/components/ui/styles/breadcrumb.styles.ts new file mode 100644 index 0000000..8cf4c5d --- /dev/null +++ b/src/components/ui/styles/breadcrumb.styles.ts @@ -0,0 +1,4 @@ +export const breadcrumbList = + '[&>svg]:size-4 [&>svg]:stroke-[1.3] flex items-center gap-1.5 text-foreground/70' +export const breadcrumbItem = 'hover:text-foreground last:text-foreground' +export const breadcrumbLink = 'cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]' diff --git a/src/components/ui/styles/button.styles.ts b/src/components/ui/styles/button.styles.ts new file mode 100644 index 0000000..a8db2d5 --- /dev/null +++ b/src/components/ui/styles/button.styles.ts @@ -0,0 +1,137 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +export const buttonVariants = cva( + [ + "shadow-md/5 isolate relative py-2 cursor-pointer inline-flex items-center justify-center gap-2 whitespace-nowrap font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-3.5 [&_svg]:stroke-2 [&_svg]:shrink-0", + "before:absolute after:absolute before:z-[-1] after:z-[-1] before:rounded-[inherit] after:rounded-[inherit]", + ], + { + variants: { + variant: { + ghost: + "after:from-transparent bg-transparent hover:bg-foreground/5 text-foreground", + primary: "after:from-primary/40 bg-primary text-primary-foreground", + secondary: + "after:from-secondary/40 bg-secondary text-secondary-foreground", + success: "after:from-success/40 bg-success text-success-foreground", + danger: "after:from-danger/40 bg-danger text-danger-foreground", + pending: "after:from-pending/40 bg-pending text-pending-foreground", + warning: "after:from-warning/40 bg-warning text-warning-foreground", + }, + size: { + sm: "h-9 rounded-(--radius) px-3 text-sm", + default: "h-10 rounded-(--radius) px-4 text-sm", + lg: "h-11 rounded-(--radius) px-5 text-base", + xl: "h-13 rounded-(--radius) px-6 text-base", + }, + look: { + filled: [ + "dark:outline-2 dark:outline-black/30", + "before:inset-0 before:bg-gradient-to-b before:from-white/40 before:to-white/[.05] hover:before:from-white/50", + "after:inset-[2px] after:bg-gradient-to-b after:to-white/[.08] after:rounded-[calc(var(--radius)*0.7)]", + "dark:before:from-black/[.5] dark:before:to-black/70 hover:dark:before:from-black/[.4]", + "dark:after:from-black/[.3] dark:after:to-black/[.1]", + ], + outline: + "before:bg-none before:border before:rounded-[inherit] before:inset-0 after:hidden bg-background", + flat: "hover:before:bg-white/5 before:inset-0 dark:before:inset-0 dark:before:bg-black/60 hover:dark:before:bg-black/55", + text: "before:hidden shadow-none bg-transparent", + }, + }, + compoundVariants: [ + { + variant: "ghost", + look: "flat", + class: "dark:before:bg-transparent", + }, + { + variant: "ghost", + look: "outline", + class: + "before:bg-foreground/10 hover:before:bg-foreground/15 dark:before:bg-foreground/[.15] hover:dark:before:bg-foreground/20 before:border-foreground/40 dark:before:border-foreground/20 text-foreground", + }, + { + variant: "primary", + look: "outline", + class: + "before:bg-primary/10 hover:before:bg-primary/15 dark:before:bg-primary/[.15] hover:dark:before:bg-primary/20 before:border-primary/40 dark:before:border-primary/20 text-primary", + }, + { + variant: "secondary", + look: "outline", + class: + "before:bg-secondary/10 hover:before:bg-secondary/15 dark:before:bg-secondary/[.15] hover:dark:before:bg-secondary/20 before:border-secondary/40 dark:before:border-secondary/20 text-secondary", + }, + { + variant: "success", + look: "outline", + class: + "before:bg-success/10 hover:before:bg-success/15 dark:before:bg-success/[.15] hover:dark:before:bg-success/20 before:border-success/40 dark:before:border-success/20 text-success", + }, + { + variant: "danger", + look: "outline", + class: + "before:bg-danger/10 hover:before:bg-danger/15 dark:before:bg-danger/[.15] hover:dark:before:bg-danger/20 before:border-danger/40 dark:before:border-danger/20 text-danger", + }, + { + variant: "pending", + look: "outline", + class: + "before:bg-pending/10 hover:before:bg-pending/15 dark:before:bg-pending/[.15] hover:dark:before:bg-pending/20 before:border-pending/40 dark:before:border-pending/20 text-pending", + }, + { + variant: "warning", + look: "outline", + class: + "before:bg-warning/10 hover:before:bg-warning/15 dark:before:bg-warning/[.15] hover:dark:before:bg-warning/20 before:border-warning/40 dark:before:border-warning/20 text-warning", + }, + { + variant: "ghost", + look: "text", + class: "text-foreground", + }, + { + variant: "primary", + look: "text", + class: "text-primary", + }, + { + variant: "secondary", + look: "text", + class: "text-secondary", + }, + { + variant: "success", + look: "text", + class: "text-success", + }, + { + variant: "danger", + look: "text", + class: "text-danger", + }, + { + variant: "pending", + look: "text", + class: "text-pending", + }, + { + variant: "warning", + look: "text", + class: "text-warning", + }, + ], + defaultVariants: { + variant: "primary", + size: "default", + look: "flat", + }, + } +); + +export type ButtonVariants = { + look?: VariantProps["look"]; + variant?: VariantProps["variant"]; + size?: VariantProps["size"]; +}; diff --git a/src/components/ui/styles/carousel.styles.ts b/src/components/ui/styles/carousel.styles.ts new file mode 100644 index 0000000..be919a2 --- /dev/null +++ b/src/components/ui/styles/carousel.styles.ts @@ -0,0 +1,14 @@ +export const carouselRoot = "relative"; +export const carouselControl = + "absolute size-full flex place-content-between items-center"; +export const carouselPrevTrigger = + "rounded-full p-2.5 h-9 -ms-12 border border-foreground/15"; +export const carouselNextTrigger = + "rounded-full p-2.5 h-9 -me-12 border border-foreground/15"; +export const carouselIndicatorGroup = + "absolute inset-x-0 bottom-0 z-5 w-full flex gap-1.5 justify-center mb-6"; +export const carouselIndicator = + "size-3 border border-foreground/10 bg-background/40 rounded-full data-[current]:bg-background/70 data-[current]:border-foreground/20 data-[current]:shadow-md/5"; +export const carouselItemGroup = "size-full"; +export const carouselItem = + "relative size-full overflow-hidden [&>img]:absolute [&>img]:inset-0 [&>img]:size-full [&>img]:object-cover"; diff --git a/src/components/ui/styles/chart.styles.ts b/src/components/ui/styles/chart.styles.ts new file mode 100644 index 0000000..3a4730b --- /dev/null +++ b/src/components/ui/styles/chart.styles.ts @@ -0,0 +1 @@ +export const chart = ""; diff --git a/src/components/ui/styles/checkbox.styles.ts b/src/components/ui/styles/checkbox.styles.ts new file mode 100644 index 0000000..3c61118 --- /dev/null +++ b/src/components/ui/styles/checkbox.styles.ts @@ -0,0 +1,7 @@ +export const checkboxRoot = "flex items-center gap-3"; +export const checkboxLabel = ""; +export const checkboxControl = + "bg-background relative size-4 border shadow-md/5 border-foreground/15 dark:border-foreground/25 rounded-md"; +export const checkboxIndicator = + "[&>svg]:absolute [&>svg]:inset-0 [&>svg]:m-auto [&>svg]:size-3 [&>svg]:stroke-3"; +export const checkboxHiddenInput = ""; diff --git a/src/components/ui/styles/combobox.styles.ts b/src/components/ui/styles/combobox.styles.ts new file mode 100644 index 0000000..6f48b60 --- /dev/null +++ b/src/components/ui/styles/combobox.styles.ts @@ -0,0 +1,18 @@ +export const comboboxRoot = + "w-full flex flex-col gap-2.5 [&[data-multiple=true]_[data-part=clear-trigger]]:block"; +export const comboboxLabel = ""; +export const comboboxControl = "relative"; +export const comboboxInput = "flex-none"; +export const comboboxTrigger = + "font-normal text-foreground/70 w-full border border-foreground/15 bg-background [&>div]:truncate [&>svg]:ms-auto"; +export const comboboxClearTrigger = + "text-danger/90 cursor-pointer text-xs hidden ms-1"; +export const comboboxPositioner = "!z-50 !w-auto"; +export const comboboxContent = + "min-w-(--reference-width) p-0 z-(--layer-index) [&>div]:p-4 [&>div]:max-h-78 [&>div]:overflow-y-auto [&>div]:flex [&>div]:flex-col [&>div]:gap-5"; +export const comboboxItemGroup = "flex flex-col gap-3"; +export const comboboxItemGroupLabel = "px-1 text-xs opacity-70 mb-0.5"; +export const comboboxItem = + "flex items-center py-1 px-2.5 -mx-1.5 -my-1 hover:bg-foreground/[.04] rounded-lg cursor-pointer"; +export const comboboxItemText = ""; +export const comboboxItemIndicator = "ms-auto opacity-70"; diff --git a/src/components/ui/styles/datepicker.styles.ts b/src/components/ui/styles/datepicker.styles.ts new file mode 100644 index 0000000..2714064 --- /dev/null +++ b/src/components/ui/styles/datepicker.styles.ts @@ -0,0 +1,34 @@ +export const datePickerRoot = "w-full flex flex-col gap-2.5"; +export const datePickerLabel = ""; +export const datePickerControl = "flex gap-2.5"; +export const datePickerInput = ""; +export const datePickerTrigger = "border border-foreground/15 bg-background"; +export const datePickerClearTrigger = + "border border-foreground/15 bg-background"; +export const datePickerPositioner = "!z-50 !w-auto"; +export const datePickerContent = + "min-w-(--reference-width) p-0 z-(--layer-index) [&>div]:p-4 [&>div]:grid [&>div]:grid-cols-2 [&>div]:gap-x-2.5 [&>div]:gap-y-3 [&>div>div]:col-span-2"; +export const datePickerYearSelect = + "shadow-none w-auto inline px-3 py-1.5 h-auto mb-2.5"; +export const datePickerMonthSelect = + "shadow-none w-auto inline px-3 py-1.5 h-auto mb-2.5"; +export const datePickerView = "flex flex-col gap-2"; +export const datePickerViewControl = "flex"; +export const datePickerPresetTrigger = + "border border-foreground/15 bg-background"; +export const datePickerPrevTrigger = + "px-2.5 py-1.5 rounded-lg hover:bg-foreground/5 cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]"; +export const datePickerViewTrigger = + "mx-auto px-4 py-1.5 rounded-lg hover:bg-foreground/5 cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]"; +export const datePickerNextTrigger = + "px-2.5 py-1.5 rounded-lg hover:bg-foreground/5 cursor-pointer [&>svg]:size-4 [&>svg]:stroke-[1.5]"; +export const datePickerRangeText = "mx-auto font-medium"; +export const datePickerTable = + "w-full text-center border-separate border-spacing-y-2 border-spacing-x-1.5"; +export const datePickerTableHead = ""; +export const datePickerTableRow = ""; +export const datePickerTableHeader = "font-normal opacity-70"; +export const datePickerTableBody = ""; +export const datePickerTableCell = ""; +export const datePickerTableCellTrigger = + "px-1.5 py-1 rounded-lg hover:bg-foreground/5 cursor-pointer data-[selected]:bg-foreground/70 data-[in-range]:bg-foreground/10 data-[selected]:text-background data-[disabled]:opacity-70"; diff --git a/src/components/ui/styles/dialog.styles.ts b/src/components/ui/styles/dialog.styles.ts new file mode 100644 index 0000000..8143c71 --- /dev/null +++ b/src/components/ui/styles/dialog.styles.ts @@ -0,0 +1,14 @@ +export const dialogTrigger = ""; +export const dialogBackdrop = + "fixed inset-0 bg-black/80 z-70 [&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0"; +export const dialogPositioner = ""; +export const dialogContent = [ + "px-6 pt-6 pb-7 rounded-2xl outline-none backdrop-blur-lg fixed top-[50%] left-[50%] z-70 w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] sm:max-w-lg", + "[&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='open']]:zoom-in-80 [&[data-state='open']]:duration-250", + "[&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0 [&[data-state='closed']]:zoom-out-80 [&[data-state='closed']]:duration-400", + "before:mx-2.5 after:mx-3.5", +]; +export const dialogTitle = "font-medium text-base relative -mt-.5"; +export const dialogDescription = "opacity-80 py-2 relative"; +export const dialogCloseTrigger = + "absolute right-0 top-0 p-0 size-8 rounded-full -mt-2 -me-2 border border-foreground/10 bg-background dark:bg-background hover:bg-background before:hidden dark:before:block before:absolute before:-inset-px before:bg-background dark:before:bg-foreground/20 before:z-[-1] before:rounded-full"; diff --git a/src/components/ui/styles/field.styles.ts b/src/components/ui/styles/field.styles.ts new file mode 100644 index 0000000..51a50ab --- /dev/null +++ b/src/components/ui/styles/field.styles.ts @@ -0,0 +1,51 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const fieldVariants = cva( + "data-[invalid=true]:text-danger gap-2 group/field flex w-full", + { + variants: { + orientation: { + vertical: "flex-col *:w-full [&>.sr-only]:w-auto", + horizontal: + "flex-row items-center *:data-[part=field-label]:flex-auto has-[>[data-part=field-content]]:items-start has-[>[data-part=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px", + responsive: + "flex-col *:w-full [&>.sr-only]:w-auto @md/field-group:flex-row @md/field-group:items-center @md/field-group:*:w-auto @md/field-group:*:data-[part=field-label]:flex-auto @md/field-group:has-[>[data-part=field-content]]:items-start @md/field-group:has-[>[data-part=field-content]]:[&>[role=checkbox],[role=radio]]:mt-px", + }, + }, + defaultVariants: { + orientation: "vertical", + }, + } +); +export const fieldContent = + "gap-0.5 group/field-content flex flex-1 flex-col leading-snug"; +export const fieldDescription = [ + "text-foreground/70 text-left text-sm [[data-variant=legend]+&]:-mt-1.5 leading-normal font-normal group-has-data-horizontal/field:text-balance", + "last:mt-0 nth-last-2:-mt-1", + "[&>a:hover]:text-primary [&>a]:underline [&>a]:underline-offset-4", +]; +export const fieldError = + "text-danger text-sm font-normal [&>ul]:ml-4 [&>ul]:flex [&>ul]:list-disc [&>ul]:flex-col [&>ul]:gap-1"; +export const fieldGroup = + "gap-5 data-[part=checkbox-group]:gap-3 *:data-[part=field-group]:gap-4 group/field-group @container/field-group flex w-full flex-col"; +export const fieldLabel = [ + "has-data-[state='checked']:bg-foreground/5 has-data-[state='checked']:border-foreground/30 dark:has-data-[state='checked']:border-foreground/20 dark:has-data-[state='checked']:bg-foreground/10 gap-2 group-data-[disabled=true]/field:opacity-50 has-[>[data-part=field]]:rounded-(--radius) has-[>[data-part=field]]:border has-[>[data-part=field]]:border-foreground/15 *:data-[part=field]:p-3.5 group/field-label peer/field-label flex w-fit leading-snug", + "has-[>[data-part=field]]:w-full has-[>[data-part=field]]:flex-col", +]; +export const fieldLegend = + "mb-1.5 font-medium data-[variant=label]:text-sm data-[variant=legend]:text-base"; +export const fieldSeparator = [ + "-my-2 h-5 text-sm group-data-[variant=outline]/field-group:-mb-2 relative", + "[&>[data-part='separator']]:absolute [&>[data-part='separator']]:inset-0 [&>[data-part='separator']]:top-1/2", + "[&>[data-part='field-separator-content']]:text-foreground/70 [&>[data-part='field-separator-content']]:px-2 [&>[data-part='field-separator-content']]:bg-background [&>[data-part='field-separator-content']]:relative [&>[data-part='field-separator-content']]:mx-auto [&>[data-part='field-separator-content']]:block [&>[data-part='field-separator-content']]:w-fit", +]; +export const fieldSet = + "gap-4 has-[>[data-part=checkbox-group]]:gap-3 has-[>[data-part=radio-group]]:gap-3 flex flex-col"; +export const fieldTitle = + "gap-2 text-sm font-medium group-data-[disabled=true]/field:opacity-50 flex w-fit items-center leading-snug"; + +// Types +export type FieldVariants = { + orientation?: VariantProps["orientation"]; +}; diff --git a/src/components/ui/styles/input.styles.ts b/src/components/ui/styles/input.styles.ts new file mode 100644 index 0000000..874a418 --- /dev/null +++ b/src/components/ui/styles/input.styles.ts @@ -0,0 +1,5 @@ +export const input = [ + 'file:text-foreground placeholder:text-foreground/80 selection:bg-foreground/70 selection:text-background flex h-10 w-full min-w-0 rounded-xl border border-foreground/15 backdrop-blur-lg bg-background px-3 py-1 text-base shadow-sm/5 transition-[color,box-shadow] outline-none file:inline-flex file:h-7 file:border-0 file:bg-transparent file:text-sm file:font-medium disabled:pointer-events-none disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', + 'focus-visible:border-ring focus-visible:ring-foreground/10 focus-visible:ring-[3px]', + 'aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40 aria-invalid:border-danger', +] diff --git a/src/components/ui/styles/label.styles.ts b/src/components/ui/styles/label.styles.ts new file mode 100644 index 0000000..3b0b652 --- /dev/null +++ b/src/components/ui/styles/label.styles.ts @@ -0,0 +1 @@ +export const label = "font-medium"; diff --git a/src/components/ui/styles/map.styles.ts b/src/components/ui/styles/map.styles.ts new file mode 100644 index 0000000..5289f24 --- /dev/null +++ b/src/components/ui/styles/map.styles.ts @@ -0,0 +1,9 @@ +export const map = [ + "data-[part='root']:relative data-[part='root']:contrast-105 data-[part='root']:grayscale dark:data-[part='root']:contrast-[.9] dark:data-[part='root']:invert", + "dark:[&_[data-part='controls']]:invert [&_[data-part='controls']]:absolute [&_[data-part='controls']]:top-2 [&_[data-part='controls']]:right-2 [&_[data-part='controls']]:flex [&_[data-part='controls']]:flex-col [&_[data-part='controls']]:gap-1 [&_[data-part='controls']]:z-50", + "[&_[data-part='zoom-in']]:bg-background", + "[&_[data-part='zoom-out']]:bg-background", + "[&_[data-part='reset-north']]:bg-background", + "[&_[data-part='locate']]:bg-background", + "[&_[data-part='toggle-fullscreen']]:bg-background", +]; diff --git a/src/components/ui/styles/menu.styles.ts b/src/components/ui/styles/menu.styles.ts new file mode 100644 index 0000000..43353b2 --- /dev/null +++ b/src/components/ui/styles/menu.styles.ts @@ -0,0 +1,33 @@ +export const menuRoot = "w-full"; +export const menuTrigger = + "w-full font-normal border border-foreground/15 bg-background"; +export const menuIndicator = "ms-auto transition data-[state=open]:rotate-180"; +export const menuPositioner = "!z-50"; +export const menuContent = + "min-w-46 w-(--reference-width) p-0 z-(--layer-index) [&>div]:flex [&>div]:flex-col [&>div]:gap-2.5 [&>div]:p-4 [&>div]:max-h-78 [&>div]:overflow-y-auto"; +export const menuItem = [ + // Default + "[&>div:nth-of-type(1)]:flex [&>div:nth-of-type(1)]:items-center [&>div:nth-of-type(1)]:gap-2.5 relative flex items-center py-1 px-2.5 -mx-1.5 -my-1 hover:bg-foreground/[.04] rounded-lg cursor-pointer", + + // Nested menu chevron + "[&_[data-part='nested-menu-chevron']]:size-4 [&_[data-part='nested-menu-chevron']]:stroke-[1.3] [&_[data-part='nested-menu-chevron']]:-me-1 [&_[data-part='nested-menu-chevron']]:ms-auto", + + // Shortcut + "[&>div:nth-of-type(2)]:text-foreground/50 [&>div:nth-of-type(2)]:text-xs [&>div:nth-of-type(2)]:ms-auto", + + // Disabled + "data-disabled:opacity-50 data-disabled:hover:bg-background data-disabled:cursor-not-allowed", + + // Checkbox + "[&[data-type=checkbox]_[data-part='item-indicator']_svg]:stroke-3 [&[data-type=checkbox]>div:nth-of-type(1)]:before:absolute [&[data-type=checkbox]>div:nth-of-type(1)]:before:size-4 [&[data-type=checkbox]>div:nth-of-type(1)]:before:border [&[data-type=checkbox]>div:nth-of-type(1)]:before:shadow-md/5 [&[data-type=checkbox]>div:nth-of-type(1)]:before:border-foreground/15 [&[data-type=checkbox]>div:nth-of-type(1)]:before:rounded-md [&[data-type=checkbox]>div:nth-of-type(1)]:before:inset-y-0 [&[data-type=checkbox]>div:nth-of-type(1)]:before:my-auto [&[data-type=checkbox]>div:nth-of-type(1)]:before:start-2", + + // Radio + "[&[data-type=radio]_[data-part='item-indicator']_svg]:stroke-10 [&[data-type=radio]>div:nth-of-type(1)]:before:absolute [&[data-type=radio]>div:nth-of-type(1)]:before:size-4 [&[data-type=radio]>div:nth-of-type(1)]:before:border [&[data-type=radio]>div:nth-of-type(1)]:before:shadow-md/5 [&[data-type=radio]>div:nth-of-type(1)]:before:border-foreground/15 [&[data-type=radio]>div:nth-of-type(1)]:before:rounded-full [&[data-type=radio]>div:nth-of-type(1)]:before:inset-y-0 [&[data-type=radio]>div:nth-of-type(1)]:before:my-auto [&[data-type=radio]>div:nth-of-type(1)]:before:start-2", + + // Checkbox & radio svg + "has-[[data-part='item-indicator']]:ps-9 [&_[data-part='item-indicator']]:absolute [&_[data-part='item-indicator']]:start-2.5 [&_[data-part='item-indicator']_svg]:size-3", +]; +export const menuRadioItemGroup = "flex flex-col gap-3"; +export const menuItemGroupLabel = + "-mx-4 px-4 -mt-4 py-2.5 border-b border-foreground/10 text-foreground/70"; +export const menuSeparator = "border-foreground/10 -mx-4 my-1"; diff --git a/src/components/ui/styles/native-select.styles.ts b/src/components/ui/styles/native-select.styles.ts new file mode 100644 index 0000000..3e96a2f --- /dev/null +++ b/src/components/ui/styles/native-select.styles.ts @@ -0,0 +1,3 @@ +export const nativeSelect = "appearance-none text-foreground/70"; +export const nativeSelectOption = ""; +export const NativeSelectOptGroup = ""; diff --git a/src/components/ui/styles/pagination.styles.ts b/src/components/ui/styles/pagination.styles.ts new file mode 100644 index 0000000..1e0683e --- /dev/null +++ b/src/components/ui/styles/pagination.styles.ts @@ -0,0 +1,9 @@ +export const paginationRoot = 'flex gap-1' +export const paginationItem = [ + 'h-10 min-w-10 px-3 py-2 inline-flex items-center justify-center rounded-xl cursor-pointer text-foreground hover:bg-foreground/5', + 'data-[selected]:border data-[selected]:bg-primary/10 data-[selected]:border-primary/30 data-[selected]:text-primary data-[selected]:font-semibold data-[selected]:shadow-md/5', + 'data-[disabled]:opacity-70', +] +export const paginationPrevTrigger = paginationItem +export const paginationNextTrigger = paginationItem +export const paginationEllipsis = paginationItem diff --git a/src/components/ui/styles/popover.styles.ts b/src/components/ui/styles/popover.styles.ts new file mode 100644 index 0000000..65a6aba --- /dev/null +++ b/src/components/ui/styles/popover.styles.ts @@ -0,0 +1,13 @@ +export const popoverRoot = '' +export const popoverTrigger = 'border border-foreground/15 bg-background' +export const popoverPositioner = '!z-50' +export const popoverContent = 'min-w-46 w-(--reference-width) z-(--layer-index)' +export const popoverArrow = '[--arrow-size:10px]' +export const popoverArrowTip = [ + '[--arrow-background:var(--color-background)] rounded-tl-sm', + 'before:absolute before:inset-0 before:bg-background dark:before:bg-background/10 before:rounded-tl-sm before:border-s before:border-t before:border-foreground/10', +] +export const popoverTitle = 'font-medium text-base' +export const popoverDescription = 'opacity-80 py-1 relative' +export const popoverIndicator = 'ms-auto transition data-[state=open]:rotate-180' +export const popoverCloseTrigger = '' diff --git a/src/components/ui/styles/progress-circular.styles.ts b/src/components/ui/styles/progress-circular.styles.ts new file mode 100644 index 0000000..3339881 --- /dev/null +++ b/src/components/ui/styles/progress-circular.styles.ts @@ -0,0 +1,8 @@ +export const progressRoot = "flex flex-col items-center w-full gap-2.5"; +export const progressLabel = ""; +export const progressValueText = "text-xs font-medium flex justify-center"; +export const progressCircle = + "aspect-square [--size:100%] [--thickness:calc(var(--spacing)*1.5)]"; +export const progressCircleTrack = "stroke-foreground/10"; +export const progressCircleRange = + "[stroke-linecap:round] stroke-foreground/70 transition-all duration-500"; diff --git a/src/components/ui/styles/progress-linear.styles.ts b/src/components/ui/styles/progress-linear.styles.ts new file mode 100644 index 0000000..ee1083f --- /dev/null +++ b/src/components/ui/styles/progress-linear.styles.ts @@ -0,0 +1,6 @@ +export const progressRoot = "flex flex-col items-center w-full gap-2.5"; +export const progressLabel = ""; +export const progressValueText = "text-xs font-medium flex justify-center"; +export const progressTrack = "bg-foreground/10 h-1.5 w-full rounded-full"; +export const progressRange = + "bg-foreground/70 h-full rounded-full transition-all duration-500"; diff --git a/src/components/ui/styles/radio-group.styles.ts b/src/components/ui/styles/radio-group.styles.ts new file mode 100644 index 0000000..6d0f3c8 --- /dev/null +++ b/src/components/ui/styles/radio-group.styles.ts @@ -0,0 +1,9 @@ +export const radioGroupRoot = "flex flex-col gap-2.5"; +export const radioGroupLabel = ""; +export const radioGroupIndicator = + "left-(--left) top-(--top) h-(--height) w-4 [&>svg]:absolute [&>svg]:inset-0 [&>svg]:m-auto [&>svg]:size-3 [&>svg]:stroke-10"; +export const radioGroupItem = "relative flex items-center gap-3"; +export const radioGroupItemText = ""; +export const radioGroupItemControl = + "bg-background size-4 border shadow-md/5 border-foreground/15 dark:border-foreground/25 rounded-full"; +export const radioGroupItemHiddenInput = ""; diff --git a/src/components/ui/styles/scroll-area.styles.ts b/src/components/ui/styles/scroll-area.styles.ts new file mode 100644 index 0000000..0e488bf --- /dev/null +++ b/src/components/ui/styles/scroll-area.styles.ts @@ -0,0 +1,16 @@ +export const scrollAreaRoot = ""; +export const scrollAreaViewport = "h-full [scrollbar-width:none] [&::-webkit-scrollbar]:hidden"; +export const scrollAreaScrollbar = [ + "flex relative bg-foreground/5 rounded-md m-2 opacity-0 transition-opacity duration-150 pointer-events-none", + "before:content-[''] before:absolute", + "data-[scrolling]:duration-[0ms]", + "data-[hover]:opacity-100 data-[scrolling]:opacity-100 data-[hover]:pointer-events-auto data-[scrolling]:pointer-events-auto", + "data-[orientation=vertical]:w-2 data-[orientation=vertical]:before:w-5 data-[orientation=vertical]:before:h-full data-[orientation=vertical]:before:left-1/2 data-[orientation=vertical]:before:-translate-x-1/2 data-[orientation=vertical]:[&:not([data-overflow-y])]:hidden", + "data-[orientation=horizontal]:h-2 data-[orientation=horizontal]:before:w-full data-[orientation=horizontal]:before:h-5 data-[orientation=horizontal]:before:left-0 data-[orientation=horizontal]:before:right-0 data-[orientation=horizontal]:before:bottom-[-0.5rem] data-[orientation=horizontal]:[&:not([data-overflow-x])]:hidden", +]; +export const scrollAreaThumb = + "w-full rounded-[inherit] bg-foreground/20 data-[orientation=horizontal]:w-auto data-[orientation=horizontal]:h-full"; +export const scrollAreaContent = ""; +export const scrollAreaCorner = "bg-transparent"; + + diff --git a/src/components/ui/styles/select.styles.ts b/src/components/ui/styles/select.styles.ts new file mode 100644 index 0000000..1f8a7aa --- /dev/null +++ b/src/components/ui/styles/select.styles.ts @@ -0,0 +1,21 @@ +export const selectRoot = + "w-full flex flex-col gap-2.5 [&[data-multiple=true]_[data-part=clear-trigger]]:block"; +export const selectLabel = ""; +export const selectControl = "relative"; +export const selectTrigger = + "w-full font-normal text-foreground/70 border border-foreground/15 bg-background"; +export const selectValueText = "truncate"; +export const selectIndicator = + "ms-auto transition data-[state=open]:rotate-180"; +export const selectClearTrigger = + "text-danger/90 cursor-pointer text-xs hidden ms-1"; +export const selectPositioner = "!z-50 !w-auto"; +export const selectContent = + "min-w-(--reference-width) p-0 z-(--layer-index) [&>div]:p-4 [&>div]:max-h-78 [&>div]:overflow-y-auto [&>div]:flex [&>div]:flex-col [&>div]:gap-5"; +export const selectItemGroup = "flex flex-col gap-3"; +export const selectItemGroupLabel = "px-1 text-xs opacity-70 mb-0.5"; +export const selectItem = + "flex items-center py-1 px-2.5 -mx-1.5 -my-1 hover:bg-foreground/[.04] rounded-lg cursor-pointer"; +export const selectItemText = ""; +export const selectItemIndicator = "ms-auto opacity-70"; +export const selectHiddenSelect = ""; diff --git a/src/components/ui/styles/separator.style.ts b/src/components/ui/styles/separator.style.ts new file mode 100644 index 0000000..b00bbe5 --- /dev/null +++ b/src/components/ui/styles/separator.style.ts @@ -0,0 +1,2 @@ +export const separator = + "bg-border shrink-0 data-horizontal:h-px data-horizontal:w-full data-vertical:w-px data-vertical:self-stretch"; diff --git a/src/components/ui/styles/separator.styles.ts b/src/components/ui/styles/separator.styles.ts new file mode 100644 index 0000000..050061b --- /dev/null +++ b/src/components/ui/styles/separator.styles.ts @@ -0,0 +1,2 @@ +export const separator = + "bg-foreground/15 shrink-0 data-[orientation='horizontal']:h-px data-[orientation='horizontal']:w-full data-[orientation='vertical']:w-px data-[orientation='vertical']:self-stretch"; diff --git a/src/components/ui/styles/sheet.styles.ts b/src/components/ui/styles/sheet.styles.ts new file mode 100644 index 0000000..d14cf58 --- /dev/null +++ b/src/components/ui/styles/sheet.styles.ts @@ -0,0 +1,30 @@ +export const sheetTrigger = ""; +export const sheetBackdrop = + "fixed inset-0 bg-black/80 z-70 [&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0"; +export const sheetPositioner = ""; +export const sheetContent = [ + "px-6 pt-6 pb-7 rounded-2xl outline-none backdrop-blur-lg fixed z-70", + "[&[data-state='open']]:animate-in [&[data-state='open']]:fade-in-0 [&[data-state='open']]:duration-250", + "[&[data-state='closed']]:animate-out [&[data-state='closed']]:fade-out-0 [&[data-state='closed']]:duration-400", + "before:mx-2.5 after:mx-3.5", + + // Right + "[&[data-side='right']]:inset-y-3 [&[data-side='right']]:right-3 [&[data-side='right']]:w-3/4 [&[data-side='right']]:sm:max-w-sm", + "[&[data-side='right'][data-state='closed']]:slide-out-to-right [&[data-side='right'][data-state='open']]:slide-in-from-right", + + // Left + "[&[data-side='left']]:inset-y-3 [&[data-side='left']]:left-3 [&[data-side='left']]:w-3/4 [&[data-side='left']]:sm:max-w-sm", + "[&[data-side='left'][data-state='closed']]:slide-out-to-left [&[data-side='left'][data-state='open']]:slide-in-from-left", + + // Top + "[&[data-side='top']]:inset-x-3 [&[data-side='top']]:top-3", + "[&[data-side='top'][data-state='closed']]:slide-out-to-top [&[data-side='top'][data-state='open']]:slide-in-from-top", + + // Bottom + "[&[data-side='bottom']]:inset-x-3 [&[data-side='bottom']]:bottom-3", + "[&[data-side='bottom'][data-state='closed']]:slide-out-to-bottom [&[data-side='bottom'][data-state='open']]:slide-in-from-bottom", +]; +export const sheetTitle = "font-medium text-lg relative -mt-.5"; +export const sheetDescription = "opacity-80 py-2 relative"; +export const sheetCloseTrigger = + "absolute right-0 top-0 p-0 size-8 rounded-full -mt-2 -me-2 border border-foreground/10 bg-background dark:bg-background hover:bg-background before:hidden dark:before:block before:absolute before:-inset-px before:bg-background dark:before:bg-foreground/20 before:z-[-1] before:rounded-full"; diff --git a/src/components/ui/styles/slider.styles.ts b/src/components/ui/styles/slider.styles.ts new file mode 100644 index 0000000..0503d33 --- /dev/null +++ b/src/components/ui/styles/slider.styles.ts @@ -0,0 +1,14 @@ +export const sliderRoot = "w-full flex flex-col gap-3"; +export const sliderLabel = ""; +export const sliderValueText = "text-xs font-medium flex justify-center"; +export const sliderControl = ""; +export const sliderTrack = "bg-foreground/10 h-1.5 w-full rounded-full"; +export const sliderRange = "h-full absolute bg-foreground/70 rounded-full"; +export const sliderThumb = + "bg-background size-4 rounded-full inset-y-0 my-auto shadow-md/5 border-2 border-foreground/70"; +export const sliderHiddenInput = ""; +export const sliderMarkerGroup = "h-6"; +export const sliderMarker = [ + "text-xs opacity-80 relative mt-3.5", + "before:size-1 before:absolute before:inset-0 before:rounded-full before:bg-foreground/40 before:mx-auto before:-mt-3", +]; diff --git a/src/components/ui/styles/switch.styles.ts b/src/components/ui/styles/switch.styles.ts new file mode 100644 index 0000000..2298c92 --- /dev/null +++ b/src/components/ui/styles/switch.styles.ts @@ -0,0 +1,7 @@ +export const switchRoot = "flex items-center gap-3"; +export const switchControl = + "relative block h-6 w-12 rounded-full bg-foreground/5 dark:bg-foreground/10 transition border border-foreground/10 data-[state=checked]:bg-foreground/30"; +export const switchThumb = + "data-[state=checked]:start-1/2 transition-all block absolute inset-y-0 start-0 w-1/2 before:absolute before:inset-0.5 before:rounded-full before:bg-background dark:before:bg-foreground/40 before:shadow-md"; +export const switchLabel = ""; +export const switchHiddenInput = ""; diff --git a/src/components/ui/styles/table.styles.ts b/src/components/ui/styles/table.styles.ts new file mode 100644 index 0000000..d7d6bc2 --- /dev/null +++ b/src/components/ui/styles/table.styles.ts @@ -0,0 +1,63 @@ +import { cva, type VariantProps } from "class-variance-authority"; + +// Styles +export const tableContainer = "relative w-full overflow-x-auto pe-2 -me-2"; +export const tableVariants = cva("w-full caption-bottom", { + variants: { + variant: { + default: "", + boxed: "border-separate border-spacing-y-2.5", + }, + raised: { + single: "border-spacing-y-5", + double: "border-spacing-y-7", + }, + }, + defaultVariants: { + variant: "default", + }, +}); +export const tableHeader = "[&_tr]:border-b"; +export const tableBody = + "[&_tr:last-child]:border-0 [&_tr:hover]:bg-foreground/5"; +export const tableFooter = + "bg-foreground/5 border-t border-foreground/10 font-medium [&>tr]:last:border-b-0"; +export const tableHead = + "text-foreground h-11 px-4 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]"; +export const tableRow = + "data-[state=selected]:bg-foreground/5 border-b border-foreground/10 transition-colors"; +export const tableCellVariants = cva( + "px-4 py-3 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", + { + variants: { + variant: { + default: "", + boxed: [ + "relative bg-background bg-gradient-to-b from-transparent to-foreground/[.03] dark:to-foreground/5 border-y first:border-s last:border-e border-foreground/10 first:rounded-s-xl last:rounded-e-xl shadow-md/5", + ], + }, + raised: { + single: + "before:absolute before:inset-x-0 first:before:start-2 last:before:end-2 before:h-2.5 before:bg-background/20 dark:before:bg-foreground/10 before:-bottom-2.5 first:before:rounded-bl-xl last:before:rounded-br-xl first:before:border-s last:before:border-e before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60", + double: [ + "before:absolute before:inset-x-0 first:before:start-2 last:before:end-2 before:h-2.5 before:bg-background/20 dark:before:bg-foreground/10 before:-bottom-2.5 first:before:rounded-bl-xl last:before:rounded-br-xl first:before:border-s last:before:border-e before:border-b before:border-foreground/10 before:z-[-1] before:shadow-md/5 before:opacity-60", + "after:absolute after:inset-x-0 first:after:start-4.5 last:after:end-4.5 after:h-[0.5rem] after:bg-background/20 dark:after:bg-foreground/10 after:-bottom-[1.1rem] first:after:rounded-bl-xl last:after:rounded-br-xl first:after:border-s last:after:border-e after:border-b after:border-foreground/10 after:z-[-1] after:shadow-md/5 after:opacity-40", + ], + }, + }, + defaultVariants: { + variant: "default", + }, + } +); +export const tableCaption = "text-foreground/70 mt-4 text-sm"; + +// Types +export type TableVariants = { + variant?: VariantProps["variant"]; + raised?: VariantProps["raised"]; +}; +export type TableCellVariants = { + variant?: VariantProps["variant"]; + raised?: VariantProps["raised"]; +}; diff --git a/src/components/ui/styles/tabs.styles.ts b/src/components/ui/styles/tabs.styles.ts new file mode 100644 index 0000000..94df93b --- /dev/null +++ b/src/components/ui/styles/tabs.styles.ts @@ -0,0 +1,8 @@ +export const tabsRoot = "flex flex-col gap-2.5"; +export const tabsList = + "w-fit relative backdrop-blur-lg bg-foreground/5 dark:bg-background/10 border border-foreground/10 rounded-2xl p-1 [&>div]:gap-1 [&>div]:flex"; +export const tabsIndicator = + "h-(--height) w-(--width) start-(--left) top-(--top) bg-background dark:bg-foreground/10 rounded-xl shadow-md absolute"; +export const tabsTrigger = + "z-5 relative h-9 px-5 opacity-80 cursor-pointer rounded-xl font-medium text-sm data-[selected]:opacity-100 data-[selected]:hover:bg-transparent hover:bg-foreground/5"; +export const tabsContent = ""; diff --git a/src/components/ui/styles/textarea.styles.ts b/src/components/ui/styles/textarea.styles.ts new file mode 100644 index 0000000..f9ce6c0 --- /dev/null +++ b/src/components/ui/styles/textarea.styles.ts @@ -0,0 +1,5 @@ +export const textarea = [ + 'placeholder:text-foreground/70 selection:bg-foreground/80 selection:text-background flex field-sizing-content min-h-16 w-full rounded-xl backdrop-blur-lg border border-foreground/15 bg-background px-3 py-2 text-base shadow-sm/5 transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 md:text-sm', + 'focus-visible:border-ring focus-visible:ring-foreground/10', + 'aria-invalid:ring-danger/20 dark:aria-invalid:ring-danger/40 aria-invalid:border-danger', +] diff --git a/src/components/ui/styles/toast.styles.ts b/src/components/ui/styles/toast.styles.ts new file mode 100644 index 0000000..66f3d78 --- /dev/null +++ b/src/components/ui/styles/toast.styles.ts @@ -0,0 +1,15 @@ +export const toastRoot = [ + "min-w-sm flex flex-col gap-1 relative", + "[translate:var(--x)_var(--y)] [scale:var(--scale)] [z-index:var(--z-index)]", + "[height:var(--height)] [opacity:var(--opacity)]", + "[will-change:translate,opacity,scale]", + "[transition:translate_400ms,scale_400ms,opacity_400ms,height_400ms,box-shadow_200ms]", + "[transition-timing-function:cubic-bezier(0.21,1.02,0.73,1)]", + "data-[state=closed]:[transition:translate_400ms,scale_400ms,opacity_200ms]", + "data-[state=closed]:[transition-timing-function:cubic-bezier(0.06,0.71,0.55,1)]", +]; +export const toastTitle = "font-medium text-nowrap"; +export const toastDescription = "text-nowrap opacity-80"; +export const toastCloseTrigger = + "absolute right-0 top-0 p-0 size-6 rounded-full -mt-1.5 -me-1.5 border border-foreground/10 bg-background dark:bg-background hover:bg-background before:hidden dark:before:block before:absolute before:-inset-px before:bg-background dark:before:bg-foreground/20 before:z-[-1] before:rounded-full"; +export const toasterContainer = ""; diff --git a/src/components/ui/styles/tooltip.styles.ts b/src/components/ui/styles/tooltip.styles.ts new file mode 100644 index 0000000..0067a9e --- /dev/null +++ b/src/components/ui/styles/tooltip.styles.ts @@ -0,0 +1,9 @@ +export const tooltipTrigger = ""; +export const tooltipPositioner = "!z-50"; +export const tooltipContent = + "bg-background dark:bg-foreground/15 backdrop-blur-lg border border-foreground/15 shadow-md/5 rounded-xl px-4 py-2 relative"; +export const tooltipArrow = "[--arrow-size:10px]"; +export const tooltipArrowTip = [ + "[--arrow-background:var(--color-background)] rounded-tl-sm", + "before:absolute before:inset-0 before:bg-background dark:before:bg-foreground/[.17] before:rounded-tl-sm before:border-s before:border-t before:border-foreground/15", +]; diff --git a/src/components/ui/switch/SwitchControl.vue b/src/components/ui/switch/SwitchControl.vue new file mode 100644 index 0000000..7fc8b05 --- /dev/null +++ b/src/components/ui/switch/SwitchControl.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/switch/SwitchHiddenInput.vue b/src/components/ui/switch/SwitchHiddenInput.vue new file mode 100644 index 0000000..63ceb27 --- /dev/null +++ b/src/components/ui/switch/SwitchHiddenInput.vue @@ -0,0 +1,21 @@ + + + diff --git a/src/components/ui/switch/SwitchLabel.vue b/src/components/ui/switch/SwitchLabel.vue new file mode 100644 index 0000000..560f114 --- /dev/null +++ b/src/components/ui/switch/SwitchLabel.vue @@ -0,0 +1,28 @@ + + + diff --git a/src/components/ui/switch/SwitchRoot.vue b/src/components/ui/switch/SwitchRoot.vue new file mode 100644 index 0000000..2908240 --- /dev/null +++ b/src/components/ui/switch/SwitchRoot.vue @@ -0,0 +1,36 @@ + + + diff --git a/src/components/ui/switch/SwitchThumb.vue b/src/components/ui/switch/SwitchThumb.vue new file mode 100644 index 0000000..340a118 --- /dev/null +++ b/src/components/ui/switch/SwitchThumb.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/switch/index.ts b/src/components/ui/switch/index.ts new file mode 100644 index 0000000..de96a60 --- /dev/null +++ b/src/components/ui/switch/index.ts @@ -0,0 +1,5 @@ +export { default as SwitchRoot } from "./SwitchRoot.vue"; +export { default as SwitchControl } from "./SwitchControl.vue"; +export { default as SwitchThumb } from "./SwitchThumb.vue"; +export { default as SwitchLabel } from "./SwitchLabel.vue"; +export { default as SwitchHiddenInput } from "./SwitchHiddenInput.vue"; diff --git a/src/components/ui/table/Table.vue b/src/components/ui/table/Table.vue new file mode 100644 index 0000000..5623ba6 --- /dev/null +++ b/src/components/ui/table/Table.vue @@ -0,0 +1,31 @@ + + + diff --git a/src/components/ui/table/TableBody.vue b/src/components/ui/table/TableBody.vue new file mode 100644 index 0000000..8f25b1a --- /dev/null +++ b/src/components/ui/table/TableBody.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableCaption.vue b/src/components/ui/table/TableCaption.vue new file mode 100644 index 0000000..fc9a022 --- /dev/null +++ b/src/components/ui/table/TableCaption.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableCell.vue b/src/components/ui/table/TableCell.vue new file mode 100644 index 0000000..6dd3a67 --- /dev/null +++ b/src/components/ui/table/TableCell.vue @@ -0,0 +1,23 @@ + + + diff --git a/src/components/ui/table/TableContainer.vue b/src/components/ui/table/TableContainer.vue new file mode 100644 index 0000000..e3efd43 --- /dev/null +++ b/src/components/ui/table/TableContainer.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableFooter.vue b/src/components/ui/table/TableFooter.vue new file mode 100644 index 0000000..4d32838 --- /dev/null +++ b/src/components/ui/table/TableFooter.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableHead.vue b/src/components/ui/table/TableHead.vue new file mode 100644 index 0000000..553a361 --- /dev/null +++ b/src/components/ui/table/TableHead.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableHeader.vue b/src/components/ui/table/TableHeader.vue new file mode 100644 index 0000000..caa37d3 --- /dev/null +++ b/src/components/ui/table/TableHeader.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/TableRow.vue b/src/components/ui/table/TableRow.vue new file mode 100644 index 0000000..d1cfac8 --- /dev/null +++ b/src/components/ui/table/TableRow.vue @@ -0,0 +1,14 @@ + + + diff --git a/src/components/ui/table/index.ts b/src/components/ui/table/index.ts new file mode 100644 index 0000000..5449b06 --- /dev/null +++ b/src/components/ui/table/index.ts @@ -0,0 +1,9 @@ +export { default as Table } from "./Table.vue"; +export { default as TableContainer } from "./TableContainer.vue"; +export { default as TableHeader } from "./TableHeader.vue"; +export { default as TableBody } from "./TableBody.vue"; +export { default as TableFooter } from "./TableFooter.vue"; +export { default as TableHead } from "./TableHead.vue"; +export { default as TableRow } from "./TableRow.vue"; +export { default as TableCell } from "./TableCell.vue"; +export { default as TableCaption } from "./TableCaption.vue"; diff --git a/src/components/ui/tabs/TabsContent.vue b/src/components/ui/tabs/TabsContent.vue new file mode 100644 index 0000000..d9628ed --- /dev/null +++ b/src/components/ui/tabs/TabsContent.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/tabs/TabsIndicator.vue b/src/components/ui/tabs/TabsIndicator.vue new file mode 100644 index 0000000..6285d6f --- /dev/null +++ b/src/components/ui/tabs/TabsIndicator.vue @@ -0,0 +1,27 @@ + + + diff --git a/src/components/ui/tabs/TabsList.vue b/src/components/ui/tabs/TabsList.vue new file mode 100644 index 0000000..a4fa4b8 --- /dev/null +++ b/src/components/ui/tabs/TabsList.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/tabs/TabsRoot.vue b/src/components/ui/tabs/TabsRoot.vue new file mode 100644 index 0000000..477344c --- /dev/null +++ b/src/components/ui/tabs/TabsRoot.vue @@ -0,0 +1,32 @@ + + + diff --git a/src/components/ui/tabs/TabsTrigger.vue b/src/components/ui/tabs/TabsTrigger.vue new file mode 100644 index 0000000..2228b67 --- /dev/null +++ b/src/components/ui/tabs/TabsTrigger.vue @@ -0,0 +1,29 @@ + + + diff --git a/src/components/ui/tabs/index.ts b/src/components/ui/tabs/index.ts new file mode 100644 index 0000000..b8bf09e --- /dev/null +++ b/src/components/ui/tabs/index.ts @@ -0,0 +1,5 @@ +export { default as TabsContent } from "./TabsContent.vue"; +export { default as TabsIndicator } from "./TabsIndicator.vue"; +export { default as TabsList } from "./TabsList.vue"; +export { default as TabsRoot } from "./TabsRoot.vue"; +export { default as TabsTrigger } from "./TabsTrigger.vue"; diff --git a/src/components/ui/textarea/Textarea.vue b/src/components/ui/textarea/Textarea.vue new file mode 100644 index 0000000..9aa563d --- /dev/null +++ b/src/components/ui/textarea/Textarea.vue @@ -0,0 +1,14 @@ + + +