@selvajs/ui 6.5.1-beta.1 → 6.6.0-beta.3
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 +9 -9
- 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
|
@@ -16,9 +16,6 @@
|
|
|
16
16
|
bind:ref
|
|
17
17
|
bind:this={paneGroup}
|
|
18
18
|
data-slot="resizable-pane-group"
|
|
19
|
-
class={cn(
|
|
20
|
-
'cn-resizable-panel-group flex h-full w-full data-[direction=vertical]:flex-col',
|
|
21
|
-
className
|
|
22
|
-
)}
|
|
19
|
+
class={cn('flex h-full w-full data-[direction=vertical]:flex-col', className)}
|
|
23
20
|
{...restProps}
|
|
24
21
|
/>
|
|
@@ -29,7 +29,7 @@
|
|
|
29
29
|
<ScrollAreaPrimitive.Viewport
|
|
30
30
|
bind:ref={viewportRef}
|
|
31
31
|
data-slot="scroll-area-viewport"
|
|
32
|
-
class="size-full rounded-
|
|
32
|
+
class="size-full rounded-inherit ring-ring/10 outline-ring/50 transition focus-visible:ring-4 focus-visible:outline-1 dark:ring-ring/20 dark:outline-ring/40"
|
|
33
33
|
>
|
|
34
34
|
{@render children?.()}
|
|
35
35
|
</ScrollAreaPrimitive.Viewport>
|
|
@@ -45,8 +45,8 @@
|
|
|
45
45
|
{placeholder}
|
|
46
46
|
data-slot="input"
|
|
47
47
|
class={cn(
|
|
48
|
-
'h-9 min-w-0 px-3 py-1 text-base shadow-xs md:text-sm flex w-full rounded-md border border-input bg-background ring-offset-background transition
|
|
49
|
-
'focus-visible:border-ring focus-visible:ring-
|
|
48
|
+
'h-9 min-w-0 px-3 py-1 text-base shadow-xs md:text-sm flex w-full rounded-md border border-input bg-background ring-offset-background transition outline-none selection:bg-primary selection:text-primary-foreground placeholder:text-muted-foreground disabled:cursor-not-allowed disabled:opacity-50 dark:bg-input/30',
|
|
49
|
+
'focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50',
|
|
50
50
|
'aria-invalid:border-destructive aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40',
|
|
51
51
|
'pl-9 pr-12',
|
|
52
52
|
className
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
{:else if badge !== undefined}
|
|
66
66
|
<span
|
|
67
67
|
class={cn(
|
|
68
|
-
'right-3 font-mono absolute top-1/2 -translate-y-1/2 text-
|
|
68
|
+
'right-3 font-mono text-xs absolute top-1/2 -translate-y-1/2 text-muted-foreground',
|
|
69
69
|
badgeClass
|
|
70
70
|
)}
|
|
71
71
|
>
|
|
@@ -22,7 +22,7 @@
|
|
|
22
22
|
{sideOffset}
|
|
23
23
|
data-slot="select-content"
|
|
24
24
|
class={cn(
|
|
25
|
-
'shadow-md data-[side=bottom]:translate-y-1 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:-translate-x-1 data-[side=left]:slide-in-from-right-2 data-[side=right]:translate-x-1 data-[side=right]:slide-in-from-left-2 data-[side=top]:-translate-y-1 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 relative z-50 max-h-(--bits-select-content-available-height)
|
|
25
|
+
'shadow-md data-[side=bottom]:translate-y-1 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:-translate-x-1 data-[side=left]:slide-in-from-right-2 data-[side=right]:translate-x-1 data-[side=right]:slide-in-from-left-2 data-[side=top]:-translate-y-1 data-[side=top]:slide-in-from-bottom-2 data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=closed]:zoom-out-95 data-[state=open]:animate-in data-[state=open]:fade-in-0 data-[state=open]:zoom-in-95 min-w-32 relative z-50 max-h-(--bits-select-content-available-height) origin-(--bits-select-content-transform-origin) overflow-x-hidden overflow-y-auto rounded-md border bg-popover text-popover-foreground',
|
|
26
26
|
className
|
|
27
27
|
)}
|
|
28
28
|
{...restProps}
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
data-slot="select-trigger"
|
|
20
20
|
data-size={size}
|
|
21
21
|
class={cn(
|
|
22
|
-
"gap-2 px-3 py-2 text-sm shadow-xs data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:gap-2 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between rounded-md border border-input bg-transparent whitespace-nowrap transition
|
|
22
|
+
"gap-2 px-3 py-2 text-sm shadow-xs data-[size=default]:h-9 data-[size=sm]:h-8 *:data-[slot=select-value]:gap-2 [&_svg:not([class*='size-'])]:size-4 flex w-fit items-center justify-between rounded-md border border-input bg-transparent whitespace-nowrap transition outline-none select-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-[placeholder]:text-muted-foreground *:data-[slot=select-value]:line-clamp-1 *:data-[slot=select-value]:flex *:data-[slot=select-value]:items-center dark:bg-input/30 dark:hover:bg-input/50 dark:aria-invalid:ring-destructive/40 [&_svg]:pointer-events-none [&_svg]:shrink-0 [&_svg:not([class*='text-'])]:text-muted-foreground",
|
|
23
23
|
className
|
|
24
24
|
)}
|
|
25
25
|
{...restProps}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import type { Component } from 'svelte';
|
|
2
|
+
import { CircleAlert, CircleCheck, Info, Lightbulb, TriangleAlert } from '@lucide/svelte';
|
|
3
|
+
|
|
4
|
+
/** How serious a message is. Every status icon, callout and issue row takes its look from here. */
|
|
5
|
+
export type Severity = 'error' | 'warning' | 'info' | 'success' | 'note';
|
|
6
|
+
|
|
7
|
+
export const SEVERITY_ICON: Record<Severity, Component> = {
|
|
8
|
+
error: CircleAlert,
|
|
9
|
+
warning: TriangleAlert,
|
|
10
|
+
info: Info,
|
|
11
|
+
success: CircleCheck,
|
|
12
|
+
note: Lightbulb
|
|
13
|
+
};
|
|
14
|
+
|
|
15
|
+
// Written out, never built from the key: Tailwind scans source text, so a constructed class
|
|
16
|
+
// name is never emitted and the icon would render colourless.
|
|
17
|
+
export const SEVERITY_TEXT: Record<Severity, string> = {
|
|
18
|
+
error: 'text-destructive',
|
|
19
|
+
warning: 'text-warning',
|
|
20
|
+
info: 'text-info',
|
|
21
|
+
success: 'text-success',
|
|
22
|
+
note: 'text-muted-foreground'
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
/** Most severe first, for sorting mixed lists. */
|
|
26
|
+
export const SEVERITY_ORDER: readonly Severity[] = ['error', 'warning', 'info', 'success', 'note'];
|
|
@@ -31,7 +31,7 @@ get along, so we shut typescript up by casting `value` to `never`.
|
|
|
31
31
|
data-orientation={orientation}
|
|
32
32
|
data-slot="slider-track"
|
|
33
33
|
class={cn(
|
|
34
|
-
'
|
|
34
|
+
'data-[orientation=horizontal]:h-1.5 data-[orientation=vertical]:w-1.5 relative grow overflow-hidden rounded-full bg-input data-[orientation=horizontal]:w-full data-[orientation=vertical]:h-full dark:bg-foreground/15'
|
|
35
35
|
)}
|
|
36
36
|
>
|
|
37
37
|
<SliderPrimitive.Range
|
|
@@ -45,7 +45,7 @@ get along, so we shut typescript up by casting `value` to `never`.
|
|
|
45
45
|
<SliderPrimitive.Thumb
|
|
46
46
|
data-slot="slider-thumb"
|
|
47
47
|
index={thumb}
|
|
48
|
-
class="size-4 shadow-sm block shrink-0 rounded-full border border-primary bg-background ring-ring/50 transition
|
|
48
|
+
class="size-4 shadow-sm block shrink-0 rounded-full border border-primary bg-background ring-ring/50 transition hover:ring-4 focus-visible:ring-4 focus-visible:outline-hidden disabled:pointer-events-none disabled:opacity-50"
|
|
49
49
|
/>
|
|
50
50
|
{/each}
|
|
51
51
|
{/snippet}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { default as Spinner } from './spinner.svelte';
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import Loader2Icon from '@lucide/svelte/icons/loader-2';
|
|
3
|
+
import { cn } from '$lib/utils.js';
|
|
4
|
+
import type { SVGAttributes } from 'svelte/elements';
|
|
5
|
+
|
|
6
|
+
let {
|
|
7
|
+
class: className,
|
|
8
|
+
role = 'status',
|
|
9
|
+
// we add name, color, and stroke for compatibility with different icon libraries props.
|
|
10
|
+
// only forward them when set, otherwise `stroke: undefined` overrides the icon's `currentColor`
|
|
11
|
+
name,
|
|
12
|
+
color,
|
|
13
|
+
stroke,
|
|
14
|
+
className: legacyClassName,
|
|
15
|
+
'aria-label': ariaLabel = 'Loading',
|
|
16
|
+
...restProps
|
|
17
|
+
}: SVGAttributes<SVGSVGElement> = $props();
|
|
18
|
+
</script>
|
|
19
|
+
|
|
20
|
+
<Loader2Icon
|
|
21
|
+
{role}
|
|
22
|
+
{...name != null ? { name } : {}}
|
|
23
|
+
{...color != null ? { color } : {}}
|
|
24
|
+
{...stroke != null ? { stroke } : {}}
|
|
25
|
+
{...legacyClassName != null ? { className: legacyClassName } : {}}
|
|
26
|
+
aria-label={ariaLabel}
|
|
27
|
+
class={cn('size-4 animate-spin', className)}
|
|
28
|
+
{...restProps}
|
|
29
|
+
/>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
bind:checked
|
|
16
16
|
data-slot="switch"
|
|
17
17
|
class={cn(
|
|
18
|
-
'peer w-8 shadow-xs inline-flex
|
|
18
|
+
'peer w-8 shadow-xs h-4.5 inline-flex shrink-0 items-center rounded-full border border-transparent transition-all outline-none focus-visible:border-ring focus-visible:ring-3 focus-visible:ring-ring/50 disabled:cursor-not-allowed disabled:opacity-50 data-[state=checked]:bg-primary data-[state=unchecked]:bg-input dark:data-[state=unchecked]:bg-input/80',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
{...restProps}
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
<SwitchPrimitive.Thumb
|
|
24
24
|
data-slot="switch-thumb"
|
|
25
25
|
class={cn(
|
|
26
|
-
'size-4 data-[state=unchecked]:translate-x-0 pointer-events-none block rounded-full bg-background ring-0 transition-transform
|
|
26
|
+
'size-4 data-[state=unchecked]:translate-x-0 data-[state=checked]:translate-x-3.5 pointer-events-none block rounded-full bg-background ring-0 transition-transform dark:data-[state=checked]:bg-primary-foreground dark:data-[state=unchecked]:bg-foreground'
|
|
27
27
|
)}
|
|
28
28
|
/>
|
|
29
29
|
</SwitchPrimitive.Root>
|
|
@@ -1,16 +1,38 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { type VariantProps, tv } from 'tailwind-variants';
|
|
3
|
+
|
|
4
|
+
export const tabsListVariants = tv({
|
|
5
|
+
base: 'inline-flex items-center text-muted-foreground',
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default: 'h-9 w-fit justify-center rounded-lg bg-muted p-0.75',
|
|
9
|
+
line: 'gap-1 px-2 w-full justify-start'
|
|
10
|
+
}
|
|
11
|
+
},
|
|
12
|
+
defaultVariants: {
|
|
13
|
+
variant: 'default'
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
|
|
17
|
+
export type TabsListVariant = VariantProps<typeof tabsListVariants>['variant'];
|
|
18
|
+
</script>
|
|
19
|
+
|
|
1
20
|
<script lang="ts">
|
|
2
21
|
import { Tabs as TabsPrimitive } from 'bits-ui';
|
|
3
22
|
import { cn } from '$lib/utils.js';
|
|
4
23
|
|
|
5
|
-
let {
|
|
24
|
+
let {
|
|
25
|
+
ref = $bindable(null),
|
|
26
|
+
class: className,
|
|
27
|
+
variant = 'default',
|
|
28
|
+
...restProps
|
|
29
|
+
}: TabsPrimitive.ListProps & { variant?: TabsListVariant } = $props();
|
|
6
30
|
</script>
|
|
7
31
|
|
|
8
32
|
<TabsPrimitive.List
|
|
9
33
|
bind:ref
|
|
10
34
|
data-slot="tabs-list"
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
className
|
|
14
|
-
)}
|
|
35
|
+
data-variant={variant}
|
|
36
|
+
class={cn(tabsListVariants({ variant }), className)}
|
|
15
37
|
{...restProps}
|
|
16
38
|
/>
|
|
@@ -1,3 +1,23 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { type VariantProps, tv } from 'tailwind-variants';
|
|
3
|
+
|
|
4
|
+
export const tabsTriggerVariants = tv({
|
|
5
|
+
base: "gap-1.5 text-sm font-medium [&_svg:not([class*='size-'])]:size-4 inline-flex items-center justify-center whitespace-nowrap focus-visible:ring-3 focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default:
|
|
9
|
+
'px-2 py-1 data-[state=active]:shadow-sm h-full flex-1 rounded-md border border-transparent text-foreground transition focus-visible:border-ring data-[state=active]:bg-background dark:text-muted-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground',
|
|
10
|
+
line: 'px-2.5 py-3 relative flex-none text-muted-foreground transition-colors after:absolute after:inset-x-2 after:bottom-0 after:h-0.5 after:rounded-full hover:text-foreground data-[state=active]:text-foreground data-[state=active]:after:bg-primary'
|
|
11
|
+
}
|
|
12
|
+
},
|
|
13
|
+
defaultVariants: {
|
|
14
|
+
variant: 'default'
|
|
15
|
+
}
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
export type TabsTriggerVariant = VariantProps<typeof tabsTriggerVariants>['variant'];
|
|
19
|
+
</script>
|
|
20
|
+
|
|
1
21
|
<script lang="ts">
|
|
2
22
|
import { Tabs as TabsPrimitive } from 'bits-ui';
|
|
3
23
|
import { cn } from '$lib/utils.js';
|
|
@@ -5,16 +25,14 @@
|
|
|
5
25
|
let {
|
|
6
26
|
ref = $bindable(null),
|
|
7
27
|
class: className,
|
|
28
|
+
variant = 'default',
|
|
8
29
|
...restProps
|
|
9
|
-
}: TabsPrimitive.TriggerProps = $props();
|
|
30
|
+
}: TabsPrimitive.TriggerProps & { variant?: TabsTriggerVariant } = $props();
|
|
10
31
|
</script>
|
|
11
32
|
|
|
12
33
|
<TabsPrimitive.Trigger
|
|
13
34
|
bind:ref
|
|
14
35
|
data-slot="tabs-trigger"
|
|
15
|
-
class={cn(
|
|
16
|
-
"gap-1.5 px-2 py-1 text-sm font-medium data-[state=active]:shadow-sm [&_svg:not([class*='size-'])]:size-4 inline-flex h-[calc(100%-1px)] flex-1 items-center justify-center rounded-md border border-transparent whitespace-nowrap text-foreground transition-[color,box-shadow] focus-visible:border-ring focus-visible:ring-[3px] focus-visible:ring-ring/50 focus-visible:outline-1 focus-visible:outline-ring disabled:pointer-events-none disabled:opacity-50 data-[state=active]:bg-background dark:text-muted-foreground dark:data-[state=active]:border-input dark:data-[state=active]:bg-input/30 dark:data-[state=active]:text-foreground [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
17
|
-
className
|
|
18
|
-
)}
|
|
36
|
+
class={cn(tabsTriggerVariants({ variant }), className)}
|
|
19
37
|
{...restProps}
|
|
20
38
|
/>
|
|
@@ -6,14 +6,18 @@
|
|
|
6
6
|
ref = $bindable(null),
|
|
7
7
|
value = $bindable(''),
|
|
8
8
|
class: className,
|
|
9
|
+
variant = 'default',
|
|
9
10
|
...restProps
|
|
10
|
-
}: TabsPrimitive.RootProps
|
|
11
|
+
}: TabsPrimitive.RootProps & {
|
|
12
|
+
/** Match the list's variant: `line` tabs sit flush on their panel, so the gap goes. */
|
|
13
|
+
variant?: 'default' | 'line';
|
|
14
|
+
} = $props();
|
|
11
15
|
</script>
|
|
12
16
|
|
|
13
17
|
<TabsPrimitive.Root
|
|
14
18
|
bind:ref
|
|
15
19
|
bind:value
|
|
16
20
|
data-slot="tabs"
|
|
17
|
-
class={cn('
|
|
21
|
+
class={cn('flex flex-col', variant === 'line' ? 'gap-0' : 'gap-2', className)}
|
|
18
22
|
{...restProps}
|
|
19
23
|
/>
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
bind:this={ref}
|
|
16
16
|
data-slot={dataSlot}
|
|
17
17
|
class={cn(
|
|
18
|
-
'min-h-16 px-3 py-2 text-base shadow-xs md:text-sm flex field-sizing-content w-full rounded-md border border-input bg-transparent transition
|
|
18
|
+
'min-h-16 px-3 py-2 text-base shadow-xs md:text-sm flex field-sizing-content w-full rounded-md border border-input bg-transparent transition outline-none placeholder:text-muted-foreground 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 dark:bg-input/30 dark:aria-invalid:ring-destructive/40',
|
|
19
19
|
className
|
|
20
20
|
)}
|
|
21
21
|
bind:value
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { type VariantProps, tv } from 'tailwind-variants';
|
|
3
|
+
|
|
4
|
+
export const toggleVariants = tv({
|
|
5
|
+
base: "hover:text-foreground aria-pressed:bg-muted focus-visible:border-ring focus-visible:ring-ring/50 aria-invalid:ring-destructive/20 dark:aria-invalid:ring-destructive/40 aria-invalid:border-destructive data-[state=on]:bg-muted gap-1 rounded-lg text-sm font-medium transition-all [&_svg:not([class*='size-'])]:size-4 group/toggle inline-flex items-center justify-center whitespace-nowrap outline-none hover:bg-muted focus-visible:ring-3 disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:shrink-0",
|
|
6
|
+
variants: {
|
|
7
|
+
variant: {
|
|
8
|
+
default: 'bg-transparent',
|
|
9
|
+
outline: 'border-input hover:bg-muted border bg-transparent'
|
|
10
|
+
},
|
|
11
|
+
size: {
|
|
12
|
+
default:
|
|
13
|
+
'h-8 min-w-8 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2',
|
|
14
|
+
sm: "h-7 min-w-7 rounded-md px-2.5 text-xs has-data-[icon=inline-end]:pr-1.5 has-data-[icon=inline-start]:pl-1.5 [&_svg:not([class*='size-'])]:size-3.5",
|
|
15
|
+
lg: 'h-9 min-w-9 px-2.5 has-data-[icon=inline-end]:pr-2 has-data-[icon=inline-start]:pl-2'
|
|
16
|
+
}
|
|
17
|
+
},
|
|
18
|
+
defaultVariants: {
|
|
19
|
+
variant: 'default',
|
|
20
|
+
size: 'default'
|
|
21
|
+
}
|
|
22
|
+
});
|
|
23
|
+
|
|
24
|
+
export type ToggleVariant = VariantProps<typeof toggleVariants>['variant'];
|
|
25
|
+
export type ToggleSize = VariantProps<typeof toggleVariants>['size'];
|
|
26
|
+
export type ToggleVariants = VariantProps<typeof toggleVariants>;
|
|
27
|
+
</script>
|
|
28
|
+
|
|
29
|
+
<script lang="ts">
|
|
30
|
+
import { Toggle as TogglePrimitive } from 'bits-ui';
|
|
31
|
+
import { cn } from '$lib/utils.js';
|
|
32
|
+
|
|
33
|
+
let {
|
|
34
|
+
ref = $bindable(null),
|
|
35
|
+
pressed = $bindable(false),
|
|
36
|
+
class: className,
|
|
37
|
+
size = 'default',
|
|
38
|
+
variant = 'default',
|
|
39
|
+
...restProps
|
|
40
|
+
}: TogglePrimitive.RootProps & {
|
|
41
|
+
variant?: ToggleVariant;
|
|
42
|
+
size?: ToggleSize;
|
|
43
|
+
} = $props();
|
|
44
|
+
</script>
|
|
45
|
+
|
|
46
|
+
<TogglePrimitive.Root
|
|
47
|
+
bind:ref
|
|
48
|
+
bind:pressed
|
|
49
|
+
data-slot="toggle"
|
|
50
|
+
class={cn(toggleVariants({ variant, size }), className)}
|
|
51
|
+
{...restProps}
|
|
52
|
+
/>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<script lang="ts">
|
|
2
|
+
import { ToggleGroup as ToggleGroupPrimitive } from 'bits-ui';
|
|
3
|
+
import { type ToggleVariants, toggleVariants } from '$lib/components/primitives/toggle/index.js';
|
|
4
|
+
import { cn } from '$lib/utils.js';
|
|
5
|
+
import { getToggleGroupCtx } from './toggle-group.svelte';
|
|
6
|
+
|
|
7
|
+
let {
|
|
8
|
+
ref = $bindable(null),
|
|
9
|
+
value = $bindable(),
|
|
10
|
+
class: className,
|
|
11
|
+
size,
|
|
12
|
+
variant,
|
|
13
|
+
...restProps
|
|
14
|
+
}: ToggleGroupPrimitive.ItemProps & ToggleVariants = $props();
|
|
15
|
+
|
|
16
|
+
const ctx = getToggleGroupCtx();
|
|
17
|
+
</script>
|
|
18
|
+
|
|
19
|
+
<ToggleGroupPrimitive.Item
|
|
20
|
+
bind:ref
|
|
21
|
+
data-slot="toggle-group-item"
|
|
22
|
+
data-variant={ctx.variant || variant}
|
|
23
|
+
data-size={ctx.size || size}
|
|
24
|
+
data-spacing={ctx.spacing}
|
|
25
|
+
class={cn(
|
|
26
|
+
'group-data-[spacing=0]/toggle-group:px-2 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-end]:pr-1.5 group-data-[spacing=0]/toggle-group:has-data-[icon=inline-start]:pl-1.5 shrink-0 group-data-[spacing=0]/toggle-group:rounded-none focus:z-10 focus-visible:z-10 group-data-horizontal/toggle-group:data-[spacing=0]:first:rounded-l-lg group-data-vertical/toggle-group:data-[spacing=0]:first:rounded-t-lg group-data-horizontal/toggle-group:data-[spacing=0]:last:rounded-r-lg group-data-vertical/toggle-group:data-[spacing=0]:last:rounded-b-lg group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:border-l-0 group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:border-t-0 group-data-horizontal/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-l group-data-vertical/toggle-group:data-[spacing=0]:data-[variant=outline]:first:border-t',
|
|
27
|
+
toggleVariants({
|
|
28
|
+
variant: ctx.variant || variant,
|
|
29
|
+
size: ctx.size || size
|
|
30
|
+
}),
|
|
31
|
+
className
|
|
32
|
+
)}
|
|
33
|
+
{value}
|
|
34
|
+
{...restProps}
|
|
35
|
+
/>
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
<script lang="ts" module>
|
|
2
|
+
import { getContext, setContext } from 'svelte';
|
|
3
|
+
import { toggleVariants } from '$lib/components/primitives/toggle/index.js';
|
|
4
|
+
import type { VariantProps } from 'tailwind-variants';
|
|
5
|
+
|
|
6
|
+
type ToggleVariants = VariantProps<typeof toggleVariants>;
|
|
7
|
+
|
|
8
|
+
interface ToggleGroupContext extends ToggleVariants {
|
|
9
|
+
spacing?: number;
|
|
10
|
+
orientation?: 'horizontal' | 'vertical';
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export function setToggleGroupCtx(props: ToggleGroupContext) {
|
|
14
|
+
setContext('toggleGroup', props);
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
export function getToggleGroupCtx() {
|
|
18
|
+
return getContext<Required<ToggleGroupContext>>('toggleGroup');
|
|
19
|
+
}
|
|
20
|
+
</script>
|
|
21
|
+
|
|
22
|
+
<script lang="ts">
|
|
23
|
+
import { ToggleGroup as ToggleGroupPrimitive } from 'bits-ui';
|
|
24
|
+
import { cn } from '$lib/utils.js';
|
|
25
|
+
|
|
26
|
+
let {
|
|
27
|
+
ref = $bindable(null),
|
|
28
|
+
value = $bindable(),
|
|
29
|
+
class: className,
|
|
30
|
+
size = 'default',
|
|
31
|
+
spacing = 0,
|
|
32
|
+
orientation = 'horizontal',
|
|
33
|
+
variant = 'default',
|
|
34
|
+
...restProps
|
|
35
|
+
}: ToggleGroupPrimitive.RootProps &
|
|
36
|
+
ToggleVariants & {
|
|
37
|
+
spacing?: number;
|
|
38
|
+
orientation?: 'horizontal' | 'vertical';
|
|
39
|
+
} = $props();
|
|
40
|
+
|
|
41
|
+
setToggleGroupCtx({
|
|
42
|
+
get variant() {
|
|
43
|
+
return variant;
|
|
44
|
+
},
|
|
45
|
+
get size() {
|
|
46
|
+
return size;
|
|
47
|
+
},
|
|
48
|
+
get spacing() {
|
|
49
|
+
return spacing;
|
|
50
|
+
},
|
|
51
|
+
get orientation() {
|
|
52
|
+
return orientation;
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
</script>
|
|
56
|
+
|
|
57
|
+
<!--
|
|
58
|
+
Discriminated Unions + Destructing (required for bindable) do not
|
|
59
|
+
get along, so we shut typescript up by casting `value` to `never`.
|
|
60
|
+
-->
|
|
61
|
+
<ToggleGroupPrimitive.Root
|
|
62
|
+
bind:value={value as never}
|
|
63
|
+
bind:ref
|
|
64
|
+
{orientation}
|
|
65
|
+
data-slot="toggle-group"
|
|
66
|
+
data-variant={variant}
|
|
67
|
+
data-size={size}
|
|
68
|
+
data-spacing={spacing}
|
|
69
|
+
style="--gap: calc(var(--spacing) * {spacing})"
|
|
70
|
+
class={cn(
|
|
71
|
+
'group/toggle-group flex w-fit flex-row items-center gap-(--gap) rounded-lg data-vertical:flex-col data-vertical:items-stretch data-[size=sm]:rounded-md',
|
|
72
|
+
className
|
|
73
|
+
)}
|
|
74
|
+
{...restProps}
|
|
75
|
+
/>
|
|
@@ -48,10 +48,10 @@
|
|
|
48
48
|
</script>
|
|
49
49
|
|
|
50
50
|
<Dialog.Root bind:open {onOpenChange}>
|
|
51
|
-
<Dialog.Content class="min-w-60 max-w-xs
|
|
51
|
+
<Dialog.Content variant="flush" class="min-w-60 max-w-xs w-auto">
|
|
52
52
|
{#if meshName}
|
|
53
53
|
<div class="px-4 pt-3 pb-2 border-b">
|
|
54
|
-
<Dialog.Title
|
|
54
|
+
<Dialog.Title size="sm">{meshName}</Dialog.Title>
|
|
55
55
|
</div>
|
|
56
56
|
{:else}
|
|
57
57
|
<Dialog.Title class="sr-only">{t.objectFallbackName}</Dialog.Title>
|
|
@@ -102,7 +102,7 @@
|
|
|
102
102
|
{:else if typeof value === 'number'}
|
|
103
103
|
<span class="font-mono">{value}</span>
|
|
104
104
|
{:else if typeof value === 'boolean'}
|
|
105
|
-
<span class={value ? 'text-
|
|
105
|
+
<span class={value ? 'text-success' : 'text-muted-foreground'}
|
|
106
106
|
>{value ? 'true' : 'false'}</span
|
|
107
107
|
>
|
|
108
108
|
{:else}
|
|
@@ -256,9 +256,18 @@
|
|
|
256
256
|
<!-- Spacer sized to the full list; windowed rows are placed into it by offset. The listbox
|
|
257
257
|
sits here rather than per layer: windowing renders one flat row list, so every option
|
|
258
258
|
shares a single owner. -->
|
|
259
|
-
<div
|
|
259
|
+
<div
|
|
260
|
+
role="listbox"
|
|
261
|
+
aria-multiselectable="true"
|
|
262
|
+
class="relative h-(--list-h)"
|
|
263
|
+
style:--list-h="{totalHeight}px"
|
|
264
|
+
>
|
|
260
265
|
{#each visibleRows as row (row.key)}
|
|
261
|
-
<div
|
|
266
|
+
<div
|
|
267
|
+
class="inset-x-0 absolute top-(--row-top) h-(--row-h)"
|
|
268
|
+
style:--row-top="{row.top}px"
|
|
269
|
+
style:--row-h="{row.height}px"
|
|
270
|
+
>
|
|
262
271
|
{#if row.kind === 'layer'}
|
|
263
272
|
{@const entries = row.entries}
|
|
264
273
|
{@const numHidden = hiddenCount(entries)}
|
|
@@ -304,7 +313,7 @@
|
|
|
304
313
|
{row.layerName}
|
|
305
314
|
</span>
|
|
306
315
|
|
|
307
|
-
<span class="shrink-0 text-
|
|
316
|
+
<span class="shrink-0 text-2xs text-muted-foreground/50 tabular-nums">
|
|
308
317
|
{entries.length}
|
|
309
318
|
</span>
|
|
310
319
|
</div>
|
|
@@ -355,7 +364,7 @@
|
|
|
355
364
|
</span>
|
|
356
365
|
|
|
357
366
|
<span
|
|
358
|
-
class="rounded px-1 py-0.5 font-medium shrink-0 bg-muted text-
|
|
367
|
+
class="rounded px-1 py-0.5 font-medium shrink-0 bg-muted text-2xs text-muted-foreground/70"
|
|
359
368
|
>
|
|
360
369
|
{getTypeLabel(entry.object)}
|
|
361
370
|
</span>
|
|
@@ -390,7 +399,7 @@
|
|
|
390
399
|
background: transparent;
|
|
391
400
|
}
|
|
392
401
|
div::-webkit-scrollbar-thumb {
|
|
393
|
-
background:
|
|
402
|
+
background: color-mix(in oklch, var(--muted-foreground) 15%, transparent);
|
|
394
403
|
border-radius: 2px;
|
|
395
404
|
}
|
|
396
405
|
</style>
|