@sewadah/selaras 0.1.1 → 0.3.0
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/README.md +67 -20
- package/dist/module.d.mts +10 -0
- package/dist/module.json +1 -1
- package/dist/module.mjs +123 -36
- package/dist/runtime/components/Accordion.d.vue.ts +3 -0
- package/dist/runtime/components/Accordion.vue +5 -1
- package/dist/runtime/components/Accordion.vue.d.ts +3 -0
- package/dist/runtime/components/Alert.d.vue.ts +2 -1
- package/dist/runtime/components/Alert.vue +6 -3
- package/dist/runtime/components/Alert.vue.d.ts +2 -1
- package/dist/runtime/components/AlertDialog.d.vue.ts +2 -0
- package/dist/runtime/components/AlertDialog.vue +21 -8
- package/dist/runtime/components/AlertDialog.vue.d.ts +2 -0
- package/dist/runtime/components/App.vue +9 -2
- package/dist/runtime/components/Autocomplete.d.vue.ts +22 -58
- package/dist/runtime/components/Autocomplete.vue +50 -11
- package/dist/runtime/components/Autocomplete.vue.d.ts +22 -58
- package/dist/runtime/components/Avatar.d.vue.ts +2 -1
- package/dist/runtime/components/Avatar.vue +4 -2
- package/dist/runtime/components/Avatar.vue.d.ts +2 -1
- package/dist/runtime/components/Badge.d.vue.ts +3 -2
- package/dist/runtime/components/Badge.vue +8 -5
- package/dist/runtime/components/Badge.vue.d.ts +3 -2
- package/dist/runtime/components/Breadcrumb.d.vue.ts +3 -0
- package/dist/runtime/components/Breadcrumb.vue +5 -2
- package/dist/runtime/components/Breadcrumb.vue.d.ts +3 -0
- package/dist/runtime/components/Button.d.vue.ts +5 -2
- package/dist/runtime/components/Button.vue +5 -2
- package/dist/runtime/components/Button.vue.d.ts +5 -2
- package/dist/runtime/components/Checkbox.d.vue.ts +2 -1
- package/dist/runtime/components/Checkbox.vue +4 -2
- package/dist/runtime/components/Checkbox.vue.d.ts +2 -1
- package/dist/runtime/components/Chip.d.vue.ts +2 -1
- package/dist/runtime/components/Chip.vue +4 -2
- package/dist/runtime/components/Chip.vue.d.ts +2 -1
- package/dist/runtime/components/Collapsible.d.vue.ts +3 -0
- package/dist/runtime/components/Collapsible.vue +11 -6
- package/dist/runtime/components/Collapsible.vue.d.ts +3 -0
- package/dist/runtime/components/ColorPicker.d.vue.ts +13 -3
- package/dist/runtime/components/ColorPicker.vue +60 -14
- package/dist/runtime/components/ColorPicker.vue.d.ts +13 -3
- package/dist/runtime/components/Column.d.ts +1 -1
- package/dist/runtime/components/CommandPalette.vue +18 -16
- package/dist/runtime/components/ContentNavigation.d.vue.ts +3 -0
- package/dist/runtime/components/ContentNavigation.vue +6 -3
- package/dist/runtime/components/ContentNavigation.vue.d.ts +3 -0
- package/dist/runtime/components/ContentSurround.d.vue.ts +3 -0
- package/dist/runtime/components/ContentSurround.vue +7 -4
- package/dist/runtime/components/ContentSurround.vue.d.ts +3 -0
- package/dist/runtime/components/ContentToc.d.vue.ts +3 -0
- package/dist/runtime/components/ContentToc.vue +22 -12
- package/dist/runtime/components/ContentToc.vue.d.ts +3 -0
- package/dist/runtime/components/ContextMenu.vue +3 -2
- package/dist/runtime/components/DashboardSidebar.vue +1 -1
- package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +1 -0
- package/dist/runtime/components/DashboardSidebarToggle.vue +3 -1
- package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +1 -0
- package/dist/runtime/components/DatePicker.d.vue.ts +32 -23
- package/dist/runtime/components/DatePicker.vue +130 -60
- package/dist/runtime/components/DatePicker.vue.d.ts +32 -23
- package/dist/runtime/components/Drawer.d.vue.ts +2 -0
- package/dist/runtime/components/Drawer.vue +21 -8
- package/dist/runtime/components/Drawer.vue.d.ts +2 -0
- package/dist/runtime/components/DrawerRenderer.vue +28 -21
- package/dist/runtime/components/Dropdown.d.vue.ts +14 -4
- package/dist/runtime/components/Dropdown.vue +19 -4
- package/dist/runtime/components/Dropdown.vue.d.ts +14 -4
- package/dist/runtime/components/FileTree.d.vue.ts +3 -0
- package/dist/runtime/components/FileTree.vue +7 -3
- package/dist/runtime/components/FileTree.vue.d.ts +3 -0
- package/dist/runtime/components/FileUpload.d.vue.ts +2 -1
- package/dist/runtime/components/FileUpload.vue +75 -32
- package/dist/runtime/components/FileUpload.vue.d.ts +2 -1
- package/dist/runtime/components/FormField.d.vue.ts +2 -0
- package/dist/runtime/components/FormField.vue +12 -9
- package/dist/runtime/components/FormField.vue.d.ts +2 -0
- package/dist/runtime/components/Icon.d.vue.ts +2 -4
- package/dist/runtime/components/Icon.vue +7 -2
- package/dist/runtime/components/Icon.vue.d.ts +2 -4
- package/dist/runtime/components/Input.d.vue.ts +2 -1
- package/dist/runtime/components/Input.vue +12 -6
- package/dist/runtime/components/Input.vue.d.ts +2 -1
- package/dist/runtime/components/InputNumber.d.vue.ts +4 -1
- package/dist/runtime/components/InputNumber.vue +21 -8
- package/dist/runtime/components/InputNumber.vue.d.ts +4 -1
- package/dist/runtime/components/Modal.d.vue.ts +2 -0
- package/dist/runtime/components/Modal.vue +21 -8
- package/dist/runtime/components/Modal.vue.d.ts +2 -0
- package/dist/runtime/components/ModalRenderer.vue +23 -16
- package/dist/runtime/components/NavigationMenu.d.vue.ts +2 -4
- package/dist/runtime/components/NavigationMenu.vue +8 -4
- package/dist/runtime/components/NavigationMenu.vue.d.ts +2 -4
- package/dist/runtime/components/NavigationMenuAccordionItem.d.vue.ts +2 -4
- package/dist/runtime/components/NavigationMenuAccordionItem.vue +5 -3
- package/dist/runtime/components/NavigationMenuAccordionItem.vue.d.ts +2 -4
- package/dist/runtime/components/NavigationMenuFlyoutList.d.vue.ts +2 -4
- package/dist/runtime/components/NavigationMenuFlyoutList.vue +7 -4
- package/dist/runtime/components/NavigationMenuFlyoutList.vue.d.ts +2 -4
- package/dist/runtime/components/NavigationMenuFlyoutTrigger.d.vue.ts +2 -4
- package/dist/runtime/components/NavigationMenuFlyoutTrigger.vue +9 -2
- package/dist/runtime/components/NavigationMenuFlyoutTrigger.vue.d.ts +2 -4
- package/dist/runtime/components/Pagination.d.vue.ts +3 -2
- package/dist/runtime/components/Pagination.vue.d.ts +3 -2
- package/dist/runtime/components/PinInput.d.vue.ts +2 -1
- package/dist/runtime/components/PinInput.vue +17 -6
- package/dist/runtime/components/PinInput.vue.d.ts +2 -1
- package/dist/runtime/components/Popover.d.vue.ts +2 -0
- package/dist/runtime/components/Popover.vue +14 -7
- package/dist/runtime/components/Popover.vue.d.ts +2 -0
- package/dist/runtime/components/Progress.d.vue.ts +2 -1
- package/dist/runtime/components/Progress.vue +6 -4
- package/dist/runtime/components/Progress.vue.d.ts +2 -1
- package/dist/runtime/components/ProseH1.d.vue.ts +2 -0
- package/dist/runtime/components/ProseH1.vue +7 -4
- package/dist/runtime/components/ProseH1.vue.d.ts +2 -0
- package/dist/runtime/components/ProseH2.d.vue.ts +2 -0
- package/dist/runtime/components/ProseH2.vue +7 -4
- package/dist/runtime/components/ProseH2.vue.d.ts +2 -0
- package/dist/runtime/components/ProseH3.d.vue.ts +2 -0
- package/dist/runtime/components/ProseH3.vue +7 -4
- package/dist/runtime/components/ProseH3.vue.d.ts +2 -0
- package/dist/runtime/components/ProseH4.d.vue.ts +2 -0
- package/dist/runtime/components/ProseH4.vue +7 -4
- package/dist/runtime/components/ProseH4.vue.d.ts +2 -0
- package/dist/runtime/components/ProseH5.d.vue.ts +2 -0
- package/dist/runtime/components/ProseH5.vue +7 -4
- package/dist/runtime/components/ProseH5.vue.d.ts +2 -0
- package/dist/runtime/components/ProseH6.d.vue.ts +2 -0
- package/dist/runtime/components/ProseH6.vue +7 -4
- package/dist/runtime/components/ProseH6.vue.d.ts +2 -0
- package/dist/runtime/components/ProsePre.d.vue.ts +4 -2
- package/dist/runtime/components/ProsePre.vue +9 -3
- package/dist/runtime/components/ProsePre.vue.d.ts +4 -2
- package/dist/runtime/components/RadioGroup.d.vue.ts +2 -1
- package/dist/runtime/components/RadioGroup.vue +9 -5
- package/dist/runtime/components/RadioGroup.vue.d.ts +2 -1
- package/dist/runtime/components/Rating.d.vue.ts +2 -1
- package/dist/runtime/components/Rating.vue +4 -1
- package/dist/runtime/components/Rating.vue.d.ts +2 -1
- package/dist/runtime/components/ReadMore.d.vue.ts +3 -0
- package/dist/runtime/components/ReadMore.vue +24 -6
- package/dist/runtime/components/ReadMore.vue.d.ts +3 -0
- package/dist/runtime/components/Select.d.vue.ts +21 -57
- package/dist/runtime/components/Select.vue +58 -9
- package/dist/runtime/components/Select.vue.d.ts +21 -57
- package/dist/runtime/components/Separator.d.vue.ts +2 -1
- package/dist/runtime/components/Separator.vue +4 -2
- package/dist/runtime/components/Separator.vue.d.ts +2 -1
- package/dist/runtime/components/Slideover.d.vue.ts +2 -0
- package/dist/runtime/components/Slideover.vue +21 -8
- package/dist/runtime/components/Slideover.vue.d.ts +2 -0
- package/dist/runtime/components/SlideoverRenderer.vue +25 -18
- package/dist/runtime/components/Slider.d.vue.ts +2 -1
- package/dist/runtime/components/Slider.vue +4 -1
- package/dist/runtime/components/Slider.vue.d.ts +2 -1
- package/dist/runtime/components/SplitterResizeHandle.d.vue.ts +3 -0
- package/dist/runtime/components/SplitterResizeHandle.vue +5 -2
- package/dist/runtime/components/SplitterResizeHandle.vue.d.ts +3 -0
- package/dist/runtime/components/Stepper.d.vue.ts +2 -1
- package/dist/runtime/components/Stepper.vue +4 -1
- package/dist/runtime/components/Stepper.vue.d.ts +2 -1
- package/dist/runtime/components/Switch.d.vue.ts +2 -1
- package/dist/runtime/components/Switch.vue +4 -2
- package/dist/runtime/components/Switch.vue.d.ts +2 -1
- package/dist/runtime/components/Table.d.vue.ts +28 -80
- package/dist/runtime/components/Table.vue +25 -13
- package/dist/runtime/components/Table.vue.d.ts +28 -80
- package/dist/runtime/components/Tabs.d.vue.ts +3 -0
- package/dist/runtime/components/Tabs.vue +5 -1
- package/dist/runtime/components/Tabs.vue.d.ts +3 -0
- package/dist/runtime/components/Textarea.d.vue.ts +2 -1
- package/dist/runtime/components/Textarea.vue +11 -6
- package/dist/runtime/components/Textarea.vue.d.ts +2 -1
- package/dist/runtime/components/Theme.d.vue.ts +16 -5
- package/dist/runtime/components/Theme.vue +30 -5
- package/dist/runtime/components/Theme.vue.d.ts +16 -5
- package/dist/runtime/components/Toast.vue +11 -39
- package/dist/runtime/components/Toggle.d.vue.ts +2 -1
- package/dist/runtime/components/Toggle.vue +4 -1
- package/dist/runtime/components/Toggle.vue.d.ts +2 -1
- package/dist/runtime/components/ToggleGroup.d.vue.ts +2 -1
- package/dist/runtime/components/ToggleGroup.vue +4 -1
- package/dist/runtime/components/ToggleGroup.vue.d.ts +2 -1
- package/dist/runtime/components/Tooltip.vue +3 -2
- package/dist/runtime/components/Tree.d.vue.ts +5 -2
- package/dist/runtime/components/Tree.vue +5 -1
- package/dist/runtime/components/Tree.vue.d.ts +5 -2
- package/dist/runtime/composables/use-drawer.d.ts +1 -22
- package/dist/runtime/composables/use-drawer.js +12 -18
- package/dist/runtime/composables/use-form-field.d.ts +1 -0
- package/dist/runtime/composables/use-icons.d.ts +2 -2
- package/dist/runtime/composables/use-icons.js +1 -1
- package/dist/runtime/composables/use-locale.d.ts +2 -2
- package/dist/runtime/composables/use-locale.js +1 -1
- package/dist/runtime/composables/use-media-query.d.ts +6 -8
- package/dist/runtime/composables/use-media-query.js +7 -2
- package/dist/runtime/composables/use-messages.d.ts +2 -2
- package/dist/runtime/composables/use-messages.js +1 -1
- package/dist/runtime/composables/use-modal.d.ts +1 -17
- package/dist/runtime/composables/use-modal.js +12 -18
- package/dist/runtime/composables/use-ripple.d.ts +2 -2
- package/dist/runtime/composables/use-ripple.js +1 -1
- package/dist/runtime/composables/use-slideover.d.ts +1 -19
- package/dist/runtime/composables/use-slideover.js +12 -18
- package/dist/runtime/composables/use-table.d.ts +74 -17
- package/dist/runtime/composables/use-table.js +4 -1
- package/dist/runtime/composables/use-toast.d.ts +8 -8
- package/dist/runtime/composables/use-toast.js +9 -11
- package/dist/runtime/default-color-metadata.d.ts +4 -0
- package/dist/runtime/default-color-metadata.js +4 -0
- package/dist/runtime/default-colors.css +1 -0
- package/dist/runtime/internal/ColorPickerBody.d.vue.ts +1 -0
- package/dist/runtime/internal/ColorPickerBody.vue +24 -1
- package/dist/runtime/internal/ColorPickerBody.vue.d.ts +1 -0
- package/dist/runtime/internal/ComboboxSelectBase.d.vue.ts +50 -46
- package/dist/runtime/internal/ComboboxSelectBase.vue +340 -93
- package/dist/runtime/internal/ComboboxSelectBase.vue.d.ts +50 -46
- package/dist/runtime/internal/ComboboxSelectBody.d.vue.ts +29 -23
- package/dist/runtime/internal/ComboboxSelectBody.vue +74 -40
- package/dist/runtime/internal/ComboboxSelectBody.vue.d.ts +29 -23
- package/dist/runtime/internal/DatePickerCalendarBody.d.vue.ts +3 -5
- package/dist/runtime/internal/DatePickerCalendarBody.vue +2 -2
- package/dist/runtime/internal/DatePickerCalendarBody.vue.d.ts +3 -5
- package/dist/runtime/internal/DatePickerRangeCalendarBody.d.vue.ts +3 -5
- package/dist/runtime/internal/DatePickerRangeCalendarBody.vue +1 -1
- package/dist/runtime/internal/DatePickerRangeCalendarBody.vue.d.ts +3 -5
- package/dist/runtime/internal/DatePickerTimeBody.d.vue.ts +2 -4
- package/dist/runtime/internal/DatePickerTimeBody.vue.d.ts +2 -4
- package/dist/runtime/internal/ProgrammaticTheme.d.vue.ts +17 -0
- package/dist/runtime/internal/ProgrammaticTheme.vue +41 -0
- package/dist/runtime/internal/ProgrammaticTheme.vue.d.ts +17 -0
- package/dist/runtime/internal/TimeStepper.vue +1 -1
- package/dist/runtime/internal/ToastItemRenderer.d.vue.ts +14 -0
- package/dist/runtime/internal/ToastItemRenderer.vue +54 -0
- package/dist/runtime/internal/ToastItemRenderer.vue.d.ts +14 -0
- package/dist/runtime/internal/combobox-select.d.ts +52 -0
- package/dist/runtime/{composables/use-combobox-select.js → internal/combobox-select.js} +26 -11
- package/dist/runtime/internal/programmatic-services.d.ts +71 -0
- package/dist/runtime/internal/programmatic-services.js +61 -0
- package/dist/runtime/prose.css +1 -1
- package/dist/runtime/structural.css +1 -0
- package/dist/runtime/table.d.ts +3 -0
- package/dist/runtime/table.js +1 -0
- package/dist/runtime/theme/accordion.d.ts +27 -0
- package/dist/runtime/theme/accordion.js +15 -6
- package/dist/runtime/theme/alert-dialog.js +5 -5
- package/dist/runtime/theme/alert.js +6 -15
- package/dist/runtime/theme/avatar-group.js +2 -2
- package/dist/runtime/theme/avatar.js +12 -18
- package/dist/runtime/theme/badge.d.ts +39 -9
- package/dist/runtime/theme/badge.js +11 -40
- package/dist/runtime/theme/breadcrumb.d.ts +29 -47
- package/dist/runtime/theme/breadcrumb.js +16 -5
- package/dist/runtime/theme/button.d.ts +45 -15
- package/dist/runtime/theme/button.js +10 -57
- package/dist/runtime/theme/callout.js +7 -7
- package/dist/runtime/theme/card.js +7 -7
- package/dist/runtime/theme/checkbox.d.ts +21 -84
- package/dist/runtime/theme/checkbox.js +15 -36
- package/dist/runtime/theme/chip.js +4 -22
- package/dist/runtime/theme/code-button.js +2 -2
- package/dist/runtime/theme/code-tree.d.ts +3 -3
- package/dist/runtime/theme/code-tree.js +4 -4
- package/dist/runtime/theme/collapsible.d.ts +27 -0
- package/dist/runtime/theme/collapsible.js +12 -3
- package/dist/runtime/theme/color-picker.d.ts +18 -54
- package/dist/runtime/theme/color-picker.js +19 -18
- package/dist/runtime/theme/command-palette.d.ts +6 -6
- package/dist/runtime/theme/command-palette.js +12 -10
- package/dist/runtime/theme/content-navigation.d.ts +27 -0
- package/dist/runtime/theme/content-navigation.js +14 -5
- package/dist/runtime/theme/content-surround.d.ts +27 -0
- package/dist/runtime/theme/content-surround.js +13 -4
- package/dist/runtime/theme/content-toc.d.ts +27 -0
- package/dist/runtime/theme/content-toc.js +14 -5
- package/dist/runtime/theme/context-menu.js +7 -7
- package/dist/runtime/theme/dashboard-navbar.d.ts +6 -6
- package/dist/runtime/theme/dashboard-navbar.js +2 -2
- package/dist/runtime/theme/dashboard-resize-handle.js +3 -3
- package/dist/runtime/theme/dashboard-sidebar.js +3 -3
- package/dist/runtime/theme/date-picker.js +10 -10
- package/dist/runtime/theme/drawer.js +9 -9
- package/dist/runtime/theme/dropdown.js +7 -7
- package/dist/runtime/theme/file-tree.d.ts +27 -0
- package/dist/runtime/theme/file-tree.js +12 -3
- package/dist/runtime/theme/file-upload.d.ts +18 -72
- package/dist/runtime/theme/file-upload.js +20 -19
- package/dist/runtime/theme/form-field.js +5 -5
- package/dist/runtime/theme/header.d.ts +3 -3
- package/dist/runtime/theme/header.js +1 -1
- package/dist/runtime/theme/icon.d.ts +30 -57
- package/dist/runtime/theme/icon.js +19 -9
- package/dist/runtime/theme/input-number.d.ts +21 -63
- package/dist/runtime/theme/input-number.js +12 -12
- package/dist/runtime/theme/input.d.ts +21 -63
- package/dist/runtime/theme/input.js +12 -12
- package/dist/runtime/theme/kbd.js +1 -1
- package/dist/runtime/theme/modal.js +4 -4
- package/dist/runtime/theme/navigation-menu.d.ts +2 -0
- package/dist/runtime/theme/navigation-menu.js +17 -28
- package/dist/runtime/theme/page-header.js +3 -3
- package/dist/runtime/theme/pagination.js +1 -1
- package/dist/runtime/theme/pin-input.d.ts +21 -63
- package/dist/runtime/theme/pin-input.js +13 -11
- package/dist/runtime/theme/popover.js +2 -2
- package/dist/runtime/theme/progress.d.ts +21 -84
- package/dist/runtime/theme/progress.js +12 -12
- package/dist/runtime/theme/prose.d.ts +35 -50
- package/dist/runtime/theme/prose.js +24 -11
- package/dist/runtime/theme/radio-group.d.ts +21 -84
- package/dist/runtime/theme/radio-group.js +16 -22
- package/dist/runtime/theme/rating.d.ts +21 -63
- package/dist/runtime/theme/rating.js +10 -10
- package/dist/runtime/theme/read-more.d.ts +27 -0
- package/dist/runtime/theme/read-more.js +13 -4
- package/dist/runtime/theme/scroll-area.d.ts +3 -3
- package/dist/runtime/theme/scroll-area.js +2 -2
- package/dist/runtime/theme/select.d.ts +21 -54
- package/dist/runtime/theme/select.js +32 -24
- package/dist/runtime/theme/separator.d.ts +18 -54
- package/dist/runtime/theme/separator.js +16 -12
- package/dist/runtime/theme/skeleton.js +4 -4
- package/dist/runtime/theme/slideover.js +5 -5
- package/dist/runtime/theme/slider.d.ts +21 -84
- package/dist/runtime/theme/slider.js +14 -14
- package/dist/runtime/theme/splitter-resize-handle.d.ts +27 -0
- package/dist/runtime/theme/splitter-resize-handle.js +11 -1
- package/dist/runtime/theme/stepper.d.ts +21 -84
- package/dist/runtime/theme/stepper.js +12 -33
- package/dist/runtime/theme/switch.d.ts +21 -84
- package/dist/runtime/theme/switch.js +13 -13
- package/dist/runtime/theme/table.d.ts +27 -0
- package/dist/runtime/theme/table.js +31 -21
- package/dist/runtime/theme/tabs.d.ts +27 -0
- package/dist/runtime/theme/tabs.js +17 -7
- package/dist/runtime/theme/textarea.d.ts +21 -63
- package/dist/runtime/theme/textarea.js +12 -12
- package/dist/runtime/theme/toast.d.ts +12 -48
- package/dist/runtime/theme/toast.js +9 -9
- package/dist/runtime/theme/toggle-group.js +5 -11
- package/dist/runtime/theme/toggle.js +2 -12
- package/dist/runtime/theme/tooltip.d.ts +3 -3
- package/dist/runtime/theme/tooltip.js +3 -3
- package/dist/runtime/theme/tree.d.ts +27 -0
- package/dist/runtime/theme/tree.js +13 -3
- package/dist/runtime/theme-api.d.ts +15 -0
- package/dist/runtime/theme-api.js +12 -0
- package/dist/runtime/theme-config.d.ts +470 -0
- package/dist/runtime/theme-config.js +0 -0
- package/dist/runtime/theme.css +1 -1
- package/dist/runtime/types/app-config.d.ts +11 -8
- package/dist/runtime/types/index.d.ts +19 -1
- package/dist/runtime/utils/app-scoped-state.d.ts +2 -0
- package/dist/runtime/utils/app-scoped-state.js +13 -0
- package/dist/runtime/utils/autocomplete-contracts.d.ts +24 -0
- package/dist/runtime/utils/autocomplete-contracts.js +0 -0
- package/dist/runtime/utils/color-registry.d.ts +62 -0
- package/dist/runtime/utils/color-registry.js +191 -0
- package/dist/runtime/utils/dtcg-colors.d.ts +25 -0
- package/dist/runtime/utils/dtcg-colors.js +40 -0
- package/dist/runtime/utils/file-icons.d.ts +8 -0
- package/dist/runtime/utils/file-icons.js +131 -0
- package/dist/runtime/utils/functional-tokens.d.ts +26 -0
- package/dist/runtime/utils/functional-tokens.js +54 -0
- package/dist/runtime/utils/icons.d.ts +3 -0
- package/dist/runtime/utils/icons.js +4 -0
- package/dist/runtime/utils/injection-keys.d.ts +12 -3
- package/dist/runtime/utils/native-input.d.ts +5 -0
- package/dist/runtime/utils/native-input.js +32 -0
- package/dist/runtime/utils/navigation-menu.d.ts +3 -0
- package/dist/runtime/utils/programmatic-theme.d.ts +17 -0
- package/dist/runtime/utils/programmatic-theme.js +59 -0
- package/dist/runtime/utils/registered-colors.d.ts +3 -0
- package/dist/runtime/utils/registered-colors.js +14 -0
- package/dist/runtime/utils/seed-colors.d.ts +19 -0
- package/dist/runtime/utils/seed-colors.js +207 -0
- package/dist/runtime/utils/select-contracts.d.ts +101 -0
- package/dist/runtime/utils/select-contracts.js +0 -0
- package/dist/runtime/utils/table-contracts.d.ts +60 -0
- package/dist/runtime/utils/table-contracts.js +0 -0
- package/dist/runtime/utils/ui.d.ts +26 -4
- package/dist/runtime/utils/ui.js +38 -5
- package/dist/tokens/default-colors.tokens.json +879 -0
- package/package.json +83 -16
- package/dist/runtime/composables/use-combobox-select.d.ts +0 -45
|
@@ -1,14 +1,15 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { DialogClose, DialogContent, DialogDescription, DialogOverlay, DialogPortal, DialogRoot, DialogTitle, DialogTrigger, VisuallyHidden } from "reka-ui";
|
|
3
|
-
import { computed, ref, useSlots, watch, watchEffect } from "vue";
|
|
3
|
+
import { computed, getCurrentInstance, ref, useSlots, watch, watchEffect } from "vue";
|
|
4
4
|
import { useIcons } from "../composables/use-icons";
|
|
5
5
|
import { useMessages } from "../composables/use-messages";
|
|
6
6
|
import { slideoverTheme } from "../theme/slideover";
|
|
7
|
-
import { resolveSlot, useComponentTheme } from "../utils/ui";
|
|
7
|
+
import { resolveSlot, useComponentTheme, useThemeBindings } from "../utils/ui";
|
|
8
8
|
import Button from "./Button.vue";
|
|
9
9
|
import Icon from "./Icon.vue";
|
|
10
10
|
const props = defineProps({
|
|
11
|
-
open: { type: Boolean, required: false },
|
|
11
|
+
open: { type: Boolean, required: false, default: void 0 },
|
|
12
|
+
defaultOpen: { type: Boolean, required: false },
|
|
12
13
|
title: { type: String, required: false },
|
|
13
14
|
description: { type: String, required: false },
|
|
14
15
|
side: { type: String, required: false, default: "right" },
|
|
@@ -42,13 +43,15 @@ function onContentAnimationEnd(event) {
|
|
|
42
43
|
if (event.target.getAttribute("data-state") === "closed")
|
|
43
44
|
emit("afterLeave");
|
|
44
45
|
}
|
|
45
|
-
const
|
|
46
|
+
const isControlled = Object.hasOwn(getCurrentInstance()?.vnode.props ?? {}, "open");
|
|
47
|
+
const internalOpen = ref(props.open ?? props.defaultOpen ?? false);
|
|
46
48
|
watch(() => props.open, (value) => {
|
|
47
|
-
if (
|
|
48
|
-
internalOpen.value = value;
|
|
49
|
+
if (isControlled)
|
|
50
|
+
internalOpen.value = value ?? false;
|
|
49
51
|
});
|
|
50
52
|
function onUpdateOpen(value) {
|
|
51
|
-
|
|
53
|
+
if (!isControlled)
|
|
54
|
+
internalOpen.value = value;
|
|
52
55
|
emit("update:open", value);
|
|
53
56
|
}
|
|
54
57
|
watch(internalOpen, (value) => {
|
|
@@ -65,6 +68,7 @@ if (import.meta.dev) {
|
|
|
65
68
|
const icons = useIcons();
|
|
66
69
|
const messages = useMessages();
|
|
67
70
|
const theme = useComponentTheme("slideover", slideoverTheme);
|
|
71
|
+
const themeBindings = useThemeBindings();
|
|
68
72
|
const ui = computed(() => theme.value({ side: props.side, inset: props.inset, transition: props.transition }));
|
|
69
73
|
const overlayProps = computed(() => resolveSlot(ui.value.overlay, props.ui?.overlay));
|
|
70
74
|
const contentProps = computed(() => resolveSlot(ui.value.content, props.ui?.content));
|
|
@@ -82,8 +86,17 @@ const footerProps = computed(() => resolveSlot(ui.value.footer, props.ui?.footer
|
|
|
82
86
|
<slot />
|
|
83
87
|
</DialogTrigger>
|
|
84
88
|
<DialogPortal>
|
|
85
|
-
<DialogOverlay
|
|
89
|
+
<DialogOverlay
|
|
90
|
+
v-if="overlay"
|
|
91
|
+
:data-selaras-theme="themeBindings['data-selaras-theme']"
|
|
92
|
+
:data-selaras-mode="themeBindings['data-selaras-mode']"
|
|
93
|
+
:style="themeBindings.style"
|
|
94
|
+
v-bind="overlayProps"
|
|
95
|
+
/>
|
|
86
96
|
<DialogContent
|
|
97
|
+
:data-selaras-theme="themeBindings['data-selaras-theme']"
|
|
98
|
+
:data-selaras-mode="themeBindings['data-selaras-mode']"
|
|
99
|
+
:style="themeBindings.style"
|
|
87
100
|
v-bind="contentProps"
|
|
88
101
|
@escape-key-down="onEscapeKeyDown"
|
|
89
102
|
@pointer-down-outside="onPointerDownOutside"
|
|
@@ -2,6 +2,8 @@ import type { SlideoverThemeSlots } from '../theme/slideover.js';
|
|
|
2
2
|
import type { UiProp } from '../utils/ui.js';
|
|
3
3
|
export interface SlideoverProps {
|
|
4
4
|
open?: boolean;
|
|
5
|
+
/** Initial visibility for an uncontrolled slideover. Supplying `open` makes the parent authoritative. */
|
|
6
|
+
defaultOpen?: boolean;
|
|
5
7
|
title?: string;
|
|
6
8
|
description?: string;
|
|
7
9
|
/** Which edge the panel slides in from. */
|
|
@@ -1,27 +1,34 @@
|
|
|
1
1
|
<script setup>
|
|
2
|
-
import {
|
|
2
|
+
import { onUnmounted } from "vue";
|
|
3
|
+
import { useSlideoverService } from "../internal/programmatic-services";
|
|
4
|
+
import ProgrammaticTheme from "../internal/ProgrammaticTheme.vue";
|
|
3
5
|
import Slideover from "./Slideover.vue";
|
|
4
|
-
const { slideovers, close, remove } =
|
|
6
|
+
const { instances: slideovers, close, remove, dispose } = useSlideoverService();
|
|
7
|
+
onUnmounted(dispose);
|
|
5
8
|
</script>
|
|
6
9
|
|
|
7
10
|
<template>
|
|
8
|
-
<
|
|
11
|
+
<ProgrammaticTheme
|
|
9
12
|
v-for="instance in slideovers"
|
|
10
13
|
:key="instance.id"
|
|
11
|
-
:
|
|
12
|
-
:title="instance.title"
|
|
13
|
-
:description="instance.description"
|
|
14
|
-
:side="instance.side"
|
|
15
|
-
:inset="instance.inset"
|
|
16
|
-
:dismissible="instance.dismissible"
|
|
17
|
-
:modal="instance.modal"
|
|
18
|
-
:overlay="instance.overlay"
|
|
19
|
-
:transition="instance.transition"
|
|
20
|
-
@update:open="(open) => !open && close(instance.id)"
|
|
21
|
-
@after-leave="remove(instance.id)"
|
|
14
|
+
:snapshot="instance._theme"
|
|
22
15
|
>
|
|
23
|
-
<
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
16
|
+
<Slideover
|
|
17
|
+
:open="instance.isOpen"
|
|
18
|
+
:title="instance.title"
|
|
19
|
+
:description="instance.description"
|
|
20
|
+
:side="instance.side"
|
|
21
|
+
:inset="instance.inset"
|
|
22
|
+
:dismissible="instance.dismissible"
|
|
23
|
+
:modal="instance.modal"
|
|
24
|
+
:overlay="instance.overlay"
|
|
25
|
+
:transition="instance.transition"
|
|
26
|
+
@update:open="(open) => !open && close(instance.id)"
|
|
27
|
+
@after-leave="remove(instance.id)"
|
|
28
|
+
>
|
|
29
|
+
<template #content>
|
|
30
|
+
<component :is="instance.component" v-bind="instance.props" @close="(value) => close(instance.id, value)" />
|
|
31
|
+
</template>
|
|
32
|
+
</Slideover>
|
|
33
|
+
</ProgrammaticTheme>
|
|
27
34
|
</template>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { SliderThemeSlots } from '../theme/slider.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { sliderTheme } from '../theme/slider.js';
|
|
5
6
|
type SliderVariants = VariantProps<typeof sliderTheme>;
|
|
@@ -19,7 +20,7 @@ export interface SliderProps {
|
|
|
19
20
|
/** Shows a tick mark at every step along the track - own addition, Reka's primitive has no tick/mark concept of its own. */
|
|
20
21
|
showTicks?: boolean;
|
|
21
22
|
size?: SliderVariants['size'];
|
|
22
|
-
color?:
|
|
23
|
+
color?: ColorRole;
|
|
23
24
|
/** @default 'circle' */
|
|
24
25
|
thumbVariant?: SliderVariants['thumbVariant'];
|
|
25
26
|
/** Shows the current value in a tooltip on hover/focus of each thumb - reuses Tooltip, not a bespoke floating label. */
|
|
@@ -4,6 +4,7 @@ import { computed, ref, watch } from "vue";
|
|
|
4
4
|
import { useIcons } from "../composables/use-icons";
|
|
5
5
|
import { useMessages } from "../composables/use-messages";
|
|
6
6
|
import { sliderTheme } from "../theme/slider";
|
|
7
|
+
import { resolveRegisteredColorRole } from "../utils/registered-colors";
|
|
7
8
|
import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
|
|
8
9
|
import Button from "./Button.vue";
|
|
9
10
|
import Tooltip from "./Tooltip.vue";
|
|
@@ -83,9 +84,10 @@ const ticks = computed(() => {
|
|
|
83
84
|
});
|
|
84
85
|
});
|
|
85
86
|
const theme = useComponentTheme("slider", sliderTheme);
|
|
87
|
+
const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
|
|
86
88
|
const ui = computed(() => theme.value({
|
|
87
89
|
size: props.size,
|
|
88
|
-
color:
|
|
90
|
+
color: effectiveColor.value,
|
|
89
91
|
orientation: props.orientation,
|
|
90
92
|
thumbVariant: props.thumbVariant
|
|
91
93
|
}));
|
|
@@ -109,6 +111,7 @@ const endProps = computed(() => resolveSlot(ui.value.end, props.ui?.end));
|
|
|
109
111
|
:orientation="orientation"
|
|
110
112
|
:inverted="inverted"
|
|
111
113
|
:name="name"
|
|
114
|
+
:data-selaras-color="effectiveColor"
|
|
112
115
|
v-bind="rootProps"
|
|
113
116
|
@update:model-value="onUpdateModelValue"
|
|
114
117
|
@value-commit="onValueCommit"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { SliderThemeSlots } from '../theme/slider.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { sliderTheme } from '../theme/slider.js';
|
|
5
6
|
type SliderVariants = VariantProps<typeof sliderTheme>;
|
|
@@ -19,7 +20,7 @@ export interface SliderProps {
|
|
|
19
20
|
/** Shows a tick mark at every step along the track - own addition, Reka's primitive has no tick/mark concept of its own. */
|
|
20
21
|
showTicks?: boolean;
|
|
21
22
|
size?: SliderVariants['size'];
|
|
22
|
-
color?:
|
|
23
|
+
color?: ColorRole;
|
|
23
24
|
/** @default 'circle' */
|
|
24
25
|
thumbVariant?: SliderVariants['thumbVariant'];
|
|
25
26
|
/** Shows the current value in a tooltip on hover/focus of each thumb - reuses Tooltip, not a bespoke floating label. */
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { SplitterResizeHandleThemeSlots } from '../theme/splitter-resize-handle.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { splitterResizeHandleTheme } from '../theme/splitter-resize-handle.js';
|
|
5
6
|
type SplitterResizeHandleVariants = VariantProps<typeof splitterResizeHandleTheme>;
|
|
6
7
|
export interface SplitterResizeHandleProps {
|
|
7
8
|
/** Match the parent Splitter's own `direction` - this isn't read from it automatically. @default 'horizontal' */
|
|
8
9
|
direction?: SplitterResizeHandleVariants['direction'];
|
|
10
|
+
/** The hover and drag accent. @default 'primary' */
|
|
11
|
+
color?: ColorRole;
|
|
9
12
|
disabled?: boolean;
|
|
10
13
|
ui?: UiProp<SplitterResizeHandleThemeSlots>;
|
|
11
14
|
}
|
|
@@ -2,21 +2,24 @@
|
|
|
2
2
|
import { SplitterResizeHandle as RekaSplitterResizeHandle } from "reka-ui";
|
|
3
3
|
import { computed } from "vue";
|
|
4
4
|
import { splitterResizeHandleTheme } from "../theme/splitter-resize-handle";
|
|
5
|
+
import { resolveRegisteredColorRole } from "../utils/registered-colors";
|
|
5
6
|
import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
|
|
6
7
|
defineOptions({ inheritAttrs: false });
|
|
7
8
|
const props = defineProps({
|
|
8
9
|
direction: { type: null, required: false, default: "horizontal" },
|
|
10
|
+
color: { type: null, required: false },
|
|
9
11
|
disabled: { type: Boolean, required: false },
|
|
10
12
|
ui: { type: Object, required: false }
|
|
11
13
|
});
|
|
12
14
|
const theme = useComponentTheme("splitterResizeHandle", splitterResizeHandleTheme);
|
|
13
|
-
const
|
|
15
|
+
const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
|
|
16
|
+
const ui = computed(() => theme.value({ direction: props.direction, color: effectiveColor.value }));
|
|
14
17
|
const rootProps = useRootProps(() => ui.value.root, () => props.ui?.root);
|
|
15
18
|
const lineProps = computed(() => resolveSlot(ui.value.line, props.ui?.line));
|
|
16
19
|
</script>
|
|
17
20
|
|
|
18
21
|
<template>
|
|
19
|
-
<RekaSplitterResizeHandle :disabled="disabled" v-bind="rootProps">
|
|
22
|
+
<RekaSplitterResizeHandle :disabled="disabled" :data-selaras-color="effectiveColor" v-bind="rootProps">
|
|
20
23
|
<div v-bind="lineProps" />
|
|
21
24
|
</RekaSplitterResizeHandle>
|
|
22
25
|
</template>
|
|
@@ -1,11 +1,14 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { SplitterResizeHandleThemeSlots } from '../theme/splitter-resize-handle.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { splitterResizeHandleTheme } from '../theme/splitter-resize-handle.js';
|
|
5
6
|
type SplitterResizeHandleVariants = VariantProps<typeof splitterResizeHandleTheme>;
|
|
6
7
|
export interface SplitterResizeHandleProps {
|
|
7
8
|
/** Match the parent Splitter's own `direction` - this isn't read from it automatically. @default 'horizontal' */
|
|
8
9
|
direction?: SplitterResizeHandleVariants['direction'];
|
|
10
|
+
/** The hover and drag accent. @default 'primary' */
|
|
11
|
+
color?: ColorRole;
|
|
9
12
|
disabled?: boolean;
|
|
10
13
|
ui?: UiProp<SplitterResizeHandleThemeSlots>;
|
|
11
14
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { StepperThemeSlots } from '../theme/stepper.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { stepperTheme } from '../theme/stepper.js';
|
|
5
6
|
type StepperVariants = VariantProps<typeof stepperTheme>;
|
|
@@ -19,7 +20,7 @@ export interface StepperProps {
|
|
|
19
20
|
linear?: boolean;
|
|
20
21
|
orientation?: StepperVariants['orientation'];
|
|
21
22
|
size?: StepperVariants['size'];
|
|
22
|
-
color?:
|
|
23
|
+
color?: ColorRole;
|
|
23
24
|
ui?: UiProp<StepperThemeSlots>;
|
|
24
25
|
}
|
|
25
26
|
export interface StepperEmits {
|
|
@@ -3,6 +3,7 @@ import { StepperDescription, StepperIndicator, StepperItem, StepperRoot, Stepper
|
|
|
3
3
|
import { computed } from "vue";
|
|
4
4
|
import { useIcons } from "../composables/use-icons";
|
|
5
5
|
import { stepperTheme } from "../theme/stepper";
|
|
6
|
+
import { resolveRegisteredColorRole } from "../utils/registered-colors";
|
|
6
7
|
import { resolveSlot, useComponentTheme, useRootProps } from "../utils/ui";
|
|
7
8
|
import Icon from "./Icon.vue";
|
|
8
9
|
defineOptions({ inheritAttrs: false });
|
|
@@ -20,10 +21,11 @@ const emit = defineEmits(["update:modelValue"]);
|
|
|
20
21
|
defineSlots();
|
|
21
22
|
const icons = useIcons();
|
|
22
23
|
const theme = useComponentTheme("stepper", stepperTheme);
|
|
24
|
+
const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
|
|
23
25
|
const ui = computed(() => theme.value({
|
|
24
26
|
orientation: props.orientation,
|
|
25
27
|
size: props.size,
|
|
26
|
-
color:
|
|
28
|
+
color: effectiveColor.value
|
|
27
29
|
}));
|
|
28
30
|
const rootProps = useRootProps(() => ui.value.root, () => props.ui?.root);
|
|
29
31
|
const itemProps = computed(() => resolveSlot(ui.value.item, props.ui?.item));
|
|
@@ -43,6 +45,7 @@ const separatorProps = computed(() => resolveSlot(ui.value.separator, props.ui?.
|
|
|
43
45
|
:default-value="defaultValue"
|
|
44
46
|
:linear="linear"
|
|
45
47
|
:orientation="orientation"
|
|
48
|
+
:data-selaras-color="effectiveColor"
|
|
46
49
|
v-bind="rootProps"
|
|
47
50
|
@update:model-value="(value) => emit('update:modelValue', value)"
|
|
48
51
|
>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { StepperThemeSlots } from '../theme/stepper.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { stepperTheme } from '../theme/stepper.js';
|
|
5
6
|
type StepperVariants = VariantProps<typeof stepperTheme>;
|
|
@@ -19,7 +20,7 @@ export interface StepperProps {
|
|
|
19
20
|
linear?: boolean;
|
|
20
21
|
orientation?: StepperVariants['orientation'];
|
|
21
22
|
size?: StepperVariants['size'];
|
|
22
|
-
color?:
|
|
23
|
+
color?: ColorRole;
|
|
23
24
|
ui?: UiProp<StepperThemeSlots>;
|
|
24
25
|
}
|
|
25
26
|
export interface StepperEmits {
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { SwitchThemeSlots } from '../theme/switch.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { switchTheme } from '../theme/switch.js';
|
|
5
6
|
type SwitchVariants = VariantProps<typeof switchTheme>;
|
|
@@ -14,7 +15,7 @@ export interface SwitchProps {
|
|
|
14
15
|
invalid?: boolean;
|
|
15
16
|
required?: boolean;
|
|
16
17
|
size?: SwitchVariants['size'];
|
|
17
|
-
color?:
|
|
18
|
+
color?: ColorRole;
|
|
18
19
|
/** Shows a spinner in the thumb. Doesn't imply `disabled` - combine `:loading="x" :disabled="x"` if a busy switch shouldn't be touchable. Takes precedence over checkedIcon/uncheckedIcon. */
|
|
19
20
|
loading?: boolean;
|
|
20
21
|
/** Icon shown in the thumb when on. */
|
|
@@ -4,6 +4,7 @@ import { computed } from "vue";
|
|
|
4
4
|
import { useFormField } from "../composables/use-form-field";
|
|
5
5
|
import { useIcons } from "../composables/use-icons";
|
|
6
6
|
import { switchTheme } from "../theme/switch";
|
|
7
|
+
import { resolveRegisteredColorRole } from "../utils/registered-colors";
|
|
7
8
|
import { applyClassPrefix, resolveSlot, useComponentTheme, useRootProps, withFallthroughClass } from "../utils/ui";
|
|
8
9
|
import Icon from "./Icon.vue";
|
|
9
10
|
defineOptions({ inheritAttrs: false });
|
|
@@ -30,7 +31,8 @@ const switchInvalid = computed(() => props.invalid || (field?.invalid.value ?? f
|
|
|
30
31
|
const effectiveSize = computed(() => props.size ?? field?.size ?? "md");
|
|
31
32
|
const describedBy = computed(() => field?.describedBy.value);
|
|
32
33
|
const theme = useComponentTheme("switch", switchTheme);
|
|
33
|
-
const
|
|
34
|
+
const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
|
|
35
|
+
const ui = computed(() => theme.value({ invalid: switchInvalid.value, size: effectiveSize.value, color: effectiveColor.value }));
|
|
34
36
|
const rootProps = useRootProps(() => ui.value.root, () => withFallthroughClass(props.description ? "items-start" : void 0, props.ui?.root));
|
|
35
37
|
const trackProps = computed(() => resolveSlot(ui.value.track, withFallthroughClass(props.description ? "mt-0.5" : void 0, props.ui?.track)));
|
|
36
38
|
const thumbProps = computed(() => resolveSlot(ui.value.thumb, props.ui?.thumb));
|
|
@@ -42,7 +44,7 @@ const icons = useIcons();
|
|
|
42
44
|
</script>
|
|
43
45
|
|
|
44
46
|
<template>
|
|
45
|
-
<label v-bind="rootProps">
|
|
47
|
+
<label :data-selaras-color="switchInvalid ? 'danger' : effectiveColor" v-bind="rootProps">
|
|
46
48
|
<SwitchRoot
|
|
47
49
|
:id="switchId"
|
|
48
50
|
:model-value="modelValue"
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { VariantProps } from 'tailwind-variants';
|
|
2
2
|
import type { SwitchThemeSlots } from '../theme/switch.js';
|
|
3
|
+
import type { ColorRole } from '../utils/color-registry.js';
|
|
3
4
|
import type { UiProp } from '../utils/ui.js';
|
|
4
5
|
import { switchTheme } from '../theme/switch.js';
|
|
5
6
|
type SwitchVariants = VariantProps<typeof switchTheme>;
|
|
@@ -14,7 +15,7 @@ export interface SwitchProps {
|
|
|
14
15
|
invalid?: boolean;
|
|
15
16
|
required?: boolean;
|
|
16
17
|
size?: SwitchVariants['size'];
|
|
17
|
-
color?:
|
|
18
|
+
color?: ColorRole;
|
|
18
19
|
/** Shows a spinner in the thumb. Doesn't imply `disabled` - combine `:loading="x" :disabled="x"` if a busy switch shouldn't be touchable. Takes precedence over checkedIcon/uncheckedIcon. */
|
|
19
20
|
loading?: boolean;
|
|
20
21
|
/** Icon shown in the thumb when on. */
|
|
@@ -1,83 +1,31 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
import type {
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
estimateSize?: number;
|
|
25
|
-
overscan?: number;
|
|
26
|
-
};
|
|
27
|
-
/** Opts out of the local sorted/filtered/paginated row models - set when `data` is already sorted/filtered/paginated server-side, so this table doesn't redundantly (and incorrectly) reprocess an already-server-processed slice. `sorting`/`globalFilter`/`pageIndex` still drive the UI and still emit their `update:*` events the same way - only the *local row model* is skipped, not the state itself. `manualPagination` also suppresses the built-in Pagination UI entirely (there's no way to know the real page count from a server-paginated slice) - bring your own `SPagination`, bound to your own server metadata, the same way this table already expects you to bring your own search input for `globalFilter`. */
|
|
28
|
-
manualSorting?: boolean;
|
|
29
|
-
manualFiltering?: boolean;
|
|
30
|
-
manualPagination?: boolean;
|
|
31
|
-
/** Adds a class to a body row based on its own data - e.g. highlighting a flagged row. Called per row, not per render, so keep it cheap. */
|
|
32
|
-
rowClass?: (row: unknown) => string | undefined;
|
|
33
|
-
/** Same as `rowClass`, for inline styles. */
|
|
34
|
-
rowStyle?: (row: unknown) => Record<string, string> | undefined;
|
|
35
|
-
ui?: UiProp<TableThemeSlots>;
|
|
36
|
-
}
|
|
37
|
-
export interface TableEmits {
|
|
38
|
-
'update:sorting': [value: any[]];
|
|
39
|
-
'update:rowSelection': [value: Record<string, boolean>];
|
|
40
|
-
'update:globalFilter': [value: string];
|
|
41
|
-
'update:pageIndex': [value: number];
|
|
42
|
-
'update:expanded': [value: any];
|
|
43
|
-
'update:columnVisibility': [value: Record<string, boolean>];
|
|
44
|
-
'rowClick': [row: unknown, event: MouseEvent];
|
|
45
|
-
'rowContextmenu': [row: unknown, event: MouseEvent];
|
|
46
|
-
}
|
|
47
|
-
declare var __VLS_44: {
|
|
48
|
-
row: import("@tanstack/vue-table").RowData;
|
|
49
|
-
}, __VLS_51: {};
|
|
50
|
-
type __VLS_Slots = {} & {
|
|
51
|
-
expanded?: (props: typeof __VLS_44) => any;
|
|
52
|
-
} & {
|
|
53
|
-
empty?: (props: typeof __VLS_51) => any;
|
|
1
|
+
import type { RowData } from '@tanstack/vue-table';
|
|
2
|
+
import type { TableProps, TableSlots } from '../utils/table-contracts.js';
|
|
3
|
+
declare const __VLS_export: <TData extends RowData = RowData>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
4
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<TableProps<TData> & {
|
|
5
|
+
"onUpdate:sorting"?: ((value: import("@tanstack/vue-table").SortingState) => any) | undefined;
|
|
6
|
+
"onUpdate:rowSelection"?: ((value: import("@tanstack/vue-table").RowSelectionState) => any) | undefined;
|
|
7
|
+
"onUpdate:globalFilter"?: ((value: string) => any) | undefined;
|
|
8
|
+
"onUpdate:pageIndex"?: ((value: number) => any) | undefined;
|
|
9
|
+
"onUpdate:expanded"?: ((value: import("@tanstack/vue-table").ExpandedState) => any) | undefined;
|
|
10
|
+
"onUpdate:columnVisibility"?: ((value: import("@tanstack/vue-table").ColumnVisibilityState) => any) | undefined;
|
|
11
|
+
onRowClick?: ((row: TData, event: MouseEvent) => any) | undefined;
|
|
12
|
+
onRowContextmenu?: ((row: TData, event: MouseEvent) => any) | undefined;
|
|
13
|
+
}> & (typeof globalThis extends {
|
|
14
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
15
|
+
} ? P : {});
|
|
16
|
+
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
17
|
+
exportCsv: (filename?: string) => void;
|
|
18
|
+
}>) => void;
|
|
19
|
+
attrs: any;
|
|
20
|
+
slots: TableSlots<TData>;
|
|
21
|
+
emit: ((evt: "update:sorting", value: import("@tanstack/vue-table").SortingState) => void) & ((evt: "update:rowSelection", value: import("@tanstack/vue-table").RowSelectionState) => void) & ((evt: "update:globalFilter", value: string) => void) & ((evt: "update:pageIndex", value: number) => void) & ((evt: "update:expanded", value: import("@tanstack/vue-table").ExpandedState) => void) & ((evt: "update:columnVisibility", value: import("@tanstack/vue-table").ColumnVisibilityState) => void) & ((evt: "rowClick", row: TData, event: MouseEvent) => void) & ((evt: "rowContextmenu", row: TData, event: MouseEvent) => void);
|
|
22
|
+
}>) => import("vue").VNode & {
|
|
23
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
54
24
|
};
|
|
55
|
-
declare const __VLS_base: import("vue").DefineComponent<TableProps, {
|
|
56
|
-
exportCsv: (filename?: string) => void;
|
|
57
|
-
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
58
|
-
"update:sorting": (value: any[]) => any;
|
|
59
|
-
"update:rowSelection": (value: Record<string, boolean>) => any;
|
|
60
|
-
"update:globalFilter": (value: string) => any;
|
|
61
|
-
"update:pageIndex": (value: number) => any;
|
|
62
|
-
"update:expanded": (value: any) => any;
|
|
63
|
-
"update:columnVisibility": (value: Record<string, boolean>) => any;
|
|
64
|
-
rowClick: (row: unknown, event: MouseEvent) => any;
|
|
65
|
-
rowContextmenu: (row: unknown, event: MouseEvent) => any;
|
|
66
|
-
}, string, import("vue").PublicProps, Readonly<TableProps> & Readonly<{
|
|
67
|
-
"onUpdate:sorting"?: ((value: any[]) => any) | undefined;
|
|
68
|
-
"onUpdate:rowSelection"?: ((value: Record<string, boolean>) => any) | undefined;
|
|
69
|
-
"onUpdate:globalFilter"?: ((value: string) => any) | undefined;
|
|
70
|
-
"onUpdate:pageIndex"?: ((value: number) => any) | undefined;
|
|
71
|
-
"onUpdate:expanded"?: ((value: any) => any) | undefined;
|
|
72
|
-
"onUpdate:columnVisibility"?: ((value: Record<string, boolean>) => any) | undefined;
|
|
73
|
-
onRowClick?: ((row: unknown, event: MouseEvent) => any) | undefined;
|
|
74
|
-
onRowContextmenu?: ((row: unknown, event: MouseEvent) => any) | undefined;
|
|
75
|
-
}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
76
|
-
declare const __VLS_export: __VLS_WithSlots<typeof __VLS_base, __VLS_Slots>;
|
|
77
25
|
declare const _default: typeof __VLS_export;
|
|
78
26
|
export default _default;
|
|
79
|
-
type
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
};
|
|
27
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
28
|
+
[K in keyof T]: T[K];
|
|
29
|
+
} : {
|
|
30
|
+
[K in keyof T as K]: T[K];
|
|
31
|
+
}) & {};
|
|
@@ -1,11 +1,12 @@
|
|
|
1
1
|
<script setup>
|
|
2
2
|
import { FlexRender } from "@tanstack/vue-table";
|
|
3
3
|
import { useVirtualizer } from "@tanstack/vue-virtual";
|
|
4
|
-
import { computed, getCurrentInstance, h, nextTick, onMounted, onUnmounted, ref,
|
|
4
|
+
import { computed, getCurrentInstance, h, nextTick, onMounted, onUnmounted, ref, watch, watchEffect } from "vue";
|
|
5
5
|
import { useIcons } from "../composables/use-icons";
|
|
6
6
|
import { useMessages } from "../composables/use-messages";
|
|
7
7
|
import { useTable } from "../composables/use-table";
|
|
8
8
|
import { tableTheme } from "../theme/table";
|
|
9
|
+
import { resolveRegisteredColorRole } from "../utils/registered-colors";
|
|
9
10
|
import { collectColumnPinning, convertChildrenToColumns } from "../utils/table-columns";
|
|
10
11
|
import { exportTableToCsv } from "../utils/table-export";
|
|
11
12
|
import { applyClassPrefix, resolveSlot, useComponentTheme, useRootProps, withFallthroughClass } from "../utils/ui";
|
|
@@ -21,33 +22,42 @@ const props = defineProps({
|
|
|
21
22
|
selectable: { type: Boolean, required: false },
|
|
22
23
|
pageSize: { type: Number, required: false },
|
|
23
24
|
loading: { type: Boolean, required: false },
|
|
24
|
-
sorting: { type:
|
|
25
|
-
defaultSorting: { type:
|
|
26
|
-
rowSelection: { type:
|
|
25
|
+
sorting: { type: null, required: false },
|
|
26
|
+
defaultSorting: { type: null, required: false },
|
|
27
|
+
rowSelection: { type: null, required: false },
|
|
27
28
|
globalFilter: { type: String, required: false },
|
|
28
29
|
pageIndex: { type: Number, required: false },
|
|
29
30
|
size: { type: String, required: false, default: "md" },
|
|
31
|
+
color: { type: null, required: false },
|
|
30
32
|
gridlines: { type: Boolean, required: false },
|
|
31
33
|
striped: { type: Boolean, required: false },
|
|
32
34
|
expandable: { type: Boolean, required: false },
|
|
33
35
|
expanded: { type: null, required: false },
|
|
34
|
-
columnVisibility: { type:
|
|
36
|
+
columnVisibility: { type: null, required: false },
|
|
35
37
|
columnToggle: { type: Boolean, required: false },
|
|
36
38
|
scrollHeight: { type: String, required: false },
|
|
37
39
|
virtualize: { type: [Boolean, Object], required: false },
|
|
38
40
|
manualSorting: { type: Boolean, required: false },
|
|
39
41
|
manualFiltering: { type: Boolean, required: false },
|
|
40
42
|
manualPagination: { type: Boolean, required: false },
|
|
43
|
+
getRowId: { type: Function, required: false },
|
|
41
44
|
rowClass: { type: Function, required: false },
|
|
42
45
|
rowStyle: { type: Function, required: false },
|
|
43
46
|
ui: { type: Object, required: false }
|
|
44
47
|
});
|
|
45
48
|
const emit = defineEmits(["update:sorting", "update:rowSelection", "update:globalFilter", "update:pageIndex", "update:expanded", "update:columnVisibility", "rowClick", "rowContextmenu"]);
|
|
46
|
-
const slots =
|
|
49
|
+
const slots = defineSlots();
|
|
47
50
|
const icons = useIcons();
|
|
48
51
|
const messages = useMessages();
|
|
49
52
|
const theme = useComponentTheme("table", tableTheme);
|
|
50
|
-
const
|
|
53
|
+
const effectiveColor = computed(() => resolveRegisteredColorRole(props.color ?? "primary", "primary"));
|
|
54
|
+
const ui = computed(() => theme.value({
|
|
55
|
+
size: props.size,
|
|
56
|
+
color: effectiveColor.value,
|
|
57
|
+
gridlines: props.gridlines,
|
|
58
|
+
striped: props.striped,
|
|
59
|
+
scrollable: !!props.scrollHeight
|
|
60
|
+
}));
|
|
51
61
|
const selectColumn = {
|
|
52
62
|
id: "__select__",
|
|
53
63
|
header: ({ table: table2 }) => h(Checkbox, {
|
|
@@ -64,13 +74,15 @@ const selectColumn = {
|
|
|
64
74
|
};
|
|
65
75
|
const expandColumn = {
|
|
66
76
|
id: "__expand__",
|
|
67
|
-
|
|
77
|
+
// An empty-string component root has no SSR text node to hydrate. Render
|
|
78
|
+
// no content explicitly so Vue preserves a stable comment anchor instead.
|
|
79
|
+
header: () => null,
|
|
68
80
|
cell: ({ row }) => h("button", {
|
|
69
81
|
"type": "button",
|
|
70
|
-
|
|
82
|
+
...resolveSlot(ui.value.expandButton, props.ui?.expandButton),
|
|
71
83
|
"aria-label": row.getIsExpanded() ? messages.value.collapseRow : messages.value.expandRow,
|
|
72
84
|
"onClick": () => row.toggleExpanded()
|
|
73
|
-
}, [h(Icon, { "name": icons.value.chevronRight,
|
|
85
|
+
}, [h(Icon, { "name": icons.value.chevronRight, ...resolveSlot(ui.value.expandChevron, props.ui?.expandChevron), "data-expanded": row.getIsExpanded() || void 0 })]),
|
|
74
86
|
enableSorting: false,
|
|
75
87
|
enableColumnFilter: false
|
|
76
88
|
};
|
|
@@ -87,7 +99,7 @@ if (import.meta.dev) {
|
|
|
87
99
|
if (!firstRow)
|
|
88
100
|
return;
|
|
89
101
|
for (const column of columns.value) {
|
|
90
|
-
if (column.accessorKey && !(column.accessorKey in firstRow))
|
|
102
|
+
if ("accessorKey" in column && typeof column.accessorKey === "string" && !(column.accessorKey in firstRow))
|
|
91
103
|
console.warn(`[SColumn] field "${column.accessorKey}" was not found on the first row of data.`);
|
|
92
104
|
}
|
|
93
105
|
});
|
|
@@ -117,7 +129,7 @@ function onRowContextmenu(rowOriginal, event) {
|
|
|
117
129
|
emit("rowContextmenu", rowOriginal, event);
|
|
118
130
|
}
|
|
119
131
|
const thProps = computed(() => resolveSlot(ui.value.th, props.ui?.th));
|
|
120
|
-
const thSortableClass = computed(() => ui.value.thSortable
|
|
132
|
+
const thSortableClass = computed(() => resolveSlot(ui.value.thSortable, props.ui?.thSortable).class);
|
|
121
133
|
const sortIconProps = computed(() => resolveSlot(ui.value.sortIcon, props.ui?.sortIcon));
|
|
122
134
|
const tdProps = computed(() => resolveSlot(ui.value.td, props.ui?.td));
|
|
123
135
|
const tfootProps = computed(() => resolveSlot(ui.value.tfoot, props.ui?.tfoot));
|
|
@@ -207,7 +219,7 @@ defineExpose({
|
|
|
207
219
|
</script>
|
|
208
220
|
|
|
209
221
|
<template>
|
|
210
|
-
<div v-bind="rootProps">
|
|
222
|
+
<div :data-selaras-color="effectiveColor" v-bind="rootProps">
|
|
211
223
|
<div v-if="columnToggle" :class="applyClassPrefix('mb-2 flex justify-end')">
|
|
212
224
|
<div data-column-toggle v-bind="columnToggleProps">
|
|
213
225
|
<Button variant="outline" size="sm" :icon="icons.columns" @click="showColumnTogglePanel = !showColumnTogglePanel">
|