@datum-cloud/datum-ui 0.2.0-alpha.0 → 0.2.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/_shadcn/hooks/use-mobile.d.ts +2 -0
- package/dist/_shadcn/hooks/use-mobile.d.ts.map +1 -0
- package/dist/_shadcn/hooks/use-theme.d.ts +9 -0
- package/dist/_shadcn/hooks/use-theme.d.ts.map +1 -0
- package/dist/_shadcn/lib/utils.d.ts +13 -0
- package/dist/_shadcn/lib/utils.d.ts.map +1 -0
- package/dist/_shadcn/ui/alert.d.ts +9 -0
- package/dist/_shadcn/ui/alert.d.ts.map +1 -0
- package/dist/_shadcn/ui/avatar.d.ts +7 -0
- package/dist/_shadcn/ui/avatar.d.ts.map +1 -0
- package/dist/_shadcn/ui/badge.d.ts +15 -0
- package/dist/_shadcn/ui/badge.d.ts.map +1 -0
- package/dist/_shadcn/ui/breadcrumb.d.ts +12 -0
- package/dist/_shadcn/ui/breadcrumb.d.ts.map +1 -0
- package/dist/_shadcn/ui/button-group.d.ts +12 -0
- package/dist/_shadcn/ui/button-group.d.ts.map +1 -0
- package/dist/_shadcn/ui/button.d.ts +17 -0
- package/dist/_shadcn/ui/button.d.ts.map +1 -0
- package/dist/_shadcn/ui/card.d.ts +9 -0
- package/dist/_shadcn/ui/card.d.ts.map +1 -0
- package/dist/_shadcn/ui/chart.d.ts +53 -0
- package/dist/_shadcn/ui/chart.d.ts.map +1 -0
- package/dist/_shadcn/ui/checkbox.d.ts +5 -0
- package/dist/_shadcn/ui/checkbox.d.ts.map +1 -0
- package/dist/_shadcn/ui/collapsible.d.ts +6 -0
- package/dist/_shadcn/ui/collapsible.d.ts.map +1 -0
- package/dist/_shadcn/ui/command.d.ts +20 -0
- package/dist/_shadcn/ui/command.d.ts.map +1 -0
- package/dist/_shadcn/ui/dialog.d.ts +14 -0
- package/dist/_shadcn/ui/dialog.d.ts.map +1 -0
- package/dist/_shadcn/ui/dropdown-menu.d.ts +33 -0
- package/dist/_shadcn/ui/dropdown-menu.d.ts.map +1 -0
- package/dist/_shadcn/ui/hover-card.d.ts +7 -0
- package/dist/_shadcn/ui/hover-card.d.ts.map +1 -0
- package/dist/_shadcn/ui/input-group.d.ts +17 -0
- package/dist/_shadcn/ui/input-group.d.ts.map +1 -0
- package/dist/_shadcn/ui/input.d.ts +7 -0
- package/dist/_shadcn/ui/input.d.ts.map +1 -0
- package/dist/_shadcn/ui/label.d.ts +5 -0
- package/dist/_shadcn/ui/label.d.ts.map +1 -0
- package/dist/_shadcn/ui/map-leaflet-imports.d.ts +7 -0
- package/dist/_shadcn/ui/map-leaflet-imports.d.ts.map +1 -0
- package/dist/_shadcn/ui/map.d.ts +115 -0
- package/dist/_shadcn/ui/map.d.ts.map +1 -0
- package/dist/_shadcn/ui/place-autocomplete.d.ts +64 -0
- package/dist/_shadcn/ui/place-autocomplete.d.ts.map +1 -0
- package/dist/_shadcn/ui/popover.d.ts +8 -0
- package/dist/_shadcn/ui/popover.d.ts.map +1 -0
- package/dist/_shadcn/ui/radio-group.d.ts +6 -0
- package/dist/_shadcn/ui/radio-group.d.ts.map +1 -0
- package/dist/_shadcn/ui/select.d.ts +14 -0
- package/dist/_shadcn/ui/select.d.ts.map +1 -0
- package/dist/_shadcn/ui/separator.d.ts +5 -0
- package/dist/_shadcn/ui/separator.d.ts.map +1 -0
- package/dist/_shadcn/ui/sheet.d.ts +14 -0
- package/dist/_shadcn/ui/sheet.d.ts.map +1 -0
- package/dist/_shadcn/ui/skeleton.d.ts +3 -0
- package/dist/_shadcn/ui/skeleton.d.ts.map +1 -0
- package/dist/_shadcn/ui/sonner.d.ts +5 -0
- package/dist/_shadcn/ui/sonner.d.ts.map +1 -0
- package/dist/_shadcn/ui/spinner.d.ts +3 -0
- package/dist/_shadcn/ui/spinner.d.ts.map +1 -0
- package/dist/_shadcn/ui/switch.d.ts +5 -0
- package/dist/_shadcn/ui/switch.d.ts.map +1 -0
- package/dist/_shadcn/ui/table.d.ts +11 -0
- package/dist/_shadcn/ui/table.d.ts.map +1 -0
- package/dist/_shadcn/ui/tabs.d.ts +13 -0
- package/dist/_shadcn/ui/tabs.d.ts.map +1 -0
- package/dist/_shadcn/ui/textarea.d.ts +4 -0
- package/dist/_shadcn/ui/textarea.d.ts.map +1 -0
- package/dist/_shadcn/ui/tooltip.d.ts +8 -0
- package/dist/_shadcn/ui/tooltip.d.ts.map +1 -0
- package/dist/_shadcn/ui/visuallyhidden.d.ts +4 -0
- package/dist/_shadcn/ui/visuallyhidden.d.ts.map +1 -0
- package/dist/{close.icon-DgjsP0sw.mjs → close.icon-chkXPAUC.mjs} +2 -3
- package/dist/cn-DWCc1QRE.mjs +10 -0
- package/dist/components/base/alert/alert.d.ts +21 -0
- package/dist/components/base/alert/alert.d.ts.map +1 -0
- package/dist/components/base/alert/index.d.ts +2 -0
- package/dist/components/base/alert/index.d.ts.map +1 -0
- package/dist/components/base/badge/badge.d.ts +17 -0
- package/dist/components/base/badge/badge.d.ts.map +1 -0
- package/dist/components/base/badge/index.d.ts +2 -0
- package/dist/components/base/badge/index.d.ts.map +1 -0
- package/dist/components/base/breadcrumb/index.d.ts +2 -0
- package/dist/components/base/breadcrumb/index.d.ts.map +1 -0
- package/dist/components/base/button/button.d.ts +24 -0
- package/dist/components/base/button/button.d.ts.map +1 -0
- package/dist/components/base/button/index.d.ts +5 -0
- package/dist/components/base/button/index.d.ts.map +1 -0
- package/dist/components/base/button/link-button.d.ts +19 -0
- package/dist/components/base/button/link-button.d.ts.map +1 -0
- package/dist/components/base/button-group/index.d.ts +2 -0
- package/dist/components/base/button-group/index.d.ts.map +1 -0
- package/dist/components/base/calendar/calendar.d.ts +10 -0
- package/dist/components/base/calendar/calendar.d.ts.map +1 -0
- package/dist/components/base/calendar/index.d.ts +2 -0
- package/dist/components/base/calendar/index.d.ts.map +1 -0
- package/dist/components/base/card/card.d.ts +8 -0
- package/dist/components/base/card/card.d.ts.map +1 -0
- package/dist/components/base/card/index.d.ts +2 -0
- package/dist/components/base/card/index.d.ts.map +1 -0
- package/dist/components/base/chart/index.d.ts +2 -0
- package/dist/components/base/chart/index.d.ts.map +1 -0
- package/dist/components/base/checkbox/checkbox.d.ts +10 -0
- package/dist/components/base/checkbox/checkbox.d.ts.map +1 -0
- package/dist/components/base/checkbox/index.d.ts +2 -0
- package/dist/components/base/checkbox/index.d.ts.map +1 -0
- package/dist/components/base/collapsible/index.d.ts +2 -0
- package/dist/components/base/collapsible/index.d.ts.map +1 -0
- package/dist/components/base/command/index.d.ts +2 -0
- package/dist/components/base/command/index.d.ts.map +1 -0
- package/dist/components/base/dialog/dialog.d.ts +46 -0
- package/dist/components/base/dialog/dialog.d.ts.map +1 -0
- package/dist/components/base/dialog/index.d.ts +3 -0
- package/dist/components/base/dialog/index.d.ts.map +1 -0
- package/dist/components/base/hover-card/index.d.ts +2 -0
- package/dist/components/base/hover-card/index.d.ts.map +1 -0
- package/dist/components/base/index.d.ts +38 -0
- package/dist/components/base/index.d.ts.map +1 -0
- package/dist/components/base/input/index.d.ts +2 -0
- package/dist/components/base/input/index.d.ts.map +1 -0
- package/dist/components/base/input/input.d.ts +9 -0
- package/dist/components/base/input/input.d.ts.map +1 -0
- package/dist/components/base/input-group/index.d.ts +2 -0
- package/dist/components/base/input-group/index.d.ts.map +1 -0
- package/dist/components/base/label/index.d.ts +17 -0
- package/dist/components/base/label/index.d.ts.map +1 -0
- package/dist/components/base/label/label.d.ts +26 -0
- package/dist/components/base/label/label.d.ts.map +1 -0
- package/dist/components/base/map/index.d.ts +2 -0
- package/dist/components/base/map/index.d.ts.map +1 -0
- package/dist/components/base/place-autocomplete/index.d.ts +2 -0
- package/dist/components/base/place-autocomplete/index.d.ts.map +1 -0
- package/dist/components/base/popover/index.d.ts +2 -0
- package/dist/components/base/popover/index.d.ts.map +1 -0
- package/dist/components/base/radio-group/index.d.ts +2 -0
- package/dist/components/base/radio-group/index.d.ts.map +1 -0
- package/dist/components/base/radio-group/radio-group.d.ts +16 -0
- package/dist/components/base/radio-group/radio-group.d.ts.map +1 -0
- package/dist/components/base/select/index.d.ts +2 -0
- package/dist/components/base/select/index.d.ts.map +1 -0
- package/dist/components/base/select/select.d.ts +54 -0
- package/dist/components/base/select/select.d.ts.map +1 -0
- package/dist/components/base/separator/index.d.ts +2 -0
- package/dist/components/base/separator/index.d.ts.map +1 -0
- package/dist/components/base/sheet/index.d.ts +2 -0
- package/dist/components/base/sheet/index.d.ts.map +1 -0
- package/dist/components/base/sheet/sheet.d.ts +23 -0
- package/dist/components/base/sheet/sheet.d.ts.map +1 -0
- package/dist/components/base/skeleton/index.d.ts +2 -0
- package/dist/components/base/skeleton/index.d.ts.map +1 -0
- package/dist/components/base/spinner/index.d.ts +2 -0
- package/dist/components/base/spinner/index.d.ts.map +1 -0
- package/dist/components/base/switch/index.d.ts +2 -0
- package/dist/components/base/switch/index.d.ts.map +1 -0
- package/dist/components/base/switch/switch.d.ts +10 -0
- package/dist/components/base/switch/switch.d.ts.map +1 -0
- package/dist/components/base/table/index.d.ts +2 -0
- package/dist/components/base/table/index.d.ts.map +1 -0
- package/dist/components/base/tabs/index.d.ts +2 -0
- package/dist/components/base/tabs/index.d.ts.map +1 -0
- package/dist/components/base/tabs/tabs.d.ts +22 -0
- package/dist/components/base/tabs/tabs.d.ts.map +1 -0
- package/dist/components/base/textarea/index.d.ts +2 -0
- package/dist/components/base/textarea/index.d.ts.map +1 -0
- package/dist/components/base/textarea/textarea.d.ts +9 -0
- package/dist/components/base/textarea/textarea.d.ts.map +1 -0
- package/dist/components/base/tooltip/index.d.ts +2 -0
- package/dist/components/base/tooltip/index.d.ts.map +1 -0
- package/dist/components/base/tooltip/tooltip.d.ts +17 -0
- package/dist/components/base/tooltip/tooltip.d.ts.map +1 -0
- package/dist/components/base/typography/index.d.ts +2 -0
- package/dist/components/base/typography/index.d.ts.map +1 -0
- package/dist/components/base/typography/typography.d.ts +1182 -0
- package/dist/components/base/typography/typography.d.ts.map +1 -0
- package/dist/components/base/visuallyhidden/index.d.ts +2 -0
- package/dist/components/base/visuallyhidden/index.d.ts.map +1 -0
- package/dist/components/features/autocomplete/autocomplete.d.ts +34 -0
- package/dist/components/features/autocomplete/autocomplete.d.ts.map +1 -0
- package/dist/components/features/autocomplete/autocomplete.types.d.ts +71 -0
- package/dist/components/features/autocomplete/autocomplete.types.d.ts.map +1 -0
- package/dist/components/features/autocomplete/index.d.ts +3 -0
- package/dist/components/features/autocomplete/index.d.ts.map +1 -0
- package/dist/components/features/avatar-stack/avatar-stack.d.ts +17 -0
- package/dist/components/features/avatar-stack/avatar-stack.d.ts.map +1 -0
- package/dist/components/features/avatar-stack/index.d.ts +2 -0
- package/dist/components/features/avatar-stack/index.d.ts.map +1 -0
- package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts +41 -0
- package/dist/components/features/calendar-date-picker/calendar-date-picker.d.ts.map +1 -0
- package/dist/components/features/calendar-date-picker/index.d.ts +2 -0
- package/dist/components/features/calendar-date-picker/index.d.ts.map +1 -0
- package/dist/components/features/dropdown/dropdown.d.ts +31 -0
- package/dist/components/features/dropdown/dropdown.d.ts.map +1 -0
- package/dist/components/features/dropdown/index.d.ts +2 -0
- package/dist/components/features/dropdown/index.d.ts.map +1 -0
- package/dist/components/features/dropzone/dropzone.d.ts +28 -0
- package/dist/components/features/dropzone/dropzone.d.ts.map +1 -0
- package/dist/components/features/dropzone/index.d.ts +3 -0
- package/dist/components/features/dropzone/index.d.ts.map +1 -0
- package/dist/components/features/empty-content/empty-content.d.ts +29 -0
- package/dist/components/features/empty-content/empty-content.d.ts.map +1 -0
- package/dist/components/features/empty-content/index.d.ts +3 -0
- package/dist/components/features/empty-content/index.d.ts.map +1 -0
- package/dist/components/features/file-input-button/file-input-button.d.ts +33 -0
- package/dist/components/features/file-input-button/file-input-button.d.ts.map +1 -0
- package/dist/components/features/file-input-button/index.d.ts +2 -0
- package/dist/components/features/file-input-button/index.d.ts.map +1 -0
- package/dist/components/features/form/components/form-autocomplete.d.ts +44 -0
- package/dist/components/features/form/components/form-autocomplete.d.ts.map +1 -0
- package/dist/components/features/form/components/form-button.d.ts +23 -0
- package/dist/components/features/form/components/form-button.d.ts.map +1 -0
- package/dist/components/features/form/components/form-checkbox.d.ts +18 -0
- package/dist/components/features/form/components/form-checkbox.d.ts.map +1 -0
- package/dist/components/features/form/components/form-copy-box.d.ts +41 -0
- package/dist/components/features/form/components/form-copy-box.d.ts.map +1 -0
- package/dist/components/features/form/components/form-custom.d.ts +27 -0
- package/dist/components/features/form/components/form-custom.d.ts.map +1 -0
- package/dist/components/features/form/components/form-description.d.ts +19 -0
- package/dist/components/features/form/components/form-description.d.ts.map +1 -0
- package/dist/components/features/form/components/form-dialog.d.ts +58 -0
- package/dist/components/features/form/components/form-dialog.d.ts.map +1 -0
- package/dist/components/features/form/components/form-error.d.ts +29 -0
- package/dist/components/features/form/components/form-error.d.ts.map +1 -0
- package/dist/components/features/form/components/form-field-array.d.ts +40 -0
- package/dist/components/features/form/components/form-field-array.d.ts.map +1 -0
- package/dist/components/features/form/components/form-field.d.ts +40 -0
- package/dist/components/features/form/components/form-field.d.ts.map +1 -0
- package/dist/components/features/form/components/form-input-group.d.ts +21 -0
- package/dist/components/features/form/components/form-input-group.d.ts.map +1 -0
- package/dist/components/features/form/components/form-input.d.ts +21 -0
- package/dist/components/features/form/components/form-input.d.ts.map +1 -0
- package/dist/components/features/form/components/form-radio-group.d.ts +34 -0
- package/dist/components/features/form/components/form-radio-group.d.ts.map +1 -0
- package/dist/components/features/form/components/form-root.d.ts +49 -0
- package/dist/components/features/form/components/form-root.d.ts.map +1 -0
- package/dist/components/features/form/components/form-select.d.ts +34 -0
- package/dist/components/features/form/components/form-select.d.ts.map +1 -0
- package/dist/components/features/form/components/form-submit.d.ts +16 -0
- package/dist/components/features/form/components/form-submit.d.ts.map +1 -0
- package/dist/components/features/form/components/form-switch.d.ts +18 -0
- package/dist/components/features/form/components/form-switch.d.ts.map +1 -0
- package/dist/components/features/form/components/form-textarea.d.ts +21 -0
- package/dist/components/features/form/components/form-textarea.d.ts.map +1 -0
- package/dist/components/features/form/components/form-when.d.ts +34 -0
- package/dist/components/features/form/components/form-when.d.ts.map +1 -0
- package/dist/components/features/form/components/index.d.ts +20 -0
- package/dist/components/features/form/components/index.d.ts.map +1 -0
- package/dist/components/features/form/components/stepper/form-step.d.ts +22 -0
- package/dist/components/features/form/components/stepper/form-step.d.ts.map +1 -0
- package/dist/components/features/form/components/stepper/form-stepper.d.ts +71 -0
- package/dist/components/features/form/components/stepper/form-stepper.d.ts.map +1 -0
- package/dist/components/features/form/components/stepper/index.d.ts +5 -0
- package/dist/components/features/form/components/stepper/index.d.ts.map +1 -0
- package/dist/components/features/form/components/stepper/stepper-controls.d.ts +32 -0
- package/dist/components/features/form/components/stepper/stepper-controls.d.ts.map +1 -0
- package/dist/components/features/form/components/stepper/stepper-navigation.d.ts +17 -0
- package/dist/components/features/form/components/stepper/stepper-navigation.d.ts.map +1 -0
- package/dist/components/features/form/context/field-context.d.ts +16 -0
- package/dist/components/features/form/context/field-context.d.ts.map +1 -0
- package/dist/components/features/form/context/form-context.d.ts +20 -0
- package/dist/components/features/form/context/form-context.d.ts.map +1 -0
- package/dist/components/features/form/context/index.d.ts +3 -0
- package/dist/components/features/form/context/index.d.ts.map +1 -0
- package/dist/components/features/form/hooks/index.d.ts +6 -0
- package/dist/components/features/form/hooks/index.d.ts.map +1 -0
- package/dist/components/features/form/hooks/use-field-context.d.ts +24 -0
- package/dist/components/features/form/hooks/use-field-context.d.ts.map +1 -0
- package/dist/components/features/form/hooks/use-field.d.ts +30 -0
- package/dist/components/features/form/hooks/use-field.d.ts.map +1 -0
- package/dist/components/features/form/hooks/use-form-context.d.ts +19 -0
- package/dist/components/features/form/hooks/use-form-context.d.ts.map +1 -0
- package/dist/components/features/form/hooks/use-stepper.d.ts +56 -0
- package/dist/components/features/form/hooks/use-stepper.d.ts.map +1 -0
- package/dist/components/features/form/hooks/use-watch.d.ts +41 -0
- package/dist/components/features/form/hooks/use-watch.d.ts.map +1 -0
- package/dist/components/features/form/index.d.ts +133 -0
- package/dist/components/features/form/index.d.ts.map +1 -0
- package/dist/components/features/form/types/index.d.ts +601 -0
- package/dist/components/features/form/types/index.d.ts.map +1 -0
- package/dist/components/features/grid/components/col.d.ts +5 -0
- package/dist/components/features/grid/components/col.d.ts.map +1 -0
- package/dist/components/features/grid/components/index.d.ts +7 -0
- package/dist/components/features/grid/components/index.d.ts.map +1 -0
- package/dist/components/features/grid/components/row.d.ts +6 -0
- package/dist/components/features/grid/components/row.d.ts.map +1 -0
- package/dist/components/features/grid/constants/grid.constants.d.ts +22 -0
- package/dist/components/features/grid/constants/grid.constants.d.ts.map +1 -0
- package/dist/components/features/grid/index.d.ts +7 -0
- package/dist/components/features/grid/index.d.ts.map +1 -0
- package/dist/components/features/grid/types/grid.types.d.ts +43 -0
- package/dist/components/features/grid/types/grid.types.d.ts.map +1 -0
- package/dist/components/features/grid/utils/responsive.d.ts +10 -0
- package/dist/components/features/grid/utils/responsive.d.ts.map +1 -0
- package/dist/components/features/index.d.ts +27 -0
- package/dist/components/features/index.d.ts.map +1 -0
- package/dist/components/features/input-number/index.d.ts +2 -0
- package/dist/components/features/input-number/index.d.ts.map +1 -0
- package/dist/components/features/input-number/input-number.d.ts +22 -0
- package/dist/components/features/input-number/input-number.d.ts.map +1 -0
- package/dist/components/features/input-with-addons/index.d.ts +2 -0
- package/dist/components/features/input-with-addons/index.d.ts.map +1 -0
- package/dist/components/features/input-with-addons/input-with-addons.d.ts +14 -0
- package/dist/components/features/input-with-addons/input-with-addons.d.ts.map +1 -0
- package/dist/components/features/loader-overlay/index.d.ts +2 -0
- package/dist/components/features/loader-overlay/index.d.ts.map +1 -0
- package/dist/components/features/loader-overlay/loader-overlay.d.ts +5 -0
- package/dist/components/features/loader-overlay/loader-overlay.d.ts.map +1 -0
- package/dist/components/features/more-actions/index.d.ts +3 -0
- package/dist/components/features/more-actions/index.d.ts.map +1 -0
- package/dist/components/features/more-actions/more-actions.d.ts +19 -0
- package/dist/components/features/more-actions/more-actions.d.ts.map +1 -0
- package/dist/components/features/nprogress/index.d.ts +4 -0
- package/dist/components/features/nprogress/index.d.ts.map +1 -0
- package/dist/components/features/page-title/index.d.ts +3 -0
- package/dist/components/features/page-title/index.d.ts.map +1 -0
- package/dist/components/features/page-title/page-title.d.ts +12 -0
- package/dist/components/features/page-title/page-title.d.ts.map +1 -0
- package/dist/components/features/sidebar/app-sidebar.d.ts +14 -0
- package/dist/components/features/sidebar/app-sidebar.d.ts.map +1 -0
- package/dist/components/features/sidebar/index.d.ts +4 -0
- package/dist/components/features/sidebar/index.d.ts.map +1 -0
- package/dist/components/features/sidebar/nav-main.d.ts +36 -0
- package/dist/components/features/sidebar/nav-main.d.ts.map +1 -0
- package/dist/components/features/sidebar/sidebar.d.ts +85 -0
- package/dist/components/features/sidebar/sidebar.d.ts.map +1 -0
- package/dist/components/features/stepper/index.d.ts +2 -0
- package/dist/components/features/stepper/index.d.ts.map +1 -0
- package/dist/components/features/stepper/stepper.d.ts +42 -0
- package/dist/components/features/stepper/stepper.d.ts.map +1 -0
- package/dist/components/features/tag-input/index.d.ts +2 -0
- package/dist/components/features/tag-input/index.d.ts.map +1 -0
- package/dist/components/features/tag-input/tag-input.d.ts +38 -0
- package/dist/components/features/tag-input/tag-input.d.ts.map +1 -0
- package/dist/components/features/task-queue/constants.d.ts +8 -0
- package/dist/components/features/task-queue/constants.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/index.d.ts +10 -0
- package/dist/components/features/task-queue/core/index.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-panel-actions.d.ts +7 -0
- package/dist/components/features/task-queue/core/task-panel-actions.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-panel-counter.d.ts +10 -0
- package/dist/components/features/task-queue/core/task-panel-counter.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-panel-header.d.ts +2 -0
- package/dist/components/features/task-queue/core/task-panel-header.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-panel-item.d.ts +9 -0
- package/dist/components/features/task-queue/core/task-panel-item.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-panel.d.ts +6 -0
- package/dist/components/features/task-queue/core/task-panel.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-queue-dropdown.d.ts +2 -0
- package/dist/components/features/task-queue/core/task-queue-dropdown.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-queue-trigger.d.ts +9 -0
- package/dist/components/features/task-queue/core/task-queue-trigger.d.ts.map +1 -0
- package/dist/components/features/task-queue/core/task-summary-dialog.d.ts +24 -0
- package/dist/components/features/task-queue/core/task-summary-dialog.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/executor.d.ts +14 -0
- package/dist/components/features/task-queue/engine/executor.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/index.d.ts +5 -0
- package/dist/components/features/task-queue/engine/index.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/queue.d.ts +42 -0
- package/dist/components/features/task-queue/engine/queue.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/storage/detect-storage.d.ts +19 -0
- package/dist/components/features/task-queue/engine/storage/detect-storage.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/storage/index.d.ts +6 -0
- package/dist/components/features/task-queue/engine/storage/index.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/storage/local-storage.d.ts +12 -0
- package/dist/components/features/task-queue/engine/storage/local-storage.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/storage/memory-storage.d.ts +18 -0
- package/dist/components/features/task-queue/engine/storage/memory-storage.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/storage/redis-storage.d.ts +23 -0
- package/dist/components/features/task-queue/engine/storage/redis-storage.d.ts.map +1 -0
- package/dist/components/features/task-queue/engine/storage/storage.d.ts +2 -0
- package/dist/components/features/task-queue/engine/storage/storage.d.ts.map +1 -0
- package/dist/components/features/task-queue/hooks/index.d.ts +3 -0
- package/dist/components/features/task-queue/hooks/index.d.ts.map +1 -0
- package/dist/components/features/task-queue/hooks/use-task-queue.d.ts +3 -0
- package/dist/components/features/task-queue/hooks/use-task-queue.d.ts.map +1 -0
- package/dist/components/features/task-queue/hooks/use-task-scope.d.ts +52 -0
- package/dist/components/features/task-queue/hooks/use-task-scope.d.ts.map +1 -0
- package/dist/components/features/task-queue/index.d.ts +9 -0
- package/dist/components/features/task-queue/index.d.ts.map +1 -0
- package/dist/components/features/task-queue/provider/index.d.ts +2 -0
- package/dist/components/features/task-queue/provider/index.d.ts.map +1 -0
- package/dist/components/features/task-queue/provider/task-queue-provider.d.ts +14 -0
- package/dist/components/features/task-queue/provider/task-queue-provider.d.ts.map +1 -0
- package/dist/components/features/task-queue/types.d.ts +213 -0
- package/dist/components/features/task-queue/types.d.ts.map +1 -0
- package/dist/components/features/task-queue/utils/index.d.ts +37 -0
- package/dist/components/features/task-queue/utils/index.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/components/absolute-range-panel.d.ts +18 -0
- package/dist/components/features/time-range-picker/components/absolute-range-panel.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/components/index.d.ts +4 -0
- package/dist/components/features/time-range-picker/components/index.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/components/quick-ranges-panel.d.ts +10 -0
- package/dist/components/features/time-range-picker/components/quick-ranges-panel.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/components/timezone-selector.d.ts +10 -0
- package/dist/components/features/time-range-picker/components/timezone-selector.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/index.d.ts +8 -0
- package/dist/components/features/time-range-picker/index.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/presets.d.ts +29 -0
- package/dist/components/features/time-range-picker/presets.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/time-range-picker.d.ts +31 -0
- package/dist/components/features/time-range-picker/time-range-picker.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/types.d.ts +59 -0
- package/dist/components/features/time-range-picker/types.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/utils/format-display.d.ts +20 -0
- package/dist/components/features/time-range-picker/utils/format-display.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/utils/index.d.ts +4 -0
- package/dist/components/features/time-range-picker/utils/index.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/utils/timezone.d.ts +51 -0
- package/dist/components/features/time-range-picker/utils/timezone.d.ts.map +1 -0
- package/dist/components/features/time-range-picker/utils/to-api-format.d.ts +13 -0
- package/dist/components/features/time-range-picker/utils/to-api-format.d.ts.map +1 -0
- package/dist/components/features/toast/headless-toast.d.ts +10 -0
- package/dist/components/features/toast/headless-toast.d.ts.map +1 -0
- package/dist/components/features/toast/index.d.ts +4 -0
- package/dist/components/features/toast/index.d.ts.map +1 -0
- package/dist/components/features/toast/toast.d.ts +9 -0
- package/dist/components/features/toast/toast.d.ts.map +1 -0
- package/dist/components/features/toast/toaster.d.ts +10 -0
- package/dist/components/features/toast/toaster.d.ts.map +1 -0
- package/dist/components/features/toast/types.d.ts +7 -0
- package/dist/components/features/toast/types.d.ts.map +1 -0
- package/dist/components/features/toast/use-toast.d.ts +3 -0
- package/dist/components/features/toast/use-toast.d.ts.map +1 -0
- package/dist/components/icons/close.icon.d.ts +5 -0
- package/dist/components/icons/close.icon.d.ts.map +1 -0
- package/dist/components/icons/icon-wrapper.d.ts +7 -0
- package/dist/components/icons/icon-wrapper.d.ts.map +1 -0
- package/dist/components/icons/index.d.ts +4 -0
- package/dist/components/icons/index.d.ts.map +1 -0
- package/dist/components/icons/spinner.icon.d.ts +13 -0
- package/dist/components/icons/spinner.icon.d.ts.map +1 -0
- package/dist/components/index.d.ts +10 -0
- package/dist/components/index.d.ts.map +1 -0
- package/dist/components/index.mjs +5 -249
- package/dist/components/themes/client-only.d.ts +8 -0
- package/dist/components/themes/client-only.d.ts.map +1 -0
- package/dist/components/themes/index.d.ts +5 -0
- package/dist/components/themes/index.d.ts.map +1 -0
- package/dist/components/themes/script.d.ts +2 -0
- package/dist/components/themes/script.d.ts.map +1 -0
- package/dist/components/themes/theme-script.d.ts +18 -0
- package/dist/components/themes/theme-script.d.ts.map +1 -0
- package/dist/components/themes/theme.provider.d.ts +4 -0
- package/dist/components/themes/theme.provider.d.ts.map +1 -0
- package/dist/components/themes/types.d.ts +30 -0
- package/dist/components/themes/types.d.ts.map +1 -0
- package/dist/datum.provider-D6VMjSV0.mjs +1 -2
- package/dist/hooks/index.d.ts +3 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.mjs +1 -1
- package/dist/hooks/use-copy-to-clipboard.d.ts +8 -0
- package/dist/hooks/use-copy-to-clipboard.d.ts.map +1 -0
- package/dist/hooks/use-debounce.d.ts +8 -0
- package/dist/hooks/use-debounce.d.ts.map +1 -0
- package/dist/hooks/use-theme.d.ts +2 -0
- package/dist/hooks/use-theme.d.ts.map +1 -0
- package/dist/{icon-wrapper-BTllM5Re.mjs → icon-wrapper-BgPkifId.mjs} +2 -3
- package/dist/icons/index.mjs +2 -2
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.mjs +6 -256
- package/dist/map-leaflet-imports-OKaoesjZ.mjs +8 -0
- package/dist/providers/datum.provider.d.ts +20 -0
- package/dist/providers/datum.provider.d.ts.map +1 -0
- package/dist/providers/index.d.ts +3 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/style.css +151 -2
- package/dist/{theme-script-B_TkiYs4.mjs → theme-script-DHyLk25i.mjs} +2679 -392
- package/dist/theme.provider-DpFLwtHe.mjs +1 -2
- package/dist/{use-copy-to-clipboard-D5U8bWsn.mjs → use-copy-to-clipboard-BfrpD6G8.mjs} +3 -4
- package/dist/use-debounce-BYB-jPeX.mjs +1 -2
- package/dist/utils/cn.d.ts +3 -0
- package/dist/utils/cn.d.ts.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/utils/index.mjs +1 -1
- package/package.json +122 -11
- package/dist/chunk-CtajNgzt.mjs +0 -36
- package/dist/close.icon-DgjsP0sw.mjs.map +0 -1
- package/dist/components/index.d.mts +0 -27
- package/dist/components/index.d.mts.map +0 -1
- package/dist/components/index.mjs.map +0 -1
- package/dist/datum.provider-CsG2KNNc.d.mts +0 -30
- package/dist/datum.provider-CsG2KNNc.d.mts.map +0 -1
- package/dist/datum.provider-D6VMjSV0.mjs.map +0 -1
- package/dist/hooks/index.d.mts +0 -3
- package/dist/icon-wrapper-BTllM5Re.mjs.map +0 -1
- package/dist/icons/index.d.mts +0 -3
- package/dist/index-DH2XEEjO.d.mts +0 -3995
- package/dist/index-DH2XEEjO.d.mts.map +0 -1
- package/dist/index.d.mts +0 -31
- package/dist/index.d.mts.map +0 -1
- package/dist/index.mjs.map +0 -1
- package/dist/providers/index.d.mts +0 -3
- package/dist/spinner.icon-q9zisVlw.d.mts +0 -46
- package/dist/spinner.icon-q9zisVlw.d.mts.map +0 -1
- package/dist/style.css.map +0 -1
- package/dist/theme-script-B_TkiYs4.mjs.map +0 -1
- package/dist/theme.provider-DpFLwtHe.mjs.map +0 -1
- package/dist/types-BoL47uxV.d.mts +0 -34
- package/dist/types-BoL47uxV.d.mts.map +0 -1
- package/dist/use-copy-to-clipboard-D5U8bWsn.mjs.map +0 -1
- package/dist/use-debounce-BYB-jPeX.mjs.map +0 -1
- package/dist/use-debounce-Dg9zNz9U.d.mts +0 -19
- package/dist/use-debounce-Dg9zNz9U.d.mts.map +0 -1
- package/dist/utils/index.d.mts +0 -3
|
@@ -1,51 +1,46 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { n as SpinnerIcon, t as Icon } from "./icon-wrapper-
|
|
3
|
-
import { t as CloseIcon } from "./close.icon-
|
|
4
|
-
import { n as toast$1, t as useCopyToClipboard } from "./use-copy-to-clipboard-
|
|
5
|
-
import { cn } from "@repo/shadcn/lib/utils";
|
|
1
|
+
import { t as cn$1 } from "./cn-DWCc1QRE.mjs";
|
|
2
|
+
import { n as SpinnerIcon, t as Icon } from "./icon-wrapper-BgPkifId.mjs";
|
|
3
|
+
import { t as CloseIcon } from "./close.icon-chkXPAUC.mjs";
|
|
4
|
+
import { n as toast$1, t as useCopyToClipboard } from "./use-copy-to-clipboard-BfrpD6G8.mjs";
|
|
6
5
|
import { cva } from "class-variance-authority";
|
|
7
|
-
import { Ban, Calendar, CalendarIcon, CheckCircle2, CheckIcon, ChevronDown, ChevronDownIcon, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, CircleAlert, CircleCheck, CircleHelp, CircleIcon, CircleXIcon, CopyIcon, CornerDownRightIcon, Ellipsis, ExternalLinkIcon, FileIcon, Globe, ListTodo, PanelLeftCloseIcon, PanelLeftOpenIcon, UploadIcon, X, XCircle } from "lucide-react";
|
|
6
|
+
import { Ban, Calendar, CalendarIcon, CheckCircle2, CheckIcon, ChevronDown, ChevronDownIcon, ChevronLeftIcon, ChevronRight, ChevronRightIcon, ChevronUp, ChevronUpIcon, CircleAlert, CircleCheck, CircleHelp, CircleIcon, CircleXIcon, CopyIcon, CornerDownRightIcon, Ellipsis, ExternalLinkIcon, FileIcon, Globe, LayersIcon, ListTodo, Loader2Icon, LoaderCircleIcon, MapPinIcon, MaximizeIcon, MinimizeIcon, MinusIcon, MoreHorizontal, NavigationIcon, PanelLeftCloseIcon, PanelLeftOpenIcon, PenLineIcon, PentagonIcon, PlusIcon, SearchIcon, SquareIcon, Trash2Icon, Undo2Icon, UploadIcon, WaypointsIcon, X, XCircle, XIcon } from "lucide-react";
|
|
8
7
|
import * as React$1 from "react";
|
|
9
|
-
import React, { Fragment, createContext, use, useCallback, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
8
|
+
import React, { Fragment, Suspense, createContext, lazy, use, useCallback, useContext, useEffect, useId, useMemo, useRef, useState, useSyncExternalStore } from "react";
|
|
9
|
+
import { clsx } from "clsx";
|
|
10
|
+
import { twMerge } from "tailwind-merge";
|
|
10
11
|
import { Fragment as Fragment$1, jsx, jsxs } from "react/jsx-runtime";
|
|
11
|
-
import {
|
|
12
|
+
import { Slot } from "@radix-ui/react-slot";
|
|
13
|
+
import * as SeparatorPrimitive from "@radix-ui/react-separator";
|
|
12
14
|
import { DayPicker, getDefaultClassNames } from "react-day-picker";
|
|
13
|
-
import
|
|
14
|
-
import
|
|
15
|
+
import * as RechartsPrimitive from "recharts";
|
|
16
|
+
import * as CheckboxPrimitive from "@radix-ui/react-checkbox";
|
|
17
|
+
import * as CollapsiblePrimitive from "@radix-ui/react-collapsible";
|
|
15
18
|
import * as DialogPrimitive from "@radix-ui/react-dialog";
|
|
16
|
-
import {
|
|
17
|
-
import
|
|
18
|
-
import
|
|
19
|
-
import
|
|
20
|
-
import {
|
|
21
|
-
import
|
|
22
|
-
import
|
|
19
|
+
import { Command } from "cmdk";
|
|
20
|
+
import * as HoverCardPrimitive from "@radix-ui/react-hover-card";
|
|
21
|
+
import * as LabelPrimitive from "@radix-ui/react-label";
|
|
22
|
+
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
23
|
+
import { renderToString } from "react-dom/server.browser";
|
|
24
|
+
import * as PopoverPrimitive from "@radix-ui/react-popover";
|
|
25
|
+
import * as RadioGroupPrimitive from "@radix-ui/react-radio-group";
|
|
26
|
+
import * as SelectPrimitive from "@radix-ui/react-select";
|
|
27
|
+
import * as SwitchPrimitive from "@radix-ui/react-switch";
|
|
23
28
|
import * as TabsPrimitive from "@radix-ui/react-tabs";
|
|
24
|
-
import
|
|
25
|
-
import
|
|
26
|
-
import { Tooltip, TooltipContent, TooltipProvider, TooltipTrigger } from "@repo/shadcn/ui/tooltip";
|
|
27
|
-
import { Collapsible, CollapsibleContent, CollapsibleTrigger } from "@repo/shadcn/ui/collapsible";
|
|
28
|
-
import { Command, CommandEmpty, CommandGroup, CommandInput, CommandItem, CommandList } from "@repo/shadcn/ui/command";
|
|
29
|
-
import { Popover, PopoverContent, PopoverTrigger } from "@repo/shadcn/ui/popover";
|
|
30
|
-
import { Separator } from "@repo/shadcn/ui/separator";
|
|
31
|
-
import { Skeleton } from "@repo/shadcn/ui/skeleton";
|
|
32
|
-
import { Table, TableBody, TableCell, TableHead, TableHeader, TableRow } from "@repo/shadcn/ui/table";
|
|
29
|
+
import * as TooltipPrimitive from "@radix-ui/react-tooltip";
|
|
30
|
+
import { VisuallyHidden } from "@radix-ui/react-visually-hidden";
|
|
33
31
|
import { useVirtualizer } from "@tanstack/react-virtual";
|
|
34
|
-
import
|
|
32
|
+
import * as AvatarPrimitive from "@radix-ui/react-avatar";
|
|
35
33
|
import { endOfDay, endOfMonth, endOfWeek, endOfYear, format, formatDistanceToNowStrict, isSameDay, isSameYear, parse, startOfDay, startOfMonth, startOfWeek, startOfYear, subDays, subHours, subMinutes } from "date-fns";
|
|
36
34
|
import { formatInTimeZone, fromZonedTime, toDate, toZonedTime } from "date-fns-tz";
|
|
37
|
-
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
|
38
35
|
import { useDropzone } from "react-dropzone";
|
|
39
36
|
import { FormProvider, getFormProps, getInputProps, getTextareaProps, useForm, useFormMetadata, useInputControl } from "@conform-to/react";
|
|
40
37
|
import { Toaster } from "sonner";
|
|
41
38
|
import { getZodConstraint, parseWithZod } from "@conform-to/zod/v4";
|
|
42
39
|
import { z } from "zod";
|
|
43
|
-
import { Slot } from "@radix-ui/react-slot";
|
|
44
40
|
import * as Stepperize from "@stepperize/react";
|
|
45
41
|
import { NumericFormat } from "react-number-format";
|
|
46
42
|
import NProgress from "nprogress";
|
|
47
43
|
import { motion } from "motion/react";
|
|
48
|
-
import { useIsMobile } from "@repo/shadcn/hooks/use-mobile";
|
|
49
44
|
|
|
50
45
|
//#region src/components/base/alert/alert.tsx
|
|
51
46
|
/**
|
|
@@ -103,7 +98,7 @@ function Alert({ className, variant, closable = false, onClose, ...props }) {
|
|
|
103
98
|
if (!isVisible) return null;
|
|
104
99
|
return /* @__PURE__ */ jsxs("div", {
|
|
105
100
|
role: "alert",
|
|
106
|
-
className: cn(alertVariants({ variant }), closable && "pr-10", className),
|
|
101
|
+
className: cn$1(alertVariants({ variant }), closable && "pr-10", className),
|
|
107
102
|
...props,
|
|
108
103
|
children: [props.children, closable && /* @__PURE__ */ jsx("span", {
|
|
109
104
|
onClick: handleClose,
|
|
@@ -117,19 +112,19 @@ function Alert({ className, variant, closable = false, onClose, ...props }) {
|
|
|
117
112
|
},
|
|
118
113
|
className: "absolute top-4 right-4 z-10 cursor-pointer opacity-70 transition-opacity hover:opacity-100",
|
|
119
114
|
"aria-label": "Close alert",
|
|
120
|
-
children: /* @__PURE__ */ jsx(CircleXIcon, { className: cn("size-4", variant && variantDefinitions[variant]?.closeButtonColor) })
|
|
115
|
+
children: /* @__PURE__ */ jsx(CircleXIcon, { className: cn$1("size-4", variant && variantDefinitions[variant]?.closeButtonColor) })
|
|
121
116
|
})]
|
|
122
117
|
});
|
|
123
118
|
}
|
|
124
119
|
function AlertTitle({ className, ...props }) {
|
|
125
120
|
return /* @__PURE__ */ jsx("div", {
|
|
126
|
-
className: cn("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className),
|
|
121
|
+
className: cn$1("col-start-2 line-clamp-1 min-h-4 font-medium tracking-tight", className),
|
|
127
122
|
...props
|
|
128
123
|
});
|
|
129
124
|
}
|
|
130
125
|
function AlertDescription({ className, ...props }) {
|
|
131
126
|
return /* @__PURE__ */ jsx("div", {
|
|
132
|
-
className: cn("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className),
|
|
127
|
+
className: cn$1("text-muted-foreground col-start-2 grid justify-items-start gap-1 text-sm [&_p]:leading-relaxed", className),
|
|
133
128
|
...props
|
|
134
129
|
});
|
|
135
130
|
}
|
|
@@ -305,7 +300,7 @@ const badgeVariants = cva("inline-flex items-center rounded-md border px-2.5 py-
|
|
|
305
300
|
});
|
|
306
301
|
function Badge({ className, type, theme, ...props }) {
|
|
307
302
|
return /* @__PURE__ */ jsx("div", {
|
|
308
|
-
className: cn(badgeVariants({
|
|
303
|
+
className: cn$1(badgeVariants({
|
|
309
304
|
type,
|
|
310
305
|
theme
|
|
311
306
|
}), className),
|
|
@@ -313,6 +308,86 @@ function Badge({ className, type, theme, ...props }) {
|
|
|
313
308
|
});
|
|
314
309
|
}
|
|
315
310
|
|
|
311
|
+
//#endregion
|
|
312
|
+
//#region ../shadcn/lib/utils.ts
|
|
313
|
+
/**
|
|
314
|
+
* shadcn/ui Utilities
|
|
315
|
+
* Combines multiple class names using clsx and tailwind-merge
|
|
316
|
+
*/
|
|
317
|
+
/**
|
|
318
|
+
* Combines multiple class names using clsx and tailwind-merge
|
|
319
|
+
* Useful for conditionally applying Tailwind CSS classes
|
|
320
|
+
* @param inputs - Array of class values to be merged
|
|
321
|
+
* @returns Merged class string with Tailwind conflicts resolved
|
|
322
|
+
*/
|
|
323
|
+
function cn(...inputs) {
|
|
324
|
+
return twMerge(clsx(inputs));
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
//#endregion
|
|
328
|
+
//#region ../shadcn/ui/breadcrumb.tsx
|
|
329
|
+
const Breadcrumb = ({ ...props }) => {
|
|
330
|
+
return /* @__PURE__ */ jsx("nav", {
|
|
331
|
+
"aria-label": "breadcrumb",
|
|
332
|
+
"data-slot": "breadcrumb",
|
|
333
|
+
...props
|
|
334
|
+
});
|
|
335
|
+
};
|
|
336
|
+
const BreadcrumbList = ({ className, ...props }) => {
|
|
337
|
+
return /* @__PURE__ */ jsx("ol", {
|
|
338
|
+
"data-slot": "breadcrumb-list",
|
|
339
|
+
className: cn("text-muted-foreground flex flex-wrap items-center gap-1.5 text-sm break-words sm:gap-2.5", className),
|
|
340
|
+
...props
|
|
341
|
+
});
|
|
342
|
+
};
|
|
343
|
+
const BreadcrumbItem = ({ className, ...props }) => {
|
|
344
|
+
return /* @__PURE__ */ jsx("li", {
|
|
345
|
+
"data-slot": "breadcrumb-item",
|
|
346
|
+
className: cn("inline-flex items-center gap-1.5", className),
|
|
347
|
+
...props
|
|
348
|
+
});
|
|
349
|
+
};
|
|
350
|
+
const BreadcrumbLink = ({ asChild, className, ...props }) => {
|
|
351
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "a", {
|
|
352
|
+
"data-slot": "breadcrumb-link",
|
|
353
|
+
className: cn("hover:text-foreground transition-colors", className),
|
|
354
|
+
...props
|
|
355
|
+
});
|
|
356
|
+
};
|
|
357
|
+
const BreadcrumbPage = ({ className, ...props }) => {
|
|
358
|
+
return /* @__PURE__ */ jsx("span", {
|
|
359
|
+
"data-slot": "breadcrumb-page",
|
|
360
|
+
role: "link",
|
|
361
|
+
"aria-disabled": "true",
|
|
362
|
+
"aria-current": "page",
|
|
363
|
+
className: cn("text-foreground font-normal", className),
|
|
364
|
+
...props
|
|
365
|
+
});
|
|
366
|
+
};
|
|
367
|
+
const BreadcrumbSeparator = ({ children, className, ...props }) => {
|
|
368
|
+
return /* @__PURE__ */ jsx("li", {
|
|
369
|
+
"data-slot": "breadcrumb-separator",
|
|
370
|
+
role: "presentation",
|
|
371
|
+
"aria-hidden": "true",
|
|
372
|
+
className: cn("[&>svg]:size-3.5", className),
|
|
373
|
+
...props,
|
|
374
|
+
children: children ?? /* @__PURE__ */ jsx(ChevronRight, {})
|
|
375
|
+
});
|
|
376
|
+
};
|
|
377
|
+
const BreadcrumbEllipsis = ({ className, ...props }) => {
|
|
378
|
+
return /* @__PURE__ */ jsxs("span", {
|
|
379
|
+
"data-slot": "breadcrumb-ellipsis",
|
|
380
|
+
role: "presentation",
|
|
381
|
+
"aria-hidden": "true",
|
|
382
|
+
className: cn("flex size-9 items-center justify-center", className),
|
|
383
|
+
...props,
|
|
384
|
+
children: [/* @__PURE__ */ jsx(MoreHorizontal, { className: "size-4" }), /* @__PURE__ */ jsx("span", {
|
|
385
|
+
className: "sr-only",
|
|
386
|
+
children: "More"
|
|
387
|
+
})]
|
|
388
|
+
});
|
|
389
|
+
};
|
|
390
|
+
|
|
316
391
|
//#endregion
|
|
317
392
|
//#region src/components/base/button/button.tsx
|
|
318
393
|
const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-lg text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:opacity-50", {
|
|
@@ -355,17 +430,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
|
|
|
355
430
|
{
|
|
356
431
|
type: "primary",
|
|
357
432
|
theme: "light",
|
|
358
|
-
className: cn("bg-btn-neutral-bg text-primary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-primary", "dark:text-foreground")
|
|
433
|
+
className: cn$1("bg-btn-neutral-bg text-primary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-primary", "dark:text-foreground")
|
|
359
434
|
},
|
|
360
435
|
{
|
|
361
436
|
type: "primary",
|
|
362
437
|
theme: "outline",
|
|
363
|
-
className: cn("border border-btn-primary-border/60 text-primary hover:border-btn-primary-border active:border-btn-primary-border disabled:bg-transparent disabled:text-primary disabled:border-btn-primary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
438
|
+
className: cn$1("border border-btn-primary-border/60 text-primary hover:border-btn-primary-border active:border-btn-primary-border disabled:bg-transparent disabled:text-primary disabled:border-btn-primary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
364
439
|
},
|
|
365
440
|
{
|
|
366
441
|
type: "primary",
|
|
367
442
|
theme: "borderless",
|
|
368
|
-
className: cn("text-primary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-primary", "dark:text-foreground")
|
|
443
|
+
className: cn$1("text-primary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-primary", "dark:text-foreground")
|
|
369
444
|
},
|
|
370
445
|
{
|
|
371
446
|
type: "secondary",
|
|
@@ -375,17 +450,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
|
|
|
375
450
|
{
|
|
376
451
|
type: "secondary",
|
|
377
452
|
theme: "light",
|
|
378
|
-
className: cn("bg-btn-neutral-bg text-secondary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-secondary", "dark:text-foreground")
|
|
453
|
+
className: cn$1("bg-btn-neutral-bg text-secondary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-secondary", "dark:text-foreground")
|
|
379
454
|
},
|
|
380
455
|
{
|
|
381
456
|
type: "secondary",
|
|
382
457
|
theme: "outline",
|
|
383
|
-
className: cn("border border-btn-secondary-border/60 text-secondary hover:border-btn-secondary-border active:border-btn-secondary-border disabled:bg-transparent disabled:text-secondary disabled:border-btn-secondary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
458
|
+
className: cn$1("border border-btn-secondary-border/60 text-secondary hover:border-btn-secondary-border active:border-btn-secondary-border disabled:bg-transparent disabled:text-secondary disabled:border-btn-secondary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
384
459
|
},
|
|
385
460
|
{
|
|
386
461
|
type: "secondary",
|
|
387
462
|
theme: "borderless",
|
|
388
|
-
className: cn("text-secondary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-secondary", "dark:text-foreground")
|
|
463
|
+
className: cn$1("text-secondary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-secondary", "dark:text-foreground")
|
|
389
464
|
},
|
|
390
465
|
{
|
|
391
466
|
type: "tertiary",
|
|
@@ -395,17 +470,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
|
|
|
395
470
|
{
|
|
396
471
|
type: "tertiary",
|
|
397
472
|
theme: "light",
|
|
398
|
-
className: cn("bg-btn-neutral-bg text-tertiary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-tertiary", "dark:text-foreground")
|
|
473
|
+
className: cn$1("bg-btn-neutral-bg text-tertiary hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-tertiary", "dark:text-foreground")
|
|
399
474
|
},
|
|
400
475
|
{
|
|
401
476
|
type: "tertiary",
|
|
402
477
|
theme: "outline",
|
|
403
|
-
className: cn("border border-btn-tertiary-border/60 text-tertiary hover:border-btn-tertiary-border active:border-btn-tertiary-border disabled:bg-transparent disabled:text-tertiary disabled:border-btn-tertiary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
478
|
+
className: cn$1("border border-btn-tertiary-border/60 text-tertiary hover:border-btn-tertiary-border active:border-btn-tertiary-border disabled:bg-transparent disabled:text-tertiary disabled:border-btn-tertiary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
404
479
|
},
|
|
405
480
|
{
|
|
406
481
|
type: "tertiary",
|
|
407
482
|
theme: "borderless",
|
|
408
|
-
className: cn("text-tertiary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-tertiary", "dark:text-foreground")
|
|
483
|
+
className: cn$1("text-tertiary hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-tertiary", "dark:text-foreground")
|
|
409
484
|
},
|
|
410
485
|
{
|
|
411
486
|
type: "quaternary",
|
|
@@ -415,17 +490,17 @@ const buttonVariants$1 = cva("inline-flex items-center justify-center gap-2 whit
|
|
|
415
490
|
{
|
|
416
491
|
type: "quaternary",
|
|
417
492
|
theme: "light",
|
|
418
|
-
className: cn("bg-btn-neutral-bg text-btn-quaternary-foreground hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-btn-quaternary-foreground", "dark:text-foreground")
|
|
493
|
+
className: cn$1("bg-btn-neutral-bg text-btn-quaternary-foreground hover:bg-btn-neutral-bg-hover active:bg-btn-neutral-bg-active disabled:bg-btn-neutral-bg disabled:text-btn-quaternary-foreground", "dark:text-foreground")
|
|
419
494
|
},
|
|
420
495
|
{
|
|
421
496
|
type: "quaternary",
|
|
422
497
|
theme: "outline",
|
|
423
|
-
className: cn("border border-btn-quaternary-border/60 text-btn-quaternary-foreground hover:border-btn-quaternary-border active:border-btn-quaternary-border disabled:bg-transparent disabled:text-btn-quaternary-foreground disabled:border-btn-quaternary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
498
|
+
className: cn$1("border border-btn-quaternary-border/60 text-btn-quaternary-foreground hover:border-btn-quaternary-border active:border-btn-quaternary-border disabled:bg-transparent disabled:text-btn-quaternary-foreground disabled:border-btn-quaternary-border/60", "dark:text-foreground dark:border-foreground/60 dark:hover:border-foreground dark:active:border-foreground/80")
|
|
424
499
|
},
|
|
425
500
|
{
|
|
426
501
|
type: "quaternary",
|
|
427
502
|
theme: "borderless",
|
|
428
|
-
className: cn("text-btn-quaternary-foreground hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-btn-quaternary-foreground", "dark:text-foreground")
|
|
503
|
+
className: cn$1("text-btn-quaternary-foreground hover:bg-btn-neutral-bg active:bg-btn-neutral-bg-active disabled:bg-transparent disabled:text-btn-quaternary-foreground", "dark:text-foreground")
|
|
429
504
|
},
|
|
430
505
|
{
|
|
431
506
|
type: "warning",
|
|
@@ -516,7 +591,7 @@ function Button$1({ ref, className, type, theme, size, block, loading = false, d
|
|
|
516
591
|
return "w-9 px-0";
|
|
517
592
|
};
|
|
518
593
|
return /* @__PURE__ */ jsx("button", {
|
|
519
|
-
className: cn(buttonVariants$1({
|
|
594
|
+
className: cn$1(buttonVariants$1({
|
|
520
595
|
type,
|
|
521
596
|
theme,
|
|
522
597
|
size,
|
|
@@ -548,7 +623,7 @@ function LinkButton({ ref, className, type, theme, size, block, icon, iconPositi
|
|
|
548
623
|
};
|
|
549
624
|
const linkProps = Component === "a" ? { href } : { to: href };
|
|
550
625
|
return /* @__PURE__ */ jsx(Component, {
|
|
551
|
-
className: cn(buttonVariants$1({
|
|
626
|
+
className: cn$1(buttonVariants$1({
|
|
552
627
|
type,
|
|
553
628
|
theme,
|
|
554
629
|
size,
|
|
@@ -566,30 +641,117 @@ function LinkButton({ ref, className, type, theme, size, block, icon, iconPositi
|
|
|
566
641
|
}
|
|
567
642
|
LinkButton.displayName = "LinkButton";
|
|
568
643
|
|
|
644
|
+
//#endregion
|
|
645
|
+
//#region ../shadcn/ui/separator.tsx
|
|
646
|
+
const Separator = ({ className, orientation = "horizontal", decorative = true, ...props }) => {
|
|
647
|
+
return /* @__PURE__ */ jsx(SeparatorPrimitive.Root, {
|
|
648
|
+
"data-slot": "separator-root",
|
|
649
|
+
decorative,
|
|
650
|
+
orientation,
|
|
651
|
+
className: cn("bg-border shrink-0 data-[orientation=horizontal]:h-px data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full data-[orientation=vertical]:w-px", className),
|
|
652
|
+
...props
|
|
653
|
+
});
|
|
654
|
+
};
|
|
655
|
+
|
|
656
|
+
//#endregion
|
|
657
|
+
//#region ../shadcn/ui/button-group.tsx
|
|
658
|
+
const buttonGroupVariants = cva("flex w-fit items-stretch has-[>[data-slot=button-group]]:gap-2 [&>*]:focus-visible:relative [&>*]:focus-visible:z-10 has-[select[aria-hidden=true]:last-child]:[&>[data-slot=select-trigger]:last-of-type]:rounded-r-md [&>[data-slot=select-trigger]:not([class*='w-'])]:w-fit [&>input]:flex-1", {
|
|
659
|
+
variants: { orientation: {
|
|
660
|
+
horizontal: "[&>*:not(:first-child)]:rounded-l-none [&>*:not(:first-child)]:border-l-0 [&>*:not(:last-child)]:rounded-r-none",
|
|
661
|
+
vertical: "flex-col [&>*:not(:first-child)]:rounded-t-none [&>*:not(:first-child)]:border-t-0 [&>*:not(:last-child)]:rounded-b-none"
|
|
662
|
+
} },
|
|
663
|
+
defaultVariants: { orientation: "horizontal" }
|
|
664
|
+
});
|
|
665
|
+
function ButtonGroup({ className, orientation, ...props }) {
|
|
666
|
+
return /* @__PURE__ */ jsx("div", {
|
|
667
|
+
role: "group",
|
|
668
|
+
"data-slot": "button-group",
|
|
669
|
+
"data-orientation": orientation,
|
|
670
|
+
className: cn(buttonGroupVariants({ orientation }), className),
|
|
671
|
+
...props
|
|
672
|
+
});
|
|
673
|
+
}
|
|
674
|
+
function ButtonGroupText({ className, asChild = false, ...props }) {
|
|
675
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
|
|
676
|
+
className: cn("bg-muted flex items-center gap-2 rounded-md border px-4 text-sm font-medium shadow-xs [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
|
|
677
|
+
...props
|
|
678
|
+
});
|
|
679
|
+
}
|
|
680
|
+
function ButtonGroupSeparator({ className, orientation = "vertical", ...props }) {
|
|
681
|
+
return /* @__PURE__ */ jsx(Separator, {
|
|
682
|
+
"data-slot": "button-group-separator",
|
|
683
|
+
orientation,
|
|
684
|
+
className: cn("bg-input relative !m-0 self-stretch data-[orientation=vertical]:h-auto", className),
|
|
685
|
+
...props
|
|
686
|
+
});
|
|
687
|
+
}
|
|
688
|
+
|
|
689
|
+
//#endregion
|
|
690
|
+
//#region ../shadcn/ui/button.tsx
|
|
691
|
+
/**
|
|
692
|
+
* Vanilla shadcn/ui Button Component
|
|
693
|
+
* Pure shadcn button without Datum customizations
|
|
694
|
+
* For Datum-specific features (dashed variant, isLoading), import from @/modules/datum-ui
|
|
695
|
+
*/
|
|
696
|
+
const buttonVariants = cva("inline-flex items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium ring-offset-background transition-colors focus-visible:outline-hidden focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", {
|
|
697
|
+
variants: {
|
|
698
|
+
variant: {
|
|
699
|
+
default: "bg-primary text-primary-foreground hover:bg-primary/90",
|
|
700
|
+
destructive: "bg-destructive text-destructive-foreground hover:bg-destructive/90",
|
|
701
|
+
outline: "border border-input bg-background hover:bg-accent hover:text-accent-foreground",
|
|
702
|
+
secondary: "bg-secondary text-secondary-foreground hover:bg-secondary/80",
|
|
703
|
+
ghost: "hover:bg-accent hover:text-accent-foreground",
|
|
704
|
+
link: "text-primary underline-offset-4 hover:underline"
|
|
705
|
+
},
|
|
706
|
+
size: {
|
|
707
|
+
default: "h-10 px-4 py-2",
|
|
708
|
+
sm: "h-9 rounded-md px-3",
|
|
709
|
+
lg: "h-11 rounded-md px-8",
|
|
710
|
+
icon: "h-10 w-10"
|
|
711
|
+
}
|
|
712
|
+
},
|
|
713
|
+
defaultVariants: {
|
|
714
|
+
variant: "default",
|
|
715
|
+
size: "default"
|
|
716
|
+
}
|
|
717
|
+
});
|
|
718
|
+
const Button = React$1.forwardRef(({ className, variant, size, asChild = false, ...props }, ref) => {
|
|
719
|
+
return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
|
|
720
|
+
className: cn(buttonVariants({
|
|
721
|
+
variant,
|
|
722
|
+
size,
|
|
723
|
+
className
|
|
724
|
+
})),
|
|
725
|
+
ref,
|
|
726
|
+
...props
|
|
727
|
+
});
|
|
728
|
+
});
|
|
729
|
+
Button.displayName = "Button";
|
|
730
|
+
|
|
569
731
|
//#endregion
|
|
570
732
|
//#region src/components/base/calendar/calendar.tsx
|
|
571
733
|
function CalendarRoot({ className, rootRef, ...props }) {
|
|
572
734
|
return /* @__PURE__ */ jsx("div", {
|
|
573
735
|
"data-slot": "calendar",
|
|
574
736
|
ref: rootRef,
|
|
575
|
-
className: cn(className),
|
|
737
|
+
className: cn$1(className),
|
|
576
738
|
...props
|
|
577
739
|
});
|
|
578
740
|
}
|
|
579
741
|
function CalendarChevron({ className, orientation, ...props }) {
|
|
580
742
|
if (orientation === "left") return /* @__PURE__ */ jsx(Icon, {
|
|
581
743
|
icon: ChevronLeftIcon,
|
|
582
|
-
className: cn("size-4", className),
|
|
744
|
+
className: cn$1("size-4", className),
|
|
583
745
|
...props
|
|
584
746
|
});
|
|
585
747
|
if (orientation === "right") return /* @__PURE__ */ jsx(Icon, {
|
|
586
748
|
icon: ChevronRightIcon,
|
|
587
|
-
className: cn("size-4", className),
|
|
749
|
+
className: cn$1("size-4", className),
|
|
588
750
|
...props
|
|
589
751
|
});
|
|
590
752
|
return /* @__PURE__ */ jsx(Icon, {
|
|
591
753
|
icon: ChevronDownIcon,
|
|
592
|
-
className: cn("size-4", className),
|
|
754
|
+
className: cn$1("size-4", className),
|
|
593
755
|
...props
|
|
594
756
|
});
|
|
595
757
|
}
|
|
@@ -606,38 +768,38 @@ function Calendar$1({ className, classNames, showOutsideDays = true, captionLayo
|
|
|
606
768
|
const defaultClassNames = getDefaultClassNames();
|
|
607
769
|
return /* @__PURE__ */ jsx(DayPicker, {
|
|
608
770
|
showOutsideDays,
|
|
609
|
-
className: cn("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
|
|
771
|
+
className: cn$1("bg-background group/calendar p-3 [--cell-size:--spacing(8)] [[data-slot=card-content]_&]:bg-transparent [[data-slot=popover-content]_&]:bg-transparent", String.raw`rtl:**:[.rdp-button\_next>svg]:rotate-180`, String.raw`rtl:**:[.rdp-button\_previous>svg]:rotate-180`, className),
|
|
610
772
|
captionLayout,
|
|
611
773
|
formatters: {
|
|
612
774
|
formatMonthDropdown: (date) => date.toLocaleString("default", { month: "short" }),
|
|
613
775
|
...formatters
|
|
614
776
|
},
|
|
615
777
|
classNames: {
|
|
616
|
-
root: cn("w-fit", defaultClassNames.root),
|
|
617
|
-
months: cn("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
|
|
618
|
-
month: cn("flex flex-col w-full gap-4", defaultClassNames.month),
|
|
619
|
-
nav: cn("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
|
|
620
|
-
button_previous: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
|
|
621
|
-
button_next: cn(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
|
|
622
|
-
month_caption: cn("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
|
|
623
|
-
dropdowns: cn("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
|
|
624
|
-
dropdown_root: cn("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", defaultClassNames.dropdown_root),
|
|
625
|
-
dropdown: cn("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
|
|
626
|
-
caption_label: cn("select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
|
|
778
|
+
root: cn$1("w-fit", defaultClassNames.root),
|
|
779
|
+
months: cn$1("flex gap-4 flex-col md:flex-row relative", defaultClassNames.months),
|
|
780
|
+
month: cn$1("flex flex-col w-full gap-4", defaultClassNames.month),
|
|
781
|
+
nav: cn$1("flex items-center gap-1 w-full absolute top-0 inset-x-0 justify-between", defaultClassNames.nav),
|
|
782
|
+
button_previous: cn$1(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_previous),
|
|
783
|
+
button_next: cn$1(buttonVariants({ variant: buttonVariant }), "size-(--cell-size) aria-disabled:opacity-50 p-0 select-none", defaultClassNames.button_next),
|
|
784
|
+
month_caption: cn$1("flex items-center justify-center h-(--cell-size) w-full px-(--cell-size)", defaultClassNames.month_caption),
|
|
785
|
+
dropdowns: cn$1("w-full flex items-center text-sm font-medium justify-center h-(--cell-size) gap-1.5", defaultClassNames.dropdowns),
|
|
786
|
+
dropdown_root: cn$1("relative has-focus:border-ring border border-input shadow-xs has-focus:ring-ring/50 has-focus:ring-[3px] rounded-md", defaultClassNames.dropdown_root),
|
|
787
|
+
dropdown: cn$1("absolute bg-popover inset-0 opacity-0", defaultClassNames.dropdown),
|
|
788
|
+
caption_label: cn$1("select-none font-medium", captionLayout === "label" ? "text-sm" : "rounded-md pl-2 pr-1 flex items-center gap-1 text-sm h-8 [&>svg]:text-muted-foreground [&>svg]:size-3.5", defaultClassNames.caption_label),
|
|
627
789
|
table: "w-full border-collapse",
|
|
628
|
-
weekdays: cn("flex", defaultClassNames.weekdays),
|
|
629
|
-
weekday: cn("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
|
|
630
|
-
week: cn("flex w-full mt-2", defaultClassNames.week),
|
|
631
|
-
week_number_header: cn("select-none w-(--cell-size)", defaultClassNames.week_number_header),
|
|
632
|
-
week_number: cn("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
|
|
633
|
-
day: cn("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", defaultClassNames.day),
|
|
634
|
-
range_start: cn("rounded-l-md bg-accent", defaultClassNames.range_start),
|
|
635
|
-
range_middle: cn("rounded-none", defaultClassNames.range_middle),
|
|
636
|
-
range_end: cn("rounded-r-md bg-accent", defaultClassNames.range_end),
|
|
637
|
-
today: cn("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
638
|
-
outside: cn("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
639
|
-
disabled: cn("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
640
|
-
hidden: cn("invisible", defaultClassNames.hidden),
|
|
790
|
+
weekdays: cn$1("flex", defaultClassNames.weekdays),
|
|
791
|
+
weekday: cn$1("text-muted-foreground rounded-md flex-1 font-normal text-[0.8rem] select-none", defaultClassNames.weekday),
|
|
792
|
+
week: cn$1("flex w-full mt-2", defaultClassNames.week),
|
|
793
|
+
week_number_header: cn$1("select-none w-(--cell-size)", defaultClassNames.week_number_header),
|
|
794
|
+
week_number: cn$1("text-[0.8rem] select-none text-muted-foreground", defaultClassNames.week_number),
|
|
795
|
+
day: cn$1("relative w-full h-full p-0 text-center [&:first-child[data-selected=true]_button]:rounded-l-md [&:last-child[data-selected=true]_button]:rounded-r-md group/day aspect-square select-none", defaultClassNames.day),
|
|
796
|
+
range_start: cn$1("rounded-l-md bg-accent", defaultClassNames.range_start),
|
|
797
|
+
range_middle: cn$1("rounded-none", defaultClassNames.range_middle),
|
|
798
|
+
range_end: cn$1("rounded-r-md bg-accent", defaultClassNames.range_end),
|
|
799
|
+
today: cn$1("bg-accent text-accent-foreground rounded-md data-[selected=true]:rounded-none", defaultClassNames.today),
|
|
800
|
+
outside: cn$1("text-muted-foreground aria-selected:text-muted-foreground", defaultClassNames.outside),
|
|
801
|
+
disabled: cn$1("text-muted-foreground opacity-50", defaultClassNames.disabled),
|
|
802
|
+
hidden: cn$1("invisible", defaultClassNames.hidden),
|
|
641
803
|
...classNames
|
|
642
804
|
},
|
|
643
805
|
components: {
|
|
@@ -665,11 +827,35 @@ function CalendarDayButton({ className, day, modifiers, ...props }) {
|
|
|
665
827
|
"data-range-start": modifiers.range_start,
|
|
666
828
|
"data-range-end": modifiers.range_end,
|
|
667
829
|
"data-range-middle": modifiers.range_middle,
|
|
668
|
-
className: cn("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
|
|
830
|
+
className: cn$1("data-[selected-single=true]:bg-primary data-[selected-single=true]:text-primary-foreground data-[range-middle=true]:bg-accent data-[range-middle=true]:text-accent-foreground data-[range-start=true]:bg-primary data-[range-start=true]:text-primary-foreground data-[range-end=true]:bg-primary data-[range-end=true]:text-primary-foreground group-data-[focused=true]/day:border-ring group-data-[focused=true]/day:ring-ring/50 dark:hover:text-accent-foreground flex aspect-square size-auto w-full min-w-(--cell-size) flex-col gap-1 leading-none font-normal group-data-[focused=true]/day:relative group-data-[focused=true]/day:z-10 group-data-[focused=true]/day:ring-[3px] data-[range-end=true]:rounded-md data-[range-end=true]:rounded-r-md data-[range-middle=true]:rounded-none data-[range-start=true]:rounded-md data-[range-start=true]:rounded-l-md [&>span]:text-xs [&>span]:opacity-70", defaultClassNames.day, className),
|
|
669
831
|
...props
|
|
670
832
|
});
|
|
671
833
|
}
|
|
672
834
|
|
|
835
|
+
//#endregion
|
|
836
|
+
//#region ../shadcn/ui/card.tsx
|
|
837
|
+
const CardTitle = ({ className, ...props }) => {
|
|
838
|
+
return /* @__PURE__ */ jsx("div", {
|
|
839
|
+
"data-slot": "card-title",
|
|
840
|
+
className: cn("leading-none font-semibold", className),
|
|
841
|
+
...props
|
|
842
|
+
});
|
|
843
|
+
};
|
|
844
|
+
const CardDescription = ({ className, ...props }) => {
|
|
845
|
+
return /* @__PURE__ */ jsx("div", {
|
|
846
|
+
"data-slot": "card-description",
|
|
847
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
848
|
+
...props
|
|
849
|
+
});
|
|
850
|
+
};
|
|
851
|
+
const CardContent = ({ className, ...props }) => {
|
|
852
|
+
return /* @__PURE__ */ jsx("div", {
|
|
853
|
+
"data-slot": "card-content",
|
|
854
|
+
className: cn("px-6", className),
|
|
855
|
+
...props
|
|
856
|
+
});
|
|
857
|
+
};
|
|
858
|
+
|
|
673
859
|
//#endregion
|
|
674
860
|
//#region src/components/base/card/card.tsx
|
|
675
861
|
/**
|
|
@@ -684,47 +870,362 @@ const DEFAULT_CARD_CLASSNAME = "bg-card text-card-foreground flex flex-col gap-4
|
|
|
684
870
|
function Card({ className, ...props }) {
|
|
685
871
|
return /* @__PURE__ */ jsx("div", {
|
|
686
872
|
"data-slot": "card",
|
|
687
|
-
className: cn(DEFAULT_CARD_CLASSNAME, className),
|
|
873
|
+
className: cn$1(DEFAULT_CARD_CLASSNAME, className),
|
|
688
874
|
...props
|
|
689
875
|
});
|
|
690
876
|
}
|
|
691
877
|
function CardHeader({ className, ...props }) {
|
|
692
878
|
return /* @__PURE__ */ jsx("div", {
|
|
693
879
|
"data-slot": "card-header",
|
|
694
|
-
className: cn("border-card-border flex flex-col gap-3 px-6", className),
|
|
880
|
+
className: cn$1("border-card-border flex flex-col gap-3 px-6", className),
|
|
695
881
|
...props
|
|
696
882
|
});
|
|
697
883
|
}
|
|
698
884
|
function CardFooter({ className, ...props }) {
|
|
699
885
|
return /* @__PURE__ */ jsx("div", {
|
|
700
886
|
"data-slot": "card-footer",
|
|
701
|
-
className: cn("border-card-border px-6", className),
|
|
887
|
+
className: cn$1("border-card-border px-6", className),
|
|
702
888
|
...props
|
|
703
889
|
});
|
|
704
890
|
}
|
|
705
891
|
|
|
892
|
+
//#endregion
|
|
893
|
+
//#region ../shadcn/ui/chart.tsx
|
|
894
|
+
const THEMES = {
|
|
895
|
+
light: "",
|
|
896
|
+
dark: ".dark"
|
|
897
|
+
};
|
|
898
|
+
const ChartContext = React$1.createContext(null);
|
|
899
|
+
function useChart() {
|
|
900
|
+
const context = React$1.useContext(ChartContext);
|
|
901
|
+
if (!context) throw new Error("useChart must be used within a <ChartContainer />");
|
|
902
|
+
return context;
|
|
903
|
+
}
|
|
904
|
+
function ChartContainer({ id, className, children, config, ...props }) {
|
|
905
|
+
const uniqueId = React$1.useId();
|
|
906
|
+
const chartId = `chart-${id || uniqueId.replace(/:/g, "")}`;
|
|
907
|
+
return /* @__PURE__ */ jsx(ChartContext.Provider, {
|
|
908
|
+
value: { config },
|
|
909
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
910
|
+
"data-slot": "chart",
|
|
911
|
+
"data-chart": chartId,
|
|
912
|
+
className: cn("[&_.recharts-cartesian-axis-tick_text]:fill-muted-foreground [&_.recharts-cartesian-grid_line[stroke='#ccc']]:stroke-border/50 [&_.recharts-curve.recharts-tooltip-cursor]:stroke-border [&_.recharts-polar-grid_[stroke='#ccc']]:stroke-border [&_.recharts-radial-bar-background-sector]:fill-muted [&_.recharts-rectangle.recharts-tooltip-cursor]:fill-muted [&_.recharts-reference-line_[stroke='#ccc']]:stroke-border flex aspect-video justify-center text-xs [&_.recharts-dot[stroke='#fff']]:stroke-transparent [&_.recharts-layer]:outline-hidden [&_.recharts-sector]:outline-hidden [&_.recharts-sector[stroke='#fff']]:stroke-transparent [&_.recharts-surface]:outline-hidden", className),
|
|
913
|
+
...props,
|
|
914
|
+
children: [/* @__PURE__ */ jsx(ChartStyle, {
|
|
915
|
+
id: chartId,
|
|
916
|
+
config
|
|
917
|
+
}), /* @__PURE__ */ jsx(RechartsPrimitive.ResponsiveContainer, { children })]
|
|
918
|
+
})
|
|
919
|
+
});
|
|
920
|
+
}
|
|
921
|
+
const ChartStyle = ({ id, config }) => {
|
|
922
|
+
const colorConfig = Object.entries(config).filter(([, config]) => config.theme || config.color);
|
|
923
|
+
if (!colorConfig.length) return null;
|
|
924
|
+
return /* @__PURE__ */ jsx("style", { dangerouslySetInnerHTML: { __html: Object.entries(THEMES).map(([theme, prefix]) => `
|
|
925
|
+
${prefix} [data-chart=${id}] {
|
|
926
|
+
${colorConfig.map(([key, itemConfig]) => {
|
|
927
|
+
const color = itemConfig.theme?.[theme] || itemConfig.color;
|
|
928
|
+
return color ? ` --color-${key}: ${color};` : null;
|
|
929
|
+
}).join("\n")}
|
|
930
|
+
}
|
|
931
|
+
`).join("\n") } });
|
|
932
|
+
};
|
|
933
|
+
const ChartTooltip = RechartsPrimitive.Tooltip;
|
|
934
|
+
function ChartTooltipContent({ active, payload, label, className, indicator = "dot", hideLabel = false, hideIndicator = false, labelFormatter, formatter, labelClassName, color, nameKey, labelKey }) {
|
|
935
|
+
const { config } = useChart();
|
|
936
|
+
const tooltipLabel = React$1.useMemo(() => {
|
|
937
|
+
if (hideLabel || !payload?.length) return null;
|
|
938
|
+
const [item] = payload;
|
|
939
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, `${labelKey || item?.dataKey || item?.name || "value"}`);
|
|
940
|
+
const value = (() => {
|
|
941
|
+
const v = !labelKey && typeof label === "string" ? config[label]?.label ?? label : itemConfig?.label;
|
|
942
|
+
return typeof v === "string" || typeof v === "number" ? v : void 0;
|
|
943
|
+
})();
|
|
944
|
+
if (labelFormatter) return /* @__PURE__ */ jsx("div", {
|
|
945
|
+
className: cn("font-medium", labelClassName),
|
|
946
|
+
children: labelFormatter(label, payload)
|
|
947
|
+
});
|
|
948
|
+
if (!value) return null;
|
|
949
|
+
return /* @__PURE__ */ jsx("div", {
|
|
950
|
+
className: cn("font-medium", labelClassName),
|
|
951
|
+
children: value
|
|
952
|
+
});
|
|
953
|
+
}, [
|
|
954
|
+
label,
|
|
955
|
+
labelFormatter,
|
|
956
|
+
payload,
|
|
957
|
+
hideLabel,
|
|
958
|
+
labelClassName,
|
|
959
|
+
config,
|
|
960
|
+
labelKey
|
|
961
|
+
]);
|
|
962
|
+
if (!active || !payload?.length) return null;
|
|
963
|
+
const nestLabel = payload.length === 1 && indicator !== "dot";
|
|
964
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
965
|
+
className: cn("border-border/50 bg-background z-50 grid min-w-[8rem] items-start gap-1.5 rounded-lg border px-2.5 py-1.5 text-xs shadow-xl", className),
|
|
966
|
+
children: [!nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("div", {
|
|
967
|
+
className: "grid gap-1.5",
|
|
968
|
+
children: payload.map((item, index) => {
|
|
969
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey || item.name || item.dataKey || "value"}`);
|
|
970
|
+
const indicatorColor = color || item.payload.fill || item.color;
|
|
971
|
+
return /* @__PURE__ */ jsx("div", {
|
|
972
|
+
className: cn("[&>svg]:text-muted-foreground flex w-full flex-wrap items-stretch gap-2 [&>svg]:h-2.5 [&>svg]:w-2.5", indicator === "dot" && "items-center"),
|
|
973
|
+
children: formatter && item?.value !== void 0 && item.name ? formatter(item.value, item.name, item, index, item.payload) : /* @__PURE__ */ jsxs(Fragment$1, { children: [itemConfig?.icon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : !hideIndicator && /* @__PURE__ */ jsx("div", {
|
|
974
|
+
className: cn("shrink-0 rounded-[2px] border-(--color-border) bg-(--color-bg)", {
|
|
975
|
+
"h-2.5 w-2.5": indicator === "dot",
|
|
976
|
+
"w-1": indicator === "line",
|
|
977
|
+
"w-0 border-[1.5px] border-dashed bg-transparent": indicator === "dashed",
|
|
978
|
+
"my-0.5": nestLabel && indicator === "dashed"
|
|
979
|
+
}),
|
|
980
|
+
style: {
|
|
981
|
+
"--color-bg": indicatorColor,
|
|
982
|
+
"--color-border": indicatorColor
|
|
983
|
+
}
|
|
984
|
+
}), /* @__PURE__ */ jsxs("div", {
|
|
985
|
+
className: cn("flex flex-1 justify-between leading-none", nestLabel ? "items-end" : "items-center"),
|
|
986
|
+
children: [/* @__PURE__ */ jsxs("div", {
|
|
987
|
+
className: "grid gap-1.5",
|
|
988
|
+
children: [nestLabel ? tooltipLabel : null, /* @__PURE__ */ jsx("span", {
|
|
989
|
+
className: "text-muted-foreground",
|
|
990
|
+
children: itemConfig?.label || item.name
|
|
991
|
+
})]
|
|
992
|
+
}), item.value && /* @__PURE__ */ jsx("span", {
|
|
993
|
+
className: "text-foreground font-mono font-medium tabular-nums",
|
|
994
|
+
children: item.value.toLocaleString()
|
|
995
|
+
})]
|
|
996
|
+
})] })
|
|
997
|
+
}, item.dataKey);
|
|
998
|
+
})
|
|
999
|
+
})]
|
|
1000
|
+
});
|
|
1001
|
+
}
|
|
1002
|
+
const ChartLegend = RechartsPrimitive.Legend;
|
|
1003
|
+
function ChartLegendContent({ className, hideIcon = false, payload, nameKey }) {
|
|
1004
|
+
const { config } = useChart();
|
|
1005
|
+
if (!payload?.length) return null;
|
|
1006
|
+
return /* @__PURE__ */ jsx("div", {
|
|
1007
|
+
className: cn("flex flex-wrap items-center justify-center gap-2", className),
|
|
1008
|
+
children: payload.map((item) => {
|
|
1009
|
+
const itemConfig = getPayloadConfigFromPayload(config, item, `${nameKey || item.dataKey || "value"}`);
|
|
1010
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1011
|
+
className: cn("[&>svg]:text-muted-foreground flex items-center gap-1.5 [&>svg]:h-3 [&>svg]:w-3"),
|
|
1012
|
+
children: [itemConfig?.icon && !hideIcon ? /* @__PURE__ */ jsx(itemConfig.icon, {}) : /* @__PURE__ */ jsx("div", {
|
|
1013
|
+
className: "h-2 w-2 shrink-0 rounded-[2px]",
|
|
1014
|
+
style: { backgroundColor: item.color }
|
|
1015
|
+
}), itemConfig?.label]
|
|
1016
|
+
}, item.value);
|
|
1017
|
+
})
|
|
1018
|
+
});
|
|
1019
|
+
}
|
|
1020
|
+
function getPayloadConfigFromPayload(config, payload, key) {
|
|
1021
|
+
if (typeof payload !== "object" || payload === null) return;
|
|
1022
|
+
const payloadPayload = "payload" in payload && typeof payload.payload === "object" && payload.payload !== null ? payload.payload : void 0;
|
|
1023
|
+
let configLabelKey = key;
|
|
1024
|
+
if (key in payload && typeof payload[key] === "string") configLabelKey = payload[key];
|
|
1025
|
+
else if (payloadPayload && key in payloadPayload && typeof payloadPayload[key] === "string") configLabelKey = payloadPayload[key];
|
|
1026
|
+
return configLabelKey in config ? config[configLabelKey] : config[key];
|
|
1027
|
+
}
|
|
1028
|
+
|
|
1029
|
+
//#endregion
|
|
1030
|
+
//#region ../shadcn/ui/checkbox.tsx
|
|
1031
|
+
function Checkbox$1({ className, ...props }) {
|
|
1032
|
+
return /* @__PURE__ */ jsx(CheckboxPrimitive.Root, {
|
|
1033
|
+
"data-slot": "checkbox",
|
|
1034
|
+
className: cn("peer border-input dark:bg-input/30 data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:data-[state=checked]:bg-primary data-[state=checked]:border-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive size-4 shrink-0 rounded-[4px] border shadow-xs transition-shadow outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
1035
|
+
...props,
|
|
1036
|
+
children: /* @__PURE__ */ jsx(CheckboxPrimitive.Indicator, {
|
|
1037
|
+
"data-slot": "checkbox-indicator",
|
|
1038
|
+
className: "flex items-center justify-center text-current transition-none",
|
|
1039
|
+
children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-3.5" })
|
|
1040
|
+
})
|
|
1041
|
+
});
|
|
1042
|
+
}
|
|
1043
|
+
|
|
706
1044
|
//#endregion
|
|
707
1045
|
//#region src/components/base/checkbox/checkbox.tsx
|
|
708
|
-
function Checkbox
|
|
709
|
-
return /* @__PURE__ */ jsx(Checkbox, {
|
|
1046
|
+
function Checkbox({ ref, className, ...props }) {
|
|
1047
|
+
return /* @__PURE__ */ jsx(Checkbox$1, {
|
|
710
1048
|
ref,
|
|
711
|
-
className: cn(className),
|
|
1049
|
+
className: cn$1(className),
|
|
712
1050
|
...props
|
|
713
1051
|
});
|
|
714
1052
|
}
|
|
715
|
-
Checkbox
|
|
1053
|
+
Checkbox.displayName = "Checkbox";
|
|
1054
|
+
|
|
1055
|
+
//#endregion
|
|
1056
|
+
//#region ../shadcn/ui/collapsible.tsx
|
|
1057
|
+
const Collapsible = CollapsiblePrimitive.Root;
|
|
1058
|
+
const CollapsibleTrigger = CollapsiblePrimitive.CollapsibleTrigger;
|
|
1059
|
+
const CollapsibleContent = CollapsiblePrimitive.CollapsibleContent;
|
|
1060
|
+
|
|
1061
|
+
//#endregion
|
|
1062
|
+
//#region ../shadcn/ui/dialog.tsx
|
|
1063
|
+
const Dialog$1 = ({ ...props }) => {
|
|
1064
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Root, {
|
|
1065
|
+
"data-slot": "dialog",
|
|
1066
|
+
...props
|
|
1067
|
+
});
|
|
1068
|
+
};
|
|
1069
|
+
const DialogTrigger = ({ ...props }) => {
|
|
1070
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, {
|
|
1071
|
+
"data-slot": "dialog-trigger",
|
|
1072
|
+
...props
|
|
1073
|
+
});
|
|
1074
|
+
};
|
|
1075
|
+
const DialogPortal = ({ ...props }) => {
|
|
1076
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
|
|
1077
|
+
"data-slot": "dialog-portal",
|
|
1078
|
+
...props
|
|
1079
|
+
});
|
|
1080
|
+
};
|
|
1081
|
+
const DialogClose = ({ ...props }) => {
|
|
1082
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Close, {
|
|
1083
|
+
"data-slot": "dialog-close",
|
|
1084
|
+
...props
|
|
1085
|
+
});
|
|
1086
|
+
};
|
|
1087
|
+
const DialogOverlay$1 = ({ className, ...props }) => {
|
|
1088
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
|
|
1089
|
+
"data-slot": "dialog-overlay",
|
|
1090
|
+
className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80", className),
|
|
1091
|
+
...props
|
|
1092
|
+
});
|
|
1093
|
+
};
|
|
1094
|
+
const DialogContent = ({ className, children, ...props }) => {
|
|
1095
|
+
return /* @__PURE__ */ jsxs(DialogPortal, {
|
|
1096
|
+
"data-slot": "dialog-portal",
|
|
1097
|
+
children: [/* @__PURE__ */ jsx(DialogOverlay$1, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
|
|
1098
|
+
"data-slot": "dialog-content",
|
|
1099
|
+
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 grid w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] gap-4 rounded-lg border p-6 shadow-lg duration-200 sm:max-w-lg", className),
|
|
1100
|
+
...props,
|
|
1101
|
+
children: [children, /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
|
|
1102
|
+
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
1103
|
+
children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
1104
|
+
className: "sr-only",
|
|
1105
|
+
children: "Close"
|
|
1106
|
+
})]
|
|
1107
|
+
})]
|
|
1108
|
+
})]
|
|
1109
|
+
});
|
|
1110
|
+
};
|
|
1111
|
+
const DialogHeader = ({ className, ...props }) => {
|
|
1112
|
+
return /* @__PURE__ */ jsx("div", {
|
|
1113
|
+
"data-slot": "dialog-header",
|
|
1114
|
+
className: cn("flex flex-col gap-2 text-center sm:text-left", className),
|
|
1115
|
+
...props
|
|
1116
|
+
});
|
|
1117
|
+
};
|
|
1118
|
+
const DialogFooter = ({ className, ...props }) => {
|
|
1119
|
+
return /* @__PURE__ */ jsx("div", {
|
|
1120
|
+
"data-slot": "dialog-footer",
|
|
1121
|
+
className: cn("flex flex-col-reverse gap-2 sm:flex-row sm:justify-end", className),
|
|
1122
|
+
...props
|
|
1123
|
+
});
|
|
1124
|
+
};
|
|
1125
|
+
const DialogTitle = ({ className, ...props }) => {
|
|
1126
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Title, {
|
|
1127
|
+
"data-slot": "dialog-title",
|
|
1128
|
+
className: cn("text-lg leading-none font-semibold", className),
|
|
1129
|
+
...props
|
|
1130
|
+
});
|
|
1131
|
+
};
|
|
1132
|
+
const DialogDescription = ({ className, ...props }) => {
|
|
1133
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Description, {
|
|
1134
|
+
"data-slot": "dialog-description",
|
|
1135
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
1136
|
+
...props
|
|
1137
|
+
});
|
|
1138
|
+
};
|
|
1139
|
+
|
|
1140
|
+
//#endregion
|
|
1141
|
+
//#region ../shadcn/ui/command.tsx
|
|
1142
|
+
const Command$1 = ({ className, ...props }) => {
|
|
1143
|
+
return /* @__PURE__ */ jsx(Command, {
|
|
1144
|
+
"data-slot": "command",
|
|
1145
|
+
className: cn("bg-popover text-popover-foreground flex h-full w-full flex-col overflow-hidden rounded-md", className),
|
|
1146
|
+
...props
|
|
1147
|
+
});
|
|
1148
|
+
};
|
|
1149
|
+
const CommandDialog = ({ title = "Command Palette", description = "Search for a command to run...", children, ...props }) => {
|
|
1150
|
+
return /* @__PURE__ */ jsxs(Dialog$1, {
|
|
1151
|
+
...props,
|
|
1152
|
+
children: [/* @__PURE__ */ jsxs(DialogHeader, {
|
|
1153
|
+
className: "sr-only",
|
|
1154
|
+
children: [/* @__PURE__ */ jsx(DialogTitle, { children: title }), /* @__PURE__ */ jsx(DialogDescription, { children: description })]
|
|
1155
|
+
}), /* @__PURE__ */ jsx(DialogContent, {
|
|
1156
|
+
className: "overflow-hidden p-0",
|
|
1157
|
+
children: /* @__PURE__ */ jsx(Command$1, {
|
|
1158
|
+
className: "[&_[cmdk-group-heading]]:text-muted-foreground **:data-[slot=command-input-wrapper]:h-12 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:font-medium [&_[cmdk-group]]:px-2 [&_[cmdk-group]:not([hidden])_~[cmdk-group]]:pt-0 [&_[cmdk-input-wrapper]_svg]:h-5 [&_[cmdk-input-wrapper]_svg]:w-5 [&_[cmdk-input]]:h-12 [&_[cmdk-item]]:px-2 [&_[cmdk-item]]:py-3 [&_[cmdk-item]_svg]:h-5 [&_[cmdk-item]_svg]:w-5",
|
|
1159
|
+
children
|
|
1160
|
+
})
|
|
1161
|
+
})]
|
|
1162
|
+
});
|
|
1163
|
+
};
|
|
1164
|
+
const CommandInput = ({ className, wrapperClassName, iconClassName, ...props }) => {
|
|
1165
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
1166
|
+
"data-slot": "command-input-wrapper",
|
|
1167
|
+
className: cn("flex h-9 items-center gap-2 border-b px-3", wrapperClassName),
|
|
1168
|
+
children: [/* @__PURE__ */ jsx(SearchIcon, { className: cn("size-4 shrink-0 opacity-50", iconClassName) }), /* @__PURE__ */ jsx(Command.Input, {
|
|
1169
|
+
"data-slot": "command-input",
|
|
1170
|
+
className: cn("placeholder:text-muted-foreground flex h-10 w-full rounded-md bg-transparent py-3 text-sm outline-hidden disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
1171
|
+
...props
|
|
1172
|
+
})]
|
|
1173
|
+
});
|
|
1174
|
+
};
|
|
1175
|
+
const CommandList = ({ className, ...props }) => {
|
|
1176
|
+
return /* @__PURE__ */ jsx(Command.List, {
|
|
1177
|
+
"data-slot": "command-list",
|
|
1178
|
+
className: cn("max-h-[300px] scroll-py-1 overflow-x-hidden overflow-y-auto", className),
|
|
1179
|
+
...props
|
|
1180
|
+
});
|
|
1181
|
+
};
|
|
1182
|
+
const CommandEmpty = ({ ...props }) => {
|
|
1183
|
+
return /* @__PURE__ */ jsx(Command.Empty, {
|
|
1184
|
+
"data-slot": "command-empty",
|
|
1185
|
+
className: "py-6 text-center text-sm",
|
|
1186
|
+
...props
|
|
1187
|
+
});
|
|
1188
|
+
};
|
|
1189
|
+
const CommandGroup = ({ className, ...props }) => {
|
|
1190
|
+
return /* @__PURE__ */ jsx(Command.Group, {
|
|
1191
|
+
"data-slot": "command-group",
|
|
1192
|
+
className: cn("text-foreground [&_[cmdk-group-heading]]:text-muted-foreground overflow-hidden p-1 [&_[cmdk-group-heading]]:px-2 [&_[cmdk-group-heading]]:py-1.5 [&_[cmdk-group-heading]]:text-xs [&_[cmdk-group-heading]]:font-medium", className),
|
|
1193
|
+
...props
|
|
1194
|
+
});
|
|
1195
|
+
};
|
|
1196
|
+
const CommandSeparator = ({ className, ...props }) => {
|
|
1197
|
+
return /* @__PURE__ */ jsx(Command.Separator, {
|
|
1198
|
+
"data-slot": "command-separator",
|
|
1199
|
+
className: cn("bg-border -mx-1 h-px", className),
|
|
1200
|
+
...props
|
|
1201
|
+
});
|
|
1202
|
+
};
|
|
1203
|
+
const CommandItem = ({ className, ...props }) => {
|
|
1204
|
+
return /* @__PURE__ */ jsx(Command.Item, {
|
|
1205
|
+
"data-slot": "command-item",
|
|
1206
|
+
className: cn("data-[selected=true]:bg-accent data-[selected=true]:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled=true]:pointer-events-none data-[disabled=true]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
1207
|
+
...props
|
|
1208
|
+
});
|
|
1209
|
+
};
|
|
1210
|
+
const CommandShortcut = ({ className, ...props }) => {
|
|
1211
|
+
return /* @__PURE__ */ jsx("span", {
|
|
1212
|
+
"data-slot": "command-shortcut",
|
|
1213
|
+
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
|
|
1214
|
+
...props
|
|
1215
|
+
});
|
|
1216
|
+
};
|
|
716
1217
|
|
|
717
1218
|
//#endregion
|
|
718
1219
|
//#region src/components/base/dialog/dialog.tsx
|
|
719
|
-
function Dialog
|
|
720
|
-
return /* @__PURE__ */ jsx(Dialog, {
|
|
1220
|
+
function Dialog({ children, ...props }) {
|
|
1221
|
+
return /* @__PURE__ */ jsx(Dialog$1, {
|
|
721
1222
|
...props,
|
|
722
1223
|
children
|
|
723
1224
|
});
|
|
724
1225
|
}
|
|
725
|
-
function DialogOverlay
|
|
726
|
-
return /* @__PURE__ */ jsx(DialogOverlay, {
|
|
727
|
-
className: cn("bg-dialog-overlay/50 backdrop-blur-[2px]", className),
|
|
1226
|
+
function DialogOverlay({ className, ...props }) {
|
|
1227
|
+
return /* @__PURE__ */ jsx(DialogOverlay$1, {
|
|
1228
|
+
className: cn$1("bg-dialog-overlay/50 backdrop-blur-[2px]", className),
|
|
728
1229
|
...props
|
|
729
1230
|
});
|
|
730
1231
|
}
|
|
@@ -735,21 +1236,21 @@ function Trigger$1({ children, asChild = true }) {
|
|
|
735
1236
|
});
|
|
736
1237
|
}
|
|
737
1238
|
function Content({ children, className }) {
|
|
738
|
-
return /* @__PURE__ */ jsxs(DialogPortal, { children: [/* @__PURE__ */ jsx(DialogOverlay
|
|
739
|
-
className: cn("dark:bg-muted dark:border-dialog-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 flex max-h-[80vh] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] flex-col gap-0 overflow-y-auto rounded-lg bg-white p-0 shadow-xl duration-200 sm:max-w-lg dark:border [&>button:last-child]:hidden", className),
|
|
1239
|
+
return /* @__PURE__ */ jsxs(DialogPortal, { children: [/* @__PURE__ */ jsx(DialogOverlay, {}), /* @__PURE__ */ jsx(DialogPrimitive.Content, {
|
|
1240
|
+
className: cn$1("dark:bg-muted dark:border-dialog-border data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 fixed top-[50%] left-[50%] z-50 flex max-h-[80vh] w-full max-w-[calc(100%-2rem)] translate-x-[-50%] translate-y-[-50%] flex-col gap-0 overflow-y-auto rounded-lg bg-white p-0 shadow-xl duration-200 sm:max-w-lg dark:border [&>button:last-child]:hidden", className),
|
|
740
1241
|
children
|
|
741
1242
|
})] });
|
|
742
1243
|
}
|
|
743
1244
|
function Header({ title, description, onClose, className, descriptionClassName }) {
|
|
744
1245
|
return /* @__PURE__ */ jsxs("div", {
|
|
745
|
-
className: cn("dark:bg-muted dark:border-dialog-border sticky top-0 z-50 flex shrink-0 flex-col gap-2 bg-white p-5", className),
|
|
1246
|
+
className: cn$1("dark:bg-muted dark:border-dialog-border sticky top-0 z-50 flex shrink-0 flex-col gap-2 bg-white p-5", className),
|
|
746
1247
|
children: [
|
|
747
1248
|
/* @__PURE__ */ jsx(DialogTitle, {
|
|
748
1249
|
className: "text-base font-semibold",
|
|
749
1250
|
children: title
|
|
750
1251
|
}),
|
|
751
1252
|
description && /* @__PURE__ */ jsx(DialogDescription, {
|
|
752
|
-
className: cn("text-sm font-normal", descriptionClassName),
|
|
1253
|
+
className: cn$1("text-sm font-normal", descriptionClassName),
|
|
753
1254
|
children: description
|
|
754
1255
|
}),
|
|
755
1256
|
onClose && /* @__PURE__ */ jsx(DialogClose, {
|
|
@@ -762,42 +1263,172 @@ function Header({ title, description, onClose, className, descriptionClassName }
|
|
|
762
1263
|
}
|
|
763
1264
|
function Body({ children, className }) {
|
|
764
1265
|
return /* @__PURE__ */ jsx("div", {
|
|
765
|
-
className: cn("py-5", className),
|
|
1266
|
+
className: cn$1("py-5", className),
|
|
766
1267
|
children
|
|
767
1268
|
});
|
|
768
1269
|
}
|
|
769
1270
|
function Footer({ children, className }) {
|
|
770
1271
|
return /* @__PURE__ */ jsx(DialogFooter, {
|
|
771
|
-
className: cn("dark:bg-muted dark:border-dialog-border sticky bottom-0 z-50 shrink-0 gap-3 bg-white p-5", className),
|
|
1272
|
+
className: cn$1("dark:bg-muted dark:border-dialog-border sticky bottom-0 z-50 shrink-0 gap-3 bg-white p-5", className),
|
|
772
1273
|
children
|
|
773
1274
|
});
|
|
774
1275
|
}
|
|
775
|
-
Dialog
|
|
776
|
-
Dialog
|
|
777
|
-
Dialog
|
|
778
|
-
Dialog
|
|
779
|
-
Dialog
|
|
780
|
-
Dialog
|
|
1276
|
+
Dialog.Trigger = Trigger$1;
|
|
1277
|
+
Dialog.Content = Content;
|
|
1278
|
+
Dialog.Header = Header;
|
|
1279
|
+
Dialog.Body = Body;
|
|
1280
|
+
Dialog.Footer = Footer;
|
|
1281
|
+
Dialog.Overlay = DialogOverlay;
|
|
1282
|
+
|
|
1283
|
+
//#endregion
|
|
1284
|
+
//#region ../shadcn/ui/hover-card.tsx
|
|
1285
|
+
function HoverCard({ ...props }) {
|
|
1286
|
+
return /* @__PURE__ */ jsx(HoverCardPrimitive.Root, {
|
|
1287
|
+
"data-slot": "hover-card",
|
|
1288
|
+
...props
|
|
1289
|
+
});
|
|
1290
|
+
}
|
|
1291
|
+
function HoverCardTrigger({ ...props }) {
|
|
1292
|
+
return /* @__PURE__ */ jsx(HoverCardPrimitive.Trigger, {
|
|
1293
|
+
"data-slot": "hover-card-trigger",
|
|
1294
|
+
...props
|
|
1295
|
+
});
|
|
1296
|
+
}
|
|
1297
|
+
function HoverCardContent({ className, align = "center", sideOffset = 4, ...props }) {
|
|
1298
|
+
return /* @__PURE__ */ jsx(HoverCardPrimitive.Portal, {
|
|
1299
|
+
"data-slot": "hover-card-portal",
|
|
1300
|
+
children: /* @__PURE__ */ jsx(HoverCardPrimitive.Content, {
|
|
1301
|
+
"data-slot": "hover-card-content",
|
|
1302
|
+
align,
|
|
1303
|
+
sideOffset,
|
|
1304
|
+
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-64 origin-(--radix-hover-card-content-transform-origin) rounded-md border p-4 shadow-md outline-hidden", className),
|
|
1305
|
+
...props
|
|
1306
|
+
})
|
|
1307
|
+
});
|
|
1308
|
+
}
|
|
1309
|
+
|
|
1310
|
+
//#endregion
|
|
1311
|
+
//#region ../shadcn/ui/input.tsx
|
|
1312
|
+
const Input$1 = ({ className, type, ...props }) => {
|
|
1313
|
+
return /* @__PURE__ */ jsx("input", {
|
|
1314
|
+
type,
|
|
1315
|
+
className: cn("flex h-10 w-full rounded-md px-3 py-2 text-base md:text-sm", "border-input bg-background ring-offset-background border", "placeholder:text-muted-foreground focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "read-only:cursor-not-allowed read-only:opacity-50 disabled:cursor-not-allowed disabled:opacity-50", "file:text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium", className),
|
|
1316
|
+
"data-slot": "input",
|
|
1317
|
+
...props
|
|
1318
|
+
});
|
|
1319
|
+
};
|
|
1320
|
+
Input$1.displayName = "Input";
|
|
781
1321
|
|
|
782
1322
|
//#endregion
|
|
783
1323
|
//#region src/components/base/input/input.tsx
|
|
784
|
-
function Input
|
|
785
|
-
return /* @__PURE__ */ jsx(Input, {
|
|
1324
|
+
function Input({ ref, className, ...props }) {
|
|
1325
|
+
return /* @__PURE__ */ jsx(Input$1, {
|
|
786
1326
|
ref,
|
|
787
|
-
className: cn("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
|
|
1327
|
+
className: cn$1("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
|
|
788
1328
|
...props
|
|
789
1329
|
});
|
|
790
1330
|
}
|
|
791
|
-
Input
|
|
1331
|
+
Input.displayName = "Input";
|
|
792
1332
|
|
|
793
1333
|
//#endregion
|
|
794
|
-
//#region
|
|
795
|
-
|
|
796
|
-
|
|
797
|
-
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
1334
|
+
//#region ../shadcn/ui/textarea.tsx
|
|
1335
|
+
function Textarea$1({ className, ...props }) {
|
|
1336
|
+
return /* @__PURE__ */ jsx("textarea", {
|
|
1337
|
+
"data-slot": "textarea",
|
|
1338
|
+
className: cn("border-input placeholder:text-muted-foreground", "dark:bg-input/30 flex field-sizing-content min-h-16 w-full rounded-md border bg-transparent", "px-3 py-2 text-base shadow-xs transition-[color,box-shadow] outline-none", "focus-visible:ring-ring focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-hidden", "disabled:cursor-not-allowed disabled:opacity-50 md:text-sm", className),
|
|
1339
|
+
...props
|
|
1340
|
+
});
|
|
1341
|
+
}
|
|
1342
|
+
|
|
1343
|
+
//#endregion
|
|
1344
|
+
//#region ../shadcn/ui/input-group.tsx
|
|
1345
|
+
function InputGroup({ className, ...props }) {
|
|
1346
|
+
return /* @__PURE__ */ jsx("div", {
|
|
1347
|
+
"data-slot": "input-group",
|
|
1348
|
+
role: "group",
|
|
1349
|
+
className: cn("group/input-group border-input dark:bg-input/30 relative flex w-full items-center rounded-md border shadow-xs transition-[color,box-shadow] outline-none", "h-9 has-[>textarea]:h-auto", "has-[>[data-align=inline-start]]:[&>input]:pl-2", "has-[>[data-align=inline-end]]:[&>input]:pr-2", "has-[>[data-align=block-start]]:h-auto has-[>[data-align=block-start]]:flex-col has-[>[data-align=block-start]]:[&>input]:pb-3", "has-[>[data-align=block-end]]:h-auto has-[>[data-align=block-end]]:flex-col has-[>[data-align=block-end]]:[&>input]:pt-3", "has-[[data-slot=input-group-control]:focus-visible]:ring-ring has-[[data-slot=input-group-control]:focus-visible]:ring-1", "has-[[data-slot][aria-invalid=true]]:ring-destructive/20 has-[[data-slot][aria-invalid=true]]:border-destructive dark:has-[[data-slot][aria-invalid=true]]:ring-destructive/40", className),
|
|
1350
|
+
...props
|
|
1351
|
+
});
|
|
1352
|
+
}
|
|
1353
|
+
const inputGroupAddonVariants = cva("text-muted-foreground flex h-auto cursor-text select-none items-center justify-center gap-2 py-1.5 text-sm font-medium group-data-[disabled=true]/input-group:opacity-50 [&>kbd]:rounded-[calc(var(--radius)-5px)] [&>svg:not([class*='size-'])]:size-4", {
|
|
1354
|
+
variants: { align: {
|
|
1355
|
+
"inline-start": "order-first pl-3 has-[>button]:ml-[-0.45rem] has-[>kbd]:ml-[-0.35rem]",
|
|
1356
|
+
"inline-end": "order-last pr-3 has-[>button]:mr-[-0.4rem] has-[>kbd]:mr-[-0.35rem]",
|
|
1357
|
+
"block-start": "[.border-b]:pb-3 order-first w-full justify-start px-3 pt-3 group-has-[>input]/input-group:pt-2.5",
|
|
1358
|
+
"block-end": "[.border-t]:pt-3 order-last w-full justify-start px-3 pb-3 group-has-[>input]/input-group:pb-2.5"
|
|
1359
|
+
} },
|
|
1360
|
+
defaultVariants: { align: "inline-start" }
|
|
1361
|
+
});
|
|
1362
|
+
function InputGroupAddon({ className, align = "inline-start", ...props }) {
|
|
1363
|
+
return /* @__PURE__ */ jsx("div", {
|
|
1364
|
+
role: "group",
|
|
1365
|
+
"data-slot": "input-group-addon",
|
|
1366
|
+
"data-align": align,
|
|
1367
|
+
className: cn(inputGroupAddonVariants({ align }), className),
|
|
1368
|
+
onClick: (e) => {
|
|
1369
|
+
if (e.target.closest("button")) return;
|
|
1370
|
+
e.currentTarget.parentElement?.querySelector("input")?.focus();
|
|
1371
|
+
},
|
|
1372
|
+
...props
|
|
1373
|
+
});
|
|
1374
|
+
}
|
|
1375
|
+
const inputGroupButtonVariants = cva("flex items-center gap-2 text-sm shadow-none", {
|
|
1376
|
+
variants: { size: {
|
|
1377
|
+
xs: "h-6 gap-1 rounded-[calc(var(--radius)-5px)] px-2 has-[>svg]:px-2 [&>svg:not([class*='size-'])]:size-3.5",
|
|
1378
|
+
sm: "h-8 gap-1.5 rounded-md px-2.5 has-[>svg]:px-2.5",
|
|
1379
|
+
"icon-xs": "size-6 rounded-[calc(var(--radius)-5px)] p-0 has-[>svg]:p-0",
|
|
1380
|
+
"icon-sm": "size-8 p-0 has-[>svg]:p-0"
|
|
1381
|
+
} },
|
|
1382
|
+
defaultVariants: { size: "xs" }
|
|
1383
|
+
});
|
|
1384
|
+
function InputGroupButton({ className, type = "button", variant = "ghost", size = "xs", ...props }) {
|
|
1385
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
1386
|
+
type,
|
|
1387
|
+
"data-size": size,
|
|
1388
|
+
variant,
|
|
1389
|
+
className: cn(inputGroupButtonVariants({ size }), className),
|
|
1390
|
+
...props
|
|
1391
|
+
});
|
|
1392
|
+
}
|
|
1393
|
+
function InputGroupText({ className, ...props }) {
|
|
1394
|
+
return /* @__PURE__ */ jsx("span", {
|
|
1395
|
+
className: cn("text-muted-foreground flex items-center gap-2 text-sm [&_svg]:pointer-events-none [&_svg:not([class*='size-'])]:size-4", className),
|
|
1396
|
+
...props
|
|
1397
|
+
});
|
|
1398
|
+
}
|
|
1399
|
+
function InputGroupInput({ className, ...props }) {
|
|
1400
|
+
return /* @__PURE__ */ jsx(Input$1, {
|
|
1401
|
+
"data-slot": "input-group-control",
|
|
1402
|
+
className: cn("flex-1 rounded-none border-0 bg-transparent shadow-none focus-visible:ring-0 dark:bg-transparent", className),
|
|
1403
|
+
...props
|
|
1404
|
+
});
|
|
1405
|
+
}
|
|
1406
|
+
function InputGroupTextarea({ className, ...props }) {
|
|
1407
|
+
return /* @__PURE__ */ jsx(Textarea$1, {
|
|
1408
|
+
"data-slot": "input-group-control",
|
|
1409
|
+
className: cn("flex-1 resize-none rounded-none border-0 bg-transparent py-3 shadow-none focus-visible:ring-0 dark:bg-transparent", className),
|
|
1410
|
+
...props
|
|
1411
|
+
});
|
|
1412
|
+
}
|
|
1413
|
+
|
|
1414
|
+
//#endregion
|
|
1415
|
+
//#region ../shadcn/ui/label.tsx
|
|
1416
|
+
const Label$1 = ({ className, ...props }) => {
|
|
1417
|
+
return /* @__PURE__ */ jsx(LabelPrimitive.Root, {
|
|
1418
|
+
"data-slot": "label",
|
|
1419
|
+
className: cn("flex items-center gap-2 text-sm leading-none font-medium select-none group-data-[disabled=true]:pointer-events-none group-data-[disabled=true]:opacity-50 peer-disabled:cursor-not-allowed peer-disabled:opacity-50", className),
|
|
1420
|
+
...props
|
|
1421
|
+
});
|
|
1422
|
+
};
|
|
1423
|
+
|
|
1424
|
+
//#endregion
|
|
1425
|
+
//#region src/components/base/label/label.tsx
|
|
1426
|
+
/**
|
|
1427
|
+
* Datum Label component - extends shadcn Label with Datum-specific styling
|
|
1428
|
+
*
|
|
1429
|
+
* This component wraps the shadcn Label and allows for Datum-specific
|
|
1430
|
+
* class customizations without modifying the core shadcn component.
|
|
1431
|
+
*
|
|
801
1432
|
* @example
|
|
802
1433
|
* ```tsx
|
|
803
1434
|
* <Label
|
|
@@ -808,102 +1439,1404 @@ Input$1.displayName = "Input";
|
|
|
808
1439
|
* </Label>
|
|
809
1440
|
* ```
|
|
810
1441
|
*/
|
|
811
|
-
function Label
|
|
812
|
-
return /* @__PURE__ */ jsx(Label, {
|
|
1442
|
+
function Label({ ref, className, ...props }) {
|
|
1443
|
+
return /* @__PURE__ */ jsx(Label$1, {
|
|
813
1444
|
ref,
|
|
814
|
-
className: cn(className),
|
|
1445
|
+
className: cn$1(className),
|
|
1446
|
+
...props
|
|
1447
|
+
});
|
|
1448
|
+
}
|
|
1449
|
+
Label.displayName = "Label";
|
|
1450
|
+
|
|
1451
|
+
//#endregion
|
|
1452
|
+
//#region ../shadcn/hooks/use-theme.ts
|
|
1453
|
+
/**
|
|
1454
|
+
* Lightweight theme detection hook for shadcn components.
|
|
1455
|
+
* Detects dark mode via the `dark` class on <html> (Tailwind convention)
|
|
1456
|
+
* or falls back to prefers-color-scheme media query.
|
|
1457
|
+
*/
|
|
1458
|
+
function useTheme() {
|
|
1459
|
+
const [resolvedTheme, setResolvedTheme] = React$1.useState("light");
|
|
1460
|
+
React$1.useEffect(() => {
|
|
1461
|
+
const detect = () => {
|
|
1462
|
+
if (document.documentElement.classList.contains("dark")) return "dark";
|
|
1463
|
+
if (window.matchMedia("(prefers-color-scheme: dark)").matches) return "dark";
|
|
1464
|
+
return "light";
|
|
1465
|
+
};
|
|
1466
|
+
setResolvedTheme(detect());
|
|
1467
|
+
const observer = new MutationObserver(() => setResolvedTheme(detect()));
|
|
1468
|
+
observer.observe(document.documentElement, {
|
|
1469
|
+
attributes: true,
|
|
1470
|
+
attributeFilter: ["class"]
|
|
1471
|
+
});
|
|
1472
|
+
const mql = window.matchMedia("(prefers-color-scheme: dark)");
|
|
1473
|
+
const onChange = () => setResolvedTheme(detect());
|
|
1474
|
+
mql.addEventListener("change", onChange);
|
|
1475
|
+
return () => {
|
|
1476
|
+
observer.disconnect();
|
|
1477
|
+
mql.removeEventListener("change", onChange);
|
|
1478
|
+
};
|
|
1479
|
+
}, []);
|
|
1480
|
+
return { resolvedTheme };
|
|
1481
|
+
}
|
|
1482
|
+
|
|
1483
|
+
//#endregion
|
|
1484
|
+
//#region ../shadcn/ui/dropdown-menu.tsx
|
|
1485
|
+
/**
|
|
1486
|
+
* Vanilla shadcn/ui DropdownMenu Component
|
|
1487
|
+
* Pure shadcn dropdown without Datum customizations
|
|
1488
|
+
* For Datum-specific features (destructive MenuItem), import from @/modules/datum-ui
|
|
1489
|
+
*/
|
|
1490
|
+
const DropdownMenu$1 = DropdownMenuPrimitive.Root;
|
|
1491
|
+
const DropdownMenuTrigger$1 = DropdownMenuPrimitive.Trigger;
|
|
1492
|
+
const DropdownMenuGroup$1 = DropdownMenuPrimitive.Group;
|
|
1493
|
+
const DropdownMenuPortal$1 = DropdownMenuPrimitive.Portal;
|
|
1494
|
+
const DropdownMenuSub$1 = DropdownMenuPrimitive.Sub;
|
|
1495
|
+
const DropdownMenuRadioGroup$1 = DropdownMenuPrimitive.RadioGroup;
|
|
1496
|
+
const DropdownMenuSubTrigger$1 = React$1.forwardRef(({ className, inset, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, {
|
|
1497
|
+
ref,
|
|
1498
|
+
className: cn("focus:bg-accent data-[state=open]:bg-accent flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-none select-none [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", inset && "pl-8", className),
|
|
1499
|
+
...props,
|
|
1500
|
+
children: [children, /* @__PURE__ */ jsx(ChevronRightIcon, { className: "ml-auto" })]
|
|
1501
|
+
}));
|
|
1502
|
+
DropdownMenuSubTrigger$1.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
|
1503
|
+
const DropdownMenuSubContent$1 = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
|
|
1504
|
+
ref,
|
|
1505
|
+
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
|
|
1506
|
+
...props
|
|
1507
|
+
}));
|
|
1508
|
+
DropdownMenuSubContent$1.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
|
1509
|
+
const DropdownMenuContent$1 = React$1.forwardRef(({ className, sideOffset = 4, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
|
|
1510
|
+
ref,
|
|
1511
|
+
sideOffset,
|
|
1512
|
+
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-md", className),
|
|
1513
|
+
...props
|
|
1514
|
+
}) }));
|
|
1515
|
+
DropdownMenuContent$1.displayName = DropdownMenuPrimitive.Content.displayName;
|
|
1516
|
+
const DropdownMenuItem$1 = React$1.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, {
|
|
1517
|
+
ref,
|
|
1518
|
+
className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0", inset && "pl-8", className),
|
|
1519
|
+
...props
|
|
1520
|
+
}));
|
|
1521
|
+
DropdownMenuItem$1.displayName = DropdownMenuPrimitive.Item.displayName;
|
|
1522
|
+
const DropdownMenuCheckboxItem$1 = React$1.forwardRef(({ className, children, checked, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, {
|
|
1523
|
+
ref,
|
|
1524
|
+
className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
|
|
1525
|
+
checked,
|
|
1526
|
+
...props,
|
|
1527
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1528
|
+
className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
|
|
1529
|
+
children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "h-4 w-4" }) })
|
|
1530
|
+
}), children]
|
|
1531
|
+
}));
|
|
1532
|
+
DropdownMenuCheckboxItem$1.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
|
1533
|
+
const DropdownMenuRadioItem$1 = React$1.forwardRef(({ className, children, ...props }, ref) => /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, {
|
|
1534
|
+
ref,
|
|
1535
|
+
className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center rounded-sm py-1.5 pr-2 pl-8 text-sm transition-colors outline-none select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50", className),
|
|
1536
|
+
...props,
|
|
1537
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1538
|
+
className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center",
|
|
1539
|
+
children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CircleIcon, { className: "h-2 w-2 fill-current" }) })
|
|
1540
|
+
}), children]
|
|
1541
|
+
}));
|
|
1542
|
+
DropdownMenuRadioItem$1.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
|
1543
|
+
const DropdownMenuLabel$1 = React$1.forwardRef(({ className, inset, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, {
|
|
1544
|
+
ref,
|
|
1545
|
+
className: cn("px-2 py-1.5 text-sm font-semibold", inset && "pl-8", className),
|
|
1546
|
+
...props
|
|
1547
|
+
}));
|
|
1548
|
+
DropdownMenuLabel$1.displayName = DropdownMenuPrimitive.Label.displayName;
|
|
1549
|
+
const DropdownMenuSeparator$1 = React$1.forwardRef(({ className, ...props }, ref) => /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
|
|
1550
|
+
ref,
|
|
1551
|
+
className: cn("bg-muted -mx-1 my-1 h-px", className),
|
|
1552
|
+
...props
|
|
1553
|
+
}));
|
|
1554
|
+
DropdownMenuSeparator$1.displayName = DropdownMenuPrimitive.Separator.displayName;
|
|
1555
|
+
const DropdownMenuShortcut$1 = ({ className, ...props }) => {
|
|
1556
|
+
return /* @__PURE__ */ jsx("span", {
|
|
1557
|
+
className: cn("ml-auto text-xs tracking-widest opacity-60", className),
|
|
1558
|
+
...props
|
|
1559
|
+
});
|
|
1560
|
+
};
|
|
1561
|
+
DropdownMenuShortcut$1.displayName = "DropdownMenuShortcut";
|
|
1562
|
+
|
|
1563
|
+
//#endregion
|
|
1564
|
+
//#region ../shadcn/ui/spinner.tsx
|
|
1565
|
+
function Spinner({ className, ...props }) {
|
|
1566
|
+
return /* @__PURE__ */ jsx(Loader2Icon, {
|
|
1567
|
+
role: "status",
|
|
1568
|
+
"aria-label": "Loading",
|
|
1569
|
+
className: cn("size-4 animate-spin", className),
|
|
1570
|
+
...props
|
|
1571
|
+
});
|
|
1572
|
+
}
|
|
1573
|
+
|
|
1574
|
+
//#endregion
|
|
1575
|
+
//#region ../shadcn/ui/place-autocomplete.tsx
|
|
1576
|
+
function formatAddress(properties) {
|
|
1577
|
+
const parts = [];
|
|
1578
|
+
if (properties.name) parts.push(properties.name);
|
|
1579
|
+
if (properties.housenumber && properties.street) parts.push(`${properties.housenumber} ${properties.street}`);
|
|
1580
|
+
else if (properties.street) parts.push(properties.street);
|
|
1581
|
+
if (properties.city) parts.push(properties.city);
|
|
1582
|
+
else if (properties.locality) parts.push(properties.locality);
|
|
1583
|
+
if (properties.state && properties.state !== properties.city) parts.push(properties.state);
|
|
1584
|
+
if (properties.country) parts.push(properties.country);
|
|
1585
|
+
return [...new Set(parts)].join(", ");
|
|
1586
|
+
}
|
|
1587
|
+
function buildSearchUrl({ query, bbox, lang, lat, limit, locationBiasScale, lon, zoom }) {
|
|
1588
|
+
const url = new URL("https://photon.komoot.io/api");
|
|
1589
|
+
url.searchParams.set("q", query);
|
|
1590
|
+
if (lang) url.searchParams.set("lang", lang);
|
|
1591
|
+
if (limit) url.searchParams.set("limit", String(limit));
|
|
1592
|
+
if (bbox) url.searchParams.set("bbox", bbox.join(","));
|
|
1593
|
+
if (lat !== void 0 && lon !== void 0) {
|
|
1594
|
+
url.searchParams.set("lat", String(lat));
|
|
1595
|
+
url.searchParams.set("lon", String(lon));
|
|
1596
|
+
}
|
|
1597
|
+
if (zoom !== void 0) url.searchParams.set("zoom", String(zoom));
|
|
1598
|
+
if (locationBiasScale !== void 0) url.searchParams.set("location_bias_scale", String(locationBiasScale));
|
|
1599
|
+
return String(url);
|
|
1600
|
+
}
|
|
1601
|
+
function useDebounce(value, delay = 300) {
|
|
1602
|
+
const [debouncedValue, setDebouncedValue] = React$1.useState(value);
|
|
1603
|
+
React$1.useEffect(() => {
|
|
1604
|
+
const timer = setTimeout(() => setDebouncedValue(value), delay);
|
|
1605
|
+
return () => clearTimeout(timer);
|
|
1606
|
+
}, [value, delay]);
|
|
1607
|
+
return debouncedValue;
|
|
1608
|
+
}
|
|
1609
|
+
function usePlaceSearch({ debounceMs, query, ...props }) {
|
|
1610
|
+
const [results, setResults] = React$1.useState([]);
|
|
1611
|
+
const [isLoading, setIsLoading] = React$1.useState(false);
|
|
1612
|
+
const [error, setError] = React$1.useState(null);
|
|
1613
|
+
const [hasSearched, setHasSearched] = React$1.useState(false);
|
|
1614
|
+
const debouncedQuery = useDebounce(query, debounceMs);
|
|
1615
|
+
React$1.useEffect(() => {
|
|
1616
|
+
if (!debouncedQuery.trim()) {
|
|
1617
|
+
setResults([]);
|
|
1618
|
+
setIsLoading(false);
|
|
1619
|
+
setHasSearched(false);
|
|
1620
|
+
return;
|
|
1621
|
+
}
|
|
1622
|
+
const abortController = new AbortController();
|
|
1623
|
+
async function fetchResults() {
|
|
1624
|
+
setIsLoading(true);
|
|
1625
|
+
setError(null);
|
|
1626
|
+
setHasSearched(true);
|
|
1627
|
+
try {
|
|
1628
|
+
const url = buildSearchUrl({
|
|
1629
|
+
query: debouncedQuery,
|
|
1630
|
+
...props
|
|
1631
|
+
});
|
|
1632
|
+
const response = await fetch(url, { signal: abortController.signal });
|
|
1633
|
+
if (!response.ok) throw new Error(`Photon API error: ${response.status} ${response.statusText}`);
|
|
1634
|
+
const data = await response.json();
|
|
1635
|
+
const addressOsmIds = /* @__PURE__ */ new Set();
|
|
1636
|
+
setResults(data.features.filter((feature) => {
|
|
1637
|
+
const id = feature.properties.osm_id;
|
|
1638
|
+
if (addressOsmIds.has(id)) return false;
|
|
1639
|
+
addressOsmIds.add(id);
|
|
1640
|
+
return true;
|
|
1641
|
+
}));
|
|
1642
|
+
} catch (err) {
|
|
1643
|
+
if (err instanceof Error && err.name !== "AbortError") {
|
|
1644
|
+
setError(err);
|
|
1645
|
+
setResults([]);
|
|
1646
|
+
}
|
|
1647
|
+
} finally {
|
|
1648
|
+
setIsLoading(false);
|
|
1649
|
+
}
|
|
1650
|
+
}
|
|
1651
|
+
fetchResults();
|
|
1652
|
+
return () => abortController.abort();
|
|
1653
|
+
}, [
|
|
1654
|
+
debouncedQuery,
|
|
1655
|
+
props.lang,
|
|
1656
|
+
props.limit,
|
|
1657
|
+
props.bbox,
|
|
1658
|
+
props.lat,
|
|
1659
|
+
props.lon,
|
|
1660
|
+
props.zoom,
|
|
1661
|
+
props.locationBiasScale
|
|
1662
|
+
]);
|
|
1663
|
+
return {
|
|
1664
|
+
results,
|
|
1665
|
+
isLoading,
|
|
1666
|
+
error,
|
|
1667
|
+
hasSearched
|
|
1668
|
+
};
|
|
1669
|
+
}
|
|
1670
|
+
function PlaceAutocomplete({ debounceMs = 300, lang, limit = 5, bbox, lat, lon, zoom, locationBiasScale, className, value: controlledValue, defaultValue = "", onChange: controlledOnChange, onPlaceSelect, onResultsChange, ...props }) {
|
|
1671
|
+
const [internalValue, setInternalValue] = React$1.useState(defaultValue);
|
|
1672
|
+
const [searchQuery, setSearchQuery] = React$1.useState("");
|
|
1673
|
+
const isControlled = controlledValue !== void 0;
|
|
1674
|
+
const displayValue = isControlled ? controlledValue : internalValue;
|
|
1675
|
+
const { results, isLoading, error, hasSearched } = usePlaceSearch({
|
|
1676
|
+
query: searchQuery,
|
|
1677
|
+
debounceMs,
|
|
1678
|
+
lang,
|
|
1679
|
+
limit,
|
|
1680
|
+
bbox,
|
|
1681
|
+
lat,
|
|
1682
|
+
lon,
|
|
1683
|
+
zoom,
|
|
1684
|
+
locationBiasScale
|
|
1685
|
+
});
|
|
1686
|
+
React$1.useEffect(() => {
|
|
1687
|
+
onResultsChange?.(results);
|
|
1688
|
+
}, [results, onResultsChange]);
|
|
1689
|
+
const hasNoResults = hasSearched && !isLoading && !error && results.length === 0;
|
|
1690
|
+
const showCommandList = error || hasNoResults || results.length > 0;
|
|
1691
|
+
return /* @__PURE__ */ jsx(Command$1, {
|
|
1692
|
+
className: cn("h-fit overflow-visible", className),
|
|
1693
|
+
shouldFilter: false,
|
|
1694
|
+
loop: true,
|
|
1695
|
+
children: /* @__PURE__ */ jsxs("div", {
|
|
1696
|
+
className: "relative",
|
|
1697
|
+
children: [/* @__PURE__ */ jsxs(InputGroup, {
|
|
1698
|
+
className: cn("border-input! bg-popover! ring-0!", showCommandList && "rounded-b-none"),
|
|
1699
|
+
children: [
|
|
1700
|
+
/* @__PURE__ */ jsx(InputGroupAddon, { children: /* @__PURE__ */ jsx(SearchIcon, {}) }),
|
|
1701
|
+
/* @__PURE__ */ jsx(InputGroupInput, {
|
|
1702
|
+
placeholder: "Search",
|
|
1703
|
+
value: displayValue,
|
|
1704
|
+
onChange: (event) => {
|
|
1705
|
+
const newValue = event.target.value;
|
|
1706
|
+
if (!isControlled) setInternalValue(newValue);
|
|
1707
|
+
setSearchQuery(newValue);
|
|
1708
|
+
controlledOnChange?.(newValue);
|
|
1709
|
+
},
|
|
1710
|
+
...props
|
|
1711
|
+
}),
|
|
1712
|
+
isLoading && /* @__PURE__ */ jsx(InputGroupAddon, {
|
|
1713
|
+
align: "inline-end",
|
|
1714
|
+
children: /* @__PURE__ */ jsx(Spinner, {})
|
|
1715
|
+
})
|
|
1716
|
+
]
|
|
1717
|
+
}), showCommandList && /* @__PURE__ */ jsxs(CommandList, {
|
|
1718
|
+
"data-state": showCommandList ? "open" : "closed",
|
|
1719
|
+
className: cn("bg-popover border-input absolute top-full right-0 left-0 rounded-b-md border border-t-0 shadow-md", "data-[state=open]:animate-in data-[state=closed]:animate-out", "data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0", "data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95", "data-[state=open]:slide-in-from-top-2 data-[state=closed]:slide-out-to-top-2"),
|
|
1720
|
+
children: [
|
|
1721
|
+
error && /* @__PURE__ */ jsxs(CommandEmpty, { children: ["Error: ", error.message] }),
|
|
1722
|
+
hasNoResults && /* @__PURE__ */ jsxs(CommandEmpty, { children: [
|
|
1723
|
+
"Can't find ",
|
|
1724
|
+
displayValue,
|
|
1725
|
+
"."
|
|
1726
|
+
] }),
|
|
1727
|
+
results.length > 0 && /* @__PURE__ */ jsx(CommandGroup, { children: results.map((feature) => {
|
|
1728
|
+
const formattedAddress = formatAddress(feature.properties);
|
|
1729
|
+
return /* @__PURE__ */ jsxs(CommandItem, {
|
|
1730
|
+
value: String(feature.properties.osm_id),
|
|
1731
|
+
onSelect: () => {
|
|
1732
|
+
const formattedAddress = formatAddress(feature.properties);
|
|
1733
|
+
if (!isControlled) setInternalValue(formattedAddress);
|
|
1734
|
+
setSearchQuery("");
|
|
1735
|
+
controlledOnChange?.(formattedAddress);
|
|
1736
|
+
onPlaceSelect?.(feature);
|
|
1737
|
+
},
|
|
1738
|
+
children: [/* @__PURE__ */ jsx(MapPinIcon, {}), /* @__PURE__ */ jsxs("div", {
|
|
1739
|
+
className: "flex flex-col items-start text-start",
|
|
1740
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
1741
|
+
className: "font-medium",
|
|
1742
|
+
children: feature.properties.name || feature.properties.street || "Unknown"
|
|
1743
|
+
}), /* @__PURE__ */ jsx("span", {
|
|
1744
|
+
className: "text-muted-foreground text-xs",
|
|
1745
|
+
children: formattedAddress
|
|
1746
|
+
})]
|
|
1747
|
+
})]
|
|
1748
|
+
}, feature.properties.osm_id);
|
|
1749
|
+
}) })
|
|
1750
|
+
]
|
|
1751
|
+
})]
|
|
1752
|
+
})
|
|
1753
|
+
});
|
|
1754
|
+
}
|
|
1755
|
+
|
|
1756
|
+
//#endregion
|
|
1757
|
+
//#region ../shadcn/ui/map.tsx
|
|
1758
|
+
let _useMap;
|
|
1759
|
+
let _useMapEvents;
|
|
1760
|
+
if (typeof window !== "undefined") import("./map-leaflet-imports-OKaoesjZ.mjs").then((mod) => {
|
|
1761
|
+
_useMap = mod.useMap;
|
|
1762
|
+
_useMapEvents = mod.useMapEvents;
|
|
1763
|
+
});
|
|
1764
|
+
function createLazyComponent(factory) {
|
|
1765
|
+
const LazyComponent = lazy(factory);
|
|
1766
|
+
return (props) => {
|
|
1767
|
+
const [isMounted, setIsMounted] = useState(false);
|
|
1768
|
+
useEffect(() => {
|
|
1769
|
+
setIsMounted(true);
|
|
1770
|
+
}, []);
|
|
1771
|
+
if (!isMounted) return null;
|
|
1772
|
+
return /* @__PURE__ */ jsx(Suspense, { children: /* @__PURE__ */ jsx(LazyComponent, { ...props }) });
|
|
1773
|
+
};
|
|
1774
|
+
}
|
|
1775
|
+
const LeafletMapContainer = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.MapContainer })));
|
|
1776
|
+
const LeafletTileLayer = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.TileLayer })));
|
|
1777
|
+
const LeafletMarker = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Marker })));
|
|
1778
|
+
const LeafletPopup = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Popup })));
|
|
1779
|
+
const LeafletTooltip = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Tooltip })));
|
|
1780
|
+
const LeafletCircle = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Circle })));
|
|
1781
|
+
const LeafletCircleMarker = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.CircleMarker })));
|
|
1782
|
+
const LeafletPolyline = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Polyline })));
|
|
1783
|
+
const LeafletPolygon = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Polygon })));
|
|
1784
|
+
const LeafletRectangle = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.Rectangle })));
|
|
1785
|
+
const LeafletLayerGroup = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.LayerGroup })));
|
|
1786
|
+
const LeafletFeatureGroup = createLazyComponent(() => import("react-leaflet").then((mod) => ({ default: mod.FeatureGroup })));
|
|
1787
|
+
const LeafletMarkerClusterGroup = createLazyComponent(async () => import("react-leaflet-markercluster").then((mod) => ({ default: mod.default })));
|
|
1788
|
+
function Map$1({ zoom = 15, maxZoom = 18, className, ...props }) {
|
|
1789
|
+
return /* @__PURE__ */ jsx(LeafletMapContainer, {
|
|
1790
|
+
zoom,
|
|
1791
|
+
maxZoom,
|
|
1792
|
+
attributionControl: false,
|
|
1793
|
+
zoomControl: false,
|
|
1794
|
+
className: cn("z-50 size-full min-h-96 flex-1 rounded-md", className),
|
|
1795
|
+
...props
|
|
1796
|
+
});
|
|
1797
|
+
}
|
|
1798
|
+
const MapLayersContext = createContext(null);
|
|
1799
|
+
function useMapLayersContext() {
|
|
1800
|
+
return useContext(MapLayersContext);
|
|
1801
|
+
}
|
|
1802
|
+
function MapTileLayer({ name = "Default", url, attribution, darkUrl, darkAttribution, ...props }) {
|
|
1803
|
+
const map = _useMap();
|
|
1804
|
+
if (map.attributionControl) map.attributionControl.setPrefix("");
|
|
1805
|
+
const context = useContext(MapLayersContext);
|
|
1806
|
+
const DEFAULT_URL = "https://{s}.basemaps.cartocdn.com/light_all/{z}/{x}/{y}.png";
|
|
1807
|
+
const DEFAULT_DARK_URL = "https://{s}.basemaps.cartocdn.com/dark_all/{z}/{x}/{y}.png";
|
|
1808
|
+
const { resolvedTheme } = useTheme();
|
|
1809
|
+
const resolvedUrl = resolvedTheme === "dark" ? darkUrl ?? url ?? DEFAULT_DARK_URL : url ?? DEFAULT_URL;
|
|
1810
|
+
const resolvedAttribution = resolvedTheme === "dark" && darkAttribution ? darkAttribution : attribution ?? "© <a href=\"http://www.openstreetmap.org/copyright\">OpenStreetMap</a>, © <a href=\"https://carto.com/attributions\">CARTO</a>";
|
|
1811
|
+
useEffect(() => {
|
|
1812
|
+
if (context) context.registerTileLayer({
|
|
1813
|
+
name,
|
|
1814
|
+
url: resolvedUrl,
|
|
1815
|
+
attribution: resolvedAttribution
|
|
1816
|
+
});
|
|
1817
|
+
}, [
|
|
1818
|
+
context,
|
|
1819
|
+
name,
|
|
1820
|
+
url,
|
|
1821
|
+
attribution
|
|
1822
|
+
]);
|
|
1823
|
+
if (context && context.selectedTileLayer !== name) return null;
|
|
1824
|
+
return /* @__PURE__ */ jsx(LeafletTileLayer, {
|
|
1825
|
+
url: resolvedUrl,
|
|
1826
|
+
attribution: resolvedAttribution,
|
|
1827
|
+
...props
|
|
1828
|
+
});
|
|
1829
|
+
}
|
|
1830
|
+
function MapLayerGroup({ name, disabled, ...props }) {
|
|
1831
|
+
const context = useMapLayersContext();
|
|
1832
|
+
useEffect(() => {
|
|
1833
|
+
if (context) context.registerLayerGroup({
|
|
1834
|
+
name,
|
|
1835
|
+
disabled
|
|
1836
|
+
});
|
|
1837
|
+
}, [
|
|
1838
|
+
context,
|
|
1839
|
+
name,
|
|
1840
|
+
disabled
|
|
1841
|
+
]);
|
|
1842
|
+
if (context && !context.activeLayerGroups.includes(name)) return null;
|
|
1843
|
+
return /* @__PURE__ */ jsx(LeafletLayerGroup, { ...props });
|
|
1844
|
+
}
|
|
1845
|
+
function MapFeatureGroup({ name, disabled, ...props }) {
|
|
1846
|
+
const context = useMapLayersContext();
|
|
1847
|
+
useEffect(() => {
|
|
1848
|
+
if (context) context.registerLayerGroup({
|
|
1849
|
+
name,
|
|
1850
|
+
disabled
|
|
1851
|
+
});
|
|
1852
|
+
}, [
|
|
1853
|
+
context,
|
|
1854
|
+
name,
|
|
1855
|
+
disabled
|
|
1856
|
+
]);
|
|
1857
|
+
if (context && !context.activeLayerGroups.includes(name)) return null;
|
|
1858
|
+
return /* @__PURE__ */ jsx(LeafletFeatureGroup, { ...props });
|
|
1859
|
+
}
|
|
1860
|
+
function MapLayers({ defaultTileLayer, defaultLayerGroups = [], ...props }) {
|
|
1861
|
+
const [tileLayers, setTileLayers] = useState([]);
|
|
1862
|
+
const [selectedTileLayer, setSelectedTileLayer] = useState(defaultTileLayer || "");
|
|
1863
|
+
const [layerGroups, setLayerGroups] = useState([]);
|
|
1864
|
+
const [activeLayerGroups, setActiveLayerGroups] = useState(defaultLayerGroups);
|
|
1865
|
+
function registerTileLayer(tileLayer) {
|
|
1866
|
+
setTileLayers((prevTileLayers) => {
|
|
1867
|
+
if (prevTileLayers.some((layer) => layer.name === tileLayer.name)) return prevTileLayers;
|
|
1868
|
+
return [...prevTileLayers, tileLayer];
|
|
1869
|
+
});
|
|
1870
|
+
}
|
|
1871
|
+
function registerLayerGroup(layerGroup) {
|
|
1872
|
+
setLayerGroups((prevLayerGroups) => {
|
|
1873
|
+
if (prevLayerGroups.some((group) => group.name === layerGroup.name)) return prevLayerGroups;
|
|
1874
|
+
return [...prevLayerGroups, layerGroup];
|
|
1875
|
+
});
|
|
1876
|
+
}
|
|
1877
|
+
useEffect(() => {
|
|
1878
|
+
if (defaultTileLayer && tileLayers.length > 0 && !tileLayers.some((tileLayer) => tileLayer.name === defaultTileLayer)) throw new Error(`Invalid defaultTileLayer "${defaultTileLayer}" provided to MapLayers. It must match a MapTileLayer's name prop.`);
|
|
1879
|
+
if (tileLayers.length > 0 && !selectedTileLayer) setSelectedTileLayer(defaultTileLayer && tileLayers.some((layer) => layer.name === defaultTileLayer) ? defaultTileLayer : tileLayers[0].name);
|
|
1880
|
+
if (defaultLayerGroups.length > 0 && layerGroups.length > 0 && defaultLayerGroups.some((name) => !layerGroups.some((group) => group.name === name))) throw new Error(`Invalid defaultLayerGroups value provided to MapLayers. All names must match a MapLayerGroup's name prop.`);
|
|
1881
|
+
}, [
|
|
1882
|
+
tileLayers,
|
|
1883
|
+
defaultTileLayer,
|
|
1884
|
+
selectedTileLayer,
|
|
1885
|
+
layerGroups,
|
|
1886
|
+
defaultLayerGroups
|
|
1887
|
+
]);
|
|
1888
|
+
return /* @__PURE__ */ jsx(MapLayersContext.Provider, {
|
|
1889
|
+
value: {
|
|
1890
|
+
registerTileLayer,
|
|
1891
|
+
tileLayers,
|
|
1892
|
+
selectedTileLayer,
|
|
1893
|
+
setSelectedTileLayer,
|
|
1894
|
+
registerLayerGroup,
|
|
1895
|
+
layerGroups,
|
|
1896
|
+
activeLayerGroups,
|
|
1897
|
+
setActiveLayerGroups
|
|
1898
|
+
},
|
|
1899
|
+
...props
|
|
1900
|
+
});
|
|
1901
|
+
}
|
|
1902
|
+
function MapLayersControl({ tileLayersLabel = "Map Type", layerGroupsLabel = "Layers", position = "top-1 right-1", className, ...props }) {
|
|
1903
|
+
const layersContext = useMapLayersContext();
|
|
1904
|
+
if (!layersContext) throw new Error("MapLayersControl must be used within MapLayers");
|
|
1905
|
+
const { tileLayers, selectedTileLayer, setSelectedTileLayer, layerGroups, activeLayerGroups, setActiveLayerGroups } = layersContext;
|
|
1906
|
+
if (tileLayers.length === 0 && layerGroups.length === 0) return null;
|
|
1907
|
+
function handleLayerGroupToggle(name, checked) {
|
|
1908
|
+
setActiveLayerGroups(checked ? [...activeLayerGroups, name] : activeLayerGroups.filter((groupName) => groupName !== name));
|
|
1909
|
+
}
|
|
1910
|
+
const showTileLayersDropdown = tileLayers.length > 1;
|
|
1911
|
+
const showLayerGroupsDropdown = layerGroups.length > 0;
|
|
1912
|
+
if (!showTileLayersDropdown && !showLayerGroupsDropdown) return null;
|
|
1913
|
+
return /* @__PURE__ */ jsxs(DropdownMenu$1, { children: [/* @__PURE__ */ jsx(DropdownMenuTrigger$1, {
|
|
1914
|
+
asChild: true,
|
|
1915
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
1916
|
+
type: "button",
|
|
1917
|
+
variant: "secondary",
|
|
1918
|
+
size: "sm",
|
|
1919
|
+
"aria-label": "Select layers",
|
|
1920
|
+
title: "Select layers",
|
|
1921
|
+
className: cn("absolute z-1000 border", position, className),
|
|
1922
|
+
...props,
|
|
1923
|
+
children: /* @__PURE__ */ jsx(LayersIcon, {})
|
|
1924
|
+
})
|
|
1925
|
+
}), /* @__PURE__ */ jsxs(DropdownMenuContent$1, {
|
|
1926
|
+
align: "end",
|
|
1927
|
+
className: "z-1000",
|
|
1928
|
+
children: [
|
|
1929
|
+
showTileLayersDropdown && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DropdownMenuLabel$1, { children: tileLayersLabel }), /* @__PURE__ */ jsx(DropdownMenuRadioGroup$1, {
|
|
1930
|
+
value: selectedTileLayer,
|
|
1931
|
+
onValueChange: setSelectedTileLayer,
|
|
1932
|
+
children: tileLayers.map((tileLayer) => /* @__PURE__ */ jsx(DropdownMenuRadioItem$1, {
|
|
1933
|
+
value: tileLayer.name,
|
|
1934
|
+
children: tileLayer.name
|
|
1935
|
+
}, tileLayer.name))
|
|
1936
|
+
})] }),
|
|
1937
|
+
showTileLayersDropdown && showLayerGroupsDropdown && /* @__PURE__ */ jsx(DropdownMenuSeparator$1, {}),
|
|
1938
|
+
showLayerGroupsDropdown && /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(DropdownMenuLabel$1, { children: layerGroupsLabel }), layerGroups.map((layerGroup) => /* @__PURE__ */ jsx(DropdownMenuCheckboxItem$1, {
|
|
1939
|
+
checked: activeLayerGroups.includes(layerGroup.name),
|
|
1940
|
+
disabled: layerGroup.disabled,
|
|
1941
|
+
onCheckedChange: (checked) => handleLayerGroupToggle(layerGroup.name, checked),
|
|
1942
|
+
children: layerGroup.name
|
|
1943
|
+
}, layerGroup.name))] })
|
|
1944
|
+
]
|
|
1945
|
+
})] });
|
|
1946
|
+
}
|
|
1947
|
+
function MapMarker({ icon = /* @__PURE__ */ jsx(MapPinIcon, { className: "size-6" }), iconAnchor = [12, 12], bgPos, popupAnchor, tooltipAnchor, ...props }) {
|
|
1948
|
+
const { L } = useLeaflet();
|
|
1949
|
+
if (!L) return null;
|
|
1950
|
+
return /* @__PURE__ */ jsx(LeafletMarker, {
|
|
1951
|
+
icon: L.divIcon({
|
|
1952
|
+
html: renderToString(icon),
|
|
1953
|
+
iconAnchor,
|
|
1954
|
+
...bgPos ? { bgPos } : {},
|
|
1955
|
+
...popupAnchor ? { popupAnchor } : {},
|
|
1956
|
+
...tooltipAnchor ? { tooltipAnchor } : {}
|
|
1957
|
+
}),
|
|
1958
|
+
riseOnHover: true,
|
|
1959
|
+
...props
|
|
1960
|
+
});
|
|
1961
|
+
}
|
|
1962
|
+
function MapMarkerClusterGroup({ polygonOptions = { className: "fill-foreground stroke-foreground stroke-2" }, spiderLegPolylineOptions = { className: "fill-foreground stroke-foreground stroke-2" }, icon, ...props }) {
|
|
1963
|
+
const { L } = useLeaflet();
|
|
1964
|
+
if (!L) return null;
|
|
1965
|
+
return /* @__PURE__ */ jsx(LeafletMarkerClusterGroup, {
|
|
1966
|
+
polygonOptions,
|
|
1967
|
+
spiderLegPolylineOptions,
|
|
1968
|
+
iconCreateFunction: icon ? (cluster) => {
|
|
1969
|
+
const iconNode = icon(cluster.getChildCount());
|
|
1970
|
+
return L.divIcon({ html: renderToString(iconNode) });
|
|
1971
|
+
} : void 0,
|
|
1972
|
+
...props
|
|
1973
|
+
});
|
|
1974
|
+
}
|
|
1975
|
+
function MapCircle({ className, ...props }) {
|
|
1976
|
+
return /* @__PURE__ */ jsx(LeafletCircle, {
|
|
1977
|
+
className: cn("fill-foreground stroke-foreground stroke-2", className),
|
|
1978
|
+
...props
|
|
1979
|
+
});
|
|
1980
|
+
}
|
|
1981
|
+
function MapCircleMarker({ className, ...props }) {
|
|
1982
|
+
return /* @__PURE__ */ jsx(LeafletCircleMarker, {
|
|
1983
|
+
className: cn("fill-foreground stroke-foreground stroke-2", className),
|
|
1984
|
+
...props
|
|
1985
|
+
});
|
|
1986
|
+
}
|
|
1987
|
+
function MapPolyline({ className, ...props }) {
|
|
1988
|
+
return /* @__PURE__ */ jsx(LeafletPolyline, {
|
|
1989
|
+
className: cn("fill-foreground stroke-foreground stroke-2", className),
|
|
1990
|
+
...props
|
|
1991
|
+
});
|
|
1992
|
+
}
|
|
1993
|
+
function MapPolygon({ className, ...props }) {
|
|
1994
|
+
return /* @__PURE__ */ jsx(LeafletPolygon, {
|
|
1995
|
+
className: cn("fill-foreground stroke-foreground stroke-2", className),
|
|
1996
|
+
...props
|
|
1997
|
+
});
|
|
1998
|
+
}
|
|
1999
|
+
function MapRectangle({ className, ...props }) {
|
|
2000
|
+
return /* @__PURE__ */ jsx(LeafletRectangle, {
|
|
2001
|
+
className: cn("fill-foreground stroke-foreground stroke-2", className),
|
|
2002
|
+
...props
|
|
2003
|
+
});
|
|
2004
|
+
}
|
|
2005
|
+
function MapPopup({ className, ...props }) {
|
|
2006
|
+
return /* @__PURE__ */ jsx(LeafletPopup, {
|
|
2007
|
+
className: cn("bg-popover text-popover-foreground animate-in fade-out-0 fade-in-0 zoom-out-95 zoom-in-95 slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 font-sans shadow-md outline-hidden", className),
|
|
2008
|
+
...props
|
|
2009
|
+
});
|
|
2010
|
+
}
|
|
2011
|
+
function MapTooltip({ className, children, side = "top", sideOffset = 15, ...props }) {
|
|
2012
|
+
const ARROW_POSITION_CLASSES = {
|
|
2013
|
+
top: "bottom-0.5 left-1/2 -translate-x-1/2 translate-y-1/2",
|
|
2014
|
+
bottom: "top-0.5 left-1/2 -translate-x-1/2 -translate-y-1/2",
|
|
2015
|
+
left: "right-0.5 top-1/2 translate-x-1/2 -translate-y-1/2",
|
|
2016
|
+
right: "left-0.5 top-1/2 -translate-x-1/2 -translate-y-1/2"
|
|
2017
|
+
};
|
|
2018
|
+
const DEFAULT_OFFSET = {
|
|
2019
|
+
top: [0, -sideOffset],
|
|
2020
|
+
bottom: [0, sideOffset],
|
|
2021
|
+
left: [-sideOffset, 0],
|
|
2022
|
+
right: [sideOffset, 0]
|
|
2023
|
+
};
|
|
2024
|
+
return /* @__PURE__ */ jsxs(LeafletTooltip, {
|
|
2025
|
+
className: cn("animate-in fade-in-0 zoom-in-95 fade-out-0 zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 w-fit text-xs text-balance transition-opacity", className),
|
|
2026
|
+
"data-side": side,
|
|
2027
|
+
direction: side,
|
|
2028
|
+
offset: DEFAULT_OFFSET[side],
|
|
2029
|
+
opacity: 1,
|
|
2030
|
+
...props,
|
|
2031
|
+
children: [children, /* @__PURE__ */ jsx("div", { className: cn("bg-foreground fill-foreground absolute z-50 size-2.5 rotate-45 rounded-[2px]", ARROW_POSITION_CLASSES[side]) })]
|
|
2032
|
+
});
|
|
2033
|
+
}
|
|
2034
|
+
function MapZoomControl({ position = "top-1 left-1", className, ...props }) {
|
|
2035
|
+
const map = _useMap();
|
|
2036
|
+
const [zoomLevel, setZoomLevel] = useState(map.getZoom());
|
|
2037
|
+
_useMapEvents({ zoomend: () => {
|
|
2038
|
+
setZoomLevel(map.getZoom());
|
|
2039
|
+
} });
|
|
2040
|
+
return /* @__PURE__ */ jsx(MapControlContainer, {
|
|
2041
|
+
className: cn(position, className),
|
|
2042
|
+
children: /* @__PURE__ */ jsxs(ButtonGroup, {
|
|
2043
|
+
orientation: "vertical",
|
|
2044
|
+
"aria-label": "Zoom controls",
|
|
2045
|
+
...props,
|
|
2046
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
2047
|
+
type: "button",
|
|
2048
|
+
size: "icon",
|
|
2049
|
+
variant: "outline",
|
|
2050
|
+
"aria-label": "Zoom in",
|
|
2051
|
+
title: "Zoom in",
|
|
2052
|
+
className: "border",
|
|
2053
|
+
disabled: zoomLevel >= map.getMaxZoom(),
|
|
2054
|
+
onClick: () => map.zoomIn(),
|
|
2055
|
+
children: /* @__PURE__ */ jsx(PlusIcon, {})
|
|
2056
|
+
}), /* @__PURE__ */ jsx(Button, {
|
|
2057
|
+
type: "button",
|
|
2058
|
+
size: "icon",
|
|
2059
|
+
variant: "outline",
|
|
2060
|
+
"aria-label": "Zoom out",
|
|
2061
|
+
title: "Zoom out",
|
|
2062
|
+
className: "border",
|
|
2063
|
+
disabled: zoomLevel <= map.getMinZoom(),
|
|
2064
|
+
onClick: () => map.zoomOut(),
|
|
2065
|
+
children: /* @__PURE__ */ jsx(MinusIcon, {})
|
|
2066
|
+
})]
|
|
2067
|
+
})
|
|
2068
|
+
});
|
|
2069
|
+
}
|
|
2070
|
+
function MapFullscreenControl({ position = "top-1 right-1", className, ...props }) {
|
|
2071
|
+
const map = _useMap();
|
|
2072
|
+
const [isFullscreen, setIsFullscreen] = useState(false);
|
|
2073
|
+
const { L } = useLeaflet();
|
|
2074
|
+
useEffect(() => {
|
|
2075
|
+
if (!L) return;
|
|
2076
|
+
const fullscreenControl = new L.Control.FullScreen();
|
|
2077
|
+
fullscreenControl.addTo(map);
|
|
2078
|
+
const container = fullscreenControl.getContainer();
|
|
2079
|
+
if (container) container.style.display = "none";
|
|
2080
|
+
const handleEnter = () => setIsFullscreen(true);
|
|
2081
|
+
const handleExit = () => setIsFullscreen(false);
|
|
2082
|
+
map.on("enterFullscreen", handleEnter);
|
|
2083
|
+
map.on("exitFullscreen", handleExit);
|
|
2084
|
+
return () => {
|
|
2085
|
+
fullscreenControl.remove();
|
|
2086
|
+
map.off("enterFullscreen", handleEnter);
|
|
2087
|
+
map.off("exitFullscreen", handleExit);
|
|
2088
|
+
};
|
|
2089
|
+
}, [L, map]);
|
|
2090
|
+
return /* @__PURE__ */ jsx(MapControlContainer, {
|
|
2091
|
+
className: cn(position, className),
|
|
2092
|
+
children: /* @__PURE__ */ jsx(Button, {
|
|
2093
|
+
type: "button",
|
|
2094
|
+
size: "icon",
|
|
2095
|
+
variant: "outline",
|
|
2096
|
+
onClick: () => map.toggleFullscreen(),
|
|
2097
|
+
"aria-label": isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
|
|
2098
|
+
title: isFullscreen ? "Exit fullscreen" : "Enter fullscreen",
|
|
2099
|
+
className: "border",
|
|
2100
|
+
...props,
|
|
2101
|
+
children: isFullscreen ? /* @__PURE__ */ jsx(MinimizeIcon, {}) : /* @__PURE__ */ jsx(MaximizeIcon, {})
|
|
2102
|
+
})
|
|
2103
|
+
});
|
|
2104
|
+
}
|
|
2105
|
+
function MapLocatePulseIcon() {
|
|
2106
|
+
return /* @__PURE__ */ jsxs("div", {
|
|
2107
|
+
className: "absolute -top-1 -right-1 flex size-3 rounded-full",
|
|
2108
|
+
children: [/* @__PURE__ */ jsx("div", { className: "bg-primary absolute inline-flex size-full animate-ping rounded-full opacity-75" }), /* @__PURE__ */ jsx("div", { className: "bg-primary relative inline-flex size-3 rounded-full" })]
|
|
2109
|
+
});
|
|
2110
|
+
}
|
|
2111
|
+
function MapLocateControl({ watch = false, onLocationFound, onLocationError, position = "right-1 bottom-1", className, ...props }) {
|
|
2112
|
+
const map = _useMap();
|
|
2113
|
+
const [isLocating, setIsLocating] = useDebounceLoadingState(200);
|
|
2114
|
+
const [location, setLocation] = useState(null);
|
|
2115
|
+
function startLocating() {
|
|
2116
|
+
setIsLocating(true);
|
|
2117
|
+
map.locate({
|
|
2118
|
+
setView: true,
|
|
2119
|
+
maxZoom: map.getMaxZoom(),
|
|
2120
|
+
watch
|
|
2121
|
+
});
|
|
2122
|
+
map.on("locationfound", (location) => {
|
|
2123
|
+
setLocation(location.latlng);
|
|
2124
|
+
setIsLocating(false);
|
|
2125
|
+
onLocationFound?.(location);
|
|
2126
|
+
});
|
|
2127
|
+
map.on("locationerror", (error) => {
|
|
2128
|
+
setLocation(null);
|
|
2129
|
+
setIsLocating(false);
|
|
2130
|
+
onLocationError?.(error);
|
|
2131
|
+
});
|
|
2132
|
+
}
|
|
2133
|
+
function stopLocating() {
|
|
2134
|
+
map.stopLocate();
|
|
2135
|
+
map.off("locationfound");
|
|
2136
|
+
map.off("locationerror");
|
|
2137
|
+
setLocation(null);
|
|
2138
|
+
setIsLocating(false);
|
|
2139
|
+
}
|
|
2140
|
+
useEffect(() => () => stopLocating(), []);
|
|
2141
|
+
return /* @__PURE__ */ jsxs(MapControlContainer, {
|
|
2142
|
+
className: cn(position, className),
|
|
2143
|
+
children: [/* @__PURE__ */ jsx(Button, {
|
|
2144
|
+
type: "button",
|
|
2145
|
+
size: "sm",
|
|
2146
|
+
variant: location ? "default" : "secondary",
|
|
2147
|
+
onClick: location ? stopLocating : startLocating,
|
|
2148
|
+
disabled: isLocating,
|
|
2149
|
+
title: isLocating ? "Locating..." : location ? "Stop tracking" : "Track location",
|
|
2150
|
+
"aria-label": isLocating ? "Locating..." : location ? "Stop location tracking" : "Start location tracking",
|
|
2151
|
+
className: "border",
|
|
2152
|
+
...props,
|
|
2153
|
+
children: isLocating ? /* @__PURE__ */ jsx(LoaderCircleIcon, { className: "animate-spin" }) : /* @__PURE__ */ jsx(NavigationIcon, {})
|
|
2154
|
+
}), location && /* @__PURE__ */ jsx(MapMarker, {
|
|
2155
|
+
position: location,
|
|
2156
|
+
icon: /* @__PURE__ */ jsx(MapLocatePulseIcon, {})
|
|
2157
|
+
})]
|
|
2158
|
+
});
|
|
2159
|
+
}
|
|
2160
|
+
function MapSearchControl({ position = "top-1 left-1", className, ...props }) {
|
|
2161
|
+
return /* @__PURE__ */ jsx(MapControlContainer, {
|
|
2162
|
+
className: cn("z-1001 w-60", position, className),
|
|
2163
|
+
children: /* @__PURE__ */ jsx(PlaceAutocomplete, { ...props })
|
|
2164
|
+
});
|
|
2165
|
+
}
|
|
2166
|
+
const MapDrawContext = createContext(null);
|
|
2167
|
+
function useMapDrawContext() {
|
|
2168
|
+
return useContext(MapDrawContext);
|
|
2169
|
+
}
|
|
2170
|
+
function MapDrawControl({ onLayersChange, position = "bottom-1 left-1", className, ...props }) {
|
|
2171
|
+
const { L, LeafletDraw } = useLeaflet();
|
|
2172
|
+
const map = _useMap();
|
|
2173
|
+
const featureGroupRef = useRef(null);
|
|
2174
|
+
const editControlRef = useRef(null);
|
|
2175
|
+
const deleteControlRef = useRef(null);
|
|
2176
|
+
const [activeMode, setActiveMode] = useState(null);
|
|
2177
|
+
const [layersCount, setLayersCount] = useState(0);
|
|
2178
|
+
function updateLayersCount() {
|
|
2179
|
+
if (featureGroupRef.current) setLayersCount(featureGroupRef.current.getLayers().length);
|
|
2180
|
+
}
|
|
2181
|
+
function handleDrawCreated(event) {
|
|
2182
|
+
if (!featureGroupRef.current) return;
|
|
2183
|
+
const { layer } = event;
|
|
2184
|
+
featureGroupRef.current.addLayer(layer);
|
|
2185
|
+
onLayersChange?.(featureGroupRef.current);
|
|
2186
|
+
updateLayersCount();
|
|
2187
|
+
setActiveMode(null);
|
|
2188
|
+
}
|
|
2189
|
+
function handleDrawEditedOrDeleted() {
|
|
2190
|
+
if (!featureGroupRef.current) return;
|
|
2191
|
+
onLayersChange?.(featureGroupRef.current);
|
|
2192
|
+
updateLayersCount();
|
|
2193
|
+
setActiveMode(null);
|
|
2194
|
+
}
|
|
2195
|
+
useEffect(() => {
|
|
2196
|
+
if (!L || !LeafletDraw || !map) return;
|
|
2197
|
+
map.on(L.Draw.Event.CREATED, handleDrawCreated);
|
|
2198
|
+
map.on(L.Draw.Event.EDITED, handleDrawEditedOrDeleted);
|
|
2199
|
+
map.on(L.Draw.Event.DELETED, handleDrawEditedOrDeleted);
|
|
2200
|
+
return () => {
|
|
2201
|
+
map.off(L.Draw.Event.CREATED, handleDrawCreated);
|
|
2202
|
+
map.off(L.Draw.Event.EDITED, handleDrawEditedOrDeleted);
|
|
2203
|
+
map.off(L.Draw.Event.DELETED, handleDrawEditedOrDeleted);
|
|
2204
|
+
};
|
|
2205
|
+
}, [
|
|
2206
|
+
L,
|
|
2207
|
+
LeafletDraw,
|
|
2208
|
+
map,
|
|
2209
|
+
onLayersChange
|
|
2210
|
+
]);
|
|
2211
|
+
return /* @__PURE__ */ jsxs(MapDrawContext.Provider, {
|
|
2212
|
+
value: {
|
|
2213
|
+
featureGroup: featureGroupRef.current,
|
|
2214
|
+
activeMode,
|
|
2215
|
+
setActiveMode,
|
|
2216
|
+
editControlRef,
|
|
2217
|
+
deleteControlRef,
|
|
2218
|
+
layersCount
|
|
2219
|
+
},
|
|
2220
|
+
children: [/* @__PURE__ */ jsx(LeafletFeatureGroup, { ref: featureGroupRef }), /* @__PURE__ */ jsx(MapControlContainer, {
|
|
2221
|
+
className: cn(position, className),
|
|
2222
|
+
children: /* @__PURE__ */ jsx(ButtonGroup, {
|
|
2223
|
+
orientation: "vertical",
|
|
2224
|
+
...props
|
|
2225
|
+
})
|
|
2226
|
+
})]
|
|
2227
|
+
});
|
|
2228
|
+
}
|
|
2229
|
+
function MapDrawShapeButton({ drawMode, createDrawTool, className, ...props }) {
|
|
2230
|
+
const drawContext = useMapDrawContext();
|
|
2231
|
+
if (!drawContext) throw new Error("MapDrawShapeButton must be used within MapDrawControl");
|
|
2232
|
+
const { L } = useLeaflet();
|
|
2233
|
+
const map = _useMap();
|
|
2234
|
+
const controlRef = useRef(null);
|
|
2235
|
+
const { activeMode, setActiveMode } = drawContext;
|
|
2236
|
+
const isActive = activeMode === drawMode;
|
|
2237
|
+
useEffect(() => {
|
|
2238
|
+
if (!L || !isActive) {
|
|
2239
|
+
controlRef.current?.disable();
|
|
2240
|
+
controlRef.current = null;
|
|
2241
|
+
return;
|
|
2242
|
+
}
|
|
2243
|
+
const control = createDrawTool(L, map);
|
|
2244
|
+
control.enable();
|
|
2245
|
+
controlRef.current = control;
|
|
2246
|
+
return () => {
|
|
2247
|
+
control.disable();
|
|
2248
|
+
controlRef.current = null;
|
|
2249
|
+
};
|
|
2250
|
+
}, [
|
|
2251
|
+
L,
|
|
2252
|
+
map,
|
|
2253
|
+
isActive,
|
|
2254
|
+
createDrawTool
|
|
2255
|
+
]);
|
|
2256
|
+
function handleClick() {
|
|
2257
|
+
setActiveMode(isActive ? null : drawMode);
|
|
2258
|
+
}
|
|
2259
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
2260
|
+
type: "button",
|
|
2261
|
+
size: "sm",
|
|
2262
|
+
"aria-label": `Draw ${drawMode}`,
|
|
2263
|
+
title: `Draw ${drawMode}`,
|
|
2264
|
+
className: cn("border", className),
|
|
2265
|
+
variant: isActive ? "default" : "secondary",
|
|
2266
|
+
disabled: activeMode === "edit" || activeMode === "delete",
|
|
2267
|
+
onClick: handleClick,
|
|
2268
|
+
...props
|
|
2269
|
+
});
|
|
2270
|
+
}
|
|
2271
|
+
function MapDrawMarker({ ...props }) {
|
|
2272
|
+
return /* @__PURE__ */ jsx(MapDrawShapeButton, {
|
|
2273
|
+
drawMode: "marker",
|
|
2274
|
+
createDrawTool: (L, map) => new L.Draw.Marker(map, {
|
|
2275
|
+
icon: L.divIcon({
|
|
2276
|
+
className: "",
|
|
2277
|
+
iconAnchor: [12, 12],
|
|
2278
|
+
html: renderToString(/* @__PURE__ */ jsx(MapPinIcon, { className: "size-6" }))
|
|
2279
|
+
}),
|
|
2280
|
+
...props
|
|
2281
|
+
}),
|
|
2282
|
+
children: /* @__PURE__ */ jsx(MapPinIcon, {})
|
|
2283
|
+
});
|
|
2284
|
+
}
|
|
2285
|
+
function MapDrawPolyline({ showLength = false, drawError = { color: "var(--color-destructive)" }, shapeOptions = {
|
|
2286
|
+
color: "var(--color-primary)",
|
|
2287
|
+
opacity: 1,
|
|
2288
|
+
weight: 2
|
|
2289
|
+
}, ...props }) {
|
|
2290
|
+
const mapDrawHandleIcon = useMapDrawHandleIcon();
|
|
2291
|
+
return /* @__PURE__ */ jsx(MapDrawShapeButton, {
|
|
2292
|
+
drawMode: "polyline",
|
|
2293
|
+
createDrawTool: (L, map) => new L.Draw.Polyline(map, {
|
|
2294
|
+
...mapDrawHandleIcon ? {
|
|
2295
|
+
icon: mapDrawHandleIcon,
|
|
2296
|
+
touchIcon: mapDrawHandleIcon
|
|
2297
|
+
} : {},
|
|
2298
|
+
showLength,
|
|
2299
|
+
drawError,
|
|
2300
|
+
shapeOptions,
|
|
2301
|
+
...props
|
|
2302
|
+
}),
|
|
2303
|
+
children: /* @__PURE__ */ jsx(WaypointsIcon, {})
|
|
2304
|
+
});
|
|
2305
|
+
}
|
|
2306
|
+
function MapDrawCircle({ showRadius = false, shapeOptions = {
|
|
2307
|
+
color: "var(--color-primary)",
|
|
2308
|
+
opacity: 1,
|
|
2309
|
+
weight: 2
|
|
2310
|
+
}, ...props }) {
|
|
2311
|
+
return /* @__PURE__ */ jsx(MapDrawShapeButton, {
|
|
2312
|
+
drawMode: "circle",
|
|
2313
|
+
createDrawTool: (L, map) => new L.Draw.Circle(map, {
|
|
2314
|
+
showRadius,
|
|
2315
|
+
shapeOptions,
|
|
2316
|
+
...props
|
|
2317
|
+
}),
|
|
2318
|
+
children: /* @__PURE__ */ jsx(CircleIcon, {})
|
|
2319
|
+
});
|
|
2320
|
+
}
|
|
2321
|
+
function MapDrawRectangle({ showArea = false, shapeOptions = {
|
|
2322
|
+
color: "var(--color-primary)",
|
|
2323
|
+
opacity: 1,
|
|
2324
|
+
weight: 2
|
|
2325
|
+
}, ...props }) {
|
|
2326
|
+
return /* @__PURE__ */ jsx(MapDrawShapeButton, {
|
|
2327
|
+
drawMode: "rectangle",
|
|
2328
|
+
createDrawTool: (L, map) => new L.Draw.Rectangle(map, {
|
|
2329
|
+
showArea,
|
|
2330
|
+
shapeOptions,
|
|
2331
|
+
...props
|
|
2332
|
+
}),
|
|
2333
|
+
children: /* @__PURE__ */ jsx(SquareIcon, {})
|
|
2334
|
+
});
|
|
2335
|
+
}
|
|
2336
|
+
function MapDrawPolygon({ drawError = { color: "var(--color-destructive)" }, shapeOptions = {
|
|
2337
|
+
color: "var(--color-primary)",
|
|
2338
|
+
opacity: 1,
|
|
2339
|
+
weight: 2
|
|
2340
|
+
}, ...props }) {
|
|
2341
|
+
const mapDrawHandleIcon = useMapDrawHandleIcon();
|
|
2342
|
+
return /* @__PURE__ */ jsx(MapDrawShapeButton, {
|
|
2343
|
+
drawMode: "polygon",
|
|
2344
|
+
createDrawTool: (L, map) => new L.Draw.Polygon(map, {
|
|
2345
|
+
...mapDrawHandleIcon ? {
|
|
2346
|
+
icon: mapDrawHandleIcon,
|
|
2347
|
+
touchIcon: mapDrawHandleIcon
|
|
2348
|
+
} : {},
|
|
2349
|
+
drawError,
|
|
2350
|
+
shapeOptions,
|
|
2351
|
+
...props
|
|
2352
|
+
}),
|
|
2353
|
+
children: /* @__PURE__ */ jsx(PentagonIcon, {})
|
|
2354
|
+
});
|
|
2355
|
+
}
|
|
2356
|
+
function MapDrawActionButton({ drawAction, createDrawTool, controlRef, className, ...props }) {
|
|
2357
|
+
const drawContext = useMapDrawContext();
|
|
2358
|
+
if (!drawContext) throw new Error("MapDrawActionButton must be used within MapDrawControl");
|
|
2359
|
+
const { L } = useLeaflet();
|
|
2360
|
+
const map = _useMap();
|
|
2361
|
+
const { featureGroup, activeMode, setActiveMode, layersCount } = drawContext;
|
|
2362
|
+
const isActive = activeMode === drawAction;
|
|
2363
|
+
const hasFeatures = layersCount > 0;
|
|
2364
|
+
useEffect(() => {
|
|
2365
|
+
if (!L || !featureGroup || !isActive) {
|
|
2366
|
+
controlRef.current?.disable?.();
|
|
2367
|
+
controlRef.current = null;
|
|
2368
|
+
return;
|
|
2369
|
+
}
|
|
2370
|
+
const control = createDrawTool(L, map, featureGroup);
|
|
2371
|
+
control.enable?.();
|
|
2372
|
+
controlRef.current = control;
|
|
2373
|
+
return () => {
|
|
2374
|
+
control.disable?.();
|
|
2375
|
+
controlRef.current = null;
|
|
2376
|
+
};
|
|
2377
|
+
}, [
|
|
2378
|
+
L,
|
|
2379
|
+
map,
|
|
2380
|
+
isActive,
|
|
2381
|
+
featureGroup,
|
|
2382
|
+
createDrawTool
|
|
2383
|
+
]);
|
|
2384
|
+
function handleClick() {
|
|
2385
|
+
controlRef.current?.save();
|
|
2386
|
+
setActiveMode(isActive ? null : drawAction);
|
|
2387
|
+
}
|
|
2388
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
2389
|
+
type: "button",
|
|
2390
|
+
size: "sm",
|
|
2391
|
+
"aria-label": `${drawAction === "edit" ? "Edit" : "Remove"} shapes`,
|
|
2392
|
+
title: `${drawAction === "edit" ? "Edit" : "Remove"} shapes`,
|
|
2393
|
+
variant: isActive ? "default" : "secondary",
|
|
2394
|
+
disabled: !hasFeatures,
|
|
2395
|
+
onClick: handleClick,
|
|
2396
|
+
className: cn("border", className),
|
|
2397
|
+
...props
|
|
2398
|
+
});
|
|
2399
|
+
}
|
|
2400
|
+
function MapDrawEdit({ selectedPathOptions = {
|
|
2401
|
+
color: "var(--color-primary)",
|
|
2402
|
+
fillColor: "var(--color-primary)",
|
|
2403
|
+
weight: 2
|
|
2404
|
+
}, ...props }) {
|
|
2405
|
+
const { L } = useLeaflet();
|
|
2406
|
+
const mapDrawHandleIcon = useMapDrawHandleIcon();
|
|
2407
|
+
const drawContext = useMapDrawContext();
|
|
2408
|
+
if (!drawContext) throw new Error("MapDrawEdit must be used within MapDrawControl");
|
|
2409
|
+
useEffect(() => {
|
|
2410
|
+
if (!L || !mapDrawHandleIcon) return;
|
|
2411
|
+
L.Edit.PolyVerticesEdit.mergeOptions({
|
|
2412
|
+
icon: mapDrawHandleIcon,
|
|
2413
|
+
touchIcon: mapDrawHandleIcon,
|
|
2414
|
+
drawError: { color: "var(--color-destructive)" }
|
|
2415
|
+
});
|
|
2416
|
+
L.Edit.SimpleShape.mergeOptions({
|
|
2417
|
+
moveIcon: mapDrawHandleIcon,
|
|
2418
|
+
resizeIcon: mapDrawHandleIcon,
|
|
2419
|
+
touchMoveIcon: mapDrawHandleIcon,
|
|
2420
|
+
touchResizeIcon: mapDrawHandleIcon
|
|
2421
|
+
});
|
|
2422
|
+
L.drawLocal.edit.handlers.edit.tooltip = {
|
|
2423
|
+
text: "Drag handles or markers to edit.",
|
|
2424
|
+
subtext: ""
|
|
2425
|
+
};
|
|
2426
|
+
L.drawLocal.edit.handlers.remove.tooltip = { text: "Click on a shape to remove." };
|
|
2427
|
+
}, [mapDrawHandleIcon]);
|
|
2428
|
+
return /* @__PURE__ */ jsx(MapDrawActionButton, {
|
|
2429
|
+
drawAction: "edit",
|
|
2430
|
+
controlRef: drawContext.editControlRef,
|
|
2431
|
+
createDrawTool: (L, map, featureGroup) => new L.EditToolbar.Edit(map, {
|
|
2432
|
+
featureGroup,
|
|
2433
|
+
selectedPathOptions,
|
|
2434
|
+
...props
|
|
2435
|
+
}),
|
|
2436
|
+
children: /* @__PURE__ */ jsx(PenLineIcon, {})
|
|
2437
|
+
});
|
|
2438
|
+
}
|
|
2439
|
+
function MapDrawDelete() {
|
|
2440
|
+
const drawContext = useMapDrawContext();
|
|
2441
|
+
if (!drawContext) throw new Error("MapDrawDelete must be used within MapDrawControl");
|
|
2442
|
+
return /* @__PURE__ */ jsx(MapDrawActionButton, {
|
|
2443
|
+
drawAction: "delete",
|
|
2444
|
+
controlRef: drawContext.deleteControlRef,
|
|
2445
|
+
createDrawTool: (L, map, featureGroup) => new L.EditToolbar.Delete(map, { featureGroup }),
|
|
2446
|
+
children: /* @__PURE__ */ jsx(Trash2Icon, {})
|
|
2447
|
+
});
|
|
2448
|
+
}
|
|
2449
|
+
function MapDrawUndo({ className, ...props }) {
|
|
2450
|
+
const drawContext = useMapDrawContext();
|
|
2451
|
+
if (!drawContext) throw new Error("MapDrawUndo must be used within MapDrawControl");
|
|
2452
|
+
const { activeMode, setActiveMode, editControlRef, deleteControlRef, layersCount } = drawContext;
|
|
2453
|
+
const isInEditMode = activeMode === "edit";
|
|
2454
|
+
const isInDeleteMode = activeMode === "delete";
|
|
2455
|
+
const isActive = (isInEditMode || isInDeleteMode) && layersCount > 0;
|
|
2456
|
+
function handleUndo() {
|
|
2457
|
+
if (isInEditMode) editControlRef.current?.revertLayers();
|
|
2458
|
+
else if (isInDeleteMode) deleteControlRef.current?.revertLayers();
|
|
2459
|
+
setActiveMode(null);
|
|
2460
|
+
}
|
|
2461
|
+
return /* @__PURE__ */ jsx(Button, {
|
|
2462
|
+
type: "button",
|
|
2463
|
+
size: "sm",
|
|
2464
|
+
variant: "secondary",
|
|
2465
|
+
"aria-label": `Undo ${activeMode}`,
|
|
2466
|
+
title: `Undo ${activeMode}`,
|
|
2467
|
+
onClick: handleUndo,
|
|
2468
|
+
disabled: !isActive,
|
|
2469
|
+
className: cn("border", className),
|
|
2470
|
+
...props,
|
|
2471
|
+
children: /* @__PURE__ */ jsx(Undo2Icon, {})
|
|
2472
|
+
});
|
|
2473
|
+
}
|
|
2474
|
+
function MapControlContainer({ className, ...props }) {
|
|
2475
|
+
const { L } = useLeaflet();
|
|
2476
|
+
const containerRef = useRef(null);
|
|
2477
|
+
useEffect(() => {
|
|
2478
|
+
if (!L) return;
|
|
2479
|
+
const element = containerRef.current;
|
|
2480
|
+
if (!element) return;
|
|
2481
|
+
L.DomEvent.disableClickPropagation(element);
|
|
2482
|
+
L.DomEvent.disableScrollPropagation(element);
|
|
2483
|
+
}, [L]);
|
|
2484
|
+
return /* @__PURE__ */ jsx("div", {
|
|
2485
|
+
ref: containerRef,
|
|
2486
|
+
className: cn("absolute z-1000 size-fit cursor-default", className),
|
|
2487
|
+
...props
|
|
2488
|
+
});
|
|
2489
|
+
}
|
|
2490
|
+
function useMapDrawHandleIcon() {
|
|
2491
|
+
const { L } = useLeaflet();
|
|
2492
|
+
if (!L) return null;
|
|
2493
|
+
return L.divIcon({
|
|
2494
|
+
iconAnchor: [8, 8],
|
|
2495
|
+
html: renderToString(/* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary stroke-primary size-4 transition-transform hover:scale-110" }))
|
|
2496
|
+
});
|
|
2497
|
+
}
|
|
2498
|
+
function useLeaflet() {
|
|
2499
|
+
const [L, setL] = useState(null);
|
|
2500
|
+
const [LeafletDraw, setLeafletDraw] = useState(null);
|
|
2501
|
+
useEffect(() => {
|
|
2502
|
+
async function loadLeaflet() {
|
|
2503
|
+
const leaflet = await import("leaflet");
|
|
2504
|
+
const leafletFullscreen = await import("leaflet.fullscreen");
|
|
2505
|
+
const leafletDraw = await import("leaflet-draw");
|
|
2506
|
+
const L_object = leaflet.default;
|
|
2507
|
+
if (L_object.Control && !L_object.Control.FullScreen) L_object.Control.FullScreen = leafletFullscreen.default || leafletFullscreen;
|
|
2508
|
+
setLeafletDraw(leafletDraw);
|
|
2509
|
+
setL(L_object);
|
|
2510
|
+
}
|
|
2511
|
+
if (L && LeafletDraw) return;
|
|
2512
|
+
if (typeof window === "undefined") return;
|
|
2513
|
+
loadLeaflet();
|
|
2514
|
+
}, [L, LeafletDraw]);
|
|
2515
|
+
return {
|
|
2516
|
+
L,
|
|
2517
|
+
LeafletDraw
|
|
2518
|
+
};
|
|
2519
|
+
}
|
|
2520
|
+
function useDebounceLoadingState(delay = 200) {
|
|
2521
|
+
const [isLoading, setIsLoading] = useState(false);
|
|
2522
|
+
const [showLoading, setShowLoading] = useState(false);
|
|
2523
|
+
const timeoutRef = useRef(null);
|
|
2524
|
+
useEffect(() => {
|
|
2525
|
+
if (isLoading) timeoutRef.current = setTimeout(() => {
|
|
2526
|
+
setShowLoading(true);
|
|
2527
|
+
}, delay);
|
|
2528
|
+
else {
|
|
2529
|
+
if (timeoutRef.current) {
|
|
2530
|
+
clearTimeout(timeoutRef.current);
|
|
2531
|
+
timeoutRef.current = null;
|
|
2532
|
+
}
|
|
2533
|
+
setShowLoading(false);
|
|
2534
|
+
}
|
|
2535
|
+
return () => {
|
|
2536
|
+
if (timeoutRef.current) clearTimeout(timeoutRef.current);
|
|
2537
|
+
};
|
|
2538
|
+
}, [isLoading, delay]);
|
|
2539
|
+
return [showLoading, setIsLoading];
|
|
2540
|
+
}
|
|
2541
|
+
|
|
2542
|
+
//#endregion
|
|
2543
|
+
//#region ../shadcn/ui/popover.tsx
|
|
2544
|
+
const Popover = ({ ...props }) => {
|
|
2545
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Root, {
|
|
2546
|
+
"data-slot": "popover",
|
|
2547
|
+
...props
|
|
2548
|
+
});
|
|
2549
|
+
};
|
|
2550
|
+
const PopoverTrigger = ({ ...props }) => {
|
|
2551
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Trigger, {
|
|
2552
|
+
"data-slot": "popover-trigger",
|
|
2553
|
+
...props
|
|
2554
|
+
});
|
|
2555
|
+
};
|
|
2556
|
+
const PopoverContent = ({ className, align = "center", sideOffset = 4, ...props }) => {
|
|
2557
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Portal, { children: /* @__PURE__ */ jsx(PopoverPrimitive.Content, {
|
|
2558
|
+
"data-slot": "popover-content",
|
|
2559
|
+
align,
|
|
2560
|
+
sideOffset,
|
|
2561
|
+
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-72 rounded-md border p-4 shadow-md outline-hidden", className),
|
|
2562
|
+
...props
|
|
2563
|
+
}) });
|
|
2564
|
+
};
|
|
2565
|
+
const PopoverAnchor = ({ ...props }) => {
|
|
2566
|
+
return /* @__PURE__ */ jsx(PopoverPrimitive.Anchor, {
|
|
2567
|
+
"data-slot": "popover-anchor",
|
|
2568
|
+
...props
|
|
2569
|
+
});
|
|
2570
|
+
};
|
|
2571
|
+
|
|
2572
|
+
//#endregion
|
|
2573
|
+
//#region ../shadcn/ui/radio-group.tsx
|
|
2574
|
+
function RadioGroup$1({ className, ...props }) {
|
|
2575
|
+
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Root, {
|
|
2576
|
+
"data-slot": "radio-group",
|
|
2577
|
+
className: cn("grid gap-3", className),
|
|
815
2578
|
...props
|
|
816
2579
|
});
|
|
817
2580
|
}
|
|
818
|
-
|
|
2581
|
+
function RadioGroupItem$1({ className, ...props }) {
|
|
2582
|
+
return /* @__PURE__ */ jsx(RadioGroupPrimitive.Item, {
|
|
2583
|
+
"data-slot": "radio-group-item",
|
|
2584
|
+
className: cn("border-input text-primary focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive dark:bg-input/30 aspect-square size-4 shrink-0 rounded-full border shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
2585
|
+
...props,
|
|
2586
|
+
children: /* @__PURE__ */ jsx(RadioGroupPrimitive.Indicator, {
|
|
2587
|
+
"data-slot": "radio-group-indicator",
|
|
2588
|
+
className: "relative flex items-center justify-center",
|
|
2589
|
+
children: /* @__PURE__ */ jsx(CircleIcon, { className: "fill-primary absolute top-1/2 left-1/2 size-2 -translate-x-1/2 -translate-y-1/2" })
|
|
2590
|
+
})
|
|
2591
|
+
});
|
|
2592
|
+
}
|
|
819
2593
|
|
|
820
2594
|
//#endregion
|
|
821
2595
|
//#region src/components/base/radio-group/radio-group.tsx
|
|
822
|
-
function RadioGroup
|
|
823
|
-
return /* @__PURE__ */ jsx(RadioGroup, {
|
|
2596
|
+
function RadioGroup({ ref, className, ...props }) {
|
|
2597
|
+
return /* @__PURE__ */ jsx(RadioGroup$1, {
|
|
824
2598
|
ref,
|
|
825
|
-
className: cn(className),
|
|
2599
|
+
className: cn$1(className),
|
|
826
2600
|
...props
|
|
827
2601
|
});
|
|
828
2602
|
}
|
|
829
|
-
RadioGroup
|
|
830
|
-
function RadioGroupItem
|
|
831
|
-
return /* @__PURE__ */ jsx(RadioGroupItem, {
|
|
2603
|
+
RadioGroup.displayName = "RadioGroup";
|
|
2604
|
+
function RadioGroupItem({ ref, className, ...props }) {
|
|
2605
|
+
return /* @__PURE__ */ jsx(RadioGroupItem$1, {
|
|
832
2606
|
ref,
|
|
833
|
-
className: cn(className),
|
|
2607
|
+
className: cn$1(className),
|
|
834
2608
|
...props
|
|
835
2609
|
});
|
|
836
2610
|
}
|
|
837
|
-
RadioGroupItem
|
|
2611
|
+
RadioGroupItem.displayName = "RadioGroupItem";
|
|
2612
|
+
|
|
2613
|
+
//#endregion
|
|
2614
|
+
//#region ../shadcn/ui/select.tsx
|
|
2615
|
+
const Select$1 = ({ ...props }) => {
|
|
2616
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Root, {
|
|
2617
|
+
"data-slot": "select",
|
|
2618
|
+
...props
|
|
2619
|
+
});
|
|
2620
|
+
};
|
|
2621
|
+
const SelectGroup$1 = ({ ...props }) => {
|
|
2622
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Group, {
|
|
2623
|
+
"data-slot": "select-group",
|
|
2624
|
+
...props
|
|
2625
|
+
});
|
|
2626
|
+
};
|
|
2627
|
+
const SelectValue$1 = ({ ...props }) => {
|
|
2628
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Value, {
|
|
2629
|
+
"data-slot": "select-value",
|
|
2630
|
+
...props
|
|
2631
|
+
});
|
|
2632
|
+
};
|
|
2633
|
+
const SelectTrigger$1 = ({ className, children, ...props }) => {
|
|
2634
|
+
return /* @__PURE__ */ jsxs(SelectPrimitive.Trigger, {
|
|
2635
|
+
"data-slot": "select-trigger",
|
|
2636
|
+
className: cn("border-input data-[placeholder]:text-muted-foreground [&_svg:not([class*='text-'])]:text-muted-foreground focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive rounded-md border bg-transparent py-2 text-sm whitespace-nowrap shadow-xs transition-[color,box-shadow] outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50 *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center *:data-[slot=select-value]:gap-2 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", "flex h-auto min-h-10 w-full items-center justify-between px-3 text-sm font-medium", className),
|
|
2637
|
+
...props,
|
|
2638
|
+
children: [children, /* @__PURE__ */ jsx(SelectPrimitive.Icon, {
|
|
2639
|
+
asChild: true,
|
|
2640
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4 opacity-50" })
|
|
2641
|
+
})]
|
|
2642
|
+
});
|
|
2643
|
+
};
|
|
2644
|
+
const SelectContent$1 = ({ className, children, position = "popper", ...props }) => {
|
|
2645
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Portal, { children: /* @__PURE__ */ jsxs(SelectPrimitive.Content, {
|
|
2646
|
+
"data-slot": "select-content",
|
|
2647
|
+
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 relative z-50 max-h-96 min-w-[8rem] overflow-hidden rounded-md border shadow-md", position === "popper" && "data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1", "w-[var(--radix-select-trigger-width)]", className),
|
|
2648
|
+
position,
|
|
2649
|
+
...props,
|
|
2650
|
+
children: [
|
|
2651
|
+
/* @__PURE__ */ jsx(SelectScrollUpButton$1, {}),
|
|
2652
|
+
/* @__PURE__ */ jsx(SelectPrimitive.Viewport, {
|
|
2653
|
+
className: cn("p-1", position === "popper" && "h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)] scroll-my-1"),
|
|
2654
|
+
children
|
|
2655
|
+
}),
|
|
2656
|
+
/* @__PURE__ */ jsx(SelectScrollDownButton$1, {})
|
|
2657
|
+
]
|
|
2658
|
+
}) });
|
|
2659
|
+
};
|
|
2660
|
+
const SelectLabel$1 = ({ className, ...props }) => {
|
|
2661
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Label, {
|
|
2662
|
+
"data-slot": "select-label",
|
|
2663
|
+
className: cn("px-2 py-1.5 text-sm font-medium", className),
|
|
2664
|
+
...props
|
|
2665
|
+
});
|
|
2666
|
+
};
|
|
2667
|
+
const SelectItem$1 = ({ className, children, ...props }) => {
|
|
2668
|
+
return /* @__PURE__ */ jsxs(SelectPrimitive.Item, {
|
|
2669
|
+
"data-slot": "select-item",
|
|
2670
|
+
className: cn("focus:bg-accent focus:text-accent-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex w-full cursor-default items-center gap-2 rounded-sm py-1.5 pr-8 pl-2 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4 *:[span]:last:flex *:[span]:last:items-center *:[span]:last:gap-2", className),
|
|
2671
|
+
...props,
|
|
2672
|
+
children: [/* @__PURE__ */ jsx("span", {
|
|
2673
|
+
className: "absolute right-2 flex size-3.5 items-center justify-center",
|
|
2674
|
+
children: /* @__PURE__ */ jsx(SelectPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) })
|
|
2675
|
+
}), /* @__PURE__ */ jsx(SelectPrimitive.ItemText, { children })]
|
|
2676
|
+
});
|
|
2677
|
+
};
|
|
2678
|
+
const SelectSeparator$1 = ({ className, ...props }) => {
|
|
2679
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.Separator, {
|
|
2680
|
+
"data-slot": "select-separator",
|
|
2681
|
+
className: cn("bg-border pointer-events-none -mx-1 my-1 h-px", className),
|
|
2682
|
+
...props
|
|
2683
|
+
});
|
|
2684
|
+
};
|
|
2685
|
+
const SelectScrollUpButton$1 = ({ className, ...props }) => {
|
|
2686
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.ScrollUpButton, {
|
|
2687
|
+
"data-slot": "select-scroll-up-button",
|
|
2688
|
+
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
2689
|
+
...props,
|
|
2690
|
+
children: /* @__PURE__ */ jsx(ChevronUpIcon, { className: "size-4" })
|
|
2691
|
+
});
|
|
2692
|
+
};
|
|
2693
|
+
const SelectScrollDownButton$1 = ({ className, ...props }) => {
|
|
2694
|
+
return /* @__PURE__ */ jsx(SelectPrimitive.ScrollDownButton, {
|
|
2695
|
+
"data-slot": "select-scroll-down-button",
|
|
2696
|
+
className: cn("flex cursor-default items-center justify-center py-1", className),
|
|
2697
|
+
...props,
|
|
2698
|
+
children: /* @__PURE__ */ jsx(ChevronDownIcon, { className: "size-4" })
|
|
2699
|
+
});
|
|
2700
|
+
};
|
|
838
2701
|
|
|
839
2702
|
//#endregion
|
|
840
2703
|
//#region src/components/base/select/select.tsx
|
|
841
|
-
const Select
|
|
842
|
-
const SelectValue
|
|
843
|
-
function SelectGroup
|
|
844
|
-
return /* @__PURE__ */ jsx(SelectGroup, {
|
|
2704
|
+
const Select = Select$1;
|
|
2705
|
+
const SelectValue = SelectValue$1;
|
|
2706
|
+
function SelectGroup({ ref, className, ...props }) {
|
|
2707
|
+
return /* @__PURE__ */ jsx(SelectGroup$1, {
|
|
845
2708
|
ref,
|
|
846
|
-
className: cn(className),
|
|
2709
|
+
className: cn$1(className),
|
|
847
2710
|
...props
|
|
848
2711
|
});
|
|
849
2712
|
}
|
|
850
|
-
SelectGroup
|
|
851
|
-
function SelectTrigger
|
|
852
|
-
return /* @__PURE__ */ jsx(SelectTrigger, {
|
|
2713
|
+
SelectGroup.displayName = "SelectGroup";
|
|
2714
|
+
function SelectTrigger({ ref, className, ...props }) {
|
|
2715
|
+
return /* @__PURE__ */ jsx(SelectTrigger$1, {
|
|
853
2716
|
ref,
|
|
854
|
-
className: cn("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
|
|
2717
|
+
className: cn$1("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
|
|
855
2718
|
...props
|
|
856
2719
|
});
|
|
857
2720
|
}
|
|
858
|
-
SelectTrigger
|
|
859
|
-
function SelectContent
|
|
860
|
-
return /* @__PURE__ */ jsx(SelectContent, {
|
|
2721
|
+
SelectTrigger.displayName = "SelectTrigger";
|
|
2722
|
+
function SelectContent({ ref, className, ...props }) {
|
|
2723
|
+
return /* @__PURE__ */ jsx(SelectContent$1, {
|
|
861
2724
|
ref,
|
|
862
|
-
className: cn(className),
|
|
2725
|
+
className: cn$1(className),
|
|
863
2726
|
...props
|
|
864
2727
|
});
|
|
865
2728
|
}
|
|
866
|
-
SelectContent
|
|
867
|
-
function SelectLabel
|
|
868
|
-
return /* @__PURE__ */ jsx(SelectLabel, {
|
|
2729
|
+
SelectContent.displayName = "SelectContent";
|
|
2730
|
+
function SelectLabel({ ref, className, ...props }) {
|
|
2731
|
+
return /* @__PURE__ */ jsx(SelectLabel$1, {
|
|
869
2732
|
ref,
|
|
870
|
-
className: cn(className),
|
|
2733
|
+
className: cn$1(className),
|
|
871
2734
|
...props
|
|
872
2735
|
});
|
|
873
2736
|
}
|
|
874
|
-
SelectLabel
|
|
875
|
-
function SelectItem
|
|
876
|
-
return /* @__PURE__ */ jsx(SelectItem, {
|
|
2737
|
+
SelectLabel.displayName = "SelectLabel";
|
|
2738
|
+
function SelectItem({ ref, className, ...props }) {
|
|
2739
|
+
return /* @__PURE__ */ jsx(SelectItem$1, {
|
|
877
2740
|
ref,
|
|
878
|
-
className: cn(className),
|
|
2741
|
+
className: cn$1(className),
|
|
879
2742
|
...props
|
|
880
2743
|
});
|
|
881
2744
|
}
|
|
882
|
-
SelectItem
|
|
883
|
-
function SelectSeparator
|
|
884
|
-
return /* @__PURE__ */ jsx(SelectSeparator, {
|
|
2745
|
+
SelectItem.displayName = "SelectItem";
|
|
2746
|
+
function SelectSeparator({ ref, className, ...props }) {
|
|
2747
|
+
return /* @__PURE__ */ jsx(SelectSeparator$1, {
|
|
885
2748
|
ref,
|
|
886
|
-
className: cn(className),
|
|
2749
|
+
className: cn$1(className),
|
|
887
2750
|
...props
|
|
888
2751
|
});
|
|
889
2752
|
}
|
|
890
|
-
SelectSeparator
|
|
891
|
-
function SelectScrollUpButton
|
|
892
|
-
return /* @__PURE__ */ jsx(SelectScrollUpButton, {
|
|
2753
|
+
SelectSeparator.displayName = "SelectSeparator";
|
|
2754
|
+
function SelectScrollUpButton({ ref, className, ...props }) {
|
|
2755
|
+
return /* @__PURE__ */ jsx(SelectScrollUpButton$1, {
|
|
893
2756
|
ref,
|
|
894
|
-
className: cn(className),
|
|
2757
|
+
className: cn$1(className),
|
|
895
2758
|
...props
|
|
896
2759
|
});
|
|
897
2760
|
}
|
|
898
|
-
SelectScrollUpButton
|
|
899
|
-
function SelectScrollDownButton
|
|
900
|
-
return /* @__PURE__ */ jsx(SelectScrollDownButton, {
|
|
2761
|
+
SelectScrollUpButton.displayName = "SelectScrollUpButton";
|
|
2762
|
+
function SelectScrollDownButton({ ref, className, ...props }) {
|
|
2763
|
+
return /* @__PURE__ */ jsx(SelectScrollDownButton$1, {
|
|
901
2764
|
ref,
|
|
902
|
-
className: cn(className),
|
|
2765
|
+
className: cn$1(className),
|
|
903
2766
|
...props
|
|
904
2767
|
});
|
|
905
2768
|
}
|
|
906
|
-
SelectScrollDownButton
|
|
2769
|
+
SelectScrollDownButton.displayName = "SelectScrollDownButton";
|
|
2770
|
+
|
|
2771
|
+
//#endregion
|
|
2772
|
+
//#region ../shadcn/ui/sheet.tsx
|
|
2773
|
+
const Sheet$1 = ({ ...props }) => {
|
|
2774
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Root, {
|
|
2775
|
+
"data-slot": "sheet",
|
|
2776
|
+
...props
|
|
2777
|
+
});
|
|
2778
|
+
};
|
|
2779
|
+
const SheetTrigger = ({ ...props }) => {
|
|
2780
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Trigger, {
|
|
2781
|
+
"data-slot": "sheet-trigger",
|
|
2782
|
+
...props
|
|
2783
|
+
});
|
|
2784
|
+
};
|
|
2785
|
+
const SheetPortal = ({ ...props }) => {
|
|
2786
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Portal, {
|
|
2787
|
+
"data-slot": "sheet-portal",
|
|
2788
|
+
...props
|
|
2789
|
+
});
|
|
2790
|
+
};
|
|
2791
|
+
const SheetOverlay$1 = ({ className, ...props }) => {
|
|
2792
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
|
|
2793
|
+
"data-slot": "sheet-overlay",
|
|
2794
|
+
className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 fixed inset-0 z-50 bg-black/80", className),
|
|
2795
|
+
...props
|
|
2796
|
+
});
|
|
2797
|
+
};
|
|
2798
|
+
const SheetContent$1 = ({ className, children, side = "right", ...props }) => {
|
|
2799
|
+
return /* @__PURE__ */ jsxs(SheetPortal, { children: [/* @__PURE__ */ jsx(SheetOverlay$1, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
|
|
2800
|
+
"data-slot": "sheet-content",
|
|
2801
|
+
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
|
|
2802
|
+
...props,
|
|
2803
|
+
children: [children, /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
|
|
2804
|
+
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4",
|
|
2805
|
+
children: [/* @__PURE__ */ jsx(XIcon, {}), /* @__PURE__ */ jsx("span", {
|
|
2806
|
+
className: "sr-only",
|
|
2807
|
+
children: "Close"
|
|
2808
|
+
})]
|
|
2809
|
+
})]
|
|
2810
|
+
})] });
|
|
2811
|
+
};
|
|
2812
|
+
const SheetHeader = ({ className, ...props }) => {
|
|
2813
|
+
return /* @__PURE__ */ jsx("div", {
|
|
2814
|
+
"data-slot": "sheet-header",
|
|
2815
|
+
className: cn("flex flex-col gap-1.5 p-4", className),
|
|
2816
|
+
...props
|
|
2817
|
+
});
|
|
2818
|
+
};
|
|
2819
|
+
const SheetFooter = ({ className, ...props }) => {
|
|
2820
|
+
return /* @__PURE__ */ jsx("div", {
|
|
2821
|
+
"data-slot": "sheet-footer",
|
|
2822
|
+
className: cn("mt-auto flex flex-col gap-2 p-4", className),
|
|
2823
|
+
...props
|
|
2824
|
+
});
|
|
2825
|
+
};
|
|
2826
|
+
const SheetTitle = ({ className, ...props }) => {
|
|
2827
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Title, {
|
|
2828
|
+
"data-slot": "sheet-title",
|
|
2829
|
+
className: cn("text-foreground font-semibold", className),
|
|
2830
|
+
...props
|
|
2831
|
+
});
|
|
2832
|
+
};
|
|
2833
|
+
const SheetDescription = ({ className, ...props }) => {
|
|
2834
|
+
return /* @__PURE__ */ jsx(DialogPrimitive.Description, {
|
|
2835
|
+
"data-slot": "sheet-description",
|
|
2836
|
+
className: cn("text-muted-foreground text-sm", className),
|
|
2837
|
+
...props
|
|
2838
|
+
});
|
|
2839
|
+
};
|
|
907
2840
|
|
|
908
2841
|
//#endregion
|
|
909
2842
|
//#region src/components/base/sheet/sheet.tsx
|
|
@@ -911,16 +2844,16 @@ const SheetClose = DialogPrimitive.Close;
|
|
|
911
2844
|
function SheetOverlay({ className, ...props }) {
|
|
912
2845
|
return /* @__PURE__ */ jsx(DialogPrimitive.Overlay, {
|
|
913
2846
|
"data-slot": "sheet-overlay",
|
|
914
|
-
className: cn("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-dialog-overlay/50 fixed inset-0 z-50 backdrop-blur-[2px]", className),
|
|
2847
|
+
className: cn$1("data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 bg-dialog-overlay/50 fixed inset-0 z-50 backdrop-blur-[2px]", className),
|
|
915
2848
|
...props
|
|
916
2849
|
});
|
|
917
2850
|
}
|
|
918
|
-
function SheetContent
|
|
2851
|
+
function SheetContent({ className, children, side = "right", ...props }) {
|
|
919
2852
|
return /* @__PURE__ */ jsxs(DialogPrimitive.Portal, {
|
|
920
2853
|
"data-slot": "sheet-portal",
|
|
921
2854
|
children: [/* @__PURE__ */ jsx(SheetOverlay, {}), /* @__PURE__ */ jsxs(DialogPrimitive.Content, {
|
|
922
2855
|
"data-slot": "sheet-content",
|
|
923
|
-
className: cn("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
|
|
2856
|
+
className: cn$1("bg-background data-[state=open]:animate-in data-[state=closed]:animate-out fixed z-50 flex flex-col gap-4 shadow-lg transition ease-in-out data-[state=closed]:duration-300 data-[state=open]:duration-500", side === "right" && "data-[state=closed]:slide-out-to-right data-[state=open]:slide-in-from-right inset-y-0 right-0 h-full w-3/4 border-l sm:max-w-sm", side === "left" && "data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left inset-y-0 left-0 h-full w-3/4 border-r sm:max-w-sm", side === "top" && "data-[state=closed]:slide-out-to-top data-[state=open]:slide-in-from-top inset-x-0 top-0 h-auto border-b", side === "bottom" && "data-[state=closed]:slide-out-to-bottom data-[state=open]:slide-in-from-bottom inset-x-0 bottom-0 h-auto border-t", className),
|
|
924
2857
|
...props,
|
|
925
2858
|
children: [children, /* @__PURE__ */ jsxs(DialogPrimitive.Close, {
|
|
926
2859
|
className: "ring-offset-background focus:ring-ring data-[state=open]:bg-accent data-[state=open]:text-muted-foreground absolute top-4 right-4 cursor-pointer rounded-xs opacity-70 transition-opacity hover:opacity-100 focus:ring-2 focus:ring-offset-2 focus:outline-hidden disabled:pointer-events-none [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
@@ -932,26 +2865,112 @@ function SheetContent$1({ className, children, side = "right", ...props }) {
|
|
|
932
2865
|
})]
|
|
933
2866
|
});
|
|
934
2867
|
}
|
|
935
|
-
const Sheet
|
|
2868
|
+
const Sheet = Object.assign(Sheet$1, {
|
|
936
2869
|
Trigger: SheetTrigger,
|
|
937
|
-
Content: SheetContent
|
|
2870
|
+
Content: SheetContent,
|
|
938
2871
|
Close: SheetClose,
|
|
939
|
-
Header: SheetHeader
|
|
2872
|
+
Header: SheetHeader,
|
|
940
2873
|
Footer: SheetFooter,
|
|
941
|
-
Title: SheetTitle
|
|
942
|
-
Description: SheetDescription
|
|
2874
|
+
Title: SheetTitle,
|
|
2875
|
+
Description: SheetDescription
|
|
943
2876
|
});
|
|
944
2877
|
|
|
2878
|
+
//#endregion
|
|
2879
|
+
//#region ../shadcn/ui/skeleton.tsx
|
|
2880
|
+
function Skeleton({ className, ...props }) {
|
|
2881
|
+
return /* @__PURE__ */ jsx("div", {
|
|
2882
|
+
className: cn("bg-muted animate-pulse rounded-md", className),
|
|
2883
|
+
...props
|
|
2884
|
+
});
|
|
2885
|
+
}
|
|
2886
|
+
|
|
2887
|
+
//#endregion
|
|
2888
|
+
//#region ../shadcn/ui/switch.tsx
|
|
2889
|
+
function Switch$1({ className, ...props }) {
|
|
2890
|
+
return /* @__PURE__ */ jsx(SwitchPrimitive.Root, {
|
|
2891
|
+
"data-slot": "switch",
|
|
2892
|
+
className: cn("peer data-[state=checked]:bg-primary data-[state=unchecked]:bg-input focus-visible:border-ring focus-visible:ring-ring/50 dark:data-[state=unchecked]:bg-input/80 inline-flex h-[1.15rem] w-8 shrink-0 items-center rounded-full border border-transparent shadow-xs transition-all outline-none focus-visible:ring-[3px] disabled:cursor-not-allowed disabled:opacity-50", className),
|
|
2893
|
+
...props,
|
|
2894
|
+
children: /* @__PURE__ */ jsx(SwitchPrimitive.Thumb, {
|
|
2895
|
+
"data-slot": "switch-thumb",
|
|
2896
|
+
className: cn("bg-background dark:data-[state=unchecked]:bg-foreground dark:data-[state=checked]:bg-primary-foreground pointer-events-none block size-4 rounded-full ring-0 transition-transform data-[state=checked]:translate-x-[calc(100%-2px)] data-[state=unchecked]:translate-x-0")
|
|
2897
|
+
})
|
|
2898
|
+
});
|
|
2899
|
+
}
|
|
2900
|
+
|
|
945
2901
|
//#endregion
|
|
946
2902
|
//#region src/components/base/switch/switch.tsx
|
|
947
|
-
function Switch
|
|
948
|
-
return /* @__PURE__ */ jsx(Switch, {
|
|
2903
|
+
function Switch({ ref, className, ...props }) {
|
|
2904
|
+
return /* @__PURE__ */ jsx(Switch$1, {
|
|
949
2905
|
ref,
|
|
950
|
-
className: cn(className),
|
|
2906
|
+
className: cn$1(className),
|
|
951
2907
|
...props
|
|
952
2908
|
});
|
|
953
2909
|
}
|
|
954
|
-
Switch
|
|
2910
|
+
Switch.displayName = "Switch";
|
|
2911
|
+
|
|
2912
|
+
//#endregion
|
|
2913
|
+
//#region ../shadcn/ui/table.tsx
|
|
2914
|
+
const Table = ({ className, ...props }) => {
|
|
2915
|
+
return /* @__PURE__ */ jsx("div", {
|
|
2916
|
+
"data-slot": "table-container",
|
|
2917
|
+
className: "relative w-full overflow-x-auto",
|
|
2918
|
+
children: /* @__PURE__ */ jsx("table", {
|
|
2919
|
+
"data-slot": "table",
|
|
2920
|
+
className: cn("w-full caption-bottom text-sm", className),
|
|
2921
|
+
...props
|
|
2922
|
+
})
|
|
2923
|
+
});
|
|
2924
|
+
};
|
|
2925
|
+
const TableHeader = ({ className, ...props }) => {
|
|
2926
|
+
return /* @__PURE__ */ jsx("thead", {
|
|
2927
|
+
"data-slot": "table-header",
|
|
2928
|
+
className: cn("[&_tr]:border-b", className),
|
|
2929
|
+
...props
|
|
2930
|
+
});
|
|
2931
|
+
};
|
|
2932
|
+
const TableBody = ({ className, ...props }) => {
|
|
2933
|
+
return /* @__PURE__ */ jsx("tbody", {
|
|
2934
|
+
"data-slot": "table-body",
|
|
2935
|
+
className: cn("[&_tr:last-child]:border-0", className),
|
|
2936
|
+
...props
|
|
2937
|
+
});
|
|
2938
|
+
};
|
|
2939
|
+
const TableFooter = ({ className, ...props }) => {
|
|
2940
|
+
return /* @__PURE__ */ jsx("tfoot", {
|
|
2941
|
+
"data-slot": "table-footer",
|
|
2942
|
+
className: cn("bg-muted/50 border-t font-medium [&>tr]:last:border-b-0", className),
|
|
2943
|
+
...props
|
|
2944
|
+
});
|
|
2945
|
+
};
|
|
2946
|
+
const TableRow = ({ className, ...props }) => {
|
|
2947
|
+
return /* @__PURE__ */ jsx("tr", {
|
|
2948
|
+
"data-slot": "table-row",
|
|
2949
|
+
className: cn("hover:bg-muted/50 data-[state=selected]:bg-muted border-b transition-colors", className),
|
|
2950
|
+
...props
|
|
2951
|
+
});
|
|
2952
|
+
};
|
|
2953
|
+
const TableHead = ({ className, ...props }) => {
|
|
2954
|
+
return /* @__PURE__ */ jsx("th", {
|
|
2955
|
+
"data-slot": "table-head",
|
|
2956
|
+
className: cn("text-muted-foreground h-10 px-2 text-left align-middle font-medium whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
|
|
2957
|
+
...props
|
|
2958
|
+
});
|
|
2959
|
+
};
|
|
2960
|
+
const TableCell = ({ className, ...props }) => {
|
|
2961
|
+
return /* @__PURE__ */ jsx("td", {
|
|
2962
|
+
"data-slot": "table-cell",
|
|
2963
|
+
className: cn("p-2 align-middle whitespace-nowrap [&:has([role=checkbox])]:pr-0 [&>[role=checkbox]]:translate-y-[2px]", className),
|
|
2964
|
+
...props
|
|
2965
|
+
});
|
|
2966
|
+
};
|
|
2967
|
+
const TableCaption = ({ className, ...props }) => {
|
|
2968
|
+
return /* @__PURE__ */ jsx("caption", {
|
|
2969
|
+
"data-slot": "table-caption",
|
|
2970
|
+
className: cn("text-muted-foreground mt-4 text-sm", className),
|
|
2971
|
+
...props
|
|
2972
|
+
});
|
|
2973
|
+
};
|
|
955
2974
|
|
|
956
2975
|
//#endregion
|
|
957
2976
|
//#region src/components/base/tabs/tabs.tsx
|
|
@@ -963,25 +2982,25 @@ Switch$1.displayName = "Switch";
|
|
|
963
2982
|
*/
|
|
964
2983
|
function Tabs({ className, ...props }) {
|
|
965
2984
|
return /* @__PURE__ */ jsx(TabsPrimitive.Root, {
|
|
966
|
-
className: cn("flex flex-col gap-2", className),
|
|
2985
|
+
className: cn$1("flex flex-col gap-2", className),
|
|
967
2986
|
...props
|
|
968
2987
|
});
|
|
969
2988
|
}
|
|
970
2989
|
function TabsList({ className, ...props }) {
|
|
971
2990
|
return /* @__PURE__ */ jsx(TabsPrimitive.List, {
|
|
972
|
-
className: cn("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-1", className),
|
|
2991
|
+
className: cn$1("bg-muted text-muted-foreground inline-flex h-9 w-fit items-center justify-center rounded-lg p-1", className),
|
|
973
2992
|
...props
|
|
974
2993
|
});
|
|
975
2994
|
}
|
|
976
2995
|
function TabsTrigger({ className, ...props }) {
|
|
977
2996
|
return /* @__PURE__ */ jsx(TabsPrimitive.Trigger, {
|
|
978
|
-
className: cn("data-[state=active]:bg-background dark:data-[state=active]:text-foreground data-[state=active]:text-foreground dark:hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
2997
|
+
className: cn$1("data-[state=active]:bg-background dark:data-[state=active]:text-foreground data-[state=active]:text-foreground dark:hover:text-foreground focus-visible:border-ring focus-visible:ring-ring/50 focus-visible:outline-ring inline-flex flex-1 items-center justify-center gap-1.5 rounded-md px-2 py-1 text-sm font-medium whitespace-nowrap transition-[color,box-shadow] focus-visible:ring-[3px] focus-visible:outline-1 disabled:pointer-events-none disabled:opacity-50 data-[state=active]:shadow-sm [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
979
2998
|
...props
|
|
980
2999
|
});
|
|
981
3000
|
}
|
|
982
3001
|
function TabsContent({ className, ...props }) {
|
|
983
3002
|
return /* @__PURE__ */ jsx(TabsPrimitive.Content, {
|
|
984
|
-
className: cn("flex-1 outline-none", className),
|
|
3003
|
+
className: cn$1("flex-1 outline-none", className),
|
|
985
3004
|
...props
|
|
986
3005
|
});
|
|
987
3006
|
}
|
|
@@ -1001,40 +3020,71 @@ function TabsLinkTrigger({ value, href, linkComponent: LinkComp = "a", children,
|
|
|
1001
3020
|
|
|
1002
3021
|
//#endregion
|
|
1003
3022
|
//#region src/components/base/textarea/textarea.tsx
|
|
1004
|
-
function Textarea
|
|
1005
|
-
return /* @__PURE__ */ jsx(Textarea, {
|
|
3023
|
+
function Textarea({ ref, className, ...props }) {
|
|
3024
|
+
return /* @__PURE__ */ jsx(Textarea$1, {
|
|
1006
3025
|
ref,
|
|
1007
|
-
className: cn("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
|
|
3026
|
+
className: cn$1("rounded-lg", "bg-input-background/50", "text-input-foreground", "border-input-border", "placeholder:text-input-placeholder", "focus-visible:ring-0 focus-visible:ring-offset-0", "focus-visible:border-input-focus-border", "focus-visible:shadow-(--input-focus-shadow)", "aria-invalid:border-destructive", className),
|
|
1008
3027
|
...props
|
|
1009
3028
|
});
|
|
1010
3029
|
}
|
|
1011
|
-
Textarea
|
|
3030
|
+
Textarea.displayName = "Textarea";
|
|
3031
|
+
|
|
3032
|
+
//#endregion
|
|
3033
|
+
//#region ../shadcn/ui/tooltip.tsx
|
|
3034
|
+
const TooltipProvider = ({ delayDuration = 0, ...props }) => {
|
|
3035
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Provider, {
|
|
3036
|
+
"data-slot": "tooltip-provider",
|
|
3037
|
+
delayDuration,
|
|
3038
|
+
...props
|
|
3039
|
+
});
|
|
3040
|
+
};
|
|
3041
|
+
const Tooltip$1 = ({ ...props }) => {
|
|
3042
|
+
return /* @__PURE__ */ jsx(TooltipProvider, { children: /* @__PURE__ */ jsx(TooltipPrimitive.Root, {
|
|
3043
|
+
"data-slot": "tooltip",
|
|
3044
|
+
...props
|
|
3045
|
+
}) });
|
|
3046
|
+
};
|
|
3047
|
+
const TooltipTrigger = ({ ...props }) => {
|
|
3048
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Trigger, {
|
|
3049
|
+
"data-slot": "tooltip-trigger",
|
|
3050
|
+
...props
|
|
3051
|
+
});
|
|
3052
|
+
};
|
|
3053
|
+
const TooltipContent$1 = ({ className, sideOffset = 0, children, ...props }) => {
|
|
3054
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(TooltipPrimitive.Content, {
|
|
3055
|
+
"data-slot": "tooltip-content",
|
|
3056
|
+
sideOffset,
|
|
3057
|
+
className: cn("tooltip-content", "bg-primary text-primary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", className),
|
|
3058
|
+
...props,
|
|
3059
|
+
children: [children, /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, { className: "bg-primary fill-primary z-50 size-2.5 translate-y-[calc(-50%_-_2px)] rotate-45 rounded-[2px]" })]
|
|
3060
|
+
}) });
|
|
3061
|
+
};
|
|
1012
3062
|
|
|
1013
3063
|
//#endregion
|
|
1014
3064
|
//#region src/components/base/tooltip/tooltip.tsx
|
|
1015
|
-
function TooltipContent
|
|
1016
|
-
return /* @__PURE__ */ jsx(
|
|
3065
|
+
function TooltipContent({ className, arrowClassName, sideOffset = 0, children, ...props }) {
|
|
3066
|
+
return /* @__PURE__ */ jsx(TooltipPrimitive.Portal, { children: /* @__PURE__ */ jsxs(TooltipPrimitive.Content, {
|
|
1017
3067
|
"data-slot": "tooltip-content",
|
|
1018
3068
|
sideOffset,
|
|
1019
|
-
className: cn("tooltip-content", "bg-secondary text-secondary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", className),
|
|
3069
|
+
className: cn$1("tooltip-content", "bg-secondary text-secondary-foreground animate-in fade-in-0 zoom-in-95 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 w-fit rounded-md px-3 py-1.5 text-xs text-balance", className),
|
|
1020
3070
|
...props,
|
|
1021
|
-
children: [children, /* @__PURE__ */ jsx(
|
|
1022
|
-
className: cn("fill-secondary -my-px border-none drop-shadow-[0_1px_0_secondary]", arrowClassName),
|
|
3071
|
+
children: [children, /* @__PURE__ */ jsx(TooltipPrimitive.Arrow, {
|
|
3072
|
+
className: cn$1("fill-secondary -my-px border-none drop-shadow-[0_1px_0_secondary]", arrowClassName),
|
|
1023
3073
|
width: 12,
|
|
1024
3074
|
height: 7,
|
|
1025
3075
|
"aria-hidden": "true"
|
|
1026
3076
|
})]
|
|
1027
3077
|
}) });
|
|
1028
3078
|
}
|
|
1029
|
-
function Tooltip
|
|
1030
|
-
return /* @__PURE__ */ jsxs(Tooltip, {
|
|
3079
|
+
function Tooltip({ message, children, delayDuration = 200, side, align, sideOffset, hidden, open, onOpenChange, contentClassName, arrowClassName }) {
|
|
3080
|
+
return /* @__PURE__ */ jsxs(Tooltip$1, {
|
|
1031
3081
|
delayDuration,
|
|
1032
3082
|
open,
|
|
1033
3083
|
onOpenChange,
|
|
1034
3084
|
children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
1035
3085
|
asChild: true,
|
|
1036
3086
|
children
|
|
1037
|
-
}), /* @__PURE__ */ jsx(TooltipContent
|
|
3087
|
+
}), /* @__PURE__ */ jsx(TooltipContent, {
|
|
1038
3088
|
side,
|
|
1039
3089
|
align,
|
|
1040
3090
|
sideOffset,
|
|
@@ -1046,11 +3096,208 @@ function Tooltip$1({ message, children, delayDuration = 200, side, align, sideOf
|
|
|
1046
3096
|
});
|
|
1047
3097
|
}
|
|
1048
3098
|
|
|
3099
|
+
//#endregion
|
|
3100
|
+
//#region src/components/base/typography/typography.tsx
|
|
3101
|
+
const titleVariants$1 = cva("font-semibold leading-tight tracking-tight", {
|
|
3102
|
+
variants: {
|
|
3103
|
+
level: {
|
|
3104
|
+
1: "text-2xl md:text-3xl lg:text-4xl",
|
|
3105
|
+
2: "text-xl md:text-2xl lg:text-3xl",
|
|
3106
|
+
3: "text-lg md:text-xl lg:text-2xl",
|
|
3107
|
+
4: "text-base md:text-lg lg:text-xl",
|
|
3108
|
+
5: "text-sm md:text-base lg:text-lg",
|
|
3109
|
+
6: "text-xs md:text-sm lg:text-base"
|
|
3110
|
+
},
|
|
3111
|
+
weight: {
|
|
3112
|
+
normal: "font-normal",
|
|
3113
|
+
medium: "font-medium",
|
|
3114
|
+
semibold: "font-semibold",
|
|
3115
|
+
bold: "font-bold",
|
|
3116
|
+
extrabold: "font-extrabold"
|
|
3117
|
+
},
|
|
3118
|
+
textColor: {
|
|
3119
|
+
default: "text-foreground",
|
|
3120
|
+
muted: "text-muted-foreground",
|
|
3121
|
+
primary: "text-primary",
|
|
3122
|
+
secondary: "text-secondary-foreground",
|
|
3123
|
+
destructive: "text-destructive",
|
|
3124
|
+
success: "text-green-600 dark:text-green-400",
|
|
3125
|
+
warning: "text-yellow-600 dark:text-yellow-400",
|
|
3126
|
+
info: "text-blue-600 dark:text-blue-400"
|
|
3127
|
+
}
|
|
3128
|
+
},
|
|
3129
|
+
defaultVariants: {
|
|
3130
|
+
level: 4,
|
|
3131
|
+
weight: "semibold",
|
|
3132
|
+
textColor: "default"
|
|
3133
|
+
}
|
|
3134
|
+
});
|
|
3135
|
+
const textVariants = cva("leading-relaxed", {
|
|
3136
|
+
variants: {
|
|
3137
|
+
size: {
|
|
3138
|
+
"xs": "text-xs",
|
|
3139
|
+
"sm": "text-sm",
|
|
3140
|
+
"base": "text-sm",
|
|
3141
|
+
"lg": "text-lg",
|
|
3142
|
+
"xl": "text-xl",
|
|
3143
|
+
"2xl": "text-2xl",
|
|
3144
|
+
"3xl": "text-3xl",
|
|
3145
|
+
"4xl": "text-4xl"
|
|
3146
|
+
},
|
|
3147
|
+
weight: {
|
|
3148
|
+
normal: "font-normal",
|
|
3149
|
+
medium: "font-medium",
|
|
3150
|
+
semibold: "font-semibold",
|
|
3151
|
+
bold: "font-bold",
|
|
3152
|
+
extrabold: "font-extrabold"
|
|
3153
|
+
},
|
|
3154
|
+
textColor: {
|
|
3155
|
+
default: "text-foreground",
|
|
3156
|
+
muted: "text-muted-foreground",
|
|
3157
|
+
primary: "text-primary",
|
|
3158
|
+
secondary: "text-secondary-foreground",
|
|
3159
|
+
destructive: "text-destructive",
|
|
3160
|
+
success: "text-green-600 dark:text-green-400",
|
|
3161
|
+
warning: "text-yellow-600 dark:text-yellow-400",
|
|
3162
|
+
info: "text-blue-600 dark:text-blue-400"
|
|
3163
|
+
},
|
|
3164
|
+
type: {
|
|
3165
|
+
default: "",
|
|
3166
|
+
code: "font-mono bg-muted px-1.5 py-0.5 rounded text-sm",
|
|
3167
|
+
mark: "bg-yellow-100 dark:bg-yellow-900/30 px-1.5 py-0.5 rounded",
|
|
3168
|
+
underline: "underline underline-offset-4",
|
|
3169
|
+
delete: "line-through",
|
|
3170
|
+
strong: "font-semibold",
|
|
3171
|
+
italic: "italic"
|
|
3172
|
+
}
|
|
3173
|
+
},
|
|
3174
|
+
defaultVariants: {
|
|
3175
|
+
size: "base",
|
|
3176
|
+
weight: "normal",
|
|
3177
|
+
textColor: "default",
|
|
3178
|
+
type: "default"
|
|
3179
|
+
}
|
|
3180
|
+
});
|
|
3181
|
+
const paragraphVariants = cva("leading-relaxed", {
|
|
3182
|
+
variants: {
|
|
3183
|
+
size: {
|
|
3184
|
+
xs: "text-xs",
|
|
3185
|
+
sm: "text-sm",
|
|
3186
|
+
base: "text-sm",
|
|
3187
|
+
lg: "text-lg",
|
|
3188
|
+
xl: "text-xl"
|
|
3189
|
+
},
|
|
3190
|
+
spacing: {
|
|
3191
|
+
tight: "leading-tight",
|
|
3192
|
+
normal: "leading-relaxed",
|
|
3193
|
+
loose: "leading-loose"
|
|
3194
|
+
}
|
|
3195
|
+
},
|
|
3196
|
+
defaultVariants: {
|
|
3197
|
+
size: "base",
|
|
3198
|
+
spacing: "normal"
|
|
3199
|
+
}
|
|
3200
|
+
});
|
|
3201
|
+
function Title$1({ className, level, weight, textColor, as, children, ...props }) {
|
|
3202
|
+
const Component = as ?? `h${level ?? 4}`;
|
|
3203
|
+
return React$1.createElement(Component, {
|
|
3204
|
+
className: cn$1(titleVariants$1({
|
|
3205
|
+
level,
|
|
3206
|
+
weight,
|
|
3207
|
+
textColor,
|
|
3208
|
+
className
|
|
3209
|
+
})),
|
|
3210
|
+
...props
|
|
3211
|
+
}, children);
|
|
3212
|
+
}
|
|
3213
|
+
function Text({ className, size, weight, textColor, type, as = "span", copyable, ellipsis, mark, underline, delete: deleteProp, strong, italic, code, children, ...props }) {
|
|
3214
|
+
const resolvedType = code ? "code" : italic ? "italic" : strong ? "strong" : deleteProp ? "delete" : underline ? "underline" : mark ? "mark" : type;
|
|
3215
|
+
const content = /* @__PURE__ */ jsxs(Fragment$1, { children: [children, copyable && /* @__PURE__ */ jsx("button", {
|
|
3216
|
+
type: "button",
|
|
3217
|
+
"aria-label": "Copy text",
|
|
3218
|
+
className: "hover:bg-accent hover:text-accent-foreground ml-2 inline-flex size-4 items-center justify-center rounded-md text-sm font-medium transition-colors",
|
|
3219
|
+
onClick: () => {
|
|
3220
|
+
if (typeof children === "string") navigator.clipboard.writeText(children).catch(() => {});
|
|
3221
|
+
},
|
|
3222
|
+
title: "Copy text",
|
|
3223
|
+
children: /* @__PURE__ */ jsx(CopyIcon, {
|
|
3224
|
+
className: "size-3",
|
|
3225
|
+
"aria-hidden": "true"
|
|
3226
|
+
})
|
|
3227
|
+
})] });
|
|
3228
|
+
return React$1.createElement(as, {
|
|
3229
|
+
className: cn$1(textVariants({
|
|
3230
|
+
size,
|
|
3231
|
+
weight,
|
|
3232
|
+
textColor,
|
|
3233
|
+
type: resolvedType
|
|
3234
|
+
}), ellipsis && "truncate", className),
|
|
3235
|
+
...props
|
|
3236
|
+
}, content);
|
|
3237
|
+
}
|
|
3238
|
+
function Paragraph({ className, size, spacing, as = "p", children, ...props }) {
|
|
3239
|
+
return React$1.createElement(as, {
|
|
3240
|
+
className: cn$1(paragraphVariants({
|
|
3241
|
+
size,
|
|
3242
|
+
spacing,
|
|
3243
|
+
className
|
|
3244
|
+
})),
|
|
3245
|
+
...props
|
|
3246
|
+
}, children);
|
|
3247
|
+
}
|
|
3248
|
+
function Link({ className, children, href, target = "_self", rel, ...props }) {
|
|
3249
|
+
return /* @__PURE__ */ jsx("a", {
|
|
3250
|
+
href,
|
|
3251
|
+
target,
|
|
3252
|
+
rel: rel ?? (target === "_blank" ? "noopener noreferrer" : void 0),
|
|
3253
|
+
className: cn$1("text-primary focus-visible:ring-ring underline-offset-4 focus-visible:ring-2 focus-visible:ring-offset-2 focus-visible:outline-none", className),
|
|
3254
|
+
...props,
|
|
3255
|
+
children
|
|
3256
|
+
});
|
|
3257
|
+
}
|
|
3258
|
+
function List({ className, as, listType = "unordered", children, ...props }) {
|
|
3259
|
+
const Component = as ?? (listType === "ordered" ? "ol" : "ul");
|
|
3260
|
+
return React$1.createElement(Component, {
|
|
3261
|
+
className: cn$1("space-y-2", listType === "ordered" ? "list-decimal list-inside" : "list-disc list-inside", className),
|
|
3262
|
+
...props
|
|
3263
|
+
}, children);
|
|
3264
|
+
}
|
|
3265
|
+
function ListItem({ className, children, ...props }) {
|
|
3266
|
+
return /* @__PURE__ */ jsx("li", {
|
|
3267
|
+
className: cn$1("leading-relaxed", className),
|
|
3268
|
+
...props,
|
|
3269
|
+
children
|
|
3270
|
+
});
|
|
3271
|
+
}
|
|
3272
|
+
function Blockquote({ className, children, ...props }) {
|
|
3273
|
+
return /* @__PURE__ */ jsx("blockquote", {
|
|
3274
|
+
className: cn$1("border-primary text-muted-foreground border-l-4 pl-4 italic", className),
|
|
3275
|
+
...props,
|
|
3276
|
+
children
|
|
3277
|
+
});
|
|
3278
|
+
}
|
|
3279
|
+
function Code({ className, as = "code", children, ...props }) {
|
|
3280
|
+
if (as === "pre") return /* @__PURE__ */ jsx("pre", {
|
|
3281
|
+
className: cn$1("bg-muted relative overflow-x-auto rounded p-4 font-mono text-sm", className),
|
|
3282
|
+
...props,
|
|
3283
|
+
children
|
|
3284
|
+
});
|
|
3285
|
+
return /* @__PURE__ */ jsx("code", {
|
|
3286
|
+
className: cn$1("bg-muted relative rounded px-[0.3rem] py-[0.2rem] font-mono text-sm", className),
|
|
3287
|
+
...props,
|
|
3288
|
+
children
|
|
3289
|
+
});
|
|
3290
|
+
}
|
|
3291
|
+
|
|
3292
|
+
//#endregion
|
|
3293
|
+
//#region ../shadcn/ui/visuallyhidden.tsx
|
|
3294
|
+
const VisuallyHidden$1 = { Root: VisuallyHidden };
|
|
3295
|
+
|
|
1049
3296
|
//#endregion
|
|
1050
3297
|
//#region src/components/features/loader-overlay/loader-overlay.tsx
|
|
1051
3298
|
function LoaderOverlay({ message, className }) {
|
|
1052
3299
|
return /* @__PURE__ */ jsxs("div", {
|
|
1053
|
-
className: cn("bg-background/80 absolute inset-0 z-10 flex items-center justify-center gap-2 backdrop-blur-[1px]", className),
|
|
3300
|
+
className: cn$1("bg-background/80 absolute inset-0 z-10 flex items-center justify-center gap-2 backdrop-blur-[1px]", className),
|
|
1054
3301
|
children: [/* @__PURE__ */ jsx(SpinnerIcon, { size: "sm" }), typeof message === "string" ? /* @__PURE__ */ jsx("span", {
|
|
1055
3302
|
className: "text-sm font-medium",
|
|
1056
3303
|
children: message
|
|
@@ -1085,7 +3332,7 @@ function Trigger({ ref, selectedOption, renderValue, placeholder, loading, disab
|
|
|
1085
3332
|
role: "combobox",
|
|
1086
3333
|
"aria-expanded": open,
|
|
1087
3334
|
disabled: disabled || loading,
|
|
1088
|
-
className: cn("text-input-foreground placeholder:text-input-placeholder", "border-input-border bg-input-background/50 relative flex h-10 w-full items-center justify-between rounded-lg border px-3 py-2 text-left text-sm transition-all", "focus-visible:border-input-focus-border focus-visible:shadow-(--input-focus-shadow)", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "aria-invalid:border-destructive", (disabled || loading) && "cursor-not-allowed opacity-50", className),
|
|
3335
|
+
className: cn$1("text-input-foreground placeholder:text-input-placeholder", "border-input-border bg-input-background/50 relative flex h-10 w-full items-center justify-between rounded-lg border px-3 py-2 text-left text-sm transition-all", "focus-visible:border-input-focus-border focus-visible:shadow-(--input-focus-shadow)", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "aria-invalid:border-destructive", (disabled || loading) && "cursor-not-allowed opacity-50", className),
|
|
1089
3336
|
...rest,
|
|
1090
3337
|
children: [
|
|
1091
3338
|
loading && /* @__PURE__ */ jsx(LoaderOverlay, {}),
|
|
@@ -1158,7 +3405,7 @@ function VirtualizedOptions({ options, selectedValue, onSelect, renderOption, it
|
|
|
1158
3405
|
]);
|
|
1159
3406
|
return /* @__PURE__ */ jsx("div", {
|
|
1160
3407
|
ref: parentRef,
|
|
1161
|
-
className: cn("max-h-[200px] overflow-auto", listClassName),
|
|
3408
|
+
className: cn$1("max-h-[200px] overflow-auto", listClassName),
|
|
1162
3409
|
children: /* @__PURE__ */ jsx(CommandGroup, { children: /* @__PURE__ */ jsx("div", {
|
|
1163
3410
|
style: { height: `${virtualizer.getTotalSize()}px` },
|
|
1164
3411
|
className: "relative w-full",
|
|
@@ -1261,7 +3508,7 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
|
|
|
1261
3508
|
if (isExternalSearch) onSearchChange?.(val);
|
|
1262
3509
|
}, [isExternalSearch, onSearchChange]);
|
|
1263
3510
|
return /* @__PURE__ */ jsxs("div", {
|
|
1264
|
-
className: cn("relative", className),
|
|
3511
|
+
className: cn$1("relative", className),
|
|
1265
3512
|
children: [/* @__PURE__ */ jsxs(Popover, {
|
|
1266
3513
|
open,
|
|
1267
3514
|
onOpenChange: handleOpenChange,
|
|
@@ -1279,9 +3526,9 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
|
|
|
1279
3526
|
className: triggerClassName
|
|
1280
3527
|
})
|
|
1281
3528
|
}), /* @__PURE__ */ jsx(PopoverContent, {
|
|
1282
|
-
className: cn("popover-content-width-full p-0", contentClassName),
|
|
3529
|
+
className: cn$1("popover-content-width-full p-0", contentClassName),
|
|
1283
3530
|
align: "start",
|
|
1284
|
-
children: /* @__PURE__ */ jsxs(Command, {
|
|
3531
|
+
children: /* @__PURE__ */ jsxs(Command$1, {
|
|
1285
3532
|
shouldFilter: !isExternalSearch && !creatable,
|
|
1286
3533
|
defaultValue: value,
|
|
1287
3534
|
children: [
|
|
@@ -1294,7 +3541,7 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
|
|
|
1294
3541
|
onValueChange: handleSearchChange
|
|
1295
3542
|
}),
|
|
1296
3543
|
/* @__PURE__ */ jsxs(CommandList, {
|
|
1297
|
-
className: cn(!virtualize && "max-h-[300px]", listClassName),
|
|
3544
|
+
className: cn$1(!virtualize && "max-h-[300px]", listClassName),
|
|
1298
3545
|
children: [
|
|
1299
3546
|
!showCreatableItem && /* @__PURE__ */ jsx(CommandEmpty, { children: typeof emptyContent === "string" ? /* @__PURE__ */ jsx("span", {
|
|
1300
3547
|
className: "text-muted-foreground text-xs",
|
|
@@ -1343,6 +3590,30 @@ function Autocomplete({ options, value, onValueChange, onSearchChange, searchPla
|
|
|
1343
3590
|
}
|
|
1344
3591
|
Autocomplete.displayName = "Autocomplete";
|
|
1345
3592
|
|
|
3593
|
+
//#endregion
|
|
3594
|
+
//#region ../shadcn/ui/avatar.tsx
|
|
3595
|
+
const Avatar = ({ className, ...props }) => {
|
|
3596
|
+
return /* @__PURE__ */ jsx(AvatarPrimitive.Root, {
|
|
3597
|
+
"data-slot": "avatar",
|
|
3598
|
+
className: cn("relative flex size-8 shrink-0 overflow-hidden rounded-full", className),
|
|
3599
|
+
...props
|
|
3600
|
+
});
|
|
3601
|
+
};
|
|
3602
|
+
const AvatarImage = ({ className, ...props }) => {
|
|
3603
|
+
return /* @__PURE__ */ jsx(AvatarPrimitive.Image, {
|
|
3604
|
+
"data-slot": "avatar-image",
|
|
3605
|
+
className: cn("aspect-square size-full", className),
|
|
3606
|
+
...props
|
|
3607
|
+
});
|
|
3608
|
+
};
|
|
3609
|
+
const AvatarFallback = ({ className, ...props }) => {
|
|
3610
|
+
return /* @__PURE__ */ jsx(AvatarPrimitive.Fallback, {
|
|
3611
|
+
"data-slot": "avatar-fallback",
|
|
3612
|
+
className: cn("bg-muted flex size-full items-center justify-center rounded-full", className),
|
|
3613
|
+
...props
|
|
3614
|
+
});
|
|
3615
|
+
};
|
|
3616
|
+
|
|
1346
3617
|
//#endregion
|
|
1347
3618
|
//#region src/components/features/avatar-stack/avatar-stack.tsx
|
|
1348
3619
|
const avatarStackVariants = cva("flex", {
|
|
@@ -1367,23 +3638,23 @@ function AvatarStack({ className, orientation, avatars, spacing, maxAvatarsAmoun
|
|
|
1367
3638
|
const shownAvatars = avatars.slice(0, maxAvatarsAmount);
|
|
1368
3639
|
const hiddenAvatars = avatars.slice(maxAvatarsAmount);
|
|
1369
3640
|
return /* @__PURE__ */ jsxs("div", {
|
|
1370
|
-
className: cn(avatarStackVariants({
|
|
3641
|
+
className: cn$1(avatarStackVariants({
|
|
1371
3642
|
orientation,
|
|
1372
3643
|
spacing
|
|
1373
3644
|
}), className, orientation === "horizontal" ? "-space-x-0" : "-space-y-0"),
|
|
1374
3645
|
...props,
|
|
1375
|
-
children: [shownAvatars.map(({ name, image }, index) => /* @__PURE__ */ jsx(Tooltip
|
|
3646
|
+
children: [shownAvatars.map(({ name, image }, index) => /* @__PURE__ */ jsx(Tooltip, {
|
|
1376
3647
|
message: name,
|
|
1377
3648
|
delayDuration: 300,
|
|
1378
3649
|
children: /* @__PURE__ */ jsxs(Avatar, {
|
|
1379
|
-
className: cn(avatarStackVariants(), "hover:z-10", avatarClassName),
|
|
3650
|
+
className: cn$1(avatarStackVariants(), "hover:z-10", avatarClassName),
|
|
1380
3651
|
children: [/* @__PURE__ */ jsx(AvatarImage, { src: image }), /* @__PURE__ */ jsx(AvatarFallback, { children: name?.split(" ")?.map((word) => word[0])?.join("")?.toUpperCase() })]
|
|
1381
3652
|
})
|
|
1382
|
-
}, `${image}-${index + 1}`)), hiddenAvatars.length ? /* @__PURE__ */ jsx(Tooltip
|
|
3653
|
+
}, `${image}-${index + 1}`)), hiddenAvatars.length ? /* @__PURE__ */ jsx(Tooltip, {
|
|
1383
3654
|
message: /* @__PURE__ */ jsx(Fragment$1, { children: hiddenAvatars.map(({ name }, index) => /* @__PURE__ */ jsx("p", { children: name }, `${name}-${index + 1}`)) }),
|
|
1384
3655
|
delayDuration: 300,
|
|
1385
3656
|
children: /* @__PURE__ */ jsx(Avatar, {
|
|
1386
|
-
className: cn(avatarClassName),
|
|
3657
|
+
className: cn$1(avatarClassName),
|
|
1387
3658
|
children: /* @__PURE__ */ jsxs(AvatarFallback, { children: ["+", avatars.length - shownAvatars.length] })
|
|
1388
3659
|
}, "Excesive avatars")
|
|
1389
3660
|
}) : null]
|
|
@@ -1809,7 +4080,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1809
4080
|
id: "date",
|
|
1810
4081
|
ref,
|
|
1811
4082
|
...props,
|
|
1812
|
-
className: cn("w-full", triggerClassName, multiSelectVariants({
|
|
4083
|
+
className: cn$1("w-full", triggerClassName, multiSelectVariants({
|
|
1813
4084
|
variant,
|
|
1814
4085
|
className
|
|
1815
4086
|
})),
|
|
@@ -1822,7 +4093,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1822
4093
|
children: [/* @__PURE__ */ jsx(CalendarIcon, { className: "text-muted-foreground h-4 w-4" }), /* @__PURE__ */ jsx("span", { children: date?.from ? date.to ? /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1823
4094
|
/* @__PURE__ */ jsx("span", {
|
|
1824
4095
|
id: `firstDay-${id}`,
|
|
1825
|
-
className: cn("date-part", highlightedPart === "firstDay" && "font-bold underline"),
|
|
4096
|
+
className: cn$1("date-part", highlightedPart === "firstDay" && "font-bold underline"),
|
|
1826
4097
|
onMouseOver: () => handleMouseOver("firstDay"),
|
|
1827
4098
|
onMouseLeave: handleMouseLeave,
|
|
1828
4099
|
children: formatWithTz(date.from, "dd")
|
|
@@ -1830,7 +4101,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1830
4101
|
" ",
|
|
1831
4102
|
/* @__PURE__ */ jsx("span", {
|
|
1832
4103
|
id: `firstMonth-${id}`,
|
|
1833
|
-
className: cn("date-part", highlightedPart === "firstMonth" && "font-bold underline"),
|
|
4104
|
+
className: cn$1("date-part", highlightedPart === "firstMonth" && "font-bold underline"),
|
|
1834
4105
|
onMouseOver: () => handleMouseOver("firstMonth"),
|
|
1835
4106
|
onMouseLeave: handleMouseLeave,
|
|
1836
4107
|
children: formatWithTz(date.from, "LLL")
|
|
@@ -1839,7 +4110,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1839
4110
|
" ",
|
|
1840
4111
|
/* @__PURE__ */ jsx("span", {
|
|
1841
4112
|
id: `firstYear-${id}`,
|
|
1842
|
-
className: cn("date-part", highlightedPart === "firstYear" && "font-bold underline"),
|
|
4113
|
+
className: cn$1("date-part", highlightedPart === "firstYear" && "font-bold underline"),
|
|
1843
4114
|
onMouseOver: () => handleMouseOver("firstYear"),
|
|
1844
4115
|
onMouseLeave: handleMouseLeave,
|
|
1845
4116
|
children: formatWithTz(date.from, "y")
|
|
@@ -1848,7 +4119,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1848
4119
|
" - ",
|
|
1849
4120
|
/* @__PURE__ */ jsx("span", {
|
|
1850
4121
|
id: `secondDay-${id}`,
|
|
1851
|
-
className: cn("date-part", highlightedPart === "secondDay" && "font-bold underline"),
|
|
4122
|
+
className: cn$1("date-part", highlightedPart === "secondDay" && "font-bold underline"),
|
|
1852
4123
|
onMouseOver: () => handleMouseOver("secondDay"),
|
|
1853
4124
|
onMouseLeave: handleMouseLeave,
|
|
1854
4125
|
children: formatWithTz(date.to, "dd")
|
|
@@ -1856,7 +4127,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1856
4127
|
" ",
|
|
1857
4128
|
/* @__PURE__ */ jsx("span", {
|
|
1858
4129
|
id: `secondMonth-${id}`,
|
|
1859
|
-
className: cn("date-part", highlightedPart === "secondMonth" && "font-bold underline"),
|
|
4130
|
+
className: cn$1("date-part", highlightedPart === "secondMonth" && "font-bold underline"),
|
|
1860
4131
|
onMouseOver: () => handleMouseOver("secondMonth"),
|
|
1861
4132
|
onMouseLeave: handleMouseLeave,
|
|
1862
4133
|
children: formatWithTz(date.to, "LLL")
|
|
@@ -1865,7 +4136,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1865
4136
|
" ",
|
|
1866
4137
|
/* @__PURE__ */ jsx("span", {
|
|
1867
4138
|
id: `secondYear-${id}`,
|
|
1868
|
-
className: cn("date-part", highlightedPart === "secondYear" && "font-bold underline"),
|
|
4139
|
+
className: cn$1("date-part", highlightedPart === "secondYear" && "font-bold underline"),
|
|
1869
4140
|
onMouseOver: () => handleMouseOver("secondYear"),
|
|
1870
4141
|
onMouseLeave: handleMouseLeave,
|
|
1871
4142
|
children: formatWithTz(date.to, "y")
|
|
@@ -1874,7 +4145,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1874
4145
|
] }) : /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
1875
4146
|
/* @__PURE__ */ jsx("span", {
|
|
1876
4147
|
id: "day",
|
|
1877
|
-
className: cn("date-part", highlightedPart === "day" && "font-bold underline"),
|
|
4148
|
+
className: cn$1("date-part", highlightedPart === "day" && "font-bold underline"),
|
|
1878
4149
|
onMouseOver: () => handleMouseOver("day"),
|
|
1879
4150
|
onMouseLeave: handleMouseLeave,
|
|
1880
4151
|
children: formatWithTz(date.from, "dd")
|
|
@@ -1882,7 +4153,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1882
4153
|
" ",
|
|
1883
4154
|
/* @__PURE__ */ jsx("span", {
|
|
1884
4155
|
id: "month",
|
|
1885
|
-
className: cn("date-part", highlightedPart === "month" && "font-bold underline"),
|
|
4156
|
+
className: cn$1("date-part", highlightedPart === "month" && "font-bold underline"),
|
|
1886
4157
|
onMouseOver: () => handleMouseOver("month"),
|
|
1887
4158
|
onMouseLeave: handleMouseLeave,
|
|
1888
4159
|
children: formatWithTz(date.from, "LLL")
|
|
@@ -1891,7 +4162,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1891
4162
|
" ",
|
|
1892
4163
|
/* @__PURE__ */ jsx("span", {
|
|
1893
4164
|
id: "year",
|
|
1894
|
-
className: cn("date-part", highlightedPart === "year" && "font-bold underline"),
|
|
4165
|
+
className: cn$1("date-part", highlightedPart === "year" && "font-bold underline"),
|
|
1895
4166
|
onMouseOver: () => handleMouseOver("year"),
|
|
1896
4167
|
onMouseLeave: handleMouseLeave,
|
|
1897
4168
|
children: formatWithTz(date.from, "y")
|
|
@@ -1927,7 +4198,7 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1927
4198
|
children: dateRanges.map(({ key, label, start, end }) => /* @__PURE__ */ jsx(Button, {
|
|
1928
4199
|
variant: "ghost",
|
|
1929
4200
|
size: "sm",
|
|
1930
|
-
className: cn("hover:bg-primary/90 hover:text-background justify-start", selectedRange === label && "bg-primary text-background hover:bg-primary/90 hover:text-background"),
|
|
4201
|
+
className: cn$1("hover:bg-primary/90 hover:text-background justify-start", selectedRange === label && "bg-primary text-background hover:bg-primary/90 hover:text-background"),
|
|
1931
4202
|
onClick: () => {
|
|
1932
4203
|
selectDateRange(start, end, label);
|
|
1933
4204
|
setMonthFrom(start);
|
|
@@ -1944,58 +4215,58 @@ function CalendarDatePicker({ ref, id = "calendar-date-picker", className, trigg
|
|
|
1944
4215
|
className: "flex items-center gap-4",
|
|
1945
4216
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
1946
4217
|
className: "ml-3 flex gap-2",
|
|
1947
|
-
children: [/* @__PURE__ */ jsxs(Select
|
|
4218
|
+
children: [/* @__PURE__ */ jsxs(Select, {
|
|
1948
4219
|
onValueChange: (value) => {
|
|
1949
4220
|
handleMonthChange(months.indexOf(value), "from");
|
|
1950
4221
|
setSelectedRange(null);
|
|
1951
4222
|
},
|
|
1952
4223
|
value: monthFrom ? months[monthFrom.getMonth()] : void 0,
|
|
1953
|
-
children: [/* @__PURE__ */ jsx(SelectTrigger
|
|
4224
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
1954
4225
|
className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
|
|
1955
|
-
children: /* @__PURE__ */ jsx(SelectValue
|
|
1956
|
-
}), /* @__PURE__ */ jsx(SelectContent
|
|
4226
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Month" })
|
|
4227
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children: months.map((month, idx) => /* @__PURE__ */ jsx(SelectItem, {
|
|
1957
4228
|
value: month,
|
|
1958
4229
|
children: month
|
|
1959
4230
|
}, idx)) })]
|
|
1960
|
-
}), /* @__PURE__ */ jsxs(Select
|
|
4231
|
+
}), /* @__PURE__ */ jsxs(Select, {
|
|
1961
4232
|
onValueChange: (value) => {
|
|
1962
4233
|
handleYearChange(Number(value), "from");
|
|
1963
4234
|
setSelectedRange(null);
|
|
1964
4235
|
},
|
|
1965
4236
|
value: yearFrom ? yearFrom.toString() : void 0,
|
|
1966
|
-
children: [/* @__PURE__ */ jsx(SelectTrigger
|
|
4237
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
1967
4238
|
className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
|
|
1968
|
-
children: /* @__PURE__ */ jsx(SelectValue
|
|
1969
|
-
}), /* @__PURE__ */ jsx(SelectContent
|
|
4239
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Year" })
|
|
4240
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children: years.map((year, idx) => /* @__PURE__ */ jsx(SelectItem, {
|
|
1970
4241
|
value: year.toString(),
|
|
1971
4242
|
children: year
|
|
1972
4243
|
}, idx)) })]
|
|
1973
4244
|
})]
|
|
1974
4245
|
}), numberOfMonths === 2 && /* @__PURE__ */ jsxs("div", {
|
|
1975
4246
|
className: "flex gap-2",
|
|
1976
|
-
children: [/* @__PURE__ */ jsxs(Select
|
|
4247
|
+
children: [/* @__PURE__ */ jsxs(Select, {
|
|
1977
4248
|
onValueChange: (value) => {
|
|
1978
4249
|
handleMonthChange(months.indexOf(value), "to");
|
|
1979
4250
|
setSelectedRange(null);
|
|
1980
4251
|
},
|
|
1981
4252
|
value: monthTo ? months[monthTo.getMonth()] : void 0,
|
|
1982
|
-
children: [/* @__PURE__ */ jsx(SelectTrigger
|
|
4253
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
1983
4254
|
className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
|
|
1984
|
-
children: /* @__PURE__ */ jsx(SelectValue
|
|
1985
|
-
}), /* @__PURE__ */ jsx(SelectContent
|
|
4255
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Month" })
|
|
4256
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children: months.map((month, idx) => /* @__PURE__ */ jsx(SelectItem, {
|
|
1986
4257
|
value: month,
|
|
1987
4258
|
children: month
|
|
1988
4259
|
}, idx)) })]
|
|
1989
|
-
}), /* @__PURE__ */ jsxs(Select
|
|
4260
|
+
}), /* @__PURE__ */ jsxs(Select, {
|
|
1990
4261
|
onValueChange: (value) => {
|
|
1991
4262
|
handleYearChange(Number(value), "to");
|
|
1992
4263
|
setSelectedRange(null);
|
|
1993
4264
|
},
|
|
1994
4265
|
value: yearTo ? yearTo.toString() : void 0,
|
|
1995
|
-
children: [/* @__PURE__ */ jsx(SelectTrigger
|
|
4266
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
1996
4267
|
className: "hover:bg-accent hover:text-accent-foreground hidden w-[122px] font-medium focus:ring-0 focus:ring-offset-0 sm:flex",
|
|
1997
|
-
children: /* @__PURE__ */ jsx(SelectValue
|
|
1998
|
-
}), /* @__PURE__ */ jsx(SelectContent
|
|
4268
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder: "Year" })
|
|
4269
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children: years.map((year, idx) => /* @__PURE__ */ jsx(SelectItem, {
|
|
1999
4270
|
value: year.toString(),
|
|
2000
4271
|
children: year
|
|
2001
4272
|
}, idx)) })]
|
|
@@ -2061,7 +4332,7 @@ function DropdownMenuTrigger({ ...props }) {
|
|
|
2061
4332
|
function DropdownMenuContent({ className, sideOffset = 4, ...props }) {
|
|
2062
4333
|
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx(DropdownMenuPrimitive.Content, {
|
|
2063
4334
|
sideOffset,
|
|
2064
|
-
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className),
|
|
4335
|
+
className: cn$1("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 max-h-(--radix-dropdown-menu-content-available-height) min-w-[8rem] overflow-x-hidden overflow-y-auto rounded-md border p-1 shadow-md", className),
|
|
2065
4336
|
...props
|
|
2066
4337
|
}) });
|
|
2067
4338
|
}
|
|
@@ -2072,13 +4343,13 @@ function DropdownMenuItem({ className, inset, variant = "default", ...props }) {
|
|
|
2072
4343
|
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Item, {
|
|
2073
4344
|
"data-inset": inset,
|
|
2074
4345
|
"data-variant": variant,
|
|
2075
|
-
className: cn("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive-foreground data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/40 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:!text-destructive-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
4346
|
+
className: cn$1("focus:bg-accent focus:text-accent-foreground data-[variant=destructive]:text-destructive-foreground data-[variant=destructive]:focus:bg-destructive/10 dark:data-[variant=destructive]:focus:bg-destructive/40 data-[variant=destructive]:focus:text-destructive-foreground data-[variant=destructive]:*:[svg]:!text-destructive-foreground [&_svg:not([class*='text-'])]:text-muted-foreground relative flex cursor-default items-center gap-2 rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 data-[inset]:pl-8 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
2076
4347
|
...props
|
|
2077
4348
|
});
|
|
2078
4349
|
}
|
|
2079
4350
|
function DropdownMenuCheckboxItem({ className, children, checked, ...props }) {
|
|
2080
4351
|
return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.CheckboxItem, {
|
|
2081
|
-
className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
4352
|
+
className: cn$1("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
2082
4353
|
checked,
|
|
2083
4354
|
...props,
|
|
2084
4355
|
children: [/* @__PURE__ */ jsx("span", {
|
|
@@ -2095,7 +4366,7 @@ function DropdownMenuRadioGroup({ ...props }) {
|
|
|
2095
4366
|
}
|
|
2096
4367
|
function DropdownMenuRadioItem({ className, children, ...props }) {
|
|
2097
4368
|
return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.RadioItem, {
|
|
2098
|
-
className: cn("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
4369
|
+
className: cn$1("focus:bg-accent focus:text-accent-foreground relative flex cursor-default items-center gap-2 rounded-sm py-1.5 pr-2 pl-8 text-sm outline-hidden select-none data-[disabled]:pointer-events-none data-[disabled]:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='size-'])]:size-4", className),
|
|
2099
4370
|
...props,
|
|
2100
4371
|
children: [/* @__PURE__ */ jsx("span", {
|
|
2101
4372
|
className: "pointer-events-none absolute left-2 flex size-3.5 items-center justify-center",
|
|
@@ -2109,19 +4380,19 @@ function DropdownMenuRadioItem({ className, children, ...props }) {
|
|
|
2109
4380
|
function DropdownMenuLabel({ className, inset, ...props }) {
|
|
2110
4381
|
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Label, {
|
|
2111
4382
|
"data-inset": inset,
|
|
2112
|
-
className: cn("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
|
|
4383
|
+
className: cn$1("px-2 py-1.5 text-sm font-medium data-[inset]:pl-8", className),
|
|
2113
4384
|
...props
|
|
2114
4385
|
});
|
|
2115
4386
|
}
|
|
2116
4387
|
function DropdownMenuSeparator({ className, ...props }) {
|
|
2117
4388
|
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.Separator, {
|
|
2118
|
-
className: cn("bg-border -mx-1 my-1 h-px", className),
|
|
4389
|
+
className: cn$1("bg-border -mx-1 my-1 h-px", className),
|
|
2119
4390
|
...props
|
|
2120
4391
|
});
|
|
2121
4392
|
}
|
|
2122
4393
|
function DropdownMenuShortcut({ className, ...props }) {
|
|
2123
4394
|
return /* @__PURE__ */ jsx("span", {
|
|
2124
|
-
className: cn("text-muted-foreground ml-auto text-xs tracking-widest", className),
|
|
4395
|
+
className: cn$1("text-muted-foreground ml-auto text-xs tracking-widest", className),
|
|
2125
4396
|
...props
|
|
2126
4397
|
});
|
|
2127
4398
|
}
|
|
@@ -2131,7 +4402,7 @@ function DropdownMenuSub({ ...props }) {
|
|
|
2131
4402
|
function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
2132
4403
|
return /* @__PURE__ */ jsxs(DropdownMenuPrimitive.SubTrigger, {
|
|
2133
4404
|
"data-inset": inset,
|
|
2134
|
-
className: cn("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8", className),
|
|
4405
|
+
className: cn$1("focus:bg-accent focus:text-accent-foreground data-[state=open]:bg-accent data-[state=open]:text-accent-foreground flex cursor-default items-center rounded-sm px-2 py-1.5 text-sm outline-hidden select-none data-[inset]:pl-8", className),
|
|
2135
4406
|
...props,
|
|
2136
4407
|
children: [children, /* @__PURE__ */ jsx(Icon, {
|
|
2137
4408
|
icon: ChevronRightIcon,
|
|
@@ -2141,7 +4412,7 @@ function DropdownMenuSubTrigger({ className, inset, children, ...props }) {
|
|
|
2141
4412
|
}
|
|
2142
4413
|
function DropdownMenuSubContent({ className, ...props }) {
|
|
2143
4414
|
return /* @__PURE__ */ jsx(DropdownMenuPrimitive.SubContent, {
|
|
2144
|
-
className: cn("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
|
|
4415
|
+
className: cn$1("bg-popover text-popover-foreground data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 z-50 min-w-[8rem] overflow-hidden rounded-md border p-1 shadow-lg", className),
|
|
2145
4416
|
...props
|
|
2146
4417
|
});
|
|
2147
4418
|
}
|
|
@@ -2193,7 +4464,7 @@ function Dropzone({ accept, maxFiles = 1, maxSize, minSize, onDrop, onError, dis
|
|
|
2193
4464
|
maxFiles
|
|
2194
4465
|
},
|
|
2195
4466
|
children: /* @__PURE__ */ jsxs(Button, {
|
|
2196
|
-
className: cn("relative h-auto w-full flex-col overflow-hidden rounded-lg border border-dashed border-[#90969C99] bg-transparent p-9 text-base", isDragActive && "ring-ring ring-1 outline-none", className),
|
|
4467
|
+
className: cn$1("relative h-auto w-full flex-col overflow-hidden rounded-lg border border-dashed border-[#90969C99] bg-transparent p-9 text-base", isDragActive && "ring-ring ring-1 outline-none", className),
|
|
2197
4468
|
disabled,
|
|
2198
4469
|
type: "button",
|
|
2199
4470
|
variant: "outline",
|
|
@@ -2221,7 +4492,7 @@ function DropzoneContent({ children, className, icon, label, description }) {
|
|
|
2221
4492
|
if (children) return children;
|
|
2222
4493
|
const renderedLabel = typeof label === "function" ? label(src) : label;
|
|
2223
4494
|
return /* @__PURE__ */ jsxs("div", {
|
|
2224
|
-
className: cn("flex flex-col items-center justify-center", className),
|
|
4495
|
+
className: cn$1("flex flex-col items-center justify-center", className),
|
|
2225
4496
|
children: [
|
|
2226
4497
|
icon ?? /* @__PURE__ */ jsx(Icon, {
|
|
2227
4498
|
icon: UploadIcon,
|
|
@@ -2254,7 +4525,7 @@ function DropzoneEmptyState({ children, className, icon, label, description, sho
|
|
|
2254
4525
|
else if (maxSize) caption += ` less than ${renderBytes(maxSize)}`;
|
|
2255
4526
|
}
|
|
2256
4527
|
return /* @__PURE__ */ jsxs("div", {
|
|
2257
|
-
className: cn("flex flex-col items-center justify-center", className),
|
|
4528
|
+
className: cn$1("flex flex-col items-center justify-center", className),
|
|
2258
4529
|
children: [
|
|
2259
4530
|
icon ?? /* @__PURE__ */ jsx(Icon, {
|
|
2260
4531
|
icon: UploadIcon,
|
|
@@ -2413,7 +4684,7 @@ function EmptyContent({ title = "No data found", subtitle, variant = "default",
|
|
|
2413
4684
|
}, action.label);
|
|
2414
4685
|
};
|
|
2415
4686
|
return /* @__PURE__ */ jsxs("div", {
|
|
2416
|
-
className: cn(containerVariants({
|
|
4687
|
+
className: cn$1(containerVariants({
|
|
2417
4688
|
variant,
|
|
2418
4689
|
size,
|
|
2419
4690
|
orientation
|
|
@@ -2622,7 +4893,7 @@ function FormAutocomplete({ disabled, className, ...props }) {
|
|
|
2622
4893
|
value: selectValue ?? "",
|
|
2623
4894
|
onValueChange: control.change,
|
|
2624
4895
|
disabled: isDisabled,
|
|
2625
|
-
triggerClassName: cn(hasErrors && "border-destructive", props.triggerClassName),
|
|
4896
|
+
triggerClassName: cn$1(hasErrors && "border-destructive", props.triggerClassName),
|
|
2626
4897
|
className
|
|
2627
4898
|
});
|
|
2628
4899
|
}
|
|
@@ -2702,8 +4973,8 @@ function FormCheckbox({ label, disabled, className }) {
|
|
|
2702
4973
|
};
|
|
2703
4974
|
const checkboxId = fieldMeta.id;
|
|
2704
4975
|
return /* @__PURE__ */ jsxs("div", {
|
|
2705
|
-
className: cn("flex items-center space-x-2", className),
|
|
2706
|
-
children: [/* @__PURE__ */ jsx(Checkbox
|
|
4976
|
+
className: cn$1("flex items-center space-x-2", className),
|
|
4977
|
+
children: [/* @__PURE__ */ jsx(Checkbox, {
|
|
2707
4978
|
id: checkboxId,
|
|
2708
4979
|
name: fieldMeta.name,
|
|
2709
4980
|
checked: isChecked,
|
|
@@ -2711,9 +4982,9 @@ function FormCheckbox({ label, disabled, className }) {
|
|
|
2711
4982
|
disabled: isDisabled,
|
|
2712
4983
|
"aria-invalid": hasErrors || void 0,
|
|
2713
4984
|
"aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0
|
|
2714
|
-
}), label && /* @__PURE__ */ jsx(Label
|
|
4985
|
+
}), label && /* @__PURE__ */ jsx(Label, {
|
|
2715
4986
|
htmlFor: checkboxId,
|
|
2716
|
-
className: cn("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
|
|
4987
|
+
className: cn$1("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
|
|
2717
4988
|
children: label
|
|
2718
4989
|
})]
|
|
2719
4990
|
});
|
|
@@ -2801,9 +5072,9 @@ function FormCopyBox({ variant = "default", className, contentClassName, buttonC
|
|
|
2801
5072
|
});
|
|
2802
5073
|
};
|
|
2803
5074
|
return /* @__PURE__ */ jsxs("div", {
|
|
2804
|
-
className: cn("group border-input flex h-10 w-full overflow-hidden rounded-lg border bg-[#F6F6F580] text-xs focus-within:outline-hidden", className),
|
|
5075
|
+
className: cn$1("group border-input flex h-10 w-full overflow-hidden rounded-lg border bg-[#F6F6F580] text-xs focus-within:outline-hidden", className),
|
|
2805
5076
|
children: [/* @__PURE__ */ jsx("div", {
|
|
2806
|
-
className: cn("flex w-full items-center overflow-hidden px-3 py-2 text-xs opacity-50", contentClassName),
|
|
5077
|
+
className: cn$1("flex w-full items-center overflow-hidden px-3 py-2 text-xs opacity-50", contentClassName),
|
|
2807
5078
|
children: /* @__PURE__ */ jsx("span", {
|
|
2808
5079
|
className: "truncate",
|
|
2809
5080
|
children: String(value)
|
|
@@ -2812,14 +5083,14 @@ function FormCopyBox({ variant = "default", className, contentClassName, buttonC
|
|
|
2812
5083
|
className: "flex items-center py-2 pr-3",
|
|
2813
5084
|
children: variant === "icon-only" ? /* @__PURE__ */ jsx("button", {
|
|
2814
5085
|
type: "button",
|
|
2815
|
-
className: cn("text-muted-foreground hover:text-foreground flex size-7 items-center justify-center rounded-sm transition-colors", buttonClassName),
|
|
5086
|
+
className: cn$1("text-muted-foreground hover:text-foreground flex size-7 items-center justify-center rounded-sm transition-colors", buttonClassName),
|
|
2816
5087
|
onClick: copyToClipboard,
|
|
2817
5088
|
children: copied ? /* @__PURE__ */ jsx(CheckIcon, { className: "size-4" }) : /* @__PURE__ */ jsx(CopyIcon, { className: "size-4" })
|
|
2818
5089
|
}) : /* @__PURE__ */ jsxs(Button$1, {
|
|
2819
5090
|
type: "quaternary",
|
|
2820
5091
|
theme: "outline",
|
|
2821
5092
|
size: "small",
|
|
2822
|
-
className: cn("h-7 w-fit gap-1 px-2 text-xs", buttonClassName),
|
|
5093
|
+
className: cn$1("h-7 w-fit gap-1 px-2 text-xs", buttonClassName),
|
|
2823
5094
|
onClick: copyToClipboard,
|
|
2824
5095
|
children: [/* @__PURE__ */ jsx(CopyIcon, { className: "size-3!" }), copied ? "Copied" : "Copy"]
|
|
2825
5096
|
})
|
|
@@ -2881,7 +5152,7 @@ function FormDescription({ children, className }) {
|
|
|
2881
5152
|
const fieldContext = useOptionalFieldContext();
|
|
2882
5153
|
return /* @__PURE__ */ jsx("p", {
|
|
2883
5154
|
id: fieldContext ? `${fieldContext.id}-description` : void 0,
|
|
2884
|
-
className: cn("text-muted-foreground text-xs text-wrap", className),
|
|
5155
|
+
className: cn$1("text-muted-foreground text-xs text-wrap", className),
|
|
2885
5156
|
children
|
|
2886
5157
|
});
|
|
2887
5158
|
}
|
|
@@ -2974,10 +5245,10 @@ function FormDialog({ open, onOpenChange, defaultOpen, title, description, trigg
|
|
|
2974
5245
|
const handleCancel = React$1.useCallback(() => {
|
|
2975
5246
|
handleOpenChange(false);
|
|
2976
5247
|
}, [handleOpenChange]);
|
|
2977
|
-
return /* @__PURE__ */ jsxs(Dialog
|
|
5248
|
+
return /* @__PURE__ */ jsxs(Dialog, {
|
|
2978
5249
|
open: isOpen,
|
|
2979
5250
|
onOpenChange: handleOpenChange,
|
|
2980
|
-
children: [trigger && /* @__PURE__ */ jsx(Dialog
|
|
5251
|
+
children: [trigger && /* @__PURE__ */ jsx(Dialog.Trigger, { children: trigger }), /* @__PURE__ */ jsx(Dialog.Content, {
|
|
2981
5252
|
className,
|
|
2982
5253
|
children: /* @__PURE__ */ jsx(Form.Root, {
|
|
2983
5254
|
schema,
|
|
@@ -2988,20 +5259,20 @@ function FormDialog({ open, onOpenChange, defaultOpen, title, description, trigg
|
|
|
2988
5259
|
mode: "onSubmit",
|
|
2989
5260
|
formComponent,
|
|
2990
5261
|
telemetry,
|
|
2991
|
-
className: cn("space-y-0", formClassName),
|
|
5262
|
+
className: cn$1("space-y-0", formClassName),
|
|
2992
5263
|
children: (renderProps) => /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
2993
|
-
/* @__PURE__ */ jsx(Dialog
|
|
5264
|
+
/* @__PURE__ */ jsx(Dialog.Header, {
|
|
2994
5265
|
title,
|
|
2995
5266
|
description,
|
|
2996
5267
|
onClose: handleCancel,
|
|
2997
5268
|
className: "border-b",
|
|
2998
5269
|
descriptionClassName: "text-foreground/80"
|
|
2999
5270
|
}),
|
|
3000
|
-
/* @__PURE__ */ jsx(Dialog
|
|
5271
|
+
/* @__PURE__ */ jsx(Dialog.Body, {
|
|
3001
5272
|
className: "space-y-0",
|
|
3002
5273
|
children: typeof children === "function" ? children(renderProps) : children
|
|
3003
5274
|
}),
|
|
3004
|
-
/* @__PURE__ */ jsxs(Dialog
|
|
5275
|
+
/* @__PURE__ */ jsxs(Dialog.Footer, {
|
|
3005
5276
|
className: "border-t",
|
|
3006
5277
|
children: [showCancel && /* @__PURE__ */ jsx(Form.Button, {
|
|
3007
5278
|
type: "quaternary",
|
|
@@ -3051,7 +5322,7 @@ function FormError({ children, className }) {
|
|
|
3051
5322
|
if (!errors || errors.length === 0) return null;
|
|
3052
5323
|
if (typeof children === "function") return /* @__PURE__ */ jsx(Fragment$1, { children: children(errors) });
|
|
3053
5324
|
return /* @__PURE__ */ jsx("ul", {
|
|
3054
|
-
className: cn("text-destructive space-y-1 text-sm font-medium", errors.length > 1 && "list-disc pl-4", className),
|
|
5325
|
+
className: cn$1("text-destructive space-y-1 text-sm font-medium", errors.length > 1 && "list-disc pl-4", className),
|
|
3055
5326
|
role: "alert",
|
|
3056
5327
|
"aria-live": "polite",
|
|
3057
5328
|
children: errors.map((error) => /* @__PURE__ */ jsx("li", {
|
|
@@ -3071,15 +5342,15 @@ function FieldLabel({ htmlFor, label, hasErrors, required, tooltip, className })
|
|
|
3071
5342
|
const [isTooltipVisible, setIsTooltipVisible] = React$1.useState(false);
|
|
3072
5343
|
return /* @__PURE__ */ jsxs("div", {
|
|
3073
5344
|
className: "relative flex w-fit items-center space-x-2",
|
|
3074
|
-
children: [/* @__PURE__ */ jsxs(Label
|
|
5345
|
+
children: [/* @__PURE__ */ jsxs(Label, {
|
|
3075
5346
|
htmlFor,
|
|
3076
|
-
className: cn("text-foreground/80 gap-0 text-xs font-semibold", hasErrors && "text-destructive", className),
|
|
5347
|
+
className: cn$1("text-foreground/80 gap-0 text-xs font-semibold", hasErrors && "text-destructive", className),
|
|
3077
5348
|
children: [label, required && /* @__PURE__ */ jsx("span", {
|
|
3078
5349
|
className: "text-destructive/80 align-super text-sm leading-0",
|
|
3079
5350
|
"aria-hidden": "true",
|
|
3080
5351
|
children: "*"
|
|
3081
5352
|
})]
|
|
3082
|
-
}), tooltip && /* @__PURE__ */ jsx(Tooltip
|
|
5353
|
+
}), tooltip && /* @__PURE__ */ jsx(Tooltip, {
|
|
3083
5354
|
message: tooltip,
|
|
3084
5355
|
open: isTooltipVisible,
|
|
3085
5356
|
onOpenChange: setIsTooltipVisible,
|
|
@@ -3087,7 +5358,7 @@ function FieldLabel({ htmlFor, label, hasErrors, required, tooltip, className })
|
|
|
3087
5358
|
contentClassName: "max-w-xs text-wrap",
|
|
3088
5359
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
3089
5360
|
icon: CircleHelp,
|
|
3090
|
-
className: cn("text-ring absolute top-0.5 -right-3 size-3.5 cursor-pointer transition-opacity duration-400")
|
|
5361
|
+
className: cn$1("text-ring absolute top-0.5 -right-3 size-3.5 cursor-pointer transition-opacity duration-400")
|
|
3091
5362
|
})
|
|
3092
5363
|
})]
|
|
3093
5364
|
});
|
|
@@ -3186,7 +5457,7 @@ function FormField({ name, children, label, description, tooltip, required = fal
|
|
|
3186
5457
|
return /* @__PURE__ */ jsx(FieldProvider, {
|
|
3187
5458
|
value: contextValue,
|
|
3188
5459
|
children: /* @__PURE__ */ jsxs("div", {
|
|
3189
|
-
className: cn("flex flex-col space-y-2", className),
|
|
5460
|
+
className: cn$1("flex flex-col space-y-2", className),
|
|
3190
5461
|
children: [
|
|
3191
5462
|
label && /* @__PURE__ */ jsx(FieldLabel, {
|
|
3192
5463
|
htmlFor: fieldId,
|
|
@@ -3204,7 +5475,7 @@ function FormField({ name, children, label, description, tooltip, required = fal
|
|
|
3204
5475
|
}),
|
|
3205
5476
|
hasErrors && /* @__PURE__ */ jsx("ul", {
|
|
3206
5477
|
id: errorId,
|
|
3207
|
-
className: cn("text-destructive space-y-1 text-xs font-medium", errors.length > 1 && "list-disc pl-4"),
|
|
5478
|
+
className: cn$1("text-destructive space-y-1 text-xs font-medium", errors.length > 1 && "list-disc pl-4"),
|
|
3208
5479
|
role: "alert",
|
|
3209
5480
|
"aria-live": "polite",
|
|
3210
5481
|
children: errors.map((error) => /* @__PURE__ */ jsx("li", {
|
|
@@ -3359,7 +5630,7 @@ function FormInput({ ref, type = "text", className, disabled, ...props }) {
|
|
|
3359
5630
|
const inputProps = getInputProps(fieldMeta, { type });
|
|
3360
5631
|
const isDisabled = disabled ?? fieldDisabled;
|
|
3361
5632
|
const hasErrors = errors && errors.length > 0;
|
|
3362
|
-
return /* @__PURE__ */ jsx(Input
|
|
5633
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
3363
5634
|
ref,
|
|
3364
5635
|
...inputProps,
|
|
3365
5636
|
...props,
|
|
@@ -3367,7 +5638,7 @@ function FormInput({ ref, type = "text", className, disabled, ...props }) {
|
|
|
3367
5638
|
disabled: isDisabled,
|
|
3368
5639
|
"aria-invalid": hasErrors || void 0,
|
|
3369
5640
|
"aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
|
|
3370
|
-
className: cn("!text-xs", className)
|
|
5641
|
+
className: cn$1("!text-xs", className)
|
|
3371
5642
|
});
|
|
3372
5643
|
}
|
|
3373
5644
|
FormInput.displayName = "Form.Input";
|
|
@@ -3396,14 +5667,14 @@ function FormRadioGroup({ orientation = "vertical", disabled, className, childre
|
|
|
3396
5667
|
const isDisabled = disabled ?? fieldDisabled;
|
|
3397
5668
|
const hasErrors = errors && errors.length > 0;
|
|
3398
5669
|
const radioValue = Array.isArray(control.value) ? control.value[0] : control.value;
|
|
3399
|
-
return /* @__PURE__ */ jsx(RadioGroup
|
|
5670
|
+
return /* @__PURE__ */ jsx(RadioGroup, {
|
|
3400
5671
|
name: fieldMeta.name,
|
|
3401
5672
|
value: radioValue ?? "",
|
|
3402
5673
|
onValueChange: control.change,
|
|
3403
5674
|
disabled: isDisabled,
|
|
3404
5675
|
"aria-invalid": hasErrors || void 0,
|
|
3405
5676
|
"aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
|
|
3406
|
-
className: cn(orientation === "horizontal" ? "flex flex-row space-x-4" : "flex flex-col space-y-2", className),
|
|
5677
|
+
className: cn$1(orientation === "horizontal" ? "flex flex-row space-x-4" : "flex flex-col space-y-2", className),
|
|
3407
5678
|
children
|
|
3408
5679
|
});
|
|
3409
5680
|
}
|
|
@@ -3420,16 +5691,16 @@ function FormRadioItem({ value, label, description, disabled }) {
|
|
|
3420
5691
|
const radioId = `radio-${value}`;
|
|
3421
5692
|
return /* @__PURE__ */ jsxs("div", {
|
|
3422
5693
|
className: "flex items-start space-x-2",
|
|
3423
|
-
children: [/* @__PURE__ */ jsx(RadioGroupItem
|
|
5694
|
+
children: [/* @__PURE__ */ jsx(RadioGroupItem, {
|
|
3424
5695
|
id: radioId,
|
|
3425
5696
|
value,
|
|
3426
5697
|
disabled,
|
|
3427
5698
|
className: "mt-1"
|
|
3428
5699
|
}), /* @__PURE__ */ jsxs("div", {
|
|
3429
5700
|
className: "flex flex-col",
|
|
3430
|
-
children: [/* @__PURE__ */ jsx(Label
|
|
5701
|
+
children: [/* @__PURE__ */ jsx(Label, {
|
|
3431
5702
|
htmlFor: radioId,
|
|
3432
|
-
className: cn("cursor-pointer text-sm font-normal", disabled && "cursor-not-allowed opacity-70"),
|
|
5703
|
+
className: cn$1("cursor-pointer text-sm font-normal", disabled && "cursor-not-allowed opacity-70"),
|
|
3433
5704
|
children: label
|
|
3434
5705
|
}), description && /* @__PURE__ */ jsx("span", {
|
|
3435
5706
|
className: "text-muted-foreground text-xs",
|
|
@@ -3604,7 +5875,7 @@ function FormRoot({ schema, children, onSubmit, action, method = "POST", formCom
|
|
|
3604
5875
|
},
|
|
3605
5876
|
method,
|
|
3606
5877
|
action,
|
|
3607
|
-
className: cn("space-y-6", className),
|
|
5878
|
+
className: cn$1("space-y-6", className),
|
|
3608
5879
|
autoComplete: "off",
|
|
3609
5880
|
children: renderChildren()
|
|
3610
5881
|
})
|
|
@@ -3637,18 +5908,18 @@ function FormSelect({ placeholder, disabled, className, children }) {
|
|
|
3637
5908
|
const isDisabled = disabled ?? fieldDisabled;
|
|
3638
5909
|
const hasErrors = errors && errors.length > 0;
|
|
3639
5910
|
const selectValue = Array.isArray(control.value) ? control.value[0] : control.value;
|
|
3640
|
-
return /* @__PURE__ */ jsxs(Select
|
|
5911
|
+
return /* @__PURE__ */ jsxs(Select, {
|
|
3641
5912
|
name: fieldMeta.name,
|
|
3642
5913
|
value: selectValue ?? "",
|
|
3643
5914
|
onValueChange: control.change,
|
|
3644
5915
|
disabled: isDisabled,
|
|
3645
|
-
children: [/* @__PURE__ */ jsx(SelectTrigger
|
|
5916
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
3646
5917
|
id: fieldMeta.id,
|
|
3647
5918
|
"aria-invalid": hasErrors || void 0,
|
|
3648
5919
|
"aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
|
|
3649
|
-
className: cn(className),
|
|
3650
|
-
children: /* @__PURE__ */ jsx(SelectValue
|
|
3651
|
-
}), /* @__PURE__ */ jsx(SelectContent
|
|
5920
|
+
className: cn$1(className),
|
|
5921
|
+
children: /* @__PURE__ */ jsx(SelectValue, { placeholder })
|
|
5922
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children })]
|
|
3652
5923
|
});
|
|
3653
5924
|
}
|
|
3654
5925
|
FormSelect.displayName = "Form.Select";
|
|
@@ -3661,7 +5932,7 @@ FormSelect.displayName = "Form.Select";
|
|
|
3661
5932
|
* ```
|
|
3662
5933
|
*/
|
|
3663
5934
|
function FormSelectItem({ value, children, disabled }) {
|
|
3664
|
-
return /* @__PURE__ */ jsx(SelectItem
|
|
5935
|
+
return /* @__PURE__ */ jsx(SelectItem, {
|
|
3665
5936
|
value,
|
|
3666
5937
|
disabled,
|
|
3667
5938
|
children
|
|
@@ -3719,8 +5990,8 @@ function FormSwitch({ label, disabled, className }) {
|
|
|
3719
5990
|
};
|
|
3720
5991
|
const switchId = fieldMeta.id;
|
|
3721
5992
|
return /* @__PURE__ */ jsxs("div", {
|
|
3722
|
-
className: cn("flex items-center space-x-2", className),
|
|
3723
|
-
children: [/* @__PURE__ */ jsx(Switch
|
|
5993
|
+
className: cn$1("flex items-center space-x-2", className),
|
|
5994
|
+
children: [/* @__PURE__ */ jsx(Switch, {
|
|
3724
5995
|
id: switchId,
|
|
3725
5996
|
name: fieldMeta.name,
|
|
3726
5997
|
checked: isChecked,
|
|
@@ -3728,9 +5999,9 @@ function FormSwitch({ label, disabled, className }) {
|
|
|
3728
5999
|
disabled: isDisabled,
|
|
3729
6000
|
"aria-invalid": hasErrors || void 0,
|
|
3730
6001
|
"aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0
|
|
3731
|
-
}), label && /* @__PURE__ */ jsx(Label
|
|
6002
|
+
}), label && /* @__PURE__ */ jsx(Label, {
|
|
3732
6003
|
htmlFor: switchId,
|
|
3733
|
-
className: cn("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
|
|
6004
|
+
className: cn$1("cursor-pointer text-sm font-normal", isDisabled && "cursor-not-allowed opacity-70"),
|
|
3734
6005
|
children: label
|
|
3735
6006
|
})]
|
|
3736
6007
|
});
|
|
@@ -3756,7 +6027,7 @@ function FormTextarea({ ref, className, disabled, rows = 3, ...props }) {
|
|
|
3756
6027
|
const textareaProps = getTextareaProps(fieldMeta);
|
|
3757
6028
|
const isDisabled = disabled ?? fieldDisabled;
|
|
3758
6029
|
const hasErrors = errors && errors.length > 0;
|
|
3759
|
-
return /* @__PURE__ */ jsx(Textarea
|
|
6030
|
+
return /* @__PURE__ */ jsx(Textarea, {
|
|
3760
6031
|
ref,
|
|
3761
6032
|
...textareaProps,
|
|
3762
6033
|
...props,
|
|
@@ -3764,7 +6035,7 @@ function FormTextarea({ ref, className, disabled, rows = 3, ...props }) {
|
|
|
3764
6035
|
disabled: isDisabled,
|
|
3765
6036
|
"aria-invalid": hasErrors || void 0,
|
|
3766
6037
|
"aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
|
|
3767
|
-
className: cn(className)
|
|
6038
|
+
className: cn$1(className)
|
|
3768
6039
|
});
|
|
3769
6040
|
}
|
|
3770
6041
|
FormTextarea.displayName = "Form.Textarea";
|
|
@@ -3920,7 +6191,7 @@ function defineStepper(...steps) {
|
|
|
3920
6191
|
const methods = useStepper();
|
|
3921
6192
|
return /* @__PURE__ */ jsx("div", {
|
|
3922
6193
|
"date-component": "stepper",
|
|
3923
|
-
className: cn("w-full", className),
|
|
6194
|
+
className: cn$1("w-full", className),
|
|
3924
6195
|
...props,
|
|
3925
6196
|
children: typeof children === "function" ? children({ methods }) : children
|
|
3926
6197
|
});
|
|
@@ -3978,7 +6249,7 @@ function defineStepper(...steps) {
|
|
|
3978
6249
|
const panel = childMap.get("panel");
|
|
3979
6250
|
if (variant === "circle") return /* @__PURE__ */ jsxs("li", {
|
|
3980
6251
|
"date-component": "stepper-step",
|
|
3981
|
-
className: cn("flex shrink-0 items-center gap-4 rounded-md transition-colors", className),
|
|
6252
|
+
className: cn$1("flex shrink-0 items-center gap-4 rounded-md transition-colors", className),
|
|
3982
6253
|
children: [/* @__PURE__ */ jsx(CircleStepIndicator, {
|
|
3983
6254
|
currentStep: stepIndex + 1,
|
|
3984
6255
|
totalSteps: steps.length
|
|
@@ -3991,7 +6262,7 @@ function defineStepper(...steps) {
|
|
|
3991
6262
|
return /* @__PURE__ */ jsxs(Fragment$1, { children: [
|
|
3992
6263
|
/* @__PURE__ */ jsxs("li", {
|
|
3993
6264
|
"date-component": "stepper-step",
|
|
3994
|
-
className: cn([
|
|
6265
|
+
className: cn$1([
|
|
3995
6266
|
"group peer relative flex items-center gap-2",
|
|
3996
6267
|
"data-[variant=vertical]:flex-row",
|
|
3997
6268
|
"data-[label-orientation=vertical]:w-full",
|
|
@@ -4009,7 +6280,7 @@ function defineStepper(...steps) {
|
|
|
4009
6280
|
type: "button",
|
|
4010
6281
|
role: "tab",
|
|
4011
6282
|
tabIndex: dataState !== "inactive" ? 0 : -1,
|
|
4012
|
-
className: cn("rounded-full", className),
|
|
6283
|
+
className: cn$1("rounded-full", className),
|
|
4013
6284
|
variant: dataState !== "inactive" ? "default" : "secondary",
|
|
4014
6285
|
size: "icon",
|
|
4015
6286
|
"aria-controls": `step-panel-${props.of}`,
|
|
@@ -4073,7 +6344,7 @@ function defineStepper(...steps) {
|
|
|
4073
6344
|
Controls: ({ children, className, asChild, ...props }) => {
|
|
4074
6345
|
return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
|
|
4075
6346
|
"date-component": "stepper-controls",
|
|
4076
|
-
className: cn("flex justify-end gap-4", className),
|
|
6347
|
+
className: cn$1("flex justify-end gap-4", className),
|
|
4077
6348
|
...props,
|
|
4078
6349
|
children
|
|
4079
6350
|
});
|
|
@@ -4084,7 +6355,7 @@ function defineStepper(...steps) {
|
|
|
4084
6355
|
function Title({ children, className, asChild, ...props }) {
|
|
4085
6356
|
return /* @__PURE__ */ jsx(asChild ? Slot : "h4", {
|
|
4086
6357
|
"date-component": "stepper-step-title",
|
|
4087
|
-
className: cn("text-base font-medium", className),
|
|
6358
|
+
className: cn$1("text-base font-medium", className),
|
|
4088
6359
|
...props,
|
|
4089
6360
|
children
|
|
4090
6361
|
});
|
|
@@ -4092,7 +6363,7 @@ function Title({ children, className, asChild, ...props }) {
|
|
|
4092
6363
|
function Description({ children, className, asChild, ...props }) {
|
|
4093
6364
|
return /* @__PURE__ */ jsx(asChild ? Slot : "p", {
|
|
4094
6365
|
"date-component": "stepper-step-description",
|
|
4095
|
-
className: cn("text-muted-foreground text-sm", className),
|
|
6366
|
+
className: cn$1("text-muted-foreground text-sm", className),
|
|
4096
6367
|
...props,
|
|
4097
6368
|
children
|
|
4098
6369
|
});
|
|
@@ -4477,7 +6748,7 @@ function StepForm({ steps, stepper, currentStepConfig, combinedSchema, storedVal
|
|
|
4477
6748
|
ref: formRef,
|
|
4478
6749
|
...getFormProps(form),
|
|
4479
6750
|
method: "POST",
|
|
4480
|
-
className: cn("space-y-6", className),
|
|
6751
|
+
className: cn$1("space-y-6", className),
|
|
4481
6752
|
autoComplete: "off",
|
|
4482
6753
|
children: resolvedChildren
|
|
4483
6754
|
})
|
|
@@ -4560,7 +6831,7 @@ function StepperControls({ prevLabel = "Previous", nextLabel = (isLast) => isLas
|
|
|
4560
6831
|
}
|
|
4561
6832
|
};
|
|
4562
6833
|
return /* @__PURE__ */ jsxs("div", {
|
|
4563
|
-
className: cn("flex items-center justify-between gap-3", className),
|
|
6834
|
+
className: cn$1("flex items-center justify-between gap-3", className),
|
|
4564
6835
|
children: [/* @__PURE__ */ jsx("div", { children: showPrev && /* @__PURE__ */ jsx(Button$1, {
|
|
4565
6836
|
htmlType: "button",
|
|
4566
6837
|
type: "quaternary",
|
|
@@ -4598,7 +6869,7 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
|
|
|
4598
6869
|
const { steps, currentIndex } = useFormStepperContext();
|
|
4599
6870
|
if (variant === "horizontal" && labelOrientation === "vertical") return /* @__PURE__ */ jsx("nav", {
|
|
4600
6871
|
"aria-label": "Form steps",
|
|
4601
|
-
className: cn("flex flex-row items-start justify-between", className),
|
|
6872
|
+
className: cn$1("flex flex-row items-start justify-between", className),
|
|
4602
6873
|
children: steps.map((step, index) => {
|
|
4603
6874
|
const isActive = index === currentIndex;
|
|
4604
6875
|
const isCompleted = index < currentIndex;
|
|
@@ -4607,14 +6878,14 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
|
|
|
4607
6878
|
children: [
|
|
4608
6879
|
!(index === steps.length - 1) && /* @__PURE__ */ jsx("div", { className: "bg-stepper-line absolute top-4 right-[calc(-50%+20px)] left-[calc(50%+20px)] h-0.5" }),
|
|
4609
6880
|
/* @__PURE__ */ jsx("div", {
|
|
4610
|
-
className: cn("relative z-10 flex h-8 w-8 items-center justify-center rounded-full border bg-transparent text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
|
|
6881
|
+
className: cn$1("relative z-10 flex h-8 w-8 items-center justify-center rounded-full border bg-transparent text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
|
|
4611
6882
|
"aria-current": isActive ? "step" : void 0,
|
|
4612
6883
|
children: isCompleted ? /* @__PURE__ */ jsx(CheckIcon, { className: "text-tertiary h-4 w-4" }) : index + 1
|
|
4613
6884
|
}),
|
|
4614
6885
|
/* @__PURE__ */ jsxs("div", {
|
|
4615
6886
|
className: "mt-1",
|
|
4616
6887
|
children: [/* @__PURE__ */ jsx("span", {
|
|
4617
|
-
className: cn("text-xs font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
|
|
6888
|
+
className: cn$1("text-xs font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
|
|
4618
6889
|
children: step.label
|
|
4619
6890
|
}), step.description && /* @__PURE__ */ jsx("p", {
|
|
4620
6891
|
className: "text-muted-foreground mt-0.5 text-xs",
|
|
@@ -4627,7 +6898,7 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
|
|
|
4627
6898
|
});
|
|
4628
6899
|
if (variant === "horizontal") return /* @__PURE__ */ jsx("nav", {
|
|
4629
6900
|
"aria-label": "Form steps",
|
|
4630
|
-
className: cn("flex flex-row items-center", className),
|
|
6901
|
+
className: cn$1("flex flex-row items-center", className),
|
|
4631
6902
|
children: steps.map((step, index) => {
|
|
4632
6903
|
const isActive = index === currentIndex;
|
|
4633
6904
|
const isCompleted = index < currentIndex;
|
|
@@ -4635,13 +6906,13 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
|
|
|
4635
6906
|
return /* @__PURE__ */ jsxs(React$1.Fragment, { children: [/* @__PURE__ */ jsxs("div", {
|
|
4636
6907
|
className: "flex items-center",
|
|
4637
6908
|
children: [/* @__PURE__ */ jsx("div", {
|
|
4638
|
-
className: cn("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
|
|
6909
|
+
className: cn$1("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
|
|
4639
6910
|
"aria-current": isActive ? "step" : void 0,
|
|
4640
6911
|
children: isCompleted ? /* @__PURE__ */ jsx(CheckIcon, { className: "text-tertiary size-4" }) : index + 1
|
|
4641
6912
|
}), /* @__PURE__ */ jsx("div", {
|
|
4642
6913
|
className: "ml-2",
|
|
4643
6914
|
children: /* @__PURE__ */ jsx("span", {
|
|
4644
|
-
className: cn("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
|
|
6915
|
+
className: cn$1("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
|
|
4645
6916
|
children: step.label
|
|
4646
6917
|
})
|
|
4647
6918
|
})]
|
|
@@ -4650,7 +6921,7 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
|
|
|
4650
6921
|
});
|
|
4651
6922
|
return /* @__PURE__ */ jsx("nav", {
|
|
4652
6923
|
"aria-label": "Form steps",
|
|
4653
|
-
className: cn("flex flex-col", className),
|
|
6924
|
+
className: cn$1("flex flex-col", className),
|
|
4654
6925
|
children: steps.map((step, index) => {
|
|
4655
6926
|
const isActive = index === currentIndex;
|
|
4656
6927
|
const isCompleted = index < currentIndex;
|
|
@@ -4660,14 +6931,14 @@ function StepperNavigation({ variant = "horizontal", labelOrientation = "vertica
|
|
|
4660
6931
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
4661
6932
|
className: "flex flex-col items-center",
|
|
4662
6933
|
children: [/* @__PURE__ */ jsx("div", {
|
|
4663
|
-
className: cn("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
|
|
6934
|
+
className: cn$1("flex h-8 w-8 items-center justify-center rounded-full border text-sm font-medium transition-colors", isActive && "border-primary bg-primary text-primary-foreground", isCompleted && "border-tertiary-foreground bg-tertiary-foreground text-tertiary", !isActive && !isCompleted && "border-stepper-label text-stepper-label"),
|
|
4664
6935
|
"aria-current": isActive ? "step" : void 0,
|
|
4665
6936
|
children: isCompleted ? /* @__PURE__ */ jsx(CheckIcon, { className: "text-tertiary size-4" }) : index + 1
|
|
4666
6937
|
}), !isLast && /* @__PURE__ */ jsx("div", { className: "bg-stepper-line my-1 min-h-8 w-0.5 flex-1" })]
|
|
4667
6938
|
}), /* @__PURE__ */ jsxs("div", {
|
|
4668
6939
|
className: "ml-3 pb-8",
|
|
4669
6940
|
children: [/* @__PURE__ */ jsx("span", {
|
|
4670
|
-
className: cn("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
|
|
6941
|
+
className: cn$1("text-sm font-medium", isActive && "text-foreground", isCompleted && "text-stepper-label", !isActive && !isCompleted && "text-stepper-label"),
|
|
4671
6942
|
children: step.label
|
|
4672
6943
|
}), step.description && /* @__PURE__ */ jsx("p", {
|
|
4673
6944
|
className: "text-muted-foreground mt-0.5 text-xs",
|
|
@@ -4684,14 +6955,14 @@ StepperNavigation.displayName = "Form.StepperNavigation";
|
|
|
4684
6955
|
//#region src/components/features/input-with-addons/input-with-addons.tsx
|
|
4685
6956
|
function InputWithAddons({ ref, leading, trailing, containerClassName, className, ...props }) {
|
|
4686
6957
|
return /* @__PURE__ */ jsxs("div", {
|
|
4687
|
-
className: cn("border-input-border bg-input-background/50 text-input-foreground placeholder:text-input-placeholder", "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow)", "group flex h-10 w-full items-stretch overflow-hidden rounded-lg border transition-all", "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", containerClassName),
|
|
6958
|
+
className: cn$1("border-input-border bg-input-background/50 text-input-foreground placeholder:text-input-placeholder", "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow)", "group flex h-10 w-full items-stretch overflow-hidden rounded-lg border transition-all", "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", containerClassName),
|
|
4688
6959
|
children: [
|
|
4689
6960
|
leading ? /* @__PURE__ */ jsx("div", {
|
|
4690
6961
|
className: "text-muted-foreground flex items-center bg-transparent pl-3",
|
|
4691
6962
|
children: leading
|
|
4692
6963
|
}) : null,
|
|
4693
6964
|
/* @__PURE__ */ jsx("input", {
|
|
4694
|
-
className: cn("flex-1 bg-transparent px-3 text-base md:text-sm", "placeholder:text-input-placeholder text-input-foreground", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "focus-visible:border-transparent focus-visible:shadow-none", "read-only:cursor-not-allowed read-only:opacity-50 disabled:cursor-not-allowed disabled:opacity-50", "file:text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium", leading && "pl-2", trailing && "pr-2", className),
|
|
6965
|
+
className: cn$1("flex-1 bg-transparent px-3 text-base md:text-sm", "placeholder:text-input-placeholder text-input-foreground", "focus-visible:ring-0 focus-visible:ring-offset-0 focus-visible:outline-hidden", "focus-visible:border-transparent focus-visible:shadow-none", "read-only:cursor-not-allowed read-only:opacity-50 disabled:cursor-not-allowed disabled:opacity-50", "file:text-foreground file:border-0 file:bg-transparent file:text-sm file:font-medium", leading && "pl-2", trailing && "pr-2", className),
|
|
4695
6966
|
"data-slot": "input-with-addons",
|
|
4696
6967
|
ref,
|
|
4697
6968
|
...props
|
|
@@ -4732,7 +7003,7 @@ function FormInputGroup({ ref, type = "text", className, disabled, ...props }) {
|
|
|
4732
7003
|
disabled: isDisabled,
|
|
4733
7004
|
"aria-invalid": hasErrors || void 0,
|
|
4734
7005
|
"aria-describedby": hasErrors ? `${fieldMeta.id}-error` : void 0,
|
|
4735
|
-
className: cn("text-xs!", className)
|
|
7006
|
+
className: cn$1("text-xs!", className)
|
|
4736
7007
|
});
|
|
4737
7008
|
}
|
|
4738
7009
|
FormInputGroup.displayName = "Form.InputGroup";
|
|
@@ -5143,7 +7414,7 @@ const Row = ({ type, align, justify, className, style, children, gutter = 0, pre
|
|
|
5143
7414
|
}, [gutter]);
|
|
5144
7415
|
const gutters = getGutter(gutter, screens);
|
|
5145
7416
|
const prefix = `${prefixCls}-row`;
|
|
5146
|
-
const classes = cn({
|
|
7417
|
+
const classes = cn$1({
|
|
5147
7418
|
[prefix]: type !== "flex",
|
|
5148
7419
|
[`${prefix}-${type}`]: type,
|
|
5149
7420
|
[`${prefix}-${type}-${justify}`]: type && justify,
|
|
@@ -5192,7 +7463,7 @@ const Col = ({ span, order, offset, push, pull, className, prefixCls = GRID_PREF
|
|
|
5192
7463
|
[`${prefix}-${size}-pull-${sizeProps.pull}`]: sizeProps.pull !== void 0
|
|
5193
7464
|
};
|
|
5194
7465
|
});
|
|
5195
|
-
const classes = cn(prefix, {
|
|
7466
|
+
const classes = cn$1(prefix, {
|
|
5196
7467
|
[`${prefix}-${span}`]: span !== void 0,
|
|
5197
7468
|
[`${prefix}-order-${order}`]: order !== void 0,
|
|
5198
7469
|
[`${prefix}-offset-${offset}`]: offset !== void 0,
|
|
@@ -5282,7 +7553,7 @@ function InputNumber({ ref, stepper, thousandSeparator, placeholder, defaultValu
|
|
|
5282
7553
|
min,
|
|
5283
7554
|
suffix,
|
|
5284
7555
|
prefix,
|
|
5285
|
-
customInput: Input
|
|
7556
|
+
customInput: Input,
|
|
5286
7557
|
placeholder,
|
|
5287
7558
|
className: "relative [appearance:textfield] rounded-r-none [&::-webkit-inner-spin-button]:appearance-none [&::-webkit-outer-spin-button]:appearance-none",
|
|
5288
7559
|
getInputRef: combinedRef,
|
|
@@ -5334,8 +7605,8 @@ function MoreActions({ row, actions, className, disabled = false, iconClassName
|
|
|
5334
7605
|
theme: "borderless",
|
|
5335
7606
|
size: "icon",
|
|
5336
7607
|
disabled,
|
|
5337
|
-
className: cn("data-[state=open]:bg-accent size-7 p-0 focus-visible:ring-0 focus-visible:ring-offset-0", className),
|
|
5338
|
-
children: /* @__PURE__ */ jsx(Ellipsis, { className: cn("size-5", iconClassName) })
|
|
7608
|
+
className: cn$1("data-[state=open]:bg-accent size-7 p-0 focus-visible:ring-0 focus-visible:ring-offset-0", className),
|
|
7609
|
+
children: /* @__PURE__ */ jsx(Ellipsis, { className: cn$1("size-5", iconClassName) })
|
|
5339
7610
|
})
|
|
5340
7611
|
}), /* @__PURE__ */ jsx(DropdownMenuContent, {
|
|
5341
7612
|
align: "end",
|
|
@@ -5348,11 +7619,11 @@ function MoreActions({ row, actions, className, disabled = false, iconClassName
|
|
|
5348
7619
|
setOpen(false);
|
|
5349
7620
|
action.action(row);
|
|
5350
7621
|
},
|
|
5351
|
-
className: cn("cursor-pointer text-xs", action.variant === "destructive" && "text-destructive [&_svg]:!text-destructive hover:!text-destructive hover:[&_svg]:!text-destructive", action.className),
|
|
7622
|
+
className: cn$1("cursor-pointer text-xs", action.variant === "destructive" && "text-destructive [&_svg]:!text-destructive hover:!text-destructive hover:[&_svg]:!text-destructive", action.className),
|
|
5352
7623
|
disabled: action.disabled?.(row) ?? false,
|
|
5353
7624
|
children: [action.icon, action.label]
|
|
5354
7625
|
});
|
|
5355
|
-
if (tooltipText && tooltipText !== action.label) return /* @__PURE__ */ jsx(Tooltip
|
|
7626
|
+
if (tooltipText && tooltipText !== action.label) return /* @__PURE__ */ jsx(Tooltip, {
|
|
5356
7627
|
message: tooltipText,
|
|
5357
7628
|
children: menuItem
|
|
5358
7629
|
}, action.key);
|
|
@@ -5396,18 +7667,18 @@ function configureProgress() {
|
|
|
5396
7667
|
function PageTitle({ title, description, actions, className, titleClassName, descriptionClassName, actionsClassName, actionsPosition = "inline" }) {
|
|
5397
7668
|
const isInline = actionsPosition === "inline";
|
|
5398
7669
|
return /* @__PURE__ */ jsxs("div", {
|
|
5399
|
-
className: cn("flex w-full", isInline ? "items-center justify-between" : "flex-col gap-3", className),
|
|
7670
|
+
className: cn$1("flex w-full", isInline ? "items-center justify-between" : "flex-col gap-3", className),
|
|
5400
7671
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
5401
|
-
className: cn("flex", isInline ? "flex-col justify-start gap-1" : "w-full flex-col gap-1"),
|
|
7672
|
+
className: cn$1("flex", isInline ? "flex-col justify-start gap-1" : "w-full flex-col gap-1"),
|
|
5402
7673
|
children: [title && /* @__PURE__ */ jsx("span", {
|
|
5403
|
-
className: cn("text-2xl leading-none font-medium", titleClassName),
|
|
7674
|
+
className: cn$1("text-2xl leading-none font-medium", titleClassName),
|
|
5404
7675
|
children: title
|
|
5405
7676
|
}), description && /* @__PURE__ */ jsx("div", {
|
|
5406
|
-
className: cn("text-sm font-normal", descriptionClassName),
|
|
7677
|
+
className: cn$1("text-sm font-normal", descriptionClassName),
|
|
5407
7678
|
children: description
|
|
5408
7679
|
})]
|
|
5409
7680
|
}), actions && /* @__PURE__ */ jsx("div", {
|
|
5410
|
-
className: cn("flex gap-1", isInline ? "justify-end pl-2" : "w-full", actionsClassName),
|
|
7681
|
+
className: cn$1("flex gap-1", isInline ? "justify-end pl-2" : "w-full", actionsClassName),
|
|
5411
7682
|
children: actions
|
|
5412
7683
|
})]
|
|
5413
7684
|
});
|
|
@@ -5425,7 +7696,7 @@ function NavIcon({ icon: IconComponent, className, size = "default" }) {
|
|
|
5425
7696
|
if (!IconComponent) return null;
|
|
5426
7697
|
return /* @__PURE__ */ jsx(Icon, {
|
|
5427
7698
|
icon: IconComponent,
|
|
5428
|
-
className: cn(size === "small" ? NAV_STYLES.iconSmall : NAV_STYLES.icon, className)
|
|
7699
|
+
className: cn$1(size === "small" ? NAV_STYLES.iconSmall : NAV_STYLES.icon, className)
|
|
5429
7700
|
});
|
|
5430
7701
|
}
|
|
5431
7702
|
NavIcon.displayName = "NavIcon";
|
|
@@ -5436,7 +7707,7 @@ function NavSidebarMenuButton({ ref, item, isActive, disableTooltip, className,
|
|
|
5436
7707
|
isActive,
|
|
5437
7708
|
disabled: item.disabled,
|
|
5438
7709
|
asChild,
|
|
5439
|
-
className: cn(NAV_STYLES.menuButton, item.disabled && NAV_STYLES.disabled, className),
|
|
7710
|
+
className: cn$1(NAV_STYLES.menuButton, item.disabled && NAV_STYLES.disabled, className),
|
|
5440
7711
|
...props,
|
|
5441
7712
|
children: asChild ? children : /* @__PURE__ */ jsxs(Fragment$1, { children: [/* @__PURE__ */ jsx(NavIcon, { icon: item.icon }), children] })
|
|
5442
7713
|
});
|
|
@@ -5608,7 +7879,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
|
|
|
5608
7879
|
onClick: () => {
|
|
5609
7880
|
handleNavigation();
|
|
5610
7881
|
},
|
|
5611
|
-
children: /* @__PURE__ */ jsx("span", { className: cn("size-1 rounded-full", isSubItemActive ? "bg-primary" : "bg-sidebar-primary-foreground") })
|
|
7882
|
+
children: /* @__PURE__ */ jsx("span", { className: cn$1("size-1 rounded-full", isSubItemActive ? "bg-primary" : "bg-sidebar-primary-foreground") })
|
|
5612
7883
|
})
|
|
5613
7884
|
})
|
|
5614
7885
|
}, `collapsed-dot-${subItem.href}-${level}`);
|
|
@@ -5665,7 +7936,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
|
|
|
5665
7936
|
initial: isInitialMount.current || previousOpenItems.current[item.href] === openItems[item.href] && previousState.current === state && previousPathname.current === pathname && !hasActiveChild ? "visible" : "hidden",
|
|
5666
7937
|
animate: isOpen ? "visible" : "hidden",
|
|
5667
7938
|
children: /* @__PURE__ */ jsx(SidebarMenuSub, {
|
|
5668
|
-
className: cn(level >= 1 ? "mr-0 pr-[.1rem]" : "", level === 2 ? "pl-4" : "", level === 3 ? "pl-6" : "", "mr-0 gap-0.5 pr-0"),
|
|
7939
|
+
className: cn$1(level >= 1 ? "mr-0 pr-[.1rem]" : "", level === 2 ? "pl-4" : "", level === 3 ? "pl-6" : "", "mr-0 gap-0.5 pr-0"),
|
|
5669
7940
|
children: item.children?.map((subItem, index) => /* @__PURE__ */ jsx(motion.div, {
|
|
5670
7941
|
variants: {
|
|
5671
7942
|
hidden: { opacity: 0 },
|
|
@@ -5721,7 +7992,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
|
|
|
5721
7992
|
overflow: "hidden"
|
|
5722
7993
|
},
|
|
5723
7994
|
children: /* @__PURE__ */ jsx(SidebarMenuSub, {
|
|
5724
|
-
className: cn(currentLevel >= 1 ? "mr-0 pr-[.1rem]" : "", "gap-0.5"),
|
|
7995
|
+
className: cn$1(currentLevel >= 1 ? "mr-0 pr-[.1rem]" : "", "gap-0.5"),
|
|
5725
7996
|
children: currentItem.children?.map((subItem) => renderNavItem(subItem, currentLevel + 1))
|
|
5726
7997
|
})
|
|
5727
7998
|
})
|
|
@@ -5739,14 +8010,14 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
|
|
|
5739
8010
|
return /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
5740
8011
|
item.showSeparatorAbove && /* @__PURE__ */ jsx(SidebarSeparator, { className: "my-2" }),
|
|
5741
8012
|
/* @__PURE__ */ jsx(SidebarMenu, {
|
|
5742
|
-
className: cn(`level_${level} px-2`),
|
|
8013
|
+
className: cn$1(`level_${level} px-2`),
|
|
5743
8014
|
children: /* @__PURE__ */ jsx(SidebarMenuItem, { children: /* @__PURE__ */ jsx(NavSidebarMenuButton, {
|
|
5744
8015
|
asChild: true,
|
|
5745
8016
|
item,
|
|
5746
8017
|
isActive: isActive && !hasActiveChild,
|
|
5747
8018
|
disableTooltip,
|
|
5748
8019
|
onClick: () => hasChildren && toggleItem(item.href),
|
|
5749
|
-
className: cn(level >= 1 && "h-6", itemClassName),
|
|
8020
|
+
className: cn$1(level >= 1 && "h-6", itemClassName),
|
|
5750
8021
|
children: item.type === "externalLink" ? /* @__PURE__ */ jsxs("a", {
|
|
5751
8022
|
href: item.href || "",
|
|
5752
8023
|
target: "_blank",
|
|
@@ -5779,7 +8050,7 @@ function NavMain({ ref, className, items, currentPath, linkComponent: LinkComp =
|
|
|
5779
8050
|
return /* @__PURE__ */ jsx("ul", {
|
|
5780
8051
|
ref,
|
|
5781
8052
|
"data-sidebar": "menu",
|
|
5782
|
-
className: cn("flex h-full w-full min-w-0 flex-col gap-0.5 py-2", className),
|
|
8053
|
+
className: cn$1("flex h-full w-full min-w-0 flex-col gap-0.5 py-2", className),
|
|
5783
8054
|
...props,
|
|
5784
8055
|
children: (items || []).map((item) => renderNavItem(item))
|
|
5785
8056
|
});
|
|
@@ -5819,6 +8090,23 @@ function AppSidebar({ navItems, title, closeOnNavigation, defaultOpen, currentPa
|
|
|
5819
8090
|
});
|
|
5820
8091
|
}
|
|
5821
8092
|
|
|
8093
|
+
//#endregion
|
|
8094
|
+
//#region ../shadcn/hooks/use-mobile.ts
|
|
8095
|
+
const MOBILE_BREAKPOINT = 768;
|
|
8096
|
+
function useIsMobile() {
|
|
8097
|
+
const [isMobile, setIsMobile] = React$1.useState(void 0);
|
|
8098
|
+
React$1.useEffect(() => {
|
|
8099
|
+
const mql = window.matchMedia(`(max-width: ${MOBILE_BREAKPOINT - 1}px)`);
|
|
8100
|
+
const onChange = () => {
|
|
8101
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
8102
|
+
};
|
|
8103
|
+
mql.addEventListener("change", onChange);
|
|
8104
|
+
setIsMobile(window.innerWidth < MOBILE_BREAKPOINT);
|
|
8105
|
+
return () => mql.removeEventListener("change", onChange);
|
|
8106
|
+
}, []);
|
|
8107
|
+
return !!isMobile;
|
|
8108
|
+
}
|
|
8109
|
+
|
|
5822
8110
|
//#endregion
|
|
5823
8111
|
//#region src/components/features/sidebar/sidebar.tsx
|
|
5824
8112
|
const SIDEBAR_COOKIE_NAME = "sidebar_state";
|
|
@@ -5989,7 +8277,7 @@ function SidebarProvider({ defaultOpen = true, open: openProp, onOpenChange: set
|
|
|
5989
8277
|
"--sidebar-width-icon": SIDEBAR_WIDTH_ICON,
|
|
5990
8278
|
...style
|
|
5991
8279
|
},
|
|
5992
|
-
className: cn("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
|
|
8280
|
+
className: cn$1("group/sidebar-wrapper has-data-[variant=inset]:bg-sidebar flex min-h-svh w-full", className),
|
|
5993
8281
|
...props,
|
|
5994
8282
|
children
|
|
5995
8283
|
})
|
|
@@ -6021,15 +8309,15 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
|
|
|
6021
8309
|
]);
|
|
6022
8310
|
if (collapsible === "none") return /* @__PURE__ */ jsx("div", {
|
|
6023
8311
|
"data-slot": "sidebar",
|
|
6024
|
-
className: cn("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", side === "left" ? "border-r" : "border-l", className),
|
|
8312
|
+
className: cn$1("bg-sidebar text-sidebar-foreground flex h-full w-(--sidebar-width) flex-col", side === "left" ? "border-r" : "border-l", className),
|
|
6025
8313
|
...props,
|
|
6026
8314
|
children
|
|
6027
8315
|
});
|
|
6028
|
-
if (isMobile) return /* @__PURE__ */ jsx(Sheet, {
|
|
8316
|
+
if (isMobile) return /* @__PURE__ */ jsx(Sheet$1, {
|
|
6029
8317
|
open: openMobile,
|
|
6030
8318
|
onOpenChange: setOpenMobile,
|
|
6031
8319
|
...props,
|
|
6032
|
-
children: /* @__PURE__ */ jsxs(SheetContent, {
|
|
8320
|
+
children: /* @__PURE__ */ jsxs(SheetContent$1, {
|
|
6033
8321
|
"data-sidebar": "sidebar",
|
|
6034
8322
|
"data-slot": "sidebar",
|
|
6035
8323
|
"data-mobile": "true",
|
|
@@ -6056,19 +8344,19 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
|
|
|
6056
8344
|
onMouseEnter: handleMouseEnter,
|
|
6057
8345
|
onMouseLeave: handleMouseLeave,
|
|
6058
8346
|
children: [
|
|
6059
|
-
/* @__PURE__ */ jsx("div", { className: cn("relative w-(--sidebar-width) bg-transparent transition-[width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)]", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", expandBehavior === "overlay" ? variant === "floating" || variant === "inset" ? "w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "w-(--sidebar-width-icon)" : variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)") }),
|
|
8347
|
+
/* @__PURE__ */ jsx("div", { className: cn$1("relative w-(--sidebar-width) bg-transparent transition-[width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)]", "group-data-[collapsible=offcanvas]:w-0", "group-data-[side=right]:rotate-180", expandBehavior === "overlay" ? variant === "floating" || variant === "inset" ? "w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "w-(--sidebar-width-icon)" : variant === "floating" || variant === "inset" ? "group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4)))]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon)") }),
|
|
6060
8348
|
/* @__PURE__ */ jsx("div", {
|
|
6061
8349
|
ref: sidebarRef,
|
|
6062
|
-
className: cn("border-sidebar-border fixed inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] md:flex", expandBehavior === "overlay" ? "z-50" : "z-10", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
|
|
8350
|
+
className: cn$1("border-sidebar-border fixed inset-y-0 hidden w-(--sidebar-width) transition-[left,right,width] duration-300 ease-[cubic-bezier(0.25,0.1,0.25,1)] md:flex", expandBehavior === "overlay" ? "z-50" : "z-10", side === "left" ? "left-0 group-data-[collapsible=offcanvas]:left-[calc(var(--sidebar-width)*-1)]" : "right-0 group-data-[collapsible=offcanvas]:right-[calc(var(--sidebar-width)*-1)]", variant === "floating" || variant === "inset" ? "p-2 group-data-[collapsible=icon]:w-[calc(var(--sidebar-width-icon)+(--spacing(4))+2px)]" : "group-data-[collapsible=icon]:w-(--sidebar-width-icon) group-data-[side=left]:border-r group-data-[side=right]:border-l", className),
|
|
6063
8351
|
...props,
|
|
6064
8352
|
children: /* @__PURE__ */ jsx("div", {
|
|
6065
8353
|
"data-sidebar": "sidebar",
|
|
6066
|
-
className: cn("bg-sidebar flex h-full w-full flex-col", "group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm", expandBehavior === "overlay" && state === "expanded" && "shadow-lg"),
|
|
8354
|
+
className: cn$1("bg-sidebar flex h-full w-full flex-col", "group-data-[variant=floating]:border-sidebar-border group-data-[variant=floating]:rounded-lg group-data-[variant=floating]:border group-data-[variant=floating]:shadow-sm", expandBehavior === "overlay" && state === "expanded" && "shadow-lg"),
|
|
6067
8355
|
children
|
|
6068
8356
|
})
|
|
6069
8357
|
}),
|
|
6070
8358
|
showBackdropElement && /* @__PURE__ */ jsx("div", {
|
|
6071
|
-
className: cn("fixed inset-0 z-40 hidden bg-black/50 transition-opacity duration-200 ease-in-out md:block", backdropVisible ? "opacity-100" : "opacity-0"),
|
|
8359
|
+
className: cn$1("fixed inset-0 z-40 hidden bg-black/50 transition-opacity duration-200 ease-in-out md:block", backdropVisible ? "opacity-100" : "opacity-0"),
|
|
6072
8360
|
onMouseEnter: () => forceClose(),
|
|
6073
8361
|
onClick: () => forceClose(),
|
|
6074
8362
|
"aria-hidden": "true"
|
|
@@ -6078,7 +8366,7 @@ function Sidebar({ side = "left", variant = "sidebar", collapsible = "offcanvas"
|
|
|
6078
8366
|
}
|
|
6079
8367
|
function SidebarTrigger({ className, onClick, ...props }) {
|
|
6080
8368
|
const { toggleSidebar, open } = useSidebar();
|
|
6081
|
-
return /* @__PURE__ */ jsx(Tooltip
|
|
8369
|
+
return /* @__PURE__ */ jsx(Tooltip, {
|
|
6082
8370
|
message: open ? "Close Sidebar" : "Open Sidebar",
|
|
6083
8371
|
side: "right",
|
|
6084
8372
|
align: "center",
|
|
@@ -6088,7 +8376,7 @@ function SidebarTrigger({ className, onClick, ...props }) {
|
|
|
6088
8376
|
"data-slot": "sidebar-trigger",
|
|
6089
8377
|
variant: "ghost",
|
|
6090
8378
|
size: "icon",
|
|
6091
|
-
className: cn("text-icon-primary hover:bg-sidebar hover:text-sidebar-primary h-8 w-8 rounded-lg transition-all", className),
|
|
8379
|
+
className: cn$1("text-icon-primary hover:bg-sidebar hover:text-sidebar-primary h-8 w-8 rounded-lg transition-all", className),
|
|
6092
8380
|
onClick: (event) => {
|
|
6093
8381
|
onClick?.(event);
|
|
6094
8382
|
toggleSidebar();
|
|
@@ -6116,22 +8404,22 @@ function SidebarRail({ className, ...props }) {
|
|
|
6116
8404
|
tabIndex: -1,
|
|
6117
8405
|
onClick: toggleSidebar,
|
|
6118
8406
|
title: "Toggle Sidebar",
|
|
6119
|
-
className: cn("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-[cubic-bezier(0.25,0.1,0.25,1)] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
|
|
8407
|
+
className: cn$1("hover:after:bg-sidebar-border absolute inset-y-0 z-20 hidden w-4 -translate-x-1/2 transition-all ease-[cubic-bezier(0.25,0.1,0.25,1)] group-data-[side=left]:-right-4 group-data-[side=right]:left-0 after:absolute after:inset-y-0 after:left-1/2 after:w-[2px] sm:flex", "in-data-[side=left]:cursor-w-resize in-data-[side=right]:cursor-e-resize", "[[data-side=left][data-state=collapsed]_&]:cursor-e-resize [[data-side=right][data-state=collapsed]_&]:cursor-w-resize", "hover:group-data-[collapsible=offcanvas]:bg-sidebar group-data-[collapsible=offcanvas]:translate-x-0 group-data-[collapsible=offcanvas]:after:left-full", "[[data-side=left][data-collapsible=offcanvas]_&]:-right-2", "[[data-side=right][data-collapsible=offcanvas]_&]:-left-2", className),
|
|
6120
8408
|
...props
|
|
6121
8409
|
});
|
|
6122
8410
|
}
|
|
6123
8411
|
function SidebarInset({ className, ...props }) {
|
|
6124
8412
|
return /* @__PURE__ */ jsx("main", {
|
|
6125
8413
|
"data-slot": "sidebar-inset",
|
|
6126
|
-
className: cn("bg-background relative flex w-full min-w-0 flex-1 flex-col", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className),
|
|
8414
|
+
className: cn$1("bg-background relative flex w-full min-w-0 flex-1 flex-col", "md:peer-data-[variant=inset]:m-2 md:peer-data-[variant=inset]:ml-0 md:peer-data-[variant=inset]:rounded-xl md:peer-data-[variant=inset]:shadow-sm md:peer-data-[variant=inset]:peer-data-[state=collapsed]:ml-2", className),
|
|
6127
8415
|
...props
|
|
6128
8416
|
});
|
|
6129
8417
|
}
|
|
6130
8418
|
function SidebarInput({ className, ...props }) {
|
|
6131
|
-
return /* @__PURE__ */ jsx(Input
|
|
8419
|
+
return /* @__PURE__ */ jsx(Input, {
|
|
6132
8420
|
"data-slot": "sidebar-input",
|
|
6133
8421
|
"data-sidebar": "input",
|
|
6134
|
-
className: cn("bg-background h-8 w-full shadow-none", className),
|
|
8422
|
+
className: cn$1("bg-background h-8 w-full shadow-none", className),
|
|
6135
8423
|
...props
|
|
6136
8424
|
});
|
|
6137
8425
|
}
|
|
@@ -6139,7 +8427,7 @@ function SidebarHeader({ className, ...props }) {
|
|
|
6139
8427
|
return /* @__PURE__ */ jsx("div", {
|
|
6140
8428
|
"data-slot": "sidebar-header",
|
|
6141
8429
|
"data-sidebar": "header",
|
|
6142
|
-
className: cn("flex flex-col gap-2 p-2", className),
|
|
8430
|
+
className: cn$1("flex flex-col gap-2 p-2", className),
|
|
6143
8431
|
...props
|
|
6144
8432
|
});
|
|
6145
8433
|
}
|
|
@@ -6147,7 +8435,7 @@ function SidebarFooter({ className, ...props }) {
|
|
|
6147
8435
|
return /* @__PURE__ */ jsx("div", {
|
|
6148
8436
|
"data-slot": "sidebar-footer",
|
|
6149
8437
|
"data-sidebar": "footer",
|
|
6150
|
-
className: cn("flex flex-col gap-2 p-2", className),
|
|
8438
|
+
className: cn$1("flex flex-col gap-2 p-2", className),
|
|
6151
8439
|
...props
|
|
6152
8440
|
});
|
|
6153
8441
|
}
|
|
@@ -6155,7 +8443,7 @@ function SidebarSeparator({ className, ...props }) {
|
|
|
6155
8443
|
return /* @__PURE__ */ jsx(Separator, {
|
|
6156
8444
|
"data-slot": "sidebar-separator",
|
|
6157
8445
|
"data-sidebar": "separator",
|
|
6158
|
-
className: cn("bg-sidebar-border w-full", className),
|
|
8446
|
+
className: cn$1("bg-sidebar-border w-full", className),
|
|
6159
8447
|
...props
|
|
6160
8448
|
});
|
|
6161
8449
|
}
|
|
@@ -6163,7 +8451,7 @@ function SidebarContent({ className, ...props }) {
|
|
|
6163
8451
|
return /* @__PURE__ */ jsx("div", {
|
|
6164
8452
|
"data-slot": "sidebar-content",
|
|
6165
8453
|
"data-sidebar": "content",
|
|
6166
|
-
className: cn("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
|
|
8454
|
+
className: cn$1("flex min-h-0 flex-1 flex-col gap-2 overflow-auto group-data-[collapsible=icon]:overflow-hidden", className),
|
|
6167
8455
|
...props
|
|
6168
8456
|
});
|
|
6169
8457
|
}
|
|
@@ -6171,7 +8459,7 @@ function SidebarGroup({ className, ...props }) {
|
|
|
6171
8459
|
return /* @__PURE__ */ jsx("div", {
|
|
6172
8460
|
"data-slot": "sidebar-group",
|
|
6173
8461
|
"data-sidebar": "group",
|
|
6174
|
-
className: cn("relative flex w-full min-w-0 flex-col p-2", className),
|
|
8462
|
+
className: cn$1("relative flex w-full min-w-0 flex-col p-2", className),
|
|
6175
8463
|
...props
|
|
6176
8464
|
});
|
|
6177
8465
|
}
|
|
@@ -6179,7 +8467,7 @@ function SidebarGroupLabel({ className, asChild = false, ...props }) {
|
|
|
6179
8467
|
return /* @__PURE__ */ jsx(asChild ? Slot : "div", {
|
|
6180
8468
|
"data-slot": "sidebar-group-label",
|
|
6181
8469
|
"data-sidebar": "group-label",
|
|
6182
|
-
className: cn("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-[cubic-bezier(0.25,0.1,0.25,1)] focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
|
|
8470
|
+
className: cn$1("text-sidebar-foreground/70 ring-sidebar-ring flex h-8 shrink-0 items-center rounded-md px-2 text-xs font-medium outline-hidden transition-[margin,opacity] duration-200 ease-[cubic-bezier(0.25,0.1,0.25,1)] focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "group-data-[collapsible=icon]:-mt-8 group-data-[collapsible=icon]:opacity-0", className),
|
|
6183
8471
|
...props
|
|
6184
8472
|
});
|
|
6185
8473
|
}
|
|
@@ -6187,7 +8475,7 @@ function SidebarGroupAction({ className, asChild = false, ...props }) {
|
|
|
6187
8475
|
return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
|
|
6188
8476
|
"data-slot": "sidebar-group-action",
|
|
6189
8477
|
"data-sidebar": "group-action",
|
|
6190
|
-
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
|
|
8478
|
+
className: cn$1("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground absolute top-3.5 right-3 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "group-data-[collapsible=icon]:hidden", className),
|
|
6191
8479
|
...props
|
|
6192
8480
|
});
|
|
6193
8481
|
}
|
|
@@ -6195,7 +8483,7 @@ function SidebarGroupContent({ className, ...props }) {
|
|
|
6195
8483
|
return /* @__PURE__ */ jsx("div", {
|
|
6196
8484
|
"data-slot": "sidebar-group-content",
|
|
6197
8485
|
"data-sidebar": "group-content",
|
|
6198
|
-
className: cn("w-full text-sm", className),
|
|
8486
|
+
className: cn$1("w-full text-sm", className),
|
|
6199
8487
|
...props
|
|
6200
8488
|
});
|
|
6201
8489
|
}
|
|
@@ -6203,7 +8491,7 @@ function SidebarMenu({ className, ...props }) {
|
|
|
6203
8491
|
return /* @__PURE__ */ jsx("ul", {
|
|
6204
8492
|
"data-slot": "sidebar-menu",
|
|
6205
8493
|
"data-sidebar": "menu",
|
|
6206
|
-
className: cn("flex w-full min-w-0 flex-col gap-1", className),
|
|
8494
|
+
className: cn$1("flex w-full min-w-0 flex-col gap-1", className),
|
|
6207
8495
|
...props
|
|
6208
8496
|
});
|
|
6209
8497
|
}
|
|
@@ -6211,7 +8499,7 @@ function SidebarMenuItem({ className, ...props }) {
|
|
|
6211
8499
|
return /* @__PURE__ */ jsx("li", {
|
|
6212
8500
|
"data-slot": "sidebar-menu-item",
|
|
6213
8501
|
"data-sidebar": "menu-item",
|
|
6214
|
-
className: cn("group/menu-item relative", className),
|
|
8502
|
+
className: cn$1("group/menu-item relative", className),
|
|
6215
8503
|
...props
|
|
6216
8504
|
});
|
|
6217
8505
|
}
|
|
@@ -6240,7 +8528,7 @@ function SidebarMenuButton({ asChild = false, isActive = false, variant = "defau
|
|
|
6240
8528
|
"data-sidebar": "menu-button",
|
|
6241
8529
|
"data-size": size,
|
|
6242
8530
|
"data-active": isActive,
|
|
6243
|
-
className: cn(sidebarMenuButtonVariants({
|
|
8531
|
+
className: cn$1(sidebarMenuButtonVariants({
|
|
6244
8532
|
variant,
|
|
6245
8533
|
size
|
|
6246
8534
|
}), className),
|
|
@@ -6252,7 +8540,7 @@ function SidebarMenuButton({ asChild = false, isActive = false, variant = "defau
|
|
|
6252
8540
|
side: tooltip.side,
|
|
6253
8541
|
align: tooltip.align
|
|
6254
8542
|
} : {};
|
|
6255
|
-
return /* @__PURE__ */ jsx(Tooltip
|
|
8543
|
+
return /* @__PURE__ */ jsx(Tooltip, {
|
|
6256
8544
|
message: tooltipMessage,
|
|
6257
8545
|
side: "right",
|
|
6258
8546
|
align: "center",
|
|
@@ -6265,7 +8553,7 @@ function SidebarMenuAction({ className, asChild = false, showOnHover = false, ..
|
|
|
6265
8553
|
return /* @__PURE__ */ jsx(asChild ? Slot : "button", {
|
|
6266
8554
|
"data-slot": "sidebar-menu-action",
|
|
6267
8555
|
"data-sidebar": "menu-action",
|
|
6268
|
-
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
|
|
8556
|
+
className: cn$1("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground peer-hover/menu-button:text-sidebar-accent-foreground absolute top-1.5 right-1 flex aspect-square w-5 items-center justify-center rounded-md p-0 outline-hidden transition-transform focus-visible:ring-2 [&>svg]:size-4 [&>svg]:shrink-0", "after:absolute after:-inset-2 md:after:hidden", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", showOnHover && "peer-data-[active=true]/menu-button:text-sidebar-accent-foreground group-focus-within/menu-item:opacity-100 group-hover/menu-item:opacity-100 data-[state=open]:opacity-100 md:opacity-0", className),
|
|
6269
8557
|
...props
|
|
6270
8558
|
});
|
|
6271
8559
|
}
|
|
@@ -6273,7 +8561,7 @@ function SidebarMenuBadge({ className, ...props }) {
|
|
|
6273
8561
|
return /* @__PURE__ */ jsx("div", {
|
|
6274
8562
|
"data-slot": "sidebar-menu-badge",
|
|
6275
8563
|
"data-sidebar": "menu-badge",
|
|
6276
|
-
className: cn("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
|
|
8564
|
+
className: cn$1("text-sidebar-foreground pointer-events-none absolute right-1 flex h-5 min-w-5 items-center justify-center rounded-md px-1 text-xs font-medium tabular-nums select-none", "peer-hover/menu-button:text-sidebar-accent-foreground peer-data-[active=true]/menu-button:text-sidebar-accent-foreground", "peer-data-[size=sm]/menu-button:top-1", "peer-data-[size=default]/menu-button:top-1.5", "peer-data-[size=lg]/menu-button:top-2.5", "group-data-[collapsible=icon]:hidden", className),
|
|
6277
8565
|
...props
|
|
6278
8566
|
});
|
|
6279
8567
|
}
|
|
@@ -6284,7 +8572,7 @@ function SidebarMenuSkeleton({ className, showIcon = false, ...props }) {
|
|
|
6284
8572
|
return /* @__PURE__ */ jsxs("div", {
|
|
6285
8573
|
"data-slot": "sidebar-menu-skeleton",
|
|
6286
8574
|
"data-sidebar": "menu-skeleton",
|
|
6287
|
-
className: cn("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
8575
|
+
className: cn$1("flex h-8 items-center gap-2 rounded-md px-2", className),
|
|
6288
8576
|
...props,
|
|
6289
8577
|
children: [showIcon && /* @__PURE__ */ jsx(Skeleton, {
|
|
6290
8578
|
className: "size-4 rounded-md",
|
|
@@ -6300,7 +8588,7 @@ function SidebarMenuSub({ className, ...props }) {
|
|
|
6300
8588
|
return /* @__PURE__ */ jsx("ul", {
|
|
6301
8589
|
"data-slot": "sidebar-menu-sub",
|
|
6302
8590
|
"data-sidebar": "menu-sub",
|
|
6303
|
-
className: cn("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col px-2.5", "group-data-[collapsible=icon]:hidden", className),
|
|
8591
|
+
className: cn$1("border-sidebar-border mx-3.5 flex min-w-0 translate-x-px flex-col px-2.5", "group-data-[collapsible=icon]:hidden", className),
|
|
6304
8592
|
...props
|
|
6305
8593
|
});
|
|
6306
8594
|
}
|
|
@@ -6308,7 +8596,7 @@ function SidebarMenuSubItem({ className, ...props }) {
|
|
|
6308
8596
|
return /* @__PURE__ */ jsx("li", {
|
|
6309
8597
|
"data-slot": "sidebar-menu-sub-item",
|
|
6310
8598
|
"data-sidebar": "menu-sub-item",
|
|
6311
|
-
className: cn("group/menu-sub-item relative", className),
|
|
8599
|
+
className: cn$1("group/menu-sub-item relative", className),
|
|
6312
8600
|
...props
|
|
6313
8601
|
});
|
|
6314
8602
|
}
|
|
@@ -6318,7 +8606,7 @@ function SidebarMenuSubButton({ asChild = false, size = "md", isActive = false,
|
|
|
6318
8606
|
"data-sidebar": "menu-sub-button",
|
|
6319
8607
|
"data-size": size,
|
|
6320
8608
|
"data-active": isActive,
|
|
6321
|
-
className: cn("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
|
|
8609
|
+
className: cn$1("text-sidebar-foreground ring-sidebar-ring hover:bg-sidebar-accent hover:text-sidebar-accent-foreground active:bg-sidebar-accent active:text-sidebar-accent-foreground [&>svg]:text-sidebar-accent-foreground flex h-7 min-w-0 -translate-x-px items-center gap-2 overflow-hidden rounded-md px-2 outline-hidden focus-visible:ring-2 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&>span:last-child]:truncate [&>svg]:size-4 [&>svg]:shrink-0", "data-[active=true]:bg-sidebar-accent data-[active=true]:text-sidebar-accent-foreground", size === "sm" && "text-xs", size === "md" && "text-sm", "group-data-[collapsible=icon]:hidden", className),
|
|
6322
8610
|
...props
|
|
6323
8611
|
});
|
|
6324
8612
|
}
|
|
@@ -6530,7 +8818,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
|
|
|
6530
8818
|
...props,
|
|
6531
8819
|
ref,
|
|
6532
8820
|
dir,
|
|
6533
|
-
className: cn("border-input-border bg-input-background/50 text-input-foreground flex min-h-10 flex-wrap items-center gap-1 overflow-hidden rounded-lg border px-3 py-2 transition-all", activeIndex === -1 ? "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow) focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden" : "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", className),
|
|
8821
|
+
className: cn$1("border-input-border bg-input-background/50 text-input-foreground flex min-h-10 flex-wrap items-center gap-1 overflow-hidden rounded-lg border px-3 py-2 transition-all", activeIndex === -1 ? "focus-within:border-input-focus-border focus-within:shadow-(--input-focus-shadow) focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden" : "focus-within:ring-0 focus-within:ring-offset-0 focus-within:outline-hidden", className),
|
|
6534
8822
|
suppressHydrationWarning: true,
|
|
6535
8823
|
children: [
|
|
6536
8824
|
(showValidationErrors && validationError || error) && /* @__PURE__ */ jsx("div", {
|
|
@@ -6541,7 +8829,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
|
|
|
6541
8829
|
tabIndex: activeIndex !== -1 ? 0 : activeIndex,
|
|
6542
8830
|
"aria-disabled": disableButton,
|
|
6543
8831
|
"data-active": activeIndex === index,
|
|
6544
|
-
className: cn("data-[active='true']:ring-muted-foreground relative flex items-center gap-1 truncate rounded px-1 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 data-[active='true']:ring-2"),
|
|
8832
|
+
className: cn$1("data-[active='true']:ring-muted-foreground relative flex items-center gap-1 truncate rounded px-1 aria-disabled:cursor-not-allowed aria-disabled:opacity-50 data-[active='true']:ring-2"),
|
|
6545
8833
|
type: "secondary",
|
|
6546
8834
|
children: [/* @__PURE__ */ jsx("span", {
|
|
6547
8835
|
className: "text-xs",
|
|
@@ -6568,7 +8856,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
|
|
|
6568
8856
|
})]
|
|
6569
8857
|
})]
|
|
6570
8858
|
}, item)),
|
|
6571
|
-
/* @__PURE__ */ jsx(Input
|
|
8859
|
+
/* @__PURE__ */ jsx(Input, {
|
|
6572
8860
|
tabIndex: 0,
|
|
6573
8861
|
"aria-label": "input tag",
|
|
6574
8862
|
disabled: disableInput,
|
|
@@ -6580,7 +8868,7 @@ function TagsInput({ ref, value, onValueChange, placeholder, maxItems, minItems,
|
|
|
6580
8868
|
onChange: activeIndex === -1 ? handleChange : void 0,
|
|
6581
8869
|
placeholder,
|
|
6582
8870
|
onClick: () => setActiveIndex(-1),
|
|
6583
|
-
className: cn("text-input-foreground h-6 min-w-fit flex-1 border-0 bg-transparent p-0 py-1 shadow-none", "placeholder:text-input-placeholder", "focus-visible:border-transparent focus-visible:shadow-none focus-visible:ring-0 focus-visible:ring-offset-0", activeIndex !== -1 && "caret-transparent")
|
|
8871
|
+
className: cn$1("text-input-foreground h-6 min-w-fit flex-1 border-0 bg-transparent p-0 py-1 shadow-none", "placeholder:text-input-placeholder", "focus-visible:border-transparent focus-visible:shadow-none focus-visible:ring-0 focus-visible:ring-offset-0", activeIndex !== -1 && "caret-transparent")
|
|
6584
8872
|
})
|
|
6585
8873
|
]
|
|
6586
8874
|
}), /* @__PURE__ */ jsxs("select", {
|
|
@@ -7538,7 +9826,7 @@ function TaskPanelCounter({ total, completed, failed = 0, status }) {
|
|
|
7538
9826
|
return /* @__PURE__ */ jsx("span", {
|
|
7539
9827
|
className: "text-muted-foreground text-xs",
|
|
7540
9828
|
children: parts.map((part, i) => /* @__PURE__ */ jsxs("span", { children: [i > 0 && ", ", /* @__PURE__ */ jsx("span", {
|
|
7541
|
-
className: cn(part.destructive && "text-destructive"),
|
|
9829
|
+
className: cn$1(part.destructive && "text-destructive"),
|
|
7542
9830
|
children: part.text
|
|
7543
9831
|
})] }, i))
|
|
7544
9832
|
});
|
|
@@ -7649,19 +9937,19 @@ function TaskStatusAction({ task, onCancel }) {
|
|
|
7649
9937
|
children: [/* @__PURE__ */ jsx("div", {
|
|
7650
9938
|
className: "pointer-events-none absolute inset-0 flex items-center justify-center transition-opacity group-hover:opacity-0",
|
|
7651
9939
|
children: /* @__PURE__ */ jsx(SpinnerIcon, { size: "sm" })
|
|
7652
|
-
}), task.cancelable && /* @__PURE__ */ jsxs(Tooltip, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
9940
|
+
}), task.cancelable && /* @__PURE__ */ jsxs(Tooltip$1, { children: [/* @__PURE__ */ jsx(TooltipTrigger, {
|
|
7653
9941
|
asChild: true,
|
|
7654
9942
|
children: /* @__PURE__ */ jsx("button", {
|
|
7655
9943
|
type: "button",
|
|
7656
9944
|
onClick: onCancel,
|
|
7657
|
-
className: cn("flex size-5 items-center justify-center rounded-md transition-colors", "text-muted-foreground hover:bg-accent hover:text-foreground", "absolute inset-0 opacity-0 transition-opacity group-hover:opacity-100"),
|
|
9945
|
+
className: cn$1("flex size-5 items-center justify-center rounded-md transition-colors", "text-muted-foreground hover:bg-accent hover:text-foreground", "absolute inset-0 opacity-0 transition-opacity group-hover:opacity-100"),
|
|
7658
9946
|
"aria-label": "Cancel task",
|
|
7659
9947
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
7660
9948
|
icon: X,
|
|
7661
9949
|
className: "size-4"
|
|
7662
9950
|
})
|
|
7663
9951
|
})
|
|
7664
|
-
}), /* @__PURE__ */ jsx(TooltipContent, {
|
|
9952
|
+
}), /* @__PURE__ */ jsx(TooltipContent$1, {
|
|
7665
9953
|
side: "left",
|
|
7666
9954
|
children: "Cancel"
|
|
7667
9955
|
})] })]
|
|
@@ -7689,7 +9977,7 @@ function TaskPanel() {
|
|
|
7689
9977
|
const { tasks, cancel } = useTaskQueue();
|
|
7690
9978
|
if (tasks.length === 0) return null;
|
|
7691
9979
|
return /* @__PURE__ */ jsxs("div", {
|
|
7692
|
-
className: cn("bg-background fixed right-4 bottom-4 z-50 w-96 overflow-hidden", "border-border/50 rounded-xl border shadow-xl shadow-black/10", "animate-in slide-in-from-bottom-4 fade-in duration-200"),
|
|
9980
|
+
className: cn$1("bg-background fixed right-4 bottom-4 z-50 w-96 overflow-hidden", "border-border/50 rounded-xl border shadow-xl shadow-black/10", "animate-in slide-in-from-bottom-4 fade-in duration-200"),
|
|
7693
9981
|
children: [/* @__PURE__ */ jsx(TaskPanelHeader, {}), /* @__PURE__ */ jsx("div", {
|
|
7694
9982
|
className: "max-h-80 overflow-y-auto",
|
|
7695
9983
|
children: tasks.map((task) => /* @__PURE__ */ jsx(TaskPanelItem, {
|
|
@@ -7725,20 +10013,20 @@ function TaskQueueTrigger({ ref, tasks, ...props }) {
|
|
|
7725
10013
|
prevAllComplete.current = false;
|
|
7726
10014
|
}
|
|
7727
10015
|
}, [tasks.length]);
|
|
7728
|
-
return /* @__PURE__ */ jsx(Tooltip
|
|
10016
|
+
return /* @__PURE__ */ jsx(Tooltip, {
|
|
7729
10017
|
message: "Tasks",
|
|
7730
10018
|
children: /* @__PURE__ */ jsxs(Button$1, {
|
|
7731
10019
|
ref,
|
|
7732
10020
|
type: "quaternary",
|
|
7733
10021
|
theme: "borderless",
|
|
7734
10022
|
size: "small",
|
|
7735
|
-
className: cn("hover:bg-sidebar-accent relative h-7 w-7 rounded-lg p-0 transition-colors duration-300", flash && "bg-primary/10"),
|
|
10023
|
+
className: cn$1("hover:bg-sidebar-accent relative h-7 w-7 rounded-lg p-0 transition-colors duration-300", flash && "bg-primary/10"),
|
|
7736
10024
|
"aria-label": `Tasks${activeCount > 0 ? ` (${activeCount} active)` : ""}`,
|
|
7737
10025
|
...props,
|
|
7738
10026
|
children: [
|
|
7739
10027
|
/* @__PURE__ */ jsx(Icon, {
|
|
7740
10028
|
icon: ListTodo,
|
|
7741
|
-
className: cn("text-icon-header size-4", flash ? "text-primary" : "text-icon-header")
|
|
10029
|
+
className: cn$1("text-icon-header size-4", flash ? "text-primary" : "text-icon-header")
|
|
7742
10030
|
}),
|
|
7743
10031
|
hasRunning && /* @__PURE__ */ jsx("span", { className: "border-t-primary pointer-events-none absolute inset-[-3px] animate-spin rounded-full border-2 border-transparent" }),
|
|
7744
10032
|
activeCount > 0 && /* @__PURE__ */ jsx(Badge, {
|
|
@@ -7776,9 +10064,9 @@ function StatusCell({ item }) {
|
|
|
7776
10064
|
className: "flex items-center gap-1.5",
|
|
7777
10065
|
children: [/* @__PURE__ */ jsx(Icon, {
|
|
7778
10066
|
icon: config.icon,
|
|
7779
|
-
className: cn("size-4", config.className)
|
|
10067
|
+
className: cn$1("size-4", config.className)
|
|
7780
10068
|
}), /* @__PURE__ */ jsx("span", {
|
|
7781
|
-
className: cn("text-xs font-medium", config.className),
|
|
10069
|
+
className: cn$1("text-xs font-medium", config.className),
|
|
7782
10070
|
children: config.label
|
|
7783
10071
|
})]
|
|
7784
10072
|
}), item.message && item.status !== "success" && /* @__PURE__ */ jsx("span", {
|
|
@@ -7843,23 +10131,23 @@ function TaskSummaryDialog(props) {
|
|
|
7843
10131
|
const resolvedItems = props.items ?? taskIdItems;
|
|
7844
10132
|
const successCount = resolvedItems.filter((i) => i.status === "success").length;
|
|
7845
10133
|
const failedCount = resolvedItems.filter((i) => i.status === "failed").length;
|
|
7846
|
-
return /* @__PURE__ */ jsx(Dialog
|
|
10134
|
+
return /* @__PURE__ */ jsx(Dialog, {
|
|
7847
10135
|
open,
|
|
7848
10136
|
onOpenChange,
|
|
7849
|
-
children: /* @__PURE__ */ jsxs(Dialog
|
|
10137
|
+
children: /* @__PURE__ */ jsxs(Dialog.Content, {
|
|
7850
10138
|
className: "w-full sm:max-w-[774px]",
|
|
7851
10139
|
children: [
|
|
7852
|
-
/* @__PURE__ */ jsx(Dialog
|
|
10140
|
+
/* @__PURE__ */ jsx(Dialog.Header, {
|
|
7853
10141
|
title,
|
|
7854
10142
|
description: description ?? `${successCount} succeeded, ${failedCount} failed`,
|
|
7855
10143
|
onClose: () => onOpenChange(false),
|
|
7856
10144
|
className: "border-b-0"
|
|
7857
10145
|
}),
|
|
7858
|
-
/* @__PURE__ */ jsx(Dialog
|
|
10146
|
+
/* @__PURE__ */ jsx(Dialog.Body, {
|
|
7859
10147
|
className: "px-5 py-0",
|
|
7860
10148
|
children: renderContent ? renderContent(resolvedItems) : /* @__PURE__ */ jsx(DefaultTableContent, { items: resolvedItems })
|
|
7861
10149
|
}),
|
|
7862
|
-
/* @__PURE__ */ jsxs(Dialog
|
|
10150
|
+
/* @__PURE__ */ jsxs(Dialog.Footer, {
|
|
7863
10151
|
className: "border-t-0",
|
|
7864
10152
|
children: [actions, /* @__PURE__ */ jsx(Button$1, {
|
|
7865
10153
|
type: "primary",
|
|
@@ -8192,7 +10480,7 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
|
|
|
8192
10480
|
notifyChangeDebounced
|
|
8193
10481
|
]);
|
|
8194
10482
|
return /* @__PURE__ */ jsxs("div", {
|
|
8195
|
-
className: cn("flex flex-col gap-2", className),
|
|
10483
|
+
className: cn$1("flex flex-col gap-2", className),
|
|
8196
10484
|
children: [/* @__PURE__ */ jsx("p", {
|
|
8197
10485
|
className: "text-muted-foreground text-xs font-medium",
|
|
8198
10486
|
children: "Custom Range"
|
|
@@ -8227,12 +10515,12 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
|
|
|
8227
10515
|
initialFocus: true
|
|
8228
10516
|
})
|
|
8229
10517
|
})]
|
|
8230
|
-
}), /* @__PURE__ */ jsx(Input
|
|
10518
|
+
}), /* @__PURE__ */ jsx(Input, {
|
|
8231
10519
|
type: "time",
|
|
8232
10520
|
id: startTimeId,
|
|
8233
10521
|
value: startTime,
|
|
8234
10522
|
onChange: handleStartTimeChange,
|
|
8235
|
-
className: cn("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
|
|
10523
|
+
className: cn$1("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
|
|
8236
10524
|
})]
|
|
8237
10525
|
}),
|
|
8238
10526
|
/* @__PURE__ */ jsx("span", {
|
|
@@ -8267,12 +10555,12 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
|
|
|
8267
10555
|
initialFocus: true
|
|
8268
10556
|
})
|
|
8269
10557
|
})]
|
|
8270
|
-
}), /* @__PURE__ */ jsx(Input
|
|
10558
|
+
}), /* @__PURE__ */ jsx(Input, {
|
|
8271
10559
|
type: "time",
|
|
8272
10560
|
id: endTimeId,
|
|
8273
10561
|
value: endTime,
|
|
8274
10562
|
onChange: handleEndTimeChange,
|
|
8275
|
-
className: cn("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
|
|
10563
|
+
className: cn$1("h-8 w-[80px] px-2 text-xs md:text-xs", "appearance-none bg-transparent", "[&::-webkit-calendar-picker-indicator]:hidden [&::-webkit-calendar-picker-indicator]:appearance-none")
|
|
8276
10564
|
})]
|
|
8277
10565
|
})
|
|
8278
10566
|
]
|
|
@@ -8285,7 +10573,7 @@ function CustomRangePanel({ fromUtc, toUtc, timezone, onRangeChange, disableFutu
|
|
|
8285
10573
|
function QuickRangesPanel({ presets, value, onPresetSelect, className }) {
|
|
8286
10574
|
const selectedPreset = value?.type === "preset" ? value.preset : void 0;
|
|
8287
10575
|
return /* @__PURE__ */ jsxs("div", {
|
|
8288
|
-
className: cn("flex flex-col gap-2", className),
|
|
10576
|
+
className: cn$1("flex flex-col gap-2", className),
|
|
8289
10577
|
children: [/* @__PURE__ */ jsx("p", {
|
|
8290
10578
|
className: "text-muted-foreground px-3 text-xs font-medium",
|
|
8291
10579
|
children: "Presets"
|
|
@@ -8296,9 +10584,9 @@ function QuickRangesPanel({ presets, value, onPresetSelect, className }) {
|
|
|
8296
10584
|
return /* @__PURE__ */ jsxs("button", {
|
|
8297
10585
|
type: "button",
|
|
8298
10586
|
onClick: () => onPresetSelect(preset),
|
|
8299
|
-
className: cn("flex items-center justify-between gap-2 rounded-lg px-3 py-1.5 text-xs transition-colors", "hover:bg-accent hover:text-accent-foreground", isSelected ? "bg-accent text-primary border-border border font-medium" : "border border-transparent"),
|
|
10587
|
+
className: cn$1("flex items-center justify-between gap-2 rounded-lg px-3 py-1.5 text-xs transition-colors", "hover:bg-accent hover:text-accent-foreground", isSelected ? "bg-accent text-primary border-border border font-medium" : "border border-transparent"),
|
|
8300
10588
|
children: [/* @__PURE__ */ jsx("span", { children: preset.label }), /* @__PURE__ */ jsx("kbd", {
|
|
8301
|
-
className: cn("bg-muted pointer-events-none hidden h-5 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium select-none sm:flex", isSelected ? "border-primary" : "bg-muted/50 border-transparent"),
|
|
10589
|
+
className: cn$1("bg-muted pointer-events-none hidden h-5 items-center gap-1 rounded border px-1.5 font-mono text-[10px] font-medium select-none sm:flex", isSelected ? "border-primary" : "bg-muted/50 border-transparent"),
|
|
8302
10590
|
children: preset.shortcut
|
|
8303
10591
|
})]
|
|
8304
10592
|
}, preset.key);
|
|
@@ -8312,17 +10600,17 @@ function QuickRangesPanel({ presets, value, onPresetSelect, className }) {
|
|
|
8312
10600
|
function TimezoneSelector({ value, onChange, options, className }) {
|
|
8313
10601
|
const selectedOption = options.find((opt) => opt.value === value);
|
|
8314
10602
|
return /* @__PURE__ */ jsxs("div", {
|
|
8315
|
-
className: cn("flex items-center gap-2", className),
|
|
8316
|
-
children: [/* @__PURE__ */ jsx(Globe, { className: "text-muted-foreground h-4 w-4 shrink-0" }), /* @__PURE__ */ jsxs(Select
|
|
10603
|
+
className: cn$1("flex items-center gap-2", className),
|
|
10604
|
+
children: [/* @__PURE__ */ jsx(Globe, { className: "text-muted-foreground h-4 w-4 shrink-0" }), /* @__PURE__ */ jsxs(Select, {
|
|
8317
10605
|
value,
|
|
8318
10606
|
onValueChange: onChange,
|
|
8319
|
-
children: [/* @__PURE__ */ jsx(SelectTrigger
|
|
10607
|
+
children: [/* @__PURE__ */ jsx(SelectTrigger, {
|
|
8320
10608
|
className: "hover:bg-accent h-8 min-w-[180px] border-0 bg-transparent px-2 text-xs shadow-none",
|
|
8321
|
-
children: /* @__PURE__ */ jsx(SelectValue
|
|
10609
|
+
children: /* @__PURE__ */ jsx(SelectValue, {
|
|
8322
10610
|
placeholder: "Select timezone",
|
|
8323
10611
|
children: selectedOption?.label ?? value
|
|
8324
10612
|
})
|
|
8325
|
-
}), /* @__PURE__ */ jsx(SelectContent
|
|
10613
|
+
}), /* @__PURE__ */ jsx(SelectContent, { children: options.map((option) => /* @__PURE__ */ jsx(SelectItem, {
|
|
8326
10614
|
value: option.value,
|
|
8327
10615
|
className: "text-xs",
|
|
8328
10616
|
children: option.label
|
|
@@ -8652,7 +10940,7 @@ function TimeRangePicker({ value, onChange, onClear, timezone: timezoneProp, pre
|
|
|
8652
10940
|
type: "quaternary",
|
|
8653
10941
|
theme: "outline",
|
|
8654
10942
|
disabled,
|
|
8655
|
-
className: cn("text-foreground min-w-[200px] items-center justify-between gap-2 px-3 font-normal", className),
|
|
10943
|
+
className: cn$1("text-foreground min-w-[200px] items-center justify-between gap-2 px-3 font-normal", className),
|
|
8656
10944
|
children: [/* @__PURE__ */ jsxs("div", {
|
|
8657
10945
|
className: "flex flex-1 items-center gap-2",
|
|
8658
10946
|
children: [/* @__PURE__ */ jsx(Icon, {
|
|
@@ -8668,7 +10956,7 @@ function TimeRangePicker({ value, onChange, onClear, timezone: timezoneProp, pre
|
|
|
8668
10956
|
e.preventDefault();
|
|
8669
10957
|
handleClear(e);
|
|
8670
10958
|
},
|
|
8671
|
-
className: cn("size-[14px] shrink-0 p-0 hover:bg-transparent", "hover:text-destructive text-icon-quaternary hover:bg-transparent dark:text-white", "focus:ring-ring focus:ring-2 focus:ring-offset-1 focus:outline-none", "disabled:pointer-events-none disabled:opacity-50", "transition-colors"),
|
|
10959
|
+
className: cn$1("size-[14px] shrink-0 p-0 hover:bg-transparent", "hover:text-destructive text-icon-quaternary hover:bg-transparent dark:text-white", "focus:ring-ring focus:ring-2 focus:ring-offset-1 focus:outline-none", "disabled:pointer-events-none disabled:opacity-50", "transition-colors"),
|
|
8672
10960
|
"aria-label": "Clear time range",
|
|
8673
10961
|
children: /* @__PURE__ */ jsx(Icon, {
|
|
8674
10962
|
icon: X,
|
|
@@ -8837,5 +11125,4 @@ const ThemeScript = React$1.memo(({ forcedTheme, storageKey = "theme", attribute
|
|
|
8837
11125
|
});
|
|
8838
11126
|
|
|
8839
11127
|
//#endregion
|
|
8840
|
-
export { SidebarGroupAction as $,
|
|
8841
|
-
//# sourceMappingURL=theme-script-B_TkiYs4.mjs.map
|
|
11128
|
+
export { SidebarGroupAction as $, Card as $i, paragraphVariants as $n, MapDrawPolygon as $r, FormSwitch as $t, TaskPanel as A, HoverCard as Ai, DropdownMenuPortal as An, SelectGroup as Ar, getGutter as At, TaskQueueProvider as B, CommandList as Bi, AvatarStack as Bn, Popover as Br, useFormContext as Bt, localInputStringToUtc as C, badgeVariants as Ca, InputGroup as Ci, DropzoneEmptyState as Cn, SheetDescription as Cr, startProgress as Ct, TaskQueueDropdown as D, InputGroupText as Di, DropdownMenuGroup as Dn, SheetTrigger as Dr, Col as Dt, zonedDateToUtcString as E, AlertTitle as Ea, InputGroupInput as Ei, DropdownMenuContent as En, SheetTitle as Er, InputNumber as Et, getContextLabel as F, CommandDialog as Fi, DropdownMenuSub as Fn, SelectSeparator as Fr, GRID_PREFIX as Ft, createOrgMetadata as G, CollapsibleTrigger as Gi, Blockquote as Gn, MapCircle as Gr, StepperControls as Gt, detectStorage as H, CommandShortcut as Hi, Autocomplete as Hn, PopoverContent as Hr, useField as Ht, matchesCurrentScope as I, CommandEmpty as Ii, DropdownMenuSubContent as In, SelectTrigger as Ir, RESPONSIVE_ARRAY as It, TagsInput as J, ChartLegend as Ji, List as Jn, MapDrawCircle as Jr, defineStepper as Jt, createProjectMetadata as K, Checkbox as Ki, Code as Kn, MapCircleMarker as Kr, FormStep as Kt, useCurrentScope as L, CommandGroup as Li, DropdownMenuSubTrigger as Ln, SelectValue as Lr, RESPONSIVE_MAP as Lt, TaskPanelCounter as M, HoverCardTrigger as Mi, DropdownMenuRadioItem as Mn, SelectLabel as Mr, registerMediaQuery as Mt, TaskPanelActions as N, Dialog as Ni, DropdownMenuSeparator as Nn, SelectScrollDownButton as Nr, GRID_BREAKPOINTS as Nt, TaskSummaryDialog as O, InputGroupTextarea as Oi, DropdownMenuItem as On, Select as Or, Row as Ot, TaskPanelHeader as P, Command$1 as Pi, DropdownMenuShortcut as Pn, SelectScrollUpButton as Pr, GRID_COLUMNS as Pt, SidebarGroup as Q, ChartTooltipContent as Qi, Title$1 as Qn, MapDrawMarker as Qr, FormTextarea as Qt, useTasksWithLabels as R, CommandInput as Ri, DropdownMenuTrigger as Rn, RadioGroup as Rr, Form as Rt, getTimezoneOffset as S, Badge as Sa, Label as Si, DropzoneContent as Sn, SheetOverlay as Sr, configureProgress as St, utcToLocalInputString as T, AlertDescription as Ta, InputGroupButton as Ti, DropdownMenuCheckboxItem as Tn, SheetHeader as Tr, MoreActions as Tt, RedisTaskStorage as U, Collapsible as Ui, LoaderOverlay as Un, PopoverTrigger as Ur, InputWithAddons as Ut, TaskQueue as V, CommandSeparator as Vi, avatarStackVariants as Vn, PopoverAnchor as Vr, useFieldContext as Vt, LocalTaskStorage as W, CollapsibleContent as Wi, VisuallyHidden$1 as Wn, Map$1 as Wr, StepperNavigation as Wt, SidebarContent as X, ChartStyle as Xi, Paragraph as Xn, MapDrawDelete as Xr, useWatch as Xt, Sidebar as Y, ChartLegendContent as Yi, ListItem as Yn, MapDrawControl as Yr, FormWhen as Yt, SidebarFooter as Z, ChartTooltip as Zi, Text as Zn, MapDrawEdit as Zr, useWatchAll as Zt, formatTimezoneLabel as _, BreadcrumbItem as _a, MapTooltip as _i, FormButton as _n, Switch as _r, SidebarTrigger as _t, formatDateForInput as a, Calendar$1 as aa, MapLayerGroup as ai, FormRadioItem as an, TabsContent as ar, SidebarMenu as at, getDefaultTimezoneOptions as b, BreadcrumbPage as ba, PlaceAutocomplete as bi, EmptyContent as bn, SheetClose as br, NavMain as bt, DEFAULT_PRESETS as c, ButtonGroupSeparator as ca, MapLocateControl as ci, FormField as cn, TabsTrigger as cr, SidebarMenuButton as ct, getPresetByShortcut as d, Separator as da, MapPolygon as di, FormDescription as dn, TableCaption as dr, SidebarMenuSub as dt, CardFooter as ea, MapDrawPolyline as ei, FormSubmit as en, textVariants as er, SidebarGroupContent as et, getPresetRange as f, LinkButton as fa, MapPolyline as fi, FormCustom as fn, TableCell as fr, SidebarMenuSubButton as ft, createTimezoneOption as g, BreadcrumbEllipsis as ga, MapTileLayer as gi, FormCheckbox as gn, TableRow as gr, SidebarSeparator as gt, CustomRangePanel as h, Breadcrumb as ha, MapSearchControl as hi, Toaster$1 as hn, TableHeader as hr, SidebarRail as ht, TimeRangePicker as i, CardTitle as ia, MapFullscreenControl as ii, FormRadioGroup as in, Tabs as ir, SidebarInset as it, TaskPanelItem as j, HoverCardContent as ji, DropdownMenuRadioGroup as jn, SelectItem as jr, getResponsiveValue as jt, TaskQueueTrigger as k, Input as ki, DropdownMenuLabel as kn, SelectContent as kr, RowContext as kt, getDefaultPreset as l, ButtonGroupText as la, MapMarker as li, FormError as ln, Table as lr, SidebarMenuItem as lt, QuickRangesPanel as m, buttonVariants$1 as ma, MapRectangle as mi, useToast as mn, TableHead as mr, SidebarProvider as mt, ClientOnly as n, CardContent as na, MapDrawUndo as ni, FormSelectItem as nn, Tooltip as nr, SidebarHeader as nt, formatSingleTimeDisplay as o, CalendarDayButton as oa, MapLayers as oi, FormInput as on, TabsLinkTrigger as or, SidebarMenuAction as ot, TimezoneSelector as p, Button$1 as pa, MapPopup as pi, FormCopyBox as pn, TableFooter as pr, SidebarMenuSubItem as pt, createUserMetadata as q, ChartContainer as qi, Link as qn, MapControlContainer as qr, FormStepper as qt, toApiTimeRange as r, CardDescription as ra, MapFeatureGroup as ri, FormRoot as rn, Textarea as rr, SidebarInput as rt, formatTimeRangeDisplay as s, ButtonGroup as sa, MapLayersControl as si, FormFieldArray as sn, TabsList as sr, SidebarMenuBadge as st, ThemeScript as t, CardHeader as ta, MapDrawRectangle as ti, FormSelect as tn, titleVariants$1 as tr, SidebarGroupLabel as tt, getPresetByKey as u, buttonGroupVariants as ua, MapMarkerClusterGroup as ui, FormDialog as un, TableBody as ur, SidebarMenuSkeleton as ut, formatUtcForDisplay as v, BreadcrumbLink as va, MapZoomControl as vi, FormAutocomplete as vn, Skeleton as vr, useSidebar as vt, utcStringToZonedDate as w, Alert as wa, InputGroupAddon as wi, DropdownMenu as wn, SheetFooter as wr, stopProgress as wt, getShortTimezoneDisplay as x, BreadcrumbSeparator as xa, Spinner as xi, Dropzone as xn, SheetContent as xr, PageTitle as xt, getBrowserTimezone as y, BreadcrumbList as ya, useLeaflet as yi, FileInputButton as yn, Sheet as yr, AppSidebar as yt, useTaskQueue as z, CommandItem as zi, CalendarDatePicker as zn, RadioGroupItem as zr, useStepper as zt };
|