@selvajs/ui 6.5.1-beta.1 → 6.6.0-beta.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/components/ConfirmDialog.svelte +2 -10
- package/dist/components/ErrorScreen.svelte +16 -26
- package/dist/components/compute/AppLayout.svelte +7 -13
- package/dist/components/compute/ComputeApp.svelte +3 -3
- package/dist/components/compute/ComputeMessagesDialog.svelte +23 -49
- package/dist/components/compute/ParameterPresetManager.svelte +24 -68
- package/dist/components/compute/SolveMessages.svelte +23 -31
- package/dist/components/layout/Pagination.svelte +2 -4
- package/dist/components/layout/SideNav.svelte +1 -1
- package/dist/components/preview/ChartOutput.svelte +1 -5
- package/dist/components/preview/Group.svelte +71 -102
- package/dist/components/preview/Group.svelte.d.ts +1 -1
- package/dist/components/preview/HelpButton.svelte +34 -0
- package/dist/components/preview/HelpButton.svelte.d.ts +8 -0
- package/dist/components/preview/ImageOutput.svelte +2 -4
- package/dist/components/preview/InputControl.svelte +45 -45
- package/dist/components/preview/OutputDisplay.svelte +12 -22
- package/dist/components/preview/TabBar.svelte +106 -22
- package/dist/components/preview/TabBar.svelte.d.ts +1 -0
- package/dist/components/preview/TabContent.svelte +27 -56
- package/dist/components/preview/TabLayout.svelte +3 -3
- package/dist/components/preview/inputs/CheckboxInput.svelte +7 -7
- package/dist/components/preview/inputs/CheckboxInput.svelte.d.ts +3 -0
- package/dist/components/preview/inputs/ColorInput.svelte +1 -1
- package/dist/components/preview/inputs/FileInput.svelte +10 -13
- package/dist/components/preview/inputs/NumberInput.svelte +37 -57
- package/dist/components/preview/inputs/TextInput.svelte +0 -1
- package/dist/components/primitives/CalculateButton.svelte +1 -1
- package/dist/components/primitives/Callout.svelte +11 -18
- package/dist/components/primitives/DataTable.svelte +3 -4
- package/dist/components/primitives/FilterableDropdown.svelte +42 -129
- package/dist/components/primitives/FilterableDropdown.svelte.d.ts +1 -1
- package/dist/components/primitives/IssueList.svelte +56 -0
- package/dist/components/primitives/IssueList.svelte.d.ts +20 -0
- package/dist/components/primitives/SeverityIcon.svelte +15 -0
- package/dist/components/primitives/SeverityIcon.svelte.d.ts +8 -0
- package/dist/components/primitives/SolvingIndicator.svelte +1 -29
- package/dist/components/primitives/StateDisplay.svelte +19 -79
- package/dist/components/primitives/ViewToggle.svelte +18 -33
- package/dist/components/primitives/alert-dialog/alert-dialog-action.svelte +9 -3
- package/dist/components/primitives/alert-dialog/alert-dialog-action.svelte.d.ts +6 -1
- package/dist/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
- package/dist/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/dist/components/primitives/badge/badge.svelte +2 -2
- package/dist/components/primitives/badge/badge.svelte.d.ts +4 -4
- package/dist/components/primitives/button/button.svelte +3 -2
- package/dist/components/primitives/button/button.svelte.d.ts +7 -4
- package/dist/components/primitives/card/card-header.svelte +1 -1
- package/dist/components/primitives/card/card.svelte +21 -5
- package/dist/components/primitives/card/card.svelte.d.ts +25 -1
- package/dist/components/primitives/card/index.d.ts +1 -2
- package/dist/components/primitives/card/index.js +2 -3
- package/dist/components/primitives/checkbox/checkbox.svelte +1 -1
- package/dist/components/primitives/command/command-dialog.svelte +42 -0
- package/dist/components/primitives/command/command-dialog.svelte.d.ts +14 -0
- package/dist/components/primitives/command/command-empty.svelte +17 -0
- package/dist/components/primitives/command/command-empty.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-group.svelte +33 -0
- package/dist/components/primitives/command/command-group.svelte.d.ts +7 -0
- package/dist/components/primitives/command/command-input.svelte +36 -0
- package/dist/components/primitives/command/command-input.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-item.svelte +28 -0
- package/dist/components/primitives/command/command-item.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-link-item.svelte +21 -0
- package/dist/components/primitives/command/command-link-item.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-list.svelte +20 -0
- package/dist/components/primitives/command/command-list.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-loading.svelte +7 -0
- package/dist/components/primitives/command/command-loading.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-separator.svelte +17 -0
- package/dist/components/primitives/command/command-separator.svelte.d.ts +4 -0
- package/dist/components/primitives/command/command-shortcut.svelte +23 -0
- package/dist/components/primitives/command/command-shortcut.svelte.d.ts +5 -0
- package/dist/components/primitives/command/command.svelte +28 -0
- package/dist/components/primitives/command/command.svelte.d.ts +8 -0
- package/dist/components/primitives/command/index.d.ts +12 -0
- package/dist/components/primitives/command/index.js +14 -0
- package/dist/components/primitives/context-menu/context-menu-content.svelte +1 -1
- package/dist/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
- package/dist/components/primitives/dialog/dialog-content.svelte +5 -1
- package/dist/components/primitives/dialog/dialog-content.svelte.d.ts +2 -0
- package/dist/components/primitives/dialog/dialog-overlay.svelte +1 -1
- package/dist/components/primitives/dialog/dialog-title.svelte +6 -2
- package/dist/components/primitives/dialog/dialog-title.svelte.d.ts +5 -1
- package/dist/components/primitives/drawer/Drawer.svelte +1 -1
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +46 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte.d.ts +9 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte +31 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-content.svelte.d.ts +10 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte.d.ts +8 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-group.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte +27 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-item.svelte.d.ts +8 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-label.svelte +24 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-label.svelte.d.ts +8 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-portal.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-portal.svelte.d.ts +3 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +36 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +17 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-separator.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +23 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte.d.ts +5 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +31 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte.d.ts +10 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte.d.ts +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-sub.svelte.d.ts +3 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte.d.ts +4 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu.svelte +7 -0
- package/dist/components/primitives/dropdown-menu/dropdown-menu.svelte.d.ts +3 -0
- package/dist/components/primitives/dropdown-menu/index.d.ts +18 -0
- package/dist/components/primitives/dropdown-menu/index.js +18 -0
- package/dist/components/primitives/{alert/alert-description.svelte → empty/empty-content.svelte} +3 -3
- package/dist/components/primitives/empty/empty-content.svelte.d.ts +5 -0
- package/dist/components/primitives/empty/empty-description.svelte +23 -0
- package/dist/components/primitives/{alert/alert-description.svelte.d.ts → empty/empty-description.svelte.d.ts} +4 -4
- package/dist/components/primitives/{alert/alert-title.svelte → empty/empty-header.svelte} +3 -3
- package/dist/components/primitives/empty/empty-header.svelte.d.ts +5 -0
- package/dist/components/primitives/empty/empty-media.svelte +41 -0
- package/dist/components/primitives/empty/empty-media.svelte.d.ts +26 -0
- package/dist/components/primitives/{card/card-action.svelte → empty/empty-title.svelte} +2 -2
- package/dist/components/primitives/{card/card-action.svelte.d.ts → empty/empty-title.svelte.d.ts} +3 -3
- package/dist/components/primitives/empty/empty.svelte +23 -0
- package/dist/components/primitives/empty/empty.svelte.d.ts +5 -0
- package/dist/components/primitives/empty/index.d.ts +7 -0
- package/dist/components/primitives/empty/index.js +9 -0
- package/dist/components/primitives/index.d.ts +10 -1
- package/dist/components/primitives/index.js +10 -1
- package/dist/components/primitives/input/input.svelte +4 -4
- package/dist/components/primitives/input-group/index.d.ts +7 -0
- package/dist/components/primitives/input-group/index.js +9 -0
- package/dist/components/primitives/input-group/input-group-addon.svelte +53 -0
- package/dist/components/primitives/input-group/input-group-addon.svelte.d.ts +32 -0
- package/dist/components/primitives/input-group/input-group-button.svelte +49 -0
- package/dist/components/primitives/input-group/input-group-button.svelte.d.ts +32 -0
- package/dist/components/primitives/input-group/input-group-input.svelte +25 -0
- package/dist/components/primitives/input-group/input-group-input.svelte.d.ts +11 -0
- package/dist/components/primitives/input-group/input-group-text.svelte +22 -0
- package/dist/components/primitives/input-group/input-group-text.svelte.d.ts +5 -0
- package/dist/components/primitives/input-group/input-group-textarea.svelte +23 -0
- package/dist/components/primitives/input-group/input-group-textarea.svelte.d.ts +3 -0
- package/dist/components/primitives/input-group/input-group.svelte +24 -0
- package/dist/components/primitives/{alert/alert-title.svelte.d.ts → input-group/input-group.svelte.d.ts} +4 -4
- package/dist/components/primitives/mode-toggle/mode-toggle.svelte +2 -6
- package/dist/components/primitives/popover/index.d.ts +9 -0
- package/dist/components/primitives/popover/index.js +11 -0
- package/dist/components/primitives/popover/popover-close.svelte +7 -0
- package/dist/components/primitives/popover/popover-close.svelte.d.ts +4 -0
- package/dist/components/primitives/popover/popover-content.svelte +31 -0
- package/dist/components/primitives/popover/popover-content.svelte.d.ts +10 -0
- package/dist/components/primitives/popover/popover-description.svelte +20 -0
- package/dist/components/primitives/popover/popover-description.svelte.d.ts +5 -0
- package/dist/components/primitives/popover/popover-header.svelte +20 -0
- package/dist/components/primitives/popover/popover-header.svelte.d.ts +5 -0
- package/dist/components/primitives/popover/popover-portal.svelte +7 -0
- package/dist/components/primitives/popover/popover-portal.svelte.d.ts +3 -0
- package/dist/components/primitives/popover/popover-title.svelte +15 -0
- package/dist/components/primitives/popover/popover-title.svelte.d.ts +5 -0
- package/dist/components/primitives/popover/popover-trigger.svelte +17 -0
- package/dist/components/primitives/popover/popover-trigger.svelte.d.ts +4 -0
- package/dist/components/primitives/popover/popover.svelte +7 -0
- package/dist/components/primitives/popover/popover.svelte.d.ts +3 -0
- package/dist/components/primitives/resizable/resizable-handle.svelte +6 -2
- package/dist/components/primitives/resizable/resizable-handle.svelte.d.ts +2 -0
- package/dist/components/primitives/resizable/resizable-pane-group.svelte +1 -4
- package/dist/components/primitives/scroll-area/scroll-area.svelte +1 -1
- package/dist/components/primitives/search/search.svelte +3 -3
- package/dist/components/primitives/select/select-content.svelte +1 -1
- package/dist/components/primitives/select/select-trigger.svelte +1 -1
- package/dist/components/primitives/severity.d.ts +7 -0
- package/dist/components/primitives/severity.js +19 -0
- package/dist/components/primitives/slider/slider.svelte +2 -2
- package/dist/components/primitives/sonner/sonner.svelte +1 -1
- package/dist/components/primitives/spinner/index.d.ts +1 -0
- package/dist/components/primitives/spinner/index.js +1 -0
- package/dist/components/primitives/spinner/spinner.svelte +29 -0
- package/dist/components/primitives/spinner/spinner.svelte.d.ts +4 -0
- package/dist/components/primitives/switch/switch.svelte +2 -2
- package/dist/components/primitives/tabs/tabs-list.svelte +27 -5
- package/dist/components/primitives/tabs/tabs-list.svelte.d.ts +22 -1
- package/dist/components/primitives/tabs/tabs-trigger.svelte +23 -5
- package/dist/components/primitives/tabs/tabs-trigger.svelte.d.ts +22 -1
- package/dist/components/primitives/tabs/tabs.svelte +6 -2
- package/dist/components/primitives/tabs/tabs.svelte.d.ts +5 -1
- package/dist/components/primitives/textarea/textarea.svelte +1 -1
- package/dist/components/primitives/theme-switcher/ThemeSwitcher.svelte +1 -1
- package/dist/components/primitives/toggle/index.d.ts +3 -0
- package/dist/components/primitives/toggle/index.js +5 -0
- package/dist/components/primitives/toggle/toggle.svelte +52 -0
- package/dist/components/primitives/toggle/toggle.svelte.d.ts +43 -0
- package/dist/components/primitives/toggle-group/index.d.ts +3 -0
- package/dist/components/primitives/toggle-group/index.js +5 -0
- package/dist/components/primitives/toggle-group/toggle-group-item.svelte +35 -0
- package/dist/components/primitives/toggle-group/toggle-group-item.svelte.d.ts +6 -0
- package/dist/components/primitives/toggle-group/toggle-group.svelte +75 -0
- package/dist/components/primitives/toggle-group/toggle-group.svelte.d.ts +17 -0
- package/dist/components/viewer/MeshMetadataDialog.svelte +3 -3
- package/dist/components/viewer/SceneManager.svelte +14 -5
- package/dist/components/viewer/Viewer.svelte +120 -171
- package/dist/i18n/messages.d.ts +2 -0
- package/dist/i18n/messages.js +4 -0
- package/dist/styles/base.css +43 -0
- package/package.json +6 -6
- package/src/lib/components/ConfirmDialog.svelte +2 -10
- package/src/lib/components/ErrorScreen.svelte +16 -26
- package/src/lib/components/compute/AppLayout.svelte +7 -13
- package/src/lib/components/compute/ComputeApp.svelte +3 -3
- package/src/lib/components/compute/ComputeMessagesDialog.svelte +23 -49
- package/src/lib/components/compute/ParameterPresetManager.svelte +24 -68
- package/src/lib/components/compute/SolveMessages.svelte +23 -31
- package/src/lib/components/layout/Pagination.svelte +2 -4
- package/src/lib/components/layout/SideNav.svelte +1 -1
- package/src/lib/components/preview/ChartOutput.svelte +1 -5
- package/src/lib/components/preview/Group.svelte +71 -102
- package/src/lib/components/preview/HelpButton.svelte +34 -0
- package/src/lib/components/preview/ImageOutput.svelte +2 -4
- package/src/lib/components/preview/InputControl.svelte +45 -45
- package/src/lib/components/preview/OutputDisplay.svelte +12 -22
- package/src/lib/components/preview/TabBar.svelte +106 -22
- package/src/lib/components/preview/TabContent.svelte +27 -56
- package/src/lib/components/preview/TabLayout.svelte +3 -3
- package/src/lib/components/preview/inputs/CheckboxInput.svelte +7 -7
- package/src/lib/components/preview/inputs/ColorInput.svelte +1 -1
- package/src/lib/components/preview/inputs/FileInput.svelte +10 -13
- package/src/lib/components/preview/inputs/NumberInput.svelte +37 -57
- package/src/lib/components/preview/inputs/TextInput.svelte +0 -1
- package/src/lib/components/primitives/CalculateButton.svelte +1 -1
- package/src/lib/components/primitives/Callout.svelte +11 -18
- package/src/lib/components/primitives/DataTable.svelte +3 -4
- package/src/lib/components/primitives/FilterableDropdown.svelte +42 -129
- package/src/lib/components/primitives/IssueList.svelte +56 -0
- package/src/lib/components/primitives/SeverityIcon.svelte +15 -0
- package/src/lib/components/primitives/SolvingIndicator.svelte +1 -29
- package/src/lib/components/primitives/StateDisplay.svelte +19 -79
- package/src/lib/components/primitives/ViewToggle.svelte +18 -33
- package/src/lib/components/primitives/alert-dialog/alert-dialog-action.svelte +9 -3
- package/src/lib/components/primitives/alert-dialog/alert-dialog-content.svelte +1 -1
- package/src/lib/components/primitives/alert-dialog/alert-dialog-overlay.svelte +1 -1
- package/src/lib/components/primitives/badge/badge.svelte +2 -2
- package/src/lib/components/primitives/button/button.svelte +3 -2
- package/src/lib/components/primitives/card/card-header.svelte +1 -1
- package/src/lib/components/primitives/card/card.svelte +21 -5
- package/src/lib/components/primitives/card/index.ts +1 -4
- package/src/lib/components/primitives/checkbox/checkbox.svelte +1 -1
- package/src/lib/components/primitives/command/command-dialog.svelte +42 -0
- package/src/lib/components/primitives/command/command-empty.svelte +17 -0
- package/src/lib/components/primitives/command/command-group.svelte +33 -0
- package/src/lib/components/primitives/command/command-input.svelte +36 -0
- package/src/lib/components/primitives/command/command-item.svelte +28 -0
- package/src/lib/components/primitives/command/command-link-item.svelte +21 -0
- package/src/lib/components/primitives/command/command-list.svelte +20 -0
- package/src/lib/components/primitives/command/command-loading.svelte +7 -0
- package/src/lib/components/primitives/command/command-separator.svelte +17 -0
- package/src/lib/components/primitives/command/command-shortcut.svelte +23 -0
- package/src/lib/components/primitives/command/command.svelte +28 -0
- package/src/lib/components/primitives/command/index.ts +37 -0
- package/src/lib/components/primitives/context-menu/context-menu-content.svelte +1 -1
- package/src/lib/components/primitives/context-menu/context-menu-sub-content.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-content.svelte +5 -1
- package/src/lib/components/primitives/dialog/dialog-overlay.svelte +1 -1
- package/src/lib/components/primitives/dialog/dialog-title.svelte +6 -2
- package/src/lib/components/primitives/drawer/Drawer.svelte +1 -1
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-group.svelte +16 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-checkbox-item.svelte +46 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-content.svelte +31 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group-heading.svelte +22 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-group.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-item.svelte +27 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-label.svelte +24 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-portal.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-group.svelte +16 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-radio-item.svelte +36 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-separator.svelte +17 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-shortcut.svelte +23 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-content.svelte +31 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub-trigger.svelte +29 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-sub.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu-trigger.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/dropdown-menu.svelte +7 -0
- package/src/lib/components/primitives/dropdown-menu/index.ts +54 -0
- package/src/lib/components/primitives/{alert/alert-description.svelte → empty/empty-content.svelte} +3 -3
- package/src/lib/components/primitives/empty/empty-description.svelte +23 -0
- package/src/lib/components/primitives/{alert/alert-title.svelte → empty/empty-header.svelte} +3 -3
- package/src/lib/components/primitives/empty/empty-media.svelte +41 -0
- package/src/lib/components/primitives/{card/card-action.svelte → empty/empty-title.svelte} +2 -2
- package/src/lib/components/primitives/empty/empty.svelte +23 -0
- package/src/lib/components/primitives/empty/index.ts +22 -0
- package/src/lib/components/primitives/index.ts +10 -1
- package/src/lib/components/primitives/input/input.svelte +4 -4
- package/src/lib/components/primitives/input-group/index.ts +22 -0
- package/src/lib/components/primitives/input-group/input-group-addon.svelte +53 -0
- package/src/lib/components/primitives/input-group/input-group-button.svelte +49 -0
- package/src/lib/components/primitives/input-group/input-group-input.svelte +25 -0
- package/src/lib/components/primitives/input-group/input-group-text.svelte +22 -0
- package/src/lib/components/primitives/input-group/input-group-textarea.svelte +23 -0
- package/src/lib/components/primitives/input-group/input-group.svelte +24 -0
- package/src/lib/components/primitives/mode-toggle/mode-toggle.svelte +2 -6
- package/src/lib/components/primitives/popover/index.ts +28 -0
- package/src/lib/components/primitives/popover/popover-close.svelte +7 -0
- package/src/lib/components/primitives/popover/popover-content.svelte +31 -0
- package/src/lib/components/primitives/popover/popover-description.svelte +20 -0
- package/src/lib/components/primitives/popover/popover-header.svelte +20 -0
- package/src/lib/components/primitives/popover/popover-portal.svelte +7 -0
- package/src/lib/components/primitives/popover/popover-title.svelte +15 -0
- package/src/lib/components/primitives/popover/popover-trigger.svelte +17 -0
- package/src/lib/components/primitives/popover/popover.svelte +7 -0
- package/src/lib/components/primitives/resizable/resizable-handle.svelte +6 -2
- package/src/lib/components/primitives/resizable/resizable-pane-group.svelte +1 -4
- package/src/lib/components/primitives/scroll-area/scroll-area.svelte +1 -1
- package/src/lib/components/primitives/search/search.svelte +3 -3
- package/src/lib/components/primitives/select/select-content.svelte +1 -1
- package/src/lib/components/primitives/select/select-trigger.svelte +1 -1
- package/src/lib/components/primitives/severity.ts +26 -0
- package/src/lib/components/primitives/slider/slider.svelte +2 -2
- package/src/lib/components/primitives/sonner/sonner.svelte +1 -1
- package/src/lib/components/primitives/spinner/index.ts +1 -0
- package/src/lib/components/primitives/spinner/spinner.svelte +29 -0
- package/src/lib/components/primitives/switch/switch.svelte +2 -2
- package/src/lib/components/primitives/tabs/tabs-list.svelte +27 -5
- package/src/lib/components/primitives/tabs/tabs-trigger.svelte +23 -5
- package/src/lib/components/primitives/tabs/tabs.svelte +6 -2
- package/src/lib/components/primitives/textarea/textarea.svelte +1 -1
- package/src/lib/components/primitives/theme-switcher/ThemeSwitcher.svelte +1 -1
- package/src/lib/components/primitives/toggle/index.ts +13 -0
- package/src/lib/components/primitives/toggle/toggle.svelte +52 -0
- package/src/lib/components/primitives/toggle-group/index.ts +10 -0
- package/src/lib/components/primitives/toggle-group/toggle-group-item.svelte +35 -0
- package/src/lib/components/primitives/toggle-group/toggle-group.svelte +75 -0
- package/src/lib/components/viewer/MeshMetadataDialog.svelte +3 -3
- package/src/lib/components/viewer/SceneManager.svelte +14 -5
- package/src/lib/components/viewer/Viewer.svelte +120 -171
- package/src/lib/i18n/messages.ts +6 -0
- package/src/lib/styles/base.css +43 -0
- package/dist/components/primitives/alert/alert.svelte +0 -44
- package/dist/components/primitives/alert/alert.svelte.d.ts +0 -26
- package/dist/components/primitives/alert/index.d.ts +0 -5
- package/dist/components/primitives/alert/index.js +0 -7
- package/src/lib/components/primitives/alert/alert.svelte +0 -44
- package/src/lib/components/primitives/alert/index.ts +0 -14
|
@@ -4,7 +4,6 @@ export interface FilterableDropdownItem {
|
|
|
4
4
|
label: string;
|
|
5
5
|
icon?: Component;
|
|
6
6
|
iconClass?: string;
|
|
7
|
-
iconStyle?: string;
|
|
8
7
|
}
|
|
9
8
|
interface Props {
|
|
10
9
|
items: FilterableDropdownItem[];
|
|
@@ -14,6 +13,7 @@ interface Props {
|
|
|
14
13
|
placeholder?: string;
|
|
15
14
|
triggerIcon?: Component;
|
|
16
15
|
searchPlaceholder?: string;
|
|
16
|
+
/** Above this many items the list gets a filter box. */
|
|
17
17
|
searchThreshold?: number;
|
|
18
18
|
disabled?: boolean;
|
|
19
19
|
class?: string;
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import type { Severity } from './severity';
|
|
3
|
+
|
|
4
|
+
export interface Issue {
|
|
5
|
+
severity: Severity;
|
|
6
|
+
message: string;
|
|
7
|
+
/** A second, quieter line: expected vs actual, a path, a hint. */
|
|
8
|
+
detail?: string;
|
|
9
|
+
/** What raised it, such as the component's nickname. */
|
|
10
|
+
source?: string;
|
|
11
|
+
/** How many times the same message came in; shown as ×n above 1. */
|
|
12
|
+
count?: number;
|
|
13
|
+
}
|
|
14
|
+
</script>
|
|
15
|
+
|
|
16
|
+
<script lang="ts">
|
|
17
|
+
import { cn } from '../../utils.js';
|
|
18
|
+
import SeverityIcon from './SeverityIcon.svelte';
|
|
19
|
+
|
|
20
|
+
interface Props {
|
|
21
|
+
issues: readonly Issue[];
|
|
22
|
+
/** `boxed` draws a bordered, divided list; `plain` is for surfaces that already have a frame. */
|
|
23
|
+
variant?: 'boxed' | 'plain';
|
|
24
|
+
class?: string;
|
|
25
|
+
}
|
|
26
|
+
|
|
27
|
+
let { issues, variant = 'boxed', class: className }: Props = $props();
|
|
28
|
+
</script>
|
|
29
|
+
|
|
30
|
+
<ul
|
|
31
|
+
class={cn(
|
|
32
|
+
'text-sm',
|
|
33
|
+
variant === 'boxed' ? 'divide-y rounded-lg border' : 'gap-2 flex flex-col',
|
|
34
|
+
className
|
|
35
|
+
)}
|
|
36
|
+
>
|
|
37
|
+
{#each issues as issue, i (i)}
|
|
38
|
+
<li class={cn('gap-2 flex items-start', variant === 'boxed' && 'px-3 py-2')}>
|
|
39
|
+
<SeverityIcon severity={issue.severity} class="mt-0.5" />
|
|
40
|
+
<div class="min-w-0 flex-1">
|
|
41
|
+
<p class="wrap-anywhere">
|
|
42
|
+
{issue.message}
|
|
43
|
+
{#if issue.count && issue.count > 1}
|
|
44
|
+
<span class="ml-1 text-xs text-muted-foreground tabular-nums">×{issue.count}</span>
|
|
45
|
+
{/if}
|
|
46
|
+
</p>
|
|
47
|
+
{#if issue.source}
|
|
48
|
+
<p class="text-xs text-muted-foreground">{issue.source}</p>
|
|
49
|
+
{/if}
|
|
50
|
+
{#if issue.detail}
|
|
51
|
+
<p class="mt-0.5 text-xs wrap-anywhere text-muted-foreground">{issue.detail}</p>
|
|
52
|
+
{/if}
|
|
53
|
+
</div>
|
|
54
|
+
</li>
|
|
55
|
+
{/each}
|
|
56
|
+
</ul>
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { Severity } from './severity';
|
|
2
|
+
export interface Issue {
|
|
3
|
+
severity: Severity;
|
|
4
|
+
message: string;
|
|
5
|
+
/** A second, quieter line: expected vs actual, a path, a hint. */
|
|
6
|
+
detail?: string;
|
|
7
|
+
/** What raised it, such as the component's nickname. */
|
|
8
|
+
source?: string;
|
|
9
|
+
/** How many times the same message came in; shown as ×n above 1. */
|
|
10
|
+
count?: number;
|
|
11
|
+
}
|
|
12
|
+
interface Props {
|
|
13
|
+
issues: readonly Issue[];
|
|
14
|
+
/** `boxed` draws a bordered, divided list; `plain` is for surfaces that already have a frame. */
|
|
15
|
+
variant?: 'boxed' | 'plain';
|
|
16
|
+
class?: string;
|
|
17
|
+
}
|
|
18
|
+
declare const IssueList: import("svelte").Component<Props, {}, "">;
|
|
19
|
+
type IssueList = ReturnType<typeof IssueList>;
|
|
20
|
+
export default IssueList;
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { cn } from '../../utils.js';
|
|
3
|
+
import { SEVERITY_ICON, SEVERITY_TEXT, type Severity } from './severity';
|
|
4
|
+
|
|
5
|
+
interface Props {
|
|
6
|
+
severity: Severity;
|
|
7
|
+
class?: string;
|
|
8
|
+
}
|
|
9
|
+
|
|
10
|
+
let { severity, class: className }: Props = $props();
|
|
11
|
+
|
|
12
|
+
const Icon = $derived(SEVERITY_ICON[severity]);
|
|
13
|
+
</script>
|
|
14
|
+
|
|
15
|
+
<Icon class={cn('size-4 shrink-0', SEVERITY_TEXT[severity], className)} aria-hidden="true" />
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { type Severity } from './severity';
|
|
2
|
+
interface Props {
|
|
3
|
+
severity: Severity;
|
|
4
|
+
class?: string;
|
|
5
|
+
}
|
|
6
|
+
declare const SeverityIcon: import("svelte").Component<Props, {}, "">;
|
|
7
|
+
type SeverityIcon = ReturnType<typeof SeverityIcon>;
|
|
8
|
+
export default SeverityIcon;
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
|
|
14
14
|
{#if show}
|
|
15
15
|
<div
|
|
16
|
-
class="bottom-6 left-6 gap-3 px-5 py-3 shadow-xl fixed z-50 flex
|
|
16
|
+
class="bottom-6 left-6 gap-3 px-5 py-3 shadow-xl animate-in fade-in slide-in-from-left fixed z-50 flex items-center rounded-lg border border-primary/20 bg-primary text-primary-foreground duration-200"
|
|
17
17
|
>
|
|
18
18
|
<div class="h-5 w-5 relative flex shrink-0 items-center justify-center">
|
|
19
19
|
<div
|
|
@@ -29,31 +29,3 @@
|
|
|
29
29
|
</div>
|
|
30
30
|
</div>
|
|
31
31
|
{/if}
|
|
32
|
-
|
|
33
|
-
<style>
|
|
34
|
-
@keyframes selva-slideInLeft {
|
|
35
|
-
from {
|
|
36
|
-
transform: translateX(-110%);
|
|
37
|
-
opacity: 0;
|
|
38
|
-
}
|
|
39
|
-
to {
|
|
40
|
-
transform: translateX(0);
|
|
41
|
-
opacity: 1;
|
|
42
|
-
}
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
@keyframes selva-sweep {
|
|
46
|
-
0% {
|
|
47
|
-
width: 0%;
|
|
48
|
-
margin-left: 0%;
|
|
49
|
-
}
|
|
50
|
-
50% {
|
|
51
|
-
width: 60%;
|
|
52
|
-
margin-left: 20%;
|
|
53
|
-
}
|
|
54
|
-
100% {
|
|
55
|
-
width: 0%;
|
|
56
|
-
margin-left: 100%;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
</style>
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
|
-
import {
|
|
3
|
-
import
|
|
2
|
+
import { Inbox } from '@lucide/svelte';
|
|
3
|
+
import { cn } from '../../utils.js';
|
|
4
|
+
import * as Empty from './empty';
|
|
5
|
+
import { Spinner } from './spinner';
|
|
6
|
+
import SeverityIcon from './SeverityIcon.svelte';
|
|
4
7
|
|
|
5
8
|
interface StateDisplayProps {
|
|
6
9
|
type: 'loading' | 'error' | 'warning' | 'empty';
|
|
@@ -18,89 +21,26 @@
|
|
|
18
21
|
class: className = ''
|
|
19
22
|
}: StateDisplayProps = $props();
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
container: 'p-6 gap-3',
|
|
24
|
-
icon: 'w-8 h-8',
|
|
25
|
-
title: 'text-sm font-semibold',
|
|
26
|
-
message: 'text-xs'
|
|
27
|
-
},
|
|
28
|
-
medium: {
|
|
29
|
-
container: 'p-12 gap-4',
|
|
30
|
-
icon: 'w-12 h-12',
|
|
31
|
-
title: 'text-lg font-semibold',
|
|
32
|
-
message: 'text-sm'
|
|
33
|
-
},
|
|
34
|
-
large: {
|
|
35
|
-
container: 'p-16 gap-6',
|
|
36
|
-
icon: 'w-16 h-16',
|
|
37
|
-
title: 'text-2xl font-bold',
|
|
38
|
-
message: 'text-base'
|
|
39
|
-
}
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
/* Fully semantic, contrast-safe mappings */
|
|
43
|
-
const typeClasses = {
|
|
44
|
-
loading: {
|
|
45
|
-
icon: 'text-primary',
|
|
46
|
-
title: 'text-primary-foreground',
|
|
47
|
-
message: 'text-primary-foreground/80',
|
|
48
|
-
border: 'border-primary',
|
|
49
|
-
background: 'bg-primary/15'
|
|
50
|
-
},
|
|
51
|
-
error: {
|
|
52
|
-
icon: 'text-destructive',
|
|
53
|
-
title: 'text-destructive-foreground',
|
|
54
|
-
message: 'text-destructive-foreground/80',
|
|
55
|
-
border: 'border-destructive',
|
|
56
|
-
background: 'bg-destructive/15'
|
|
57
|
-
},
|
|
58
|
-
warning: {
|
|
59
|
-
icon: 'text-accent',
|
|
60
|
-
title: 'text-accent-foreground',
|
|
61
|
-
message: 'text-accent-foreground/80',
|
|
62
|
-
border: 'border-accent',
|
|
63
|
-
background: 'bg-accent/15'
|
|
64
|
-
},
|
|
65
|
-
empty: {
|
|
66
|
-
icon: 'text-neutral',
|
|
67
|
-
title: 'text-neutral-foreground',
|
|
68
|
-
message: 'text-neutral-foreground/80',
|
|
69
|
-
border: 'border-neutral',
|
|
70
|
-
background: 'bg-neutral/15'
|
|
71
|
-
}
|
|
72
|
-
};
|
|
73
|
-
|
|
74
|
-
const sizeConfig = $derived(sizeClasses[size]);
|
|
75
|
-
const typeConfig = $derived(typeClasses[type]);
|
|
24
|
+
// Size only changes the breathing room; the look comes from Empty and the severity tokens.
|
|
25
|
+
const PADDING = { small: 'p-4', medium: 'p-8', large: 'p-12' } as const;
|
|
76
26
|
</script>
|
|
77
27
|
|
|
78
|
-
<
|
|
79
|
-
<
|
|
80
|
-
|
|
81
|
-
>
|
|
82
|
-
<div class="{sizeConfig.icon} {typeConfig.icon}">
|
|
28
|
+
<Empty.Root class={cn(PADDING[size], className)}>
|
|
29
|
+
<Empty.Header>
|
|
30
|
+
<Empty.Media variant="icon">
|
|
83
31
|
{#if type === 'loading'}
|
|
84
|
-
<
|
|
85
|
-
{:else if type === 'error'}
|
|
86
|
-
<AlertCircle class="h-full w-full" />
|
|
87
|
-
{:else if type === 'warning'}
|
|
88
|
-
<AlertTriangle class="h-full w-full" />
|
|
32
|
+
<Spinner />
|
|
89
33
|
{:else if type === 'empty'}
|
|
90
|
-
<Inbox
|
|
34
|
+
<Inbox />
|
|
35
|
+
{:else}
|
|
36
|
+
<SeverityIcon severity={type} />
|
|
91
37
|
{/if}
|
|
92
|
-
</
|
|
93
|
-
|
|
38
|
+
</Empty.Media>
|
|
94
39
|
{#if title}
|
|
95
|
-
<
|
|
96
|
-
{title}
|
|
97
|
-
</h3>
|
|
40
|
+
<Empty.Title>{title}</Empty.Title>
|
|
98
41
|
{/if}
|
|
99
|
-
|
|
100
42
|
{#if message}
|
|
101
|
-
<
|
|
102
|
-
{message}
|
|
103
|
-
</p>
|
|
43
|
+
<Empty.Description>{message}</Empty.Description>
|
|
104
44
|
{/if}
|
|
105
|
-
</
|
|
106
|
-
</
|
|
45
|
+
</Empty.Header>
|
|
46
|
+
</Empty.Root>
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { Grid2x2, List } from '@lucide/svelte';
|
|
3
|
+
import * as ToggleGroup from './toggle-group';
|
|
3
4
|
|
|
4
5
|
type ViewMode = 'grid' | 'list';
|
|
5
6
|
|
|
@@ -10,38 +11,22 @@
|
|
|
10
11
|
}
|
|
11
12
|
|
|
12
13
|
let { mode, onChange, size = 'md' }: Props = $props();
|
|
13
|
-
|
|
14
|
-
const btnClass = $derived(
|
|
15
|
-
size === 'sm'
|
|
16
|
-
? 'flex h-7 w-7 items-center justify-center rounded-md transition-colors'
|
|
17
|
-
: 'flex h-8 w-8 items-center justify-center rounded-md transition-colors'
|
|
18
|
-
);
|
|
19
|
-
const iconClass = $derived(size === 'sm' ? 'h-3.5 w-3.5' : 'h-4 w-4');
|
|
20
14
|
</script>
|
|
21
15
|
|
|
22
|
-
<
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
>
|
|
33
|
-
<Grid2x2
|
|
34
|
-
</
|
|
35
|
-
<
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
aria-pressed={mode === 'list'}
|
|
40
|
-
onclick={() => onChange('list')}
|
|
41
|
-
class="{btnClass} {mode === 'list'
|
|
42
|
-
? 'bg-muted text-foreground'
|
|
43
|
-
: 'text-muted-foreground hover:text-foreground'}"
|
|
44
|
-
>
|
|
45
|
-
<List class={iconClass} />
|
|
46
|
-
</button>
|
|
47
|
-
</div>
|
|
16
|
+
<ToggleGroup.Root
|
|
17
|
+
type="single"
|
|
18
|
+
variant="outline"
|
|
19
|
+
size={size === 'sm' ? 'sm' : 'default'}
|
|
20
|
+
value={mode}
|
|
21
|
+
onValueChange={(next) => {
|
|
22
|
+
// A single-select group emits '' when the active item is clicked again; keep the mode.
|
|
23
|
+
if (next === 'grid' || next === 'list') onChange(next);
|
|
24
|
+
}}
|
|
25
|
+
>
|
|
26
|
+
<ToggleGroup.Item value="grid" aria-label="Grid view" title="Grid view">
|
|
27
|
+
<Grid2x2 />
|
|
28
|
+
</ToggleGroup.Item>
|
|
29
|
+
<ToggleGroup.Item value="list" aria-label="List view" title="List view">
|
|
30
|
+
<List />
|
|
31
|
+
</ToggleGroup.Item>
|
|
32
|
+
</ToggleGroup.Root>
|
|
@@ -1,18 +1,24 @@
|
|
|
1
1
|
<script lang="ts">
|
|
2
2
|
import { AlertDialog as AlertDialogPrimitive } from 'bits-ui';
|
|
3
|
-
import {
|
|
3
|
+
import {
|
|
4
|
+
buttonVariants,
|
|
5
|
+
type ButtonSize,
|
|
6
|
+
type ButtonVariant
|
|
7
|
+
} from '../button/index.js';
|
|
4
8
|
import { cn } from '../../../utils.js';
|
|
5
9
|
|
|
6
10
|
let {
|
|
7
11
|
ref = $bindable(null),
|
|
8
12
|
class: className,
|
|
13
|
+
variant = 'default',
|
|
14
|
+
size = 'default',
|
|
9
15
|
...restProps
|
|
10
|
-
}: AlertDialogPrimitive.ActionProps = $props();
|
|
16
|
+
}: AlertDialogPrimitive.ActionProps & { variant?: ButtonVariant; size?: ButtonSize } = $props();
|
|
11
17
|
</script>
|
|
12
18
|
|
|
13
19
|
<AlertDialogPrimitive.Action
|
|
14
20
|
bind:ref
|
|
15
21
|
data-slot="alert-dialog-action"
|
|
16
|
-
class={cn(buttonVariants(), className)}
|
|
22
|
+
class={cn(buttonVariants({ variant, size }), className)}
|
|
17
23
|
{...restProps}
|
|
18
24
|
/>
|
|
@@ -1,4 +1,9 @@
|
|
|
1
1
|
import { AlertDialog as AlertDialogPrimitive } from 'bits-ui';
|
|
2
|
-
|
|
2
|
+
import { type ButtonSize, type ButtonVariant } from '../button/index.js';
|
|
3
|
+
type $$ComponentProps = AlertDialogPrimitive.ActionProps & {
|
|
4
|
+
variant?: ButtonVariant;
|
|
5
|
+
size?: ButtonSize;
|
|
6
|
+
};
|
|
7
|
+
declare const AlertDialogAction: import("svelte").Component<$$ComponentProps, {}, "ref">;
|
|
3
8
|
type AlertDialogAction = ReturnType<typeof AlertDialogAction>;
|
|
4
9
|
export default AlertDialogAction;
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
bind:ref
|
|
20
20
|
data-slot="alert-dialog-content"
|
|
21
21
|
class={cn(
|
|
22
|
-
'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 gap-4 p-6 shadow-lg sm:max-w-lg fixed start-
|
|
22
|
+
'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 gap-4 p-6 shadow-lg sm:max-w-lg fixed start-1/2 top-1/2 z-50 grid w-full max-w-screen-inset -translate-x-1/2 -translate-y-1/2 rounded-lg border bg-background duration-200',
|
|
23
23
|
className
|
|
24
24
|
)}
|
|
25
25
|
{...restProps}
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
bind:ref
|
|
14
14
|
data-slot="alert-dialog-overlay"
|
|
15
15
|
class={cn(
|
|
16
|
-
'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0
|
|
16
|
+
'data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 inset-0 fixed z-50 bg-overlay',
|
|
17
17
|
className
|
|
18
18
|
)}
|
|
19
19
|
{...restProps}
|
|
@@ -2,14 +2,14 @@
|
|
|
2
2
|
import { type VariantProps, tv } from 'tailwind-variants';
|
|
3
3
|
|
|
4
4
|
export const badgeVariants = tv({
|
|
5
|
-
base: 'focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition
|
|
5
|
+
base: 'focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition focus-visible:ring-3 [&>svg]:pointer-events-none [&>svg]:size-3',
|
|
6
6
|
variants: {
|
|
7
7
|
variant: {
|
|
8
8
|
default: 'bg-primary text-primary-foreground [a&]:hover:bg-primary/90 border-transparent',
|
|
9
9
|
secondary:
|
|
10
10
|
'bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 border-transparent',
|
|
11
11
|
destructive:
|
|
12
|
-
'bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-
|
|
12
|
+
'bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-destructive-foreground',
|
|
13
13
|
outline: 'text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground'
|
|
14
14
|
}
|
|
15
15
|
},
|
|
@@ -3,21 +3,21 @@ export declare const badgeVariants: import("tailwind-variants").TVReturnType<{
|
|
|
3
3
|
variant: {
|
|
4
4
|
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90 border-transparent";
|
|
5
5
|
secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 border-transparent";
|
|
6
|
-
destructive: "bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-
|
|
6
|
+
destructive: "bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-destructive-foreground";
|
|
7
7
|
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground";
|
|
8
8
|
};
|
|
9
|
-
}, undefined, "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition
|
|
9
|
+
}, undefined, "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex w-fit shrink-0 items-center justify-center gap-1 overflow-hidden rounded-full border px-2 py-0.5 text-xs font-medium whitespace-nowrap transition focus-visible:ring-3 [&>svg]:pointer-events-none [&>svg]:size-3", {
|
|
10
10
|
variant: {
|
|
11
11
|
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90 border-transparent";
|
|
12
12
|
secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 border-transparent";
|
|
13
|
-
destructive: "bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-
|
|
13
|
+
destructive: "bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-destructive-foreground";
|
|
14
14
|
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground";
|
|
15
15
|
};
|
|
16
16
|
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
17
17
|
variant: {
|
|
18
18
|
default: "bg-primary text-primary-foreground [a&]:hover:bg-primary/90 border-transparent";
|
|
19
19
|
secondary: "bg-secondary text-secondary-foreground [a&]:hover:bg-secondary/90 border-transparent";
|
|
20
|
-
destructive: "bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-
|
|
20
|
+
destructive: "bg-destructive [a&]:hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/70 border-transparent text-destructive-foreground";
|
|
21
21
|
outline: "text-foreground [a&]:hover:bg-accent [a&]:hover:text-accent-foreground";
|
|
22
22
|
};
|
|
23
23
|
}, undefined>>;
|
|
@@ -4,12 +4,12 @@
|
|
|
4
4
|
import { type VariantProps, tv } from 'tailwind-variants';
|
|
5
5
|
|
|
6
6
|
export const buttonVariants = tv({
|
|
7
|
-
base: "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all focus-visible:ring-
|
|
7
|
+
base: "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all focus-visible:ring-3 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
8
8
|
variants: {
|
|
9
9
|
variant: {
|
|
10
10
|
default: 'bg-primary text-primary-foreground shadow-xs hover:bg-primary/90',
|
|
11
11
|
destructive:
|
|
12
|
-
'bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-
|
|
12
|
+
'bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-destructive-foreground',
|
|
13
13
|
outline:
|
|
14
14
|
'bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border',
|
|
15
15
|
secondary: 'bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80',
|
|
@@ -20,6 +20,7 @@
|
|
|
20
20
|
},
|
|
21
21
|
size: {
|
|
22
22
|
default: 'h-9 px-4 py-2 has-[>svg]:px-3',
|
|
23
|
+
xs: 'h-7 gap-1 rounded-md px-3 text-xs has-[>svg]:px-2',
|
|
23
24
|
sm: 'h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5',
|
|
24
25
|
lg: 'h-10 rounded-md px-6 has-[>svg]:px-4',
|
|
25
26
|
icon: 'size-9',
|
|
@@ -4,7 +4,7 @@ import { type VariantProps } from 'tailwind-variants';
|
|
|
4
4
|
export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
5
5
|
variant: {
|
|
6
6
|
default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90";
|
|
7
|
-
destructive: "bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-
|
|
7
|
+
destructive: "bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-destructive-foreground";
|
|
8
8
|
outline: "bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border";
|
|
9
9
|
secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80";
|
|
10
10
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50";
|
|
@@ -13,16 +13,17 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
|
13
13
|
};
|
|
14
14
|
size: {
|
|
15
15
|
default: "h-9 px-4 py-2 has-[>svg]:px-3";
|
|
16
|
+
xs: "h-7 gap-1 rounded-md px-3 text-xs has-[>svg]:px-2";
|
|
16
17
|
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5";
|
|
17
18
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4";
|
|
18
19
|
icon: "size-9";
|
|
19
20
|
'icon-sm': "size-8";
|
|
20
21
|
'icon-lg': "size-10";
|
|
21
22
|
};
|
|
22
|
-
}, undefined, "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all focus-visible:ring-
|
|
23
|
+
}, undefined, "focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive inline-flex shrink-0 items-center justify-center gap-2 whitespace-nowrap rounded-md text-sm font-medium outline-none transition-all focus-visible:ring-3 disabled:pointer-events-none disabled:opacity-50 aria-disabled:pointer-events-none aria-disabled:opacity-50 [&_svg:not([class*='size-'])]:size-4 [&_svg]:pointer-events-none [&_svg]:shrink-0", {
|
|
23
24
|
variant: {
|
|
24
25
|
default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90";
|
|
25
|
-
destructive: "bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-
|
|
26
|
+
destructive: "bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-destructive-foreground";
|
|
26
27
|
outline: "bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border";
|
|
27
28
|
secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80";
|
|
28
29
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50";
|
|
@@ -31,6 +32,7 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
|
31
32
|
};
|
|
32
33
|
size: {
|
|
33
34
|
default: "h-9 px-4 py-2 has-[>svg]:px-3";
|
|
35
|
+
xs: "h-7 gap-1 rounded-md px-3 text-xs has-[>svg]:px-2";
|
|
34
36
|
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5";
|
|
35
37
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4";
|
|
36
38
|
icon: "size-9";
|
|
@@ -40,7 +42,7 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
|
40
42
|
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
41
43
|
variant: {
|
|
42
44
|
default: "bg-primary text-primary-foreground shadow-xs hover:bg-primary/90";
|
|
43
|
-
destructive: "bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-
|
|
45
|
+
destructive: "bg-destructive shadow-xs hover:bg-destructive/90 focus-visible:ring-destructive/20 dark:focus-visible:ring-destructive/40 dark:bg-destructive/60 text-destructive-foreground";
|
|
44
46
|
outline: "bg-background shadow-xs hover:bg-accent hover:text-accent-foreground dark:bg-input/30 dark:border-input dark:hover:bg-input/50 border";
|
|
45
47
|
secondary: "bg-secondary text-secondary-foreground shadow-xs hover:bg-secondary/80";
|
|
46
48
|
ghost: "hover:bg-accent hover:text-accent-foreground dark:hover:bg-accent/50";
|
|
@@ -49,6 +51,7 @@ export declare const buttonVariants: import("tailwind-variants").TVReturnType<{
|
|
|
49
51
|
};
|
|
50
52
|
size: {
|
|
51
53
|
default: "h-9 px-4 py-2 has-[>svg]:px-3";
|
|
54
|
+
xs: "h-7 gap-1 rounded-md px-3 text-xs has-[>svg]:px-2";
|
|
52
55
|
sm: "h-8 gap-1.5 rounded-md px-3 has-[>svg]:px-2.5";
|
|
53
56
|
lg: "h-10 rounded-md px-6 has-[>svg]:px-4";
|
|
54
57
|
icon: "size-9";
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
bind:this={ref}
|
|
15
15
|
data-slot="card-header"
|
|
16
16
|
class={cn(
|
|
17
|
-
'gap-1.5 px-6 [.border-b]:pb-6 @container/card-header grid auto-rows-min
|
|
17
|
+
'gap-1.5 px-6 [.border-b]:pb-6 @container/card-header grid auto-rows-min items-start',
|
|
18
18
|
className
|
|
19
19
|
)}
|
|
20
20
|
{...restProps}
|
|
@@ -1,3 +1,21 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { tv, type VariantProps } from 'tailwind-variants';
|
|
3
|
+
|
|
4
|
+
export const cardVariants = tv({
|
|
5
|
+
base: 'shadow-sm flex flex-col rounded-xl border bg-card text-card-foreground',
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default: 'gap-6 py-6',
|
|
9
|
+
/** No padding or gap: for a card whose children draw their own edges, like a tab panel. */
|
|
10
|
+
flush: 'gap-0 overflow-hidden'
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
defaultVariants: { variant: 'default' }
|
|
14
|
+
});
|
|
15
|
+
|
|
16
|
+
export type CardVariant = VariantProps<typeof cardVariants>['variant'];
|
|
17
|
+
</script>
|
|
18
|
+
|
|
1
19
|
<script lang="ts">
|
|
2
20
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
3
21
|
import { cn, type WithElementRef } from '../../../utils.js';
|
|
@@ -5,18 +23,16 @@
|
|
|
5
23
|
let {
|
|
6
24
|
ref = $bindable(null),
|
|
7
25
|
class: className,
|
|
26
|
+
variant = 'default',
|
|
8
27
|
children,
|
|
9
28
|
...restProps
|
|
10
|
-
}: WithElementRef<HTMLAttributes<HTMLDivElement>> = $props();
|
|
29
|
+
}: WithElementRef<HTMLAttributes<HTMLDivElement>> & { variant?: CardVariant } = $props();
|
|
11
30
|
</script>
|
|
12
31
|
|
|
13
32
|
<div
|
|
14
33
|
bind:this={ref}
|
|
15
34
|
data-slot="card"
|
|
16
|
-
class={cn(
|
|
17
|
-
'gap-6 py-6 shadow-sm flex flex-col rounded-xl border bg-card text-card-foreground',
|
|
18
|
-
className
|
|
19
|
-
)}
|
|
35
|
+
class={cn(cardVariants({ variant }), className)}
|
|
20
36
|
{...restProps}
|
|
21
37
|
>
|
|
22
38
|
{@render children?.()}
|
|
@@ -1,5 +1,29 @@
|
|
|
1
|
+
import { type VariantProps } from 'tailwind-variants';
|
|
2
|
+
export declare const cardVariants: import("tailwind-variants").TVReturnType<{
|
|
3
|
+
variant: {
|
|
4
|
+
default: "gap-6 py-6";
|
|
5
|
+
/** No padding or gap: for a card whose children draw their own edges, like a tab panel. */
|
|
6
|
+
flush: "gap-0 overflow-hidden";
|
|
7
|
+
};
|
|
8
|
+
}, undefined, "shadow-sm flex flex-col rounded-xl border bg-card text-card-foreground", {
|
|
9
|
+
variant: {
|
|
10
|
+
default: "gap-6 py-6";
|
|
11
|
+
/** No padding or gap: for a card whose children draw their own edges, like a tab panel. */
|
|
12
|
+
flush: "gap-0 overflow-hidden";
|
|
13
|
+
};
|
|
14
|
+
}, undefined, import("tailwind-variants").TVReturnTypeLike<{
|
|
15
|
+
variant: {
|
|
16
|
+
default: "gap-6 py-6";
|
|
17
|
+
/** No padding or gap: for a card whose children draw their own edges, like a tab panel. */
|
|
18
|
+
flush: "gap-0 overflow-hidden";
|
|
19
|
+
};
|
|
20
|
+
}, undefined>>;
|
|
21
|
+
export type CardVariant = VariantProps<typeof cardVariants>['variant'];
|
|
1
22
|
import type { HTMLAttributes } from 'svelte/elements';
|
|
2
23
|
import { type WithElementRef } from '../../../utils.js';
|
|
3
|
-
|
|
24
|
+
type $$ComponentProps = WithElementRef<HTMLAttributes<HTMLDivElement>> & {
|
|
25
|
+
variant?: CardVariant;
|
|
26
|
+
};
|
|
27
|
+
declare const Card: import("svelte").Component<$$ComponentProps, {}, "ref">;
|
|
4
28
|
type Card = ReturnType<typeof Card>;
|
|
5
29
|
export default Card;
|
|
@@ -4,5 +4,4 @@ import Description from './card-description.svelte';
|
|
|
4
4
|
import Footer from './card-footer.svelte';
|
|
5
5
|
import Header from './card-header.svelte';
|
|
6
6
|
import Title from './card-title.svelte';
|
|
7
|
-
|
|
8
|
-
export { Root, Content, Description, Footer, Header, Title, Action, Root as Card, Content as CardContent, Description as CardDescription, Footer as CardFooter, Header as CardHeader, Title as CardTitle, Action as CardAction };
|
|
7
|
+
export { Root, Content, Description, Footer, Header, Title, Root as Card, Content as CardContent, Description as CardDescription, Footer as CardFooter, Header as CardHeader, Title as CardTitle };
|
|
@@ -4,7 +4,6 @@ import Description from './card-description.svelte';
|
|
|
4
4
|
import Footer from './card-footer.svelte';
|
|
5
5
|
import Header from './card-header.svelte';
|
|
6
6
|
import Title from './card-title.svelte';
|
|
7
|
-
|
|
8
|
-
export { Root, Content, Description, Footer, Header, Title, Action,
|
|
7
|
+
export { Root, Content, Description, Footer, Header, Title,
|
|
9
8
|
//
|
|
10
|
-
Root as Card, Content as CardContent, Description as CardDescription, Footer as CardFooter, Header as CardHeader, Title as CardTitle
|
|
9
|
+
Root as Card, Content as CardContent, Description as CardDescription, Footer as CardFooter, Header as CardHeader, Title as CardTitle };
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
bind:ref
|
|
18
18
|
data-slot="checkbox"
|
|
19
19
|
class={cn(
|
|
20
|
-
'peer size-4 shadow-xs flex shrink-0 items-center justify-center rounded-
|
|
20
|
+
'peer size-4 shadow-xs flex shrink-0 items-center justify-center rounded-sm border border-input transition-shadow outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 aria-invalid:border-destructive aria-invalid:ring-destructive/20 data-[state=checked]:border-primary data-[state=checked]:bg-primary data-[state=checked]:text-primary-foreground dark:bg-input/30 dark:aria-invalid:ring-destructive/40 dark:data-[state=checked]:bg-primary',
|
|
21
21
|
className
|
|
22
22
|
)}
|
|
23
23
|
bind:checked
|