@nuxt/ui 4.9.0 → 4.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nuxt/ui.static.css +11 -11
- package/README.md +1 -0
- package/cli/commands/make/locale.mjs +40 -11
- package/cli/templates.mjs +2 -2
- package/dist/module.d.mts +1 -1
- package/dist/module.json +2 -2
- package/dist/module.mjs +10 -2
- package/dist/runtime/components/Accordion.d.vue.ts +2 -2
- package/dist/runtime/components/Accordion.vue +1 -1
- package/dist/runtime/components/Accordion.vue.d.ts +2 -2
- package/dist/runtime/components/Alert.d.vue.ts +4 -1
- package/dist/runtime/components/Alert.vue +1 -1
- package/dist/runtime/components/Alert.vue.d.ts +4 -1
- package/dist/runtime/components/App.d.vue.ts +3 -3
- package/dist/runtime/components/App.vue.d.ts +3 -3
- package/dist/runtime/components/AuthForm.d.vue.ts +18 -9
- package/dist/runtime/components/AuthForm.vue +22 -13
- package/dist/runtime/components/AuthForm.vue.d.ts +18 -9
- package/dist/runtime/components/Avatar.d.vue.ts +2 -1
- package/dist/runtime/components/Avatar.vue +3 -3
- package/dist/runtime/components/Avatar.vue.d.ts +2 -1
- package/dist/runtime/components/AvatarGroup.vue +1 -1
- package/dist/runtime/components/Badge.vue +1 -1
- package/dist/runtime/components/Banner.d.vue.ts +3 -1
- package/dist/runtime/components/Banner.vue +4 -3
- package/dist/runtime/components/Banner.vue.d.ts +3 -1
- package/dist/runtime/components/BlogPost.d.vue.ts +5 -3
- package/dist/runtime/components/BlogPost.vue +11 -4
- package/dist/runtime/components/BlogPost.vue.d.ts +5 -3
- package/dist/runtime/components/BlogPosts.d.vue.ts +2 -2
- package/dist/runtime/components/BlogPosts.vue +1 -1
- package/dist/runtime/components/BlogPosts.vue.d.ts +2 -2
- package/dist/runtime/components/Breadcrumb.d.vue.ts +4 -2
- package/dist/runtime/components/Breadcrumb.vue +1 -1
- package/dist/runtime/components/Breadcrumb.vue.d.ts +4 -2
- package/dist/runtime/components/Button.d.vue.ts +2 -2
- package/dist/runtime/components/Button.vue +13 -4
- package/dist/runtime/components/Button.vue.d.ts +2 -2
- package/dist/runtime/components/Calendar.d.vue.ts +4 -2
- package/dist/runtime/components/Calendar.vue +1 -1
- package/dist/runtime/components/Calendar.vue.d.ts +4 -2
- package/dist/runtime/components/Card.vue +1 -1
- package/dist/runtime/components/Carousel.d.vue.ts +4 -2
- package/dist/runtime/components/Carousel.vue +2 -5
- package/dist/runtime/components/Carousel.vue.d.ts +4 -2
- package/dist/runtime/components/ChangelogVersion.d.vue.ts +4 -2
- package/dist/runtime/components/ChangelogVersion.vue +4 -4
- package/dist/runtime/components/ChangelogVersion.vue.d.ts +4 -2
- package/dist/runtime/components/ChangelogVersions.d.vue.ts +2 -2
- package/dist/runtime/components/ChangelogVersions.vue +1 -1
- package/dist/runtime/components/ChangelogVersions.vue.d.ts +2 -2
- package/dist/runtime/components/ChatMessage.d.vue.ts +4 -2
- package/dist/runtime/components/ChatMessage.vue +1 -1
- package/dist/runtime/components/ChatMessage.vue.d.ts +4 -2
- package/dist/runtime/components/ChatMessages.d.vue.ts +5 -2
- package/dist/runtime/components/ChatMessages.vue +4 -4
- package/dist/runtime/components/ChatMessages.vue.d.ts +5 -2
- package/dist/runtime/components/ChatPalette.vue +1 -1
- package/dist/runtime/components/ChatPrompt.d.vue.ts +15 -1
- package/dist/runtime/components/ChatPrompt.vue +31 -20
- package/dist/runtime/components/ChatPrompt.vue.d.ts +15 -1
- package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +8 -6
- package/dist/runtime/components/ChatPromptSubmit.vue +1 -1
- package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +8 -6
- package/dist/runtime/components/ChatReasoning.d.vue.ts +2 -2
- package/dist/runtime/components/ChatReasoning.vue +1 -1
- package/dist/runtime/components/ChatReasoning.vue.d.ts +2 -2
- package/dist/runtime/components/ChatShimmer.vue +1 -1
- package/dist/runtime/components/ChatTool.d.vue.ts +9 -2
- package/dist/runtime/components/ChatTool.vue +20 -2
- package/dist/runtime/components/ChatTool.vue.d.ts +9 -2
- package/dist/runtime/components/Checkbox.d.vue.ts +3 -3
- package/dist/runtime/components/Checkbox.vue +14 -8
- package/dist/runtime/components/Checkbox.vue.d.ts +3 -3
- package/dist/runtime/components/CheckboxGroup.d.vue.ts +8 -2
- package/dist/runtime/components/CheckboxGroup.vue +10 -4
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +8 -2
- package/dist/runtime/components/Chip.vue +3 -3
- package/dist/runtime/components/Collapsible.vue +1 -1
- package/dist/runtime/components/ColorPicker.vue +1 -1
- package/dist/runtime/components/CommandPalette.d.vue.ts +13 -7
- package/dist/runtime/components/CommandPalette.vue +2 -2
- package/dist/runtime/components/CommandPalette.vue.d.ts +13 -7
- package/dist/runtime/components/Container.vue +1 -1
- package/dist/runtime/components/ContextMenu.d.vue.ts +5 -2
- package/dist/runtime/components/ContextMenu.vue +1 -1
- package/dist/runtime/components/ContextMenu.vue.d.ts +5 -2
- package/dist/runtime/components/ContextMenuContent.d.vue.ts +3 -2
- package/dist/runtime/components/ContextMenuContent.vue +1 -0
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +3 -2
- package/dist/runtime/components/DashboardGroup.d.vue.ts +1 -1
- package/dist/runtime/components/DashboardGroup.vue +1 -1
- package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -1
- package/dist/runtime/components/DashboardNavbar.d.vue.ts +3 -1
- package/dist/runtime/components/DashboardNavbar.vue +2 -2
- package/dist/runtime/components/DashboardNavbar.vue.d.ts +3 -1
- package/dist/runtime/components/DashboardPanel.vue +2 -2
- package/dist/runtime/components/DashboardResizeHandle.vue +1 -1
- package/dist/runtime/components/DashboardSearch.d.vue.ts +8 -4
- package/dist/runtime/components/DashboardSearch.vue +3 -2
- package/dist/runtime/components/DashboardSearch.vue.d.ts +8 -4
- package/dist/runtime/components/DashboardSearchButton.d.vue.ts +7 -3
- package/dist/runtime/components/DashboardSearchButton.vue +1 -1
- package/dist/runtime/components/DashboardSearchButton.vue.d.ts +7 -3
- package/dist/runtime/components/DashboardSidebar.d.vue.ts +6 -2
- package/dist/runtime/components/DashboardSidebar.vue +2 -2
- package/dist/runtime/components/DashboardSidebar.vue.d.ts +6 -2
- package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +3 -2
- package/dist/runtime/components/DashboardSidebarCollapse.vue +1 -1
- package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +3 -2
- package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +3 -2
- package/dist/runtime/components/DashboardSidebarToggle.vue +1 -1
- package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +3 -2
- package/dist/runtime/components/DashboardToolbar.vue +1 -1
- package/dist/runtime/components/Drawer.d.vue.ts +23 -4
- package/dist/runtime/components/Drawer.vue +39 -13
- package/dist/runtime/components/Drawer.vue.d.ts +23 -4
- package/dist/runtime/components/DropdownMenu.d.vue.ts +6 -2
- package/dist/runtime/components/DropdownMenu.vue +1 -1
- package/dist/runtime/components/DropdownMenu.vue.d.ts +6 -2
- package/dist/runtime/components/DropdownMenuContent.d.vue.ts +6 -4
- package/dist/runtime/components/DropdownMenuContent.vue +1 -0
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +6 -4
- package/dist/runtime/components/Editor.d.vue.ts +3 -2
- package/dist/runtime/components/Editor.vue +44 -18
- package/dist/runtime/components/Editor.vue.d.ts +3 -2
- package/dist/runtime/components/EditorDragHandle.d.vue.ts +5 -3
- package/dist/runtime/components/EditorDragHandle.vue +2 -2
- package/dist/runtime/components/EditorDragHandle.vue.d.ts +5 -3
- package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +1 -1
- package/dist/runtime/components/EditorEmojiMenu.vue +1 -1
- package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +1 -1
- package/dist/runtime/components/EditorMentionMenu.d.vue.ts +3 -2
- package/dist/runtime/components/EditorMentionMenu.vue +1 -1
- package/dist/runtime/components/EditorMentionMenu.vue.d.ts +3 -2
- package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +2 -2
- package/dist/runtime/components/EditorSuggestionMenu.vue +1 -1
- package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +2 -2
- package/dist/runtime/components/EditorToolbar.d.vue.ts +5 -2
- package/dist/runtime/components/EditorToolbar.vue +1 -1
- package/dist/runtime/components/EditorToolbar.vue.d.ts +5 -2
- package/dist/runtime/components/Empty.d.vue.ts +11 -1
- package/dist/runtime/components/Empty.vue +9 -5
- package/dist/runtime/components/Empty.vue.d.ts +11 -1
- package/dist/runtime/components/Error.d.vue.ts +3 -2
- package/dist/runtime/components/Error.vue +1 -1
- package/dist/runtime/components/Error.vue.d.ts +3 -2
- package/dist/runtime/components/FieldGroup.vue +1 -1
- package/dist/runtime/components/FileUpload.d.vue.ts +4 -2
- package/dist/runtime/components/FileUpload.vue +21 -13
- package/dist/runtime/components/FileUpload.vue.d.ts +4 -2
- package/dist/runtime/components/Footer.vue +1 -1
- package/dist/runtime/components/FooterColumns.d.vue.ts +3 -2
- package/dist/runtime/components/FooterColumns.vue +1 -1
- package/dist/runtime/components/FooterColumns.vue.d.ts +3 -2
- package/dist/runtime/components/Form.d.vue.ts +2 -2
- package/dist/runtime/components/Form.vue +1 -1
- package/dist/runtime/components/Form.vue.d.ts +2 -2
- package/dist/runtime/components/FormField.vue +1 -1
- package/dist/runtime/components/Header.d.vue.ts +6 -2
- package/dist/runtime/components/Header.vue +2 -2
- package/dist/runtime/components/Header.vue.d.ts +6 -2
- package/dist/runtime/components/Input.d.vue.ts +1 -1
- package/dist/runtime/components/Input.vue +15 -10
- package/dist/runtime/components/Input.vue.d.ts +1 -1
- package/dist/runtime/components/InputDate.d.vue.ts +2 -2
- package/dist/runtime/components/InputDate.vue +16 -11
- package/dist/runtime/components/InputDate.vue.d.ts +2 -2
- package/dist/runtime/components/InputMenu.d.vue.ts +49 -45
- package/dist/runtime/components/InputMenu.vue +32 -15
- package/dist/runtime/components/InputMenu.vue.d.ts +49 -45
- package/dist/runtime/components/InputNumber.d.vue.ts +4 -2
- package/dist/runtime/components/InputNumber.vue +16 -11
- package/dist/runtime/components/InputNumber.vue.d.ts +4 -2
- package/dist/runtime/components/InputRating.d.vue.ts +79 -0
- package/dist/runtime/components/InputRating.vue +112 -0
- package/dist/runtime/components/InputRating.vue.d.ts +79 -0
- package/dist/runtime/components/InputTags.d.vue.ts +2 -2
- package/dist/runtime/components/InputTags.vue +14 -9
- package/dist/runtime/components/InputTags.vue.d.ts +2 -2
- package/dist/runtime/components/InputTime.d.vue.ts +2 -2
- package/dist/runtime/components/InputTime.vue +15 -10
- package/dist/runtime/components/InputTime.vue.d.ts +2 -2
- package/dist/runtime/components/Kbd.vue +1 -1
- package/dist/runtime/components/Link.d.vue.ts +2 -2
- package/dist/runtime/components/Link.vue +18 -10
- package/dist/runtime/components/Link.vue.d.ts +2 -2
- package/dist/runtime/components/LinkBase.d.vue.ts +3 -3
- package/dist/runtime/components/LinkBase.vue.d.ts +3 -3
- package/dist/runtime/components/Listbox.d.vue.ts +16 -13
- package/dist/runtime/components/Listbox.vue +12 -8
- package/dist/runtime/components/Listbox.vue.d.ts +16 -13
- package/dist/runtime/components/Main.vue +1 -1
- package/dist/runtime/components/Marquee.vue +1 -1
- package/dist/runtime/components/Modal.d.vue.ts +8 -6
- package/dist/runtime/components/Modal.vue +17 -9
- package/dist/runtime/components/Modal.vue.d.ts +8 -6
- package/dist/runtime/components/NavigationMenu.d.vue.ts +8 -2
- package/dist/runtime/components/NavigationMenu.vue +2 -2
- package/dist/runtime/components/NavigationMenu.vue.d.ts +8 -2
- package/dist/runtime/components/Page.vue +1 -1
- package/dist/runtime/components/PageAnchors.d.vue.ts +3 -2
- package/dist/runtime/components/PageAnchors.vue +1 -1
- package/dist/runtime/components/PageAnchors.vue.d.ts +3 -2
- package/dist/runtime/components/PageAside.vue +1 -1
- package/dist/runtime/components/PageBody.vue +1 -1
- package/dist/runtime/components/PageCTA.d.vue.ts +1 -1
- package/dist/runtime/components/PageCTA.vue +1 -1
- package/dist/runtime/components/PageCTA.vue.d.ts +1 -1
- package/dist/runtime/components/PageCard.d.vue.ts +3 -2
- package/dist/runtime/components/PageCard.vue +4 -3
- package/dist/runtime/components/PageCard.vue.d.ts +3 -2
- package/dist/runtime/components/PageColumns.vue +1 -1
- package/dist/runtime/components/PageFeature.d.vue.ts +3 -2
- package/dist/runtime/components/PageFeature.vue +10 -3
- package/dist/runtime/components/PageFeature.vue.d.ts +3 -2
- package/dist/runtime/components/PageGrid.vue +1 -1
- package/dist/runtime/components/PageHeader.d.vue.ts +1 -1
- package/dist/runtime/components/PageHeader.vue +1 -1
- package/dist/runtime/components/PageHeader.vue.d.ts +1 -1
- package/dist/runtime/components/PageHero.d.vue.ts +1 -1
- package/dist/runtime/components/PageHero.vue +1 -1
- package/dist/runtime/components/PageHero.vue.d.ts +1 -1
- package/dist/runtime/components/PageLinks.d.vue.ts +3 -2
- package/dist/runtime/components/PageLinks.vue +1 -1
- package/dist/runtime/components/PageLinks.vue.d.ts +3 -2
- package/dist/runtime/components/PageList.vue +1 -1
- package/dist/runtime/components/PageLogos.d.vue.ts +1 -1
- package/dist/runtime/components/PageLogos.vue +2 -2
- package/dist/runtime/components/PageLogos.vue.d.ts +1 -1
- package/dist/runtime/components/PageSection.d.vue.ts +4 -2
- package/dist/runtime/components/PageSection.vue +1 -1
- package/dist/runtime/components/PageSection.vue.d.ts +4 -2
- package/dist/runtime/components/Pagination.d.vue.ts +4 -3
- package/dist/runtime/components/Pagination.vue +1 -1
- package/dist/runtime/components/Pagination.vue.d.ts +4 -3
- package/dist/runtime/components/PinInput.d.vue.ts +1 -1
- package/dist/runtime/components/PinInput.vue +14 -9
- package/dist/runtime/components/PinInput.vue.d.ts +1 -1
- package/dist/runtime/components/Popover.d.vue.ts +4 -4
- package/dist/runtime/components/Popover.vue +4 -4
- package/dist/runtime/components/Popover.vue.d.ts +4 -4
- package/dist/runtime/components/PricingPlan.d.vue.ts +3 -1
- package/dist/runtime/components/PricingPlan.vue +2 -2
- package/dist/runtime/components/PricingPlan.vue.d.ts +3 -1
- package/dist/runtime/components/PricingPlans.d.vue.ts +2 -2
- package/dist/runtime/components/PricingPlans.vue +1 -1
- package/dist/runtime/components/PricingPlans.vue.d.ts +2 -2
- package/dist/runtime/components/PricingTable.d.vue.ts +3 -3
- package/dist/runtime/components/PricingTable.vue +2 -2
- package/dist/runtime/components/PricingTable.vue.d.ts +3 -3
- package/dist/runtime/components/Progress.d.vue.ts +2 -1
- package/dist/runtime/components/Progress.vue +6 -7
- package/dist/runtime/components/Progress.vue.d.ts +2 -1
- package/dist/runtime/components/ProgressGroup.d.vue.ts +91 -0
- package/dist/runtime/components/ProgressGroup.vue +99 -0
- package/dist/runtime/components/ProgressGroup.vue.d.ts +91 -0
- package/dist/runtime/components/RadioGroup.d.vue.ts +8 -2
- package/dist/runtime/components/RadioGroup.vue +15 -6
- package/dist/runtime/components/RadioGroup.vue.d.ts +8 -2
- package/dist/runtime/components/ScrollArea.d.vue.ts +8 -2
- package/dist/runtime/components/ScrollArea.vue +25 -19
- package/dist/runtime/components/ScrollArea.vue.d.ts +8 -2
- package/dist/runtime/components/Select.d.vue.ts +4 -2
- package/dist/runtime/components/Select.vue +24 -10
- package/dist/runtime/components/Select.vue.d.ts +4 -2
- package/dist/runtime/components/SelectMenu.d.vue.ts +50 -45
- package/dist/runtime/components/SelectMenu.vue +28 -14
- package/dist/runtime/components/SelectMenu.vue.d.ts +50 -45
- package/dist/runtime/components/Separator.d.vue.ts +3 -2
- package/dist/runtime/components/Separator.vue +3 -2
- package/dist/runtime/components/Separator.vue.d.ts +3 -2
- package/dist/runtime/components/Sidebar.d.vue.ts +7 -2
- package/dist/runtime/components/Sidebar.vue +3 -3
- package/dist/runtime/components/Sidebar.vue.d.ts +7 -2
- package/dist/runtime/components/Skeleton.vue +1 -1
- package/dist/runtime/components/Slideover.d.vue.ts +9 -7
- package/dist/runtime/components/Slideover.vue +5 -4
- package/dist/runtime/components/Slideover.vue.d.ts +9 -7
- package/dist/runtime/components/Slider.d.vue.ts +2 -2
- package/dist/runtime/components/Slider.vue +15 -8
- package/dist/runtime/components/Slider.vue.d.ts +2 -2
- package/dist/runtime/components/Splitter.d.vue.ts +266 -0
- package/dist/runtime/components/Splitter.vue +99 -0
- package/dist/runtime/components/Splitter.vue.d.ts +266 -0
- package/dist/runtime/components/Stepper.d.vue.ts +2 -2
- package/dist/runtime/components/Stepper.vue +1 -1
- package/dist/runtime/components/Stepper.vue.d.ts +2 -2
- package/dist/runtime/components/Switch.d.vue.ts +2 -2
- package/dist/runtime/components/Switch.vue +10 -6
- package/dist/runtime/components/Switch.vue.d.ts +2 -2
- package/dist/runtime/components/Table.d.vue.ts +8 -2
- package/dist/runtime/components/Table.vue +13 -6
- package/dist/runtime/components/Table.vue.d.ts +8 -2
- package/dist/runtime/components/Tabs.d.vue.ts +4 -2
- package/dist/runtime/components/Tabs.vue +1 -1
- package/dist/runtime/components/Tabs.vue.d.ts +4 -2
- package/dist/runtime/components/Textarea.d.vue.ts +1 -1
- package/dist/runtime/components/Textarea.vue +20 -10
- package/dist/runtime/components/Textarea.vue.d.ts +1 -1
- package/dist/runtime/components/Theme.d.vue.ts +2 -2
- package/dist/runtime/components/Theme.vue +4 -3
- package/dist/runtime/components/Theme.vue.d.ts +2 -2
- package/dist/runtime/components/Timeline.d.vue.ts +3 -2
- package/dist/runtime/components/Timeline.vue +1 -1
- package/dist/runtime/components/Timeline.vue.d.ts +3 -2
- package/dist/runtime/components/Toast.d.vue.ts +7 -3
- package/dist/runtime/components/Toast.vue +1 -1
- package/dist/runtime/components/Toast.vue.d.ts +7 -3
- package/dist/runtime/components/Toaster.d.vue.ts +1 -1
- package/dist/runtime/components/Toaster.vue +1 -1
- package/dist/runtime/components/Toaster.vue.d.ts +1 -1
- package/dist/runtime/components/Tooltip.d.vue.ts +1 -1
- package/dist/runtime/components/Tooltip.vue +1 -1
- package/dist/runtime/components/Tooltip.vue.d.ts +1 -1
- package/dist/runtime/components/Tree.d.vue.ts +2 -2
- package/dist/runtime/components/Tree.vue +3 -3
- package/dist/runtime/components/Tree.vue.d.ts +2 -2
- package/dist/runtime/components/User.d.vue.ts +4 -2
- package/dist/runtime/components/User.vue +10 -3
- package/dist/runtime/components/User.vue.d.ts +4 -2
- package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +1 -1
- package/dist/runtime/components/color-mode/ColorModeAvatar.vue.d.ts +1 -1
- package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +3 -2
- package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +3 -2
- package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
- package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
- package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
- package/dist/runtime/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
- package/dist/runtime/components/content/ContentNavigation.d.vue.ts +4 -2
- package/dist/runtime/components/content/ContentNavigation.vue +11 -4
- package/dist/runtime/components/content/ContentNavigation.vue.d.ts +4 -2
- package/dist/runtime/components/content/ContentSearch.d.vue.ts +8 -3
- package/dist/runtime/components/content/ContentSearch.vue +3 -2
- package/dist/runtime/components/content/ContentSearch.vue.d.ts +8 -3
- package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +7 -3
- package/dist/runtime/components/content/ContentSearchButton.vue +1 -1
- package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +7 -3
- package/dist/runtime/components/content/ContentSurround.d.vue.ts +2 -2
- package/dist/runtime/components/content/ContentSurround.vue +2 -2
- package/dist/runtime/components/content/ContentSurround.vue.d.ts +2 -2
- package/dist/runtime/components/content/ContentToc.d.vue.ts +2 -2
- package/dist/runtime/components/content/ContentToc.vue +36 -7
- package/dist/runtime/components/content/ContentToc.vue.d.ts +2 -2
- package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -1
- package/dist/runtime/components/locale/LocaleSelect.vue +8 -0
- package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -1
- package/dist/runtime/components/prose/A.vue +1 -1
- package/dist/runtime/components/prose/Accordion.d.vue.ts +1 -1
- package/dist/runtime/components/prose/Accordion.vue +1 -1
- package/dist/runtime/components/prose/Accordion.vue.d.ts +1 -1
- package/dist/runtime/components/prose/AccordionItem.vue +1 -1
- package/dist/runtime/components/prose/Badge.vue +1 -1
- package/dist/runtime/components/prose/Blockquote.vue +1 -1
- package/dist/runtime/components/prose/Callout.d.vue.ts +2 -1
- package/dist/runtime/components/prose/Callout.vue +2 -2
- package/dist/runtime/components/prose/Callout.vue.d.ts +2 -1
- package/dist/runtime/components/prose/Card.d.vue.ts +2 -1
- package/dist/runtime/components/prose/Card.vue +2 -2
- package/dist/runtime/components/prose/Card.vue.d.ts +2 -1
- package/dist/runtime/components/prose/CardGroup.vue +1 -1
- package/dist/runtime/components/prose/Code.vue +1 -1
- package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +1 -1
- package/dist/runtime/components/prose/CodeCollapse.vue +1 -1
- package/dist/runtime/components/prose/CodeCollapse.vue.d.ts +1 -1
- package/dist/runtime/components/prose/CodeGroup.vue +1 -1
- package/dist/runtime/components/prose/CodeIcon.d.vue.ts +1 -1
- package/dist/runtime/components/prose/CodeIcon.vue.d.ts +1 -1
- package/dist/runtime/components/prose/CodePreview.vue +1 -1
- package/dist/runtime/components/prose/CodeTree.vue +1 -1
- package/dist/runtime/components/prose/Collapsible.d.vue.ts +2 -1
- package/dist/runtime/components/prose/Collapsible.vue +1 -1
- package/dist/runtime/components/prose/Collapsible.vue.d.ts +2 -1
- package/dist/runtime/components/prose/Em.vue +1 -1
- package/dist/runtime/components/prose/Field.vue +1 -1
- package/dist/runtime/components/prose/FieldGroup.vue +1 -1
- package/dist/runtime/components/prose/H1.d.vue.ts +5 -0
- package/dist/runtime/components/prose/H1.vue +3 -2
- package/dist/runtime/components/prose/H1.vue.d.ts +5 -0
- package/dist/runtime/components/prose/H2.d.vue.ts +6 -0
- package/dist/runtime/components/prose/H2.vue +3 -2
- package/dist/runtime/components/prose/H2.vue.d.ts +6 -0
- package/dist/runtime/components/prose/H3.d.vue.ts +6 -0
- package/dist/runtime/components/prose/H3.vue +3 -2
- package/dist/runtime/components/prose/H3.vue.d.ts +6 -0
- package/dist/runtime/components/prose/H4.d.vue.ts +6 -0
- package/dist/runtime/components/prose/H4.vue +3 -2
- package/dist/runtime/components/prose/H4.vue.d.ts +6 -0
- package/dist/runtime/components/prose/Hr.vue +1 -1
- package/dist/runtime/components/prose/Icon.vue +1 -1
- package/dist/runtime/components/prose/Img.vue +1 -1
- package/dist/runtime/components/prose/Kbd.vue +1 -1
- package/dist/runtime/components/prose/Li.vue +1 -1
- package/dist/runtime/components/prose/Ol.vue +1 -1
- package/dist/runtime/components/prose/P.vue +1 -1
- package/dist/runtime/components/prose/Pre.d.vue.ts +12 -2
- package/dist/runtime/components/prose/Pre.vue +6 -3
- package/dist/runtime/components/prose/Pre.vue.d.ts +12 -2
- package/dist/runtime/components/prose/Prompt.d.vue.ts +4 -3
- package/dist/runtime/components/prose/Prompt.vue +21 -11
- package/dist/runtime/components/prose/Prompt.vue.d.ts +4 -3
- package/dist/runtime/components/prose/Steps.vue +1 -1
- package/dist/runtime/components/prose/Strong.vue +1 -1
- package/dist/runtime/components/prose/Table.vue +1 -1
- package/dist/runtime/components/prose/Tabs.d.vue.ts +1 -1
- package/dist/runtime/components/prose/Tabs.vue +1 -1
- package/dist/runtime/components/prose/Tabs.vue.d.ts +1 -1
- package/dist/runtime/components/prose/TabsItem.vue +1 -1
- package/dist/runtime/components/prose/Tbody.vue +1 -1
- package/dist/runtime/components/prose/Td.vue +1 -1
- package/dist/runtime/components/prose/Th.vue +1 -1
- package/dist/runtime/components/prose/Thead.vue +1 -1
- package/dist/runtime/components/prose/Tr.vue +1 -1
- package/dist/runtime/components/prose/Ul.vue +1 -1
- package/dist/runtime/composables/defineShortcuts.js +42 -5
- package/dist/runtime/composables/useAvatarGroup.d.ts +3 -3
- package/dist/runtime/composables/useComponentIcons.d.ts +2 -1
- package/dist/runtime/composables/useComponentProps.d.ts +4 -158
- package/dist/runtime/composables/useComponentProps.js +10 -2
- package/dist/runtime/composables/useEditorMenu.d.ts +2 -1
- package/dist/runtime/composables/useEditorMenu.js +8 -2
- package/dist/runtime/composables/useFieldGroup.d.ts +1 -1
- package/dist/runtime/composables/useFileUpload.js +3 -4
- package/dist/runtime/composables/useFormField.d.ts +12 -6
- package/dist/runtime/composables/useFormField.js +10 -3
- package/dist/runtime/composables/useResizable.js +24 -43
- package/dist/runtime/composables/useScrollspy.js +20 -12
- package/dist/runtime/composables/useToast.d.ts +1 -1
- package/dist/runtime/composables/useToast.js +22 -7
- package/dist/runtime/keyframes.css +1 -1
- package/dist/runtime/locale/ar.d.ts +1 -1
- package/dist/runtime/locale/ar.js +3 -0
- package/dist/runtime/locale/az.d.ts +1 -1
- package/dist/runtime/locale/az.js +3 -0
- package/dist/runtime/locale/be.d.ts +1 -1
- package/dist/runtime/locale/be.js +3 -0
- package/dist/runtime/locale/bg.d.ts +1 -1
- package/dist/runtime/locale/bg.js +3 -0
- package/dist/runtime/locale/bn.d.ts +1 -1
- package/dist/runtime/locale/bn.js +3 -0
- package/dist/runtime/locale/ca.d.ts +1 -1
- package/dist/runtime/locale/ca.js +3 -0
- package/dist/runtime/locale/ckb.d.ts +1 -1
- package/dist/runtime/locale/ckb.js +3 -0
- package/dist/runtime/locale/cs.d.ts +1 -1
- package/dist/runtime/locale/cs.js +3 -0
- package/dist/runtime/locale/da.d.ts +1 -1
- package/dist/runtime/locale/da.js +4 -1
- package/dist/runtime/locale/de.d.ts +1 -1
- package/dist/runtime/locale/de.js +3 -0
- package/dist/runtime/locale/{tj.d.ts → de_at.d.ts} +1 -1
- package/dist/runtime/locale/de_at.js +7 -0
- package/dist/runtime/locale/de_ch.d.ts +1 -1
- package/dist/runtime/locale/de_ch.js +4 -1
- package/dist/runtime/locale/el.d.ts +1 -1
- package/dist/runtime/locale/el.js +3 -0
- package/dist/runtime/locale/en.d.ts +1 -1
- package/dist/runtime/locale/en.js +3 -0
- package/dist/runtime/locale/en_gb.d.ts +1 -1
- package/dist/runtime/locale/es.d.ts +1 -1
- package/dist/runtime/locale/es.js +3 -0
- package/dist/runtime/locale/et.d.ts +1 -1
- package/dist/runtime/locale/et.js +3 -0
- package/dist/runtime/locale/eu.d.ts +1 -1
- package/dist/runtime/locale/eu.js +4 -1
- package/dist/runtime/locale/fa_ir.d.ts +1 -1
- package/dist/runtime/locale/fa_ir.js +3 -0
- package/dist/runtime/locale/fi.d.ts +1 -1
- package/dist/runtime/locale/fi.js +4 -1
- package/dist/runtime/locale/fr.d.ts +1 -1
- package/dist/runtime/locale/fr.js +3 -0
- package/dist/runtime/locale/gl.d.ts +1 -1
- package/dist/runtime/locale/gl.js +3 -0
- package/dist/runtime/locale/he.d.ts +1 -1
- package/dist/runtime/locale/he.js +4 -1
- package/dist/runtime/locale/hi.d.ts +1 -1
- package/dist/runtime/locale/hi.js +4 -1
- package/dist/runtime/locale/hr.d.ts +1 -1
- package/dist/runtime/locale/hr.js +3 -0
- package/dist/runtime/locale/hu.d.ts +1 -1
- package/dist/runtime/locale/hu.js +3 -0
- package/dist/runtime/locale/hy.d.ts +1 -1
- package/dist/runtime/locale/hy.js +3 -0
- package/dist/runtime/locale/id.d.ts +1 -1
- package/dist/runtime/locale/id.js +3 -0
- package/dist/runtime/locale/index.d.ts +2 -1
- package/dist/runtime/locale/index.js +2 -1
- package/dist/runtime/locale/is.d.ts +1 -1
- package/dist/runtime/locale/is.js +4 -1
- package/dist/runtime/locale/it.d.ts +1 -1
- package/dist/runtime/locale/it.js +3 -0
- package/dist/runtime/locale/ja.d.ts +1 -1
- package/dist/runtime/locale/ja.js +3 -0
- package/dist/runtime/locale/ka.d.ts +1 -1
- package/dist/runtime/locale/ka.js +3 -0
- package/dist/runtime/locale/kk.d.ts +1 -1
- package/dist/runtime/locale/kk.js +3 -0
- package/dist/runtime/locale/km.d.ts +1 -1
- package/dist/runtime/locale/km.js +3 -0
- package/dist/runtime/locale/ko.d.ts +1 -1
- package/dist/runtime/locale/ko.js +3 -0
- package/dist/runtime/locale/ky.d.ts +1 -1
- package/dist/runtime/locale/ky.js +3 -0
- package/dist/runtime/locale/lb.d.ts +1 -1
- package/dist/runtime/locale/lb.js +4 -1
- package/dist/runtime/locale/lo.d.ts +1 -1
- package/dist/runtime/locale/lo.js +3 -0
- package/dist/runtime/locale/lt.d.ts +1 -1
- package/dist/runtime/locale/lt.js +3 -0
- package/dist/runtime/locale/lv.d.ts +1 -1
- package/dist/runtime/locale/lv.js +3 -0
- package/dist/runtime/locale/mn.d.ts +1 -1
- package/dist/runtime/locale/mn.js +3 -0
- package/dist/runtime/locale/ms.d.ts +1 -1
- package/dist/runtime/locale/ms.js +3 -0
- package/dist/runtime/locale/nb_no.d.ts +1 -1
- package/dist/runtime/locale/nb_no.js +3 -0
- package/dist/runtime/locale/nl.d.ts +1 -1
- package/dist/runtime/locale/nl.js +3 -0
- package/dist/runtime/locale/pl.d.ts +1 -1
- package/dist/runtime/locale/pl.js +3 -0
- package/dist/runtime/locale/pt.d.ts +1 -1
- package/dist/runtime/locale/pt.js +3 -0
- package/dist/runtime/locale/pt_br.d.ts +1 -1
- package/dist/runtime/locale/pt_br.js +3 -0
- package/dist/runtime/locale/ro.d.ts +1 -1
- package/dist/runtime/locale/ro.js +3 -0
- package/dist/runtime/locale/ru.d.ts +1 -1
- package/dist/runtime/locale/ru.js +3 -0
- package/dist/runtime/locale/sk.d.ts +1 -1
- package/dist/runtime/locale/sk.js +3 -0
- package/dist/runtime/locale/sl.d.ts +1 -1
- package/dist/runtime/locale/sl.js +3 -0
- package/dist/runtime/locale/sq.d.ts +1 -1
- package/dist/runtime/locale/sq.js +3 -0
- package/dist/runtime/locale/sv.d.ts +1 -1
- package/dist/runtime/locale/sv.js +3 -0
- package/dist/runtime/locale/tg.d.ts +3 -0
- package/dist/runtime/locale/{tj.js → tg.js} +4 -1
- package/dist/runtime/locale/th.d.ts +1 -1
- package/dist/runtime/locale/th.js +3 -0
- package/dist/runtime/locale/tr.d.ts +1 -1
- package/dist/runtime/locale/tr.js +3 -0
- package/dist/runtime/locale/ug_cn.d.ts +1 -1
- package/dist/runtime/locale/ug_cn.js +3 -0
- package/dist/runtime/locale/uk.d.ts +1 -1
- package/dist/runtime/locale/uk.js +3 -0
- package/dist/runtime/locale/ur.d.ts +1 -1
- package/dist/runtime/locale/ur.js +4 -1
- package/dist/runtime/locale/uz.d.ts +1 -1
- package/dist/runtime/locale/uz.js +3 -0
- package/dist/runtime/locale/vi.d.ts +1 -1
- package/dist/runtime/locale/vi.js +3 -0
- package/dist/runtime/locale/zh_cn.d.ts +1 -1
- package/dist/runtime/locale/zh_cn.js +3 -0
- package/dist/runtime/locale/zh_tw.d.ts +1 -1
- package/dist/runtime/locale/zh_tw.js +3 -0
- package/dist/runtime/plugins/colors.js +5 -1
- package/dist/runtime/types/form.d.ts +1 -1
- package/dist/runtime/types/html.d.ts +3 -1
- package/dist/runtime/types/icons.d.ts +5 -0
- package/dist/runtime/types/index.d.ts +4 -0
- package/dist/runtime/types/index.js +4 -0
- package/dist/runtime/types/locale.d.ts +3 -0
- package/dist/runtime/types/theme.d.ts +189 -0
- package/dist/runtime/types/theme.js +0 -0
- package/dist/runtime/types/tv.d.ts +8 -4
- package/dist/runtime/utils/ai.d.ts +10 -2
- package/dist/runtime/utils/ai.js +4 -1
- package/dist/runtime/utils/link-keys.d.ts +1 -0
- package/dist/runtime/utils/link-keys.js +40 -0
- package/dist/runtime/utils/link.d.ts +3 -2
- package/dist/runtime/utils/link.js +2 -40
- package/dist/runtime/utils/search.js +3 -12
- package/dist/runtime/utils/tv.d.ts +1 -1
- package/dist/runtime/utils/tv.js +103 -25
- package/dist/runtime/vue/components/Icon.d.vue.ts +1 -1
- package/dist/runtime/vue/components/Icon.vue +5 -2
- package/dist/runtime/vue/components/Icon.vue.d.ts +1 -1
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -1
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -1
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +1 -1
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue.d.ts +1 -1
- package/dist/runtime/vue/overrides/inertia/Link.d.vue.ts +2 -2
- package/dist/runtime/vue/overrides/inertia/Link.vue +2 -2
- package/dist/runtime/vue/overrides/inertia/Link.vue.d.ts +2 -2
- package/dist/runtime/vue/overrides/inertia/LinkBase.d.vue.ts +3 -3
- package/dist/runtime/vue/overrides/inertia/LinkBase.vue.d.ts +3 -3
- package/dist/runtime/vue/overrides/none/Link.d.vue.ts +2 -2
- package/dist/runtime/vue/overrides/none/Link.vue +8 -7
- package/dist/runtime/vue/overrides/none/Link.vue.d.ts +2 -2
- package/dist/runtime/vue/overrides/vue-router/Link.d.vue.ts +2 -2
- package/dist/runtime/vue/overrides/vue-router/Link.vue +2 -2
- package/dist/runtime/vue/overrides/vue-router/Link.vue.d.ts +2 -2
- package/dist/runtime/vue/plugins/icons.d.ts +4 -0
- package/dist/runtime/vue/plugins/icons.js +13 -0
- package/dist/runtime/vue/stubs/inertia.d.ts +1 -1
- package/dist/runtime/vue/stubs/inertia.js +3 -1
- package/dist/shared/{ui.BfHSFiIO.mjs → ui.DNq7CNkE.mjs} +800 -263
- package/dist/unplugin.d.mts +11 -4
- package/dist/unplugin.mjs +138 -10
- package/dist/vite.mjs +5 -3
- package/package.json +63 -54
|
@@ -21,9 +21,10 @@ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' |
|
|
|
21
21
|
*/
|
|
22
22
|
size?: Progress['variants']['size'];
|
|
23
23
|
/**
|
|
24
|
+
* Any theme color, or any CSS color value for palettes outside the theme.
|
|
24
25
|
* @defaultValue 'primary'
|
|
25
26
|
*/
|
|
26
|
-
color?: Progress['variants']['color'];
|
|
27
|
+
color?: Progress['variants']['color'] | (string & {});
|
|
27
28
|
/**
|
|
28
29
|
* The orientation of the progress bar.
|
|
29
30
|
* @defaultValue 'horizontal'
|
|
@@ -76,10 +76,7 @@ const indicatorStyle = computed(() => {
|
|
|
76
76
|
}
|
|
77
77
|
}
|
|
78
78
|
});
|
|
79
|
-
const statusStyle = computed(() => {
|
|
80
|
-
const value = `${Math.max(percent.value ?? 0, 0)}%`;
|
|
81
|
-
return props.orientation === "vertical" ? { height: value } : { width: value };
|
|
82
|
-
});
|
|
79
|
+
const statusStyle = computed(() => ({ "--percent": `${Math.max(percent.value ?? 0, 0)}%` }));
|
|
83
80
|
function isActive(index) {
|
|
84
81
|
return index === Number(props.modelValue);
|
|
85
82
|
}
|
|
@@ -102,13 +99,15 @@ function stepVariant(index) {
|
|
|
102
99
|
}
|
|
103
100
|
return "other";
|
|
104
101
|
}
|
|
105
|
-
const ui = computed(() => tv({ extend:
|
|
102
|
+
const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.progress || {} })({
|
|
106
103
|
animation: props.animation,
|
|
107
104
|
size: props.size,
|
|
108
105
|
color: props.color,
|
|
109
106
|
orientation: props.orientation,
|
|
110
107
|
inverted: props.inverted
|
|
111
108
|
}));
|
|
109
|
+
const themeColors = computed(() => Object.keys({ ...theme.variants?.color, ...appConfig.ui?.progress?.variants?.color }));
|
|
110
|
+
const customColor = computed(() => props.color && !themeColors.value.includes(props.color) ? props.color : void 0);
|
|
112
111
|
</script>
|
|
113
112
|
|
|
114
113
|
<template>
|
|
@@ -120,10 +119,10 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.progress || {
|
|
|
120
119
|
</div>
|
|
121
120
|
|
|
122
121
|
<ProgressRoot v-bind="rootProps" :max="realMax" data-slot="base" :class="ui.base({ class: props.ui?.base })" style="transform: translateZ(0)">
|
|
123
|
-
<ProgressIndicator data-slot="indicator" :class="ui.indicator({ class: props.ui?.indicator })" :style="indicatorStyle" />
|
|
122
|
+
<ProgressIndicator data-slot="indicator" :class="ui.indicator({ class: props.ui?.indicator })" :style="[indicatorStyle, customColor ? { backgroundColor: customColor } : void 0]" />
|
|
124
123
|
</ProgressRoot>
|
|
125
124
|
|
|
126
|
-
<div v-if="hasSteps" data-slot="steps" :class="ui.steps({ class: props.ui?.steps })">
|
|
125
|
+
<div v-if="hasSteps" data-slot="steps" :class="ui.steps({ class: props.ui?.steps })" :style="customColor ? { color: customColor } : void 0">
|
|
127
126
|
<div v-for="(step, index) in props.max" :key="index" data-slot="step" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })">
|
|
128
127
|
<slot :name="`step-${index}`" :step="step">
|
|
129
128
|
{{ step }}
|
|
@@ -21,9 +21,10 @@ export interface ProgressProps extends Pick<ProgressRootProps, 'getValueLabel' |
|
|
|
21
21
|
*/
|
|
22
22
|
size?: Progress['variants']['size'];
|
|
23
23
|
/**
|
|
24
|
+
* Any theme color, or any CSS color value for palettes outside the theme.
|
|
24
25
|
* @defaultValue 'primary'
|
|
25
26
|
*/
|
|
26
|
-
color?: Progress['variants']['color'];
|
|
27
|
+
color?: Progress['variants']['color'] | (string & {});
|
|
27
28
|
/**
|
|
28
29
|
* The orientation of the progress bar.
|
|
29
30
|
* @defaultValue 'horizontal'
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { VNode } from 'vue';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/ui/progress-group';
|
|
4
|
+
import type { IconProps } from './Icon.vue';
|
|
5
|
+
import type { DynamicSlots } from '../types/utils';
|
|
6
|
+
import type { ComponentConfig } from '../types/tv';
|
|
7
|
+
type ProgressGroup = ComponentConfig<typeof theme, AppConfig, 'progressGroup'>;
|
|
8
|
+
export interface ProgressGroupItem {
|
|
9
|
+
label?: string;
|
|
10
|
+
/**
|
|
11
|
+
* @IconifyIcon
|
|
12
|
+
*/
|
|
13
|
+
icon?: IconProps['name'];
|
|
14
|
+
/** The part of `max` this segment takes up. */
|
|
15
|
+
value?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Any theme color, or any CSS color value for palettes outside the theme.
|
|
18
|
+
* @defaultValue 'primary'
|
|
19
|
+
*/
|
|
20
|
+
color?: ProgressGroup['variants']['color'] | (string & {});
|
|
21
|
+
slot?: string;
|
|
22
|
+
class?: any;
|
|
23
|
+
ui?: Pick<ProgressGroup['slots'], 'segment' | 'indicator' | 'item' | 'itemLeadingIcon' | 'itemLeadingDot' | 'itemLabel' | 'itemTrailing'>;
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}
|
|
26
|
+
export interface ProgressGroupProps<T extends ProgressGroupItem = ProgressGroupItem> {
|
|
27
|
+
/**
|
|
28
|
+
* The element or component this component should render as.
|
|
29
|
+
* @defaultValue 'div'
|
|
30
|
+
*/
|
|
31
|
+
as?: any;
|
|
32
|
+
items?: T[];
|
|
33
|
+
/**
|
|
34
|
+
* The value all items add up to, used to compute each segment's share of the track.
|
|
35
|
+
* @defaultValue 100
|
|
36
|
+
*/
|
|
37
|
+
max?: number;
|
|
38
|
+
/** Display the summed progress value. */
|
|
39
|
+
status?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* @defaultValue 'md'
|
|
42
|
+
*/
|
|
43
|
+
size?: ProgressGroup['variants']['size'];
|
|
44
|
+
/**
|
|
45
|
+
* Any theme color, or any CSS color value for palettes outside the theme.
|
|
46
|
+
* @defaultValue 'primary'
|
|
47
|
+
*/
|
|
48
|
+
color?: ProgressGroup['variants']['color'] | (string & {});
|
|
49
|
+
/**
|
|
50
|
+
* The orientation of the progress bar.
|
|
51
|
+
* @defaultValue 'horizontal'
|
|
52
|
+
*/
|
|
53
|
+
orientation?: ProgressGroup['variants']['orientation'];
|
|
54
|
+
class?: any;
|
|
55
|
+
ui?: ProgressGroup['slots'];
|
|
56
|
+
}
|
|
57
|
+
type SlotProps<T extends ProgressGroupItem> = (props: {
|
|
58
|
+
item: T;
|
|
59
|
+
index: number;
|
|
60
|
+
percent: number;
|
|
61
|
+
}) => VNode[];
|
|
62
|
+
export type ProgressGroupSlots<T extends ProgressGroupItem = ProgressGroupItem> = {
|
|
63
|
+
'status'?: (props: {
|
|
64
|
+
percent: number;
|
|
65
|
+
}) => VNode[];
|
|
66
|
+
'item'?: SlotProps<T>;
|
|
67
|
+
'item-leading'?: SlotProps<T>;
|
|
68
|
+
'item-label'?: SlotProps<T>;
|
|
69
|
+
'item-trailing'?: SlotProps<T>;
|
|
70
|
+
} & DynamicSlots<T, 'leading' | 'label' | 'trailing', {
|
|
71
|
+
index: number;
|
|
72
|
+
percent: number;
|
|
73
|
+
}>;
|
|
74
|
+
declare const _default: typeof __VLS_export;
|
|
75
|
+
export default _default;
|
|
76
|
+
declare const __VLS_export: <T extends ProgressGroupItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
77
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<ProgressGroupProps<T>> & (typeof globalThis extends {
|
|
78
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
79
|
+
} ? P : {});
|
|
80
|
+
expose: (exposed: {}) => void;
|
|
81
|
+
attrs: any;
|
|
82
|
+
slots: ProgressGroupSlots<T>;
|
|
83
|
+
emit: {};
|
|
84
|
+
}>) => import("vue").VNode & {
|
|
85
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
86
|
+
};
|
|
87
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
88
|
+
[K in keyof T]: T[K];
|
|
89
|
+
} : {
|
|
90
|
+
[K in keyof T as K]: T[K];
|
|
91
|
+
}) & {};
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/progress-group";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive, ProgressRoot, ProgressIndicator } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { useComponentProps } from "../composables/useComponentProps";
|
|
10
|
+
import { tv } from "../utils/tv";
|
|
11
|
+
import UIcon from "./Icon.vue";
|
|
12
|
+
const _props = defineProps({
|
|
13
|
+
as: { type: null, required: false },
|
|
14
|
+
items: { type: Array, required: false },
|
|
15
|
+
max: { type: Number, required: false, default: 100 },
|
|
16
|
+
status: { type: Boolean, required: false },
|
|
17
|
+
size: { type: null, required: false },
|
|
18
|
+
color: { type: null, required: false },
|
|
19
|
+
orientation: { type: null, required: false, default: "horizontal" },
|
|
20
|
+
class: { type: null, required: false },
|
|
21
|
+
ui: { type: Object, required: false }
|
|
22
|
+
});
|
|
23
|
+
const slots = defineSlots();
|
|
24
|
+
const props = useComponentProps("progressGroup", _props);
|
|
25
|
+
const appConfig = useAppConfig();
|
|
26
|
+
const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.progressGroup || {} })({
|
|
27
|
+
size: props.size,
|
|
28
|
+
color: props.color,
|
|
29
|
+
orientation: props.orientation
|
|
30
|
+
}));
|
|
31
|
+
const max = computed(() => {
|
|
32
|
+
const value = Number(props.max);
|
|
33
|
+
return Number.isFinite(value) && value > 0 ? value : 100;
|
|
34
|
+
});
|
|
35
|
+
const values = computed(() => (props.items ?? []).map((item) => Math.min(Math.max(Number(item.value) || 0, 0), max.value)));
|
|
36
|
+
const percents = computed(() => values.value.map((value) => value / max.value * 100));
|
|
37
|
+
const percent = computed(() => Math.min(100, Math.round(percents.value.reduce((total, value) => total + value, 0))));
|
|
38
|
+
const statusStyle = computed(() => ({ "--percent": `${percent.value}%` }));
|
|
39
|
+
const themeColors = computed(() => Object.keys({ ...theme.variants?.color, ...appConfig.ui?.progressGroup?.variants?.color }));
|
|
40
|
+
const itemColors = computed(() => (props.items ?? []).map((item) => item.color || props.color));
|
|
41
|
+
const customColors = computed(() => itemColors.value.map((color) => color && !themeColors.value.includes(color) ? color : void 0));
|
|
42
|
+
const hasList = computed(() => !!props.items?.length && (props.items.some((item) => item.label || item.icon || item.slot) || !!slots.item || !!slots["item-leading"] || !!slots["item-label"] || !!slots["item-trailing"]));
|
|
43
|
+
function segmentStyle(index) {
|
|
44
|
+
const value = `${percents.value[index] ?? 0}%`;
|
|
45
|
+
return props.orientation === "vertical" ? { height: value } : { width: value };
|
|
46
|
+
}
|
|
47
|
+
const valueLabels = computed(() => (props.items ?? []).map((item) => {
|
|
48
|
+
const label = item.label;
|
|
49
|
+
return label ? () => label : void 0;
|
|
50
|
+
}));
|
|
51
|
+
</script>
|
|
52
|
+
|
|
53
|
+
<template>
|
|
54
|
+
<Primitive :as="props.as" :data-orientation="props.orientation" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
55
|
+
<div v-if="props.status || !!slots.status" data-slot="status" :class="ui.status({ class: props.ui?.status })" :style="statusStyle">
|
|
56
|
+
<slot name="status" :percent="percent">
|
|
57
|
+
{{ percent }}%
|
|
58
|
+
</slot>
|
|
59
|
+
</div>
|
|
60
|
+
|
|
61
|
+
<div data-slot="base" :class="ui.base({ class: props.ui?.base })">
|
|
62
|
+
<ProgressRoot
|
|
63
|
+
v-for="(item, index) in props.items"
|
|
64
|
+
:key="index"
|
|
65
|
+
:model-value="values[index]"
|
|
66
|
+
:max="max"
|
|
67
|
+
:get-value-label="valueLabels[index]"
|
|
68
|
+
data-slot="segment"
|
|
69
|
+
:class="ui.segment({ class: [props.ui?.segment, item.ui?.segment] })"
|
|
70
|
+
:style="segmentStyle(index)"
|
|
71
|
+
>
|
|
72
|
+
<ProgressIndicator data-slot="indicator" :class="ui.indicator({ color: itemColors[index], class: [props.ui?.indicator, item.ui?.indicator] })" :style="customColors[index] ? { backgroundColor: customColors[index] } : void 0" />
|
|
73
|
+
</ProgressRoot>
|
|
74
|
+
</div>
|
|
75
|
+
|
|
76
|
+
<ul v-if="hasList" data-slot="list" :class="ui.list({ class: props.ui?.list })">
|
|
77
|
+
<li v-for="(item, index) in props.items" :key="index" data-slot="item" :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class] })">
|
|
78
|
+
<slot :name="item.slot || 'item'" :item="item" :index="index" :percent="percents[index] ?? 0">
|
|
79
|
+
<slot :name="item.slot ? `${item.slot}-leading` : 'item-leading'" :item="item" :index="index" :percent="percents[index] ?? 0">
|
|
80
|
+
<UIcon v-if="item.icon" :name="item.icon" data-slot="itemLeadingIcon" :class="ui.itemLeadingIcon({ color: itemColors[index], class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })" :style="customColors[index] ? { color: customColors[index] } : void 0" />
|
|
81
|
+
<span v-else data-slot="itemLeadingDot" :class="ui.itemLeadingDot({ color: itemColors[index], class: [props.ui?.itemLeadingDot, item.ui?.itemLeadingDot] })" :style="customColors[index] ? { backgroundColor: customColors[index] } : void 0" />
|
|
82
|
+
</slot>
|
|
83
|
+
|
|
84
|
+
<span v-if="item.label || !!slots[item.slot ? `${item.slot}-label` : 'item-label']" data-slot="itemLabel" :class="ui.itemLabel({ class: [props.ui?.itemLabel, item.ui?.itemLabel] })">
|
|
85
|
+
<slot :name="item.slot ? `${item.slot}-label` : 'item-label'" :item="item" :index="index" :percent="percents[index] ?? 0">
|
|
86
|
+
{{ item.label }}
|
|
87
|
+
</slot>
|
|
88
|
+
</span>
|
|
89
|
+
|
|
90
|
+
<span data-slot="itemTrailing" :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, item.ui?.itemTrailing] })">
|
|
91
|
+
<slot :name="item.slot ? `${item.slot}-trailing` : 'item-trailing'" :item="item" :index="index" :percent="percents[index] ?? 0">
|
|
92
|
+
{{ Math.round(percents[index] ?? 0) }}%
|
|
93
|
+
</slot>
|
|
94
|
+
</span>
|
|
95
|
+
</slot>
|
|
96
|
+
</li>
|
|
97
|
+
</ul>
|
|
98
|
+
</Primitive>
|
|
99
|
+
</template>
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { VNode } from 'vue';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/ui/progress-group';
|
|
4
|
+
import type { IconProps } from './Icon.vue';
|
|
5
|
+
import type { DynamicSlots } from '../types/utils';
|
|
6
|
+
import type { ComponentConfig } from '../types/tv';
|
|
7
|
+
type ProgressGroup = ComponentConfig<typeof theme, AppConfig, 'progressGroup'>;
|
|
8
|
+
export interface ProgressGroupItem {
|
|
9
|
+
label?: string;
|
|
10
|
+
/**
|
|
11
|
+
* @IconifyIcon
|
|
12
|
+
*/
|
|
13
|
+
icon?: IconProps['name'];
|
|
14
|
+
/** The part of `max` this segment takes up. */
|
|
15
|
+
value?: number;
|
|
16
|
+
/**
|
|
17
|
+
* Any theme color, or any CSS color value for palettes outside the theme.
|
|
18
|
+
* @defaultValue 'primary'
|
|
19
|
+
*/
|
|
20
|
+
color?: ProgressGroup['variants']['color'] | (string & {});
|
|
21
|
+
slot?: string;
|
|
22
|
+
class?: any;
|
|
23
|
+
ui?: Pick<ProgressGroup['slots'], 'segment' | 'indicator' | 'item' | 'itemLeadingIcon' | 'itemLeadingDot' | 'itemLabel' | 'itemTrailing'>;
|
|
24
|
+
[key: string]: any;
|
|
25
|
+
}
|
|
26
|
+
export interface ProgressGroupProps<T extends ProgressGroupItem = ProgressGroupItem> {
|
|
27
|
+
/**
|
|
28
|
+
* The element or component this component should render as.
|
|
29
|
+
* @defaultValue 'div'
|
|
30
|
+
*/
|
|
31
|
+
as?: any;
|
|
32
|
+
items?: T[];
|
|
33
|
+
/**
|
|
34
|
+
* The value all items add up to, used to compute each segment's share of the track.
|
|
35
|
+
* @defaultValue 100
|
|
36
|
+
*/
|
|
37
|
+
max?: number;
|
|
38
|
+
/** Display the summed progress value. */
|
|
39
|
+
status?: boolean;
|
|
40
|
+
/**
|
|
41
|
+
* @defaultValue 'md'
|
|
42
|
+
*/
|
|
43
|
+
size?: ProgressGroup['variants']['size'];
|
|
44
|
+
/**
|
|
45
|
+
* Any theme color, or any CSS color value for palettes outside the theme.
|
|
46
|
+
* @defaultValue 'primary'
|
|
47
|
+
*/
|
|
48
|
+
color?: ProgressGroup['variants']['color'] | (string & {});
|
|
49
|
+
/**
|
|
50
|
+
* The orientation of the progress bar.
|
|
51
|
+
* @defaultValue 'horizontal'
|
|
52
|
+
*/
|
|
53
|
+
orientation?: ProgressGroup['variants']['orientation'];
|
|
54
|
+
class?: any;
|
|
55
|
+
ui?: ProgressGroup['slots'];
|
|
56
|
+
}
|
|
57
|
+
type SlotProps<T extends ProgressGroupItem> = (props: {
|
|
58
|
+
item: T;
|
|
59
|
+
index: number;
|
|
60
|
+
percent: number;
|
|
61
|
+
}) => VNode[];
|
|
62
|
+
export type ProgressGroupSlots<T extends ProgressGroupItem = ProgressGroupItem> = {
|
|
63
|
+
'status'?: (props: {
|
|
64
|
+
percent: number;
|
|
65
|
+
}) => VNode[];
|
|
66
|
+
'item'?: SlotProps<T>;
|
|
67
|
+
'item-leading'?: SlotProps<T>;
|
|
68
|
+
'item-label'?: SlotProps<T>;
|
|
69
|
+
'item-trailing'?: SlotProps<T>;
|
|
70
|
+
} & DynamicSlots<T, 'leading' | 'label' | 'trailing', {
|
|
71
|
+
index: number;
|
|
72
|
+
percent: number;
|
|
73
|
+
}>;
|
|
74
|
+
declare const _default: typeof __VLS_export;
|
|
75
|
+
export default _default;
|
|
76
|
+
declare const __VLS_export: <T extends ProgressGroupItem>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_exposed?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
77
|
+
props: import("vue").PublicProps & __VLS_PrettifyLocal<ProgressGroupProps<T>> & (typeof globalThis extends {
|
|
78
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
79
|
+
} ? P : {});
|
|
80
|
+
expose: (exposed: {}) => void;
|
|
81
|
+
attrs: any;
|
|
82
|
+
slots: ProgressGroupSlots<T>;
|
|
83
|
+
emit: {};
|
|
84
|
+
}>) => import("vue").VNode & {
|
|
85
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
86
|
+
};
|
|
87
|
+
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
88
|
+
[K in keyof T]: T[K];
|
|
89
|
+
} : {
|
|
90
|
+
[K in keyof T as K]: T[K];
|
|
91
|
+
}) & {};
|
|
@@ -2,6 +2,7 @@ import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
|
|
|
2
2
|
import type { VNode } from 'vue';
|
|
3
3
|
import type { AppConfig } from '@nuxt/schema';
|
|
4
4
|
import theme from '#build/ui/radio-group';
|
|
5
|
+
import type { IconProps } from './Icon.vue';
|
|
5
6
|
import type { AcceptableValue, GetItemKeys, GetModelValue, GetModelValueEmits } from '../types/utils';
|
|
6
7
|
import type { ComponentConfig } from '../types/tv';
|
|
7
8
|
type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
|
|
@@ -11,8 +12,13 @@ export type RadioGroupItem = RadioGroupValue | {
|
|
|
11
12
|
description?: string;
|
|
12
13
|
disabled?: boolean;
|
|
13
14
|
value?: RadioGroupValue;
|
|
15
|
+
/**
|
|
16
|
+
* The icon displayed above the label when `indicator` is `hidden`.
|
|
17
|
+
* @IconifyIcon
|
|
18
|
+
*/
|
|
19
|
+
icon?: IconProps['name'];
|
|
14
20
|
class?: any;
|
|
15
|
-
ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
|
|
21
|
+
ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'icon' | 'description'>;
|
|
16
22
|
[key: string]: any;
|
|
17
23
|
};
|
|
18
24
|
export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
|
|
@@ -98,7 +104,7 @@ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<
|
|
|
98
104
|
slots: RadioGroupSlots<T>;
|
|
99
105
|
emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => void);
|
|
100
106
|
}>) => import("vue").VNode & {
|
|
101
|
-
__ctx?: Awaited<typeof __VLS_setup
|
|
107
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
102
108
|
};
|
|
103
109
|
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
104
110
|
[K in keyof T]: T[K];
|
|
@@ -12,6 +12,7 @@ import { useForwardProps } from "../composables/useForwardProps";
|
|
|
12
12
|
import { useFormField } from "../composables/useFormField";
|
|
13
13
|
import { get } from "../utils";
|
|
14
14
|
import { tv } from "../utils/tv";
|
|
15
|
+
import UIcon from "./Icon.vue";
|
|
15
16
|
const _props = defineProps({
|
|
16
17
|
as: { type: null, required: false },
|
|
17
18
|
legend: { type: String, required: false },
|
|
@@ -39,12 +40,16 @@ const slots = defineSlots();
|
|
|
39
40
|
const props = useComponentProps("radioGroup", _props);
|
|
40
41
|
const appConfig = useAppConfig();
|
|
41
42
|
const rootProps = useForwardProps(reactivePick(props, "as", "loop", "required"), emits);
|
|
42
|
-
const { emitFormChange, emitFormInput, color, name, size, highlight, id: _id, disabled, ariaAttrs } = useFormField(_props, { bind: false });
|
|
43
|
+
const { emitFormChange, emitFormInput, color: formFieldColor, name, size: formFieldSize, highlight: formFieldHighlight, id: _id, disabled: formFieldDisabled, ariaAttrs } = useFormField(_props, { bind: false });
|
|
43
44
|
const id = _id.value ?? useId();
|
|
44
|
-
const
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
45
|
+
const color = computed(() => formFieldColor.value ?? props.color);
|
|
46
|
+
const highlight = computed(() => formFieldHighlight.value ?? props.highlight);
|
|
47
|
+
const size = computed(() => formFieldSize.value ?? props.size);
|
|
48
|
+
const disabled = computed(() => formFieldDisabled.value ?? props.disabled);
|
|
49
|
+
const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.radioGroup || {} })({
|
|
50
|
+
size: size.value,
|
|
51
|
+
color: color.value,
|
|
52
|
+
highlight: highlight.value,
|
|
48
53
|
disabled: disabled.value,
|
|
49
54
|
required: props.required,
|
|
50
55
|
orientation: props.orientation,
|
|
@@ -83,6 +88,9 @@ const normalizedItems = computed(() => {
|
|
|
83
88
|
}
|
|
84
89
|
return props.items.map(normalizeItem);
|
|
85
90
|
});
|
|
91
|
+
function labelIcon(item) {
|
|
92
|
+
return props.indicator === "hidden" ? item.icon : void 0;
|
|
93
|
+
}
|
|
86
94
|
function onUpdate(value) {
|
|
87
95
|
const event = new Event("change", { target: { value } });
|
|
88
96
|
emits("change", event);
|
|
@@ -124,7 +132,8 @@ function onUpdate(value) {
|
|
|
124
132
|
</RRadioGroupItem>
|
|
125
133
|
</div>
|
|
126
134
|
|
|
127
|
-
<div v-if="item.label || !!slots.label || (item.description || !!slots.description)" data-slot="wrapper" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
|
|
135
|
+
<div v-if="labelIcon(item) || (item.label || !!slots.label) || (item.description || !!slots.description)" data-slot="wrapper" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
|
|
136
|
+
<UIcon v-if="labelIcon(item)" :name="labelIcon(item)" data-slot="icon" :class="ui.icon({ class: [props.ui?.icon, item.ui?.icon] })" />
|
|
128
137
|
<component :is="!props.variant || props.variant === 'list' ? Label : 'p'" v-if="item.label || !!slots.label" :for="item.id" data-slot="label" :class="ui.label({ class: [props.ui?.label, item.ui?.label], disabled: item.disabled || disabled })">
|
|
129
138
|
<slot name="label" :item="item" :model-value="props.modelValue">
|
|
130
139
|
{{ item.label }}
|
|
@@ -2,6 +2,7 @@ import type { RadioGroupRootProps, RadioGroupRootEmits } from 'reka-ui';
|
|
|
2
2
|
import type { VNode } from 'vue';
|
|
3
3
|
import type { AppConfig } from '@nuxt/schema';
|
|
4
4
|
import theme from '#build/ui/radio-group';
|
|
5
|
+
import type { IconProps } from './Icon.vue';
|
|
5
6
|
import type { AcceptableValue, GetItemKeys, GetModelValue, GetModelValueEmits } from '../types/utils';
|
|
6
7
|
import type { ComponentConfig } from '../types/tv';
|
|
7
8
|
type RadioGroup = ComponentConfig<typeof theme, AppConfig, 'radioGroup'>;
|
|
@@ -11,8 +12,13 @@ export type RadioGroupItem = RadioGroupValue | {
|
|
|
11
12
|
description?: string;
|
|
12
13
|
disabled?: boolean;
|
|
13
14
|
value?: RadioGroupValue;
|
|
15
|
+
/**
|
|
16
|
+
* The icon displayed above the label when `indicator` is `hidden`.
|
|
17
|
+
* @IconifyIcon
|
|
18
|
+
*/
|
|
19
|
+
icon?: IconProps['name'];
|
|
14
20
|
class?: any;
|
|
15
|
-
ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'description'>;
|
|
21
|
+
ui?: Pick<RadioGroup['slots'], 'item' | 'container' | 'base' | 'indicator' | 'wrapper' | 'label' | 'icon' | 'description'>;
|
|
16
22
|
[key: string]: any;
|
|
17
23
|
};
|
|
18
24
|
export interface RadioGroupProps<T extends RadioGroupItem[] = RadioGroupItem[], VK extends GetItemKeys<T> = 'value'> extends Pick<RadioGroupRootProps, 'disabled' | 'loop' | 'name' | 'required'> {
|
|
@@ -98,7 +104,7 @@ declare const __VLS_export: <T extends RadioGroupItem[], VK extends GetItemKeys<
|
|
|
98
104
|
slots: RadioGroupSlots<T>;
|
|
99
105
|
emit: ((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: import("../types").GetItemValue<T, VK, undefined, import("../types").NestedItem<T>>) => void);
|
|
100
106
|
}>) => import("vue").VNode & {
|
|
101
|
-
__ctx?: Awaited<typeof __VLS_setup
|
|
107
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
102
108
|
};
|
|
103
109
|
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
104
110
|
[K in keyof T]: T[K];
|
|
@@ -4,7 +4,13 @@ import type { VirtualItem, VirtualizerOptions } from '@tanstack/vue-virtual';
|
|
|
4
4
|
import theme from '#build/ui/scroll-area';
|
|
5
5
|
import type { ComponentConfig } from '../types/tv';
|
|
6
6
|
type ScrollArea = ComponentConfig<typeof theme, AppConfig, 'scrollArea'>;
|
|
7
|
-
export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | '
|
|
7
|
+
export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
|
|
8
|
+
/**
|
|
9
|
+
* Virtualize against an external scroll element instead of the component's own root.
|
|
10
|
+
* Pair with `scrollMargin` set to the content's offset from the scroll element's start.
|
|
11
|
+
* @defaultValue undefined
|
|
12
|
+
*/
|
|
13
|
+
getScrollElement?: () => Element | null;
|
|
8
14
|
/**
|
|
9
15
|
* Estimated size (in px) of each item along the scroll axis. Can be a number or a function.
|
|
10
16
|
* @defaultValue 100
|
|
@@ -95,7 +101,7 @@ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<
|
|
|
95
101
|
slots: ScrollAreaSlots<T>;
|
|
96
102
|
emit: (evt: "scroll", isScrolling: boolean) => void;
|
|
97
103
|
}>) => import("vue").VNode & {
|
|
98
|
-
__ctx?: Awaited<typeof __VLS_setup
|
|
104
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
99
105
|
};
|
|
100
106
|
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
101
107
|
[K in keyof T]: T[K];
|
|
@@ -3,7 +3,7 @@ import theme from "#build/ui/scroll-area";
|
|
|
3
3
|
</script>
|
|
4
4
|
|
|
5
5
|
<script setup>
|
|
6
|
-
import { computed,
|
|
6
|
+
import { computed, onUnmounted, toRef, useTemplateRef, watch } from "vue";
|
|
7
7
|
import { Primitive } from "reka-ui";
|
|
8
8
|
import { defu } from "defu";
|
|
9
9
|
import { useVirtualizer } from "@tanstack/vue-virtual";
|
|
@@ -26,8 +26,10 @@ const emits = defineEmits(["scroll"]);
|
|
|
26
26
|
const props = useComponentProps("scrollArea", _props);
|
|
27
27
|
const { dir } = useLocale();
|
|
28
28
|
const appConfig = useAppConfig();
|
|
29
|
-
const
|
|
30
|
-
|
|
29
|
+
const isExternalScroll = computed(() => typeof props.virtualize === "object" && !!props.virtualize.getScrollElement);
|
|
30
|
+
const ui = computed(() => tv({ extend: theme, ...appConfig.ui?.scrollArea || {} })({
|
|
31
|
+
orientation: props.orientation,
|
|
32
|
+
externalScroll: isExternalScroll.value
|
|
31
33
|
}));
|
|
32
34
|
const rootRef = useTemplateRef("rootRef");
|
|
33
35
|
const scrollShadowStyle = props.shadow ? useScrollShadow(
|
|
@@ -40,6 +42,7 @@ const scrollShadowStyle = props.shadow ? useScrollShadow(
|
|
|
40
42
|
const isRtl = computed(() => dir.value === "rtl");
|
|
41
43
|
const isHorizontal = computed(() => props.orientation === "horizontal");
|
|
42
44
|
const isVertical = computed(() => !isHorizontal.value);
|
|
45
|
+
const getScrollElement = () => (isExternalScroll.value ? virtualizerProps.value.getScrollElement?.() : rootRef.value?.$el) ?? null;
|
|
43
46
|
const virtualizerProps = toRef(() => {
|
|
44
47
|
const options = typeof props.virtualize === "boolean" ? {} : props.virtualize;
|
|
45
48
|
return defu(options, {
|
|
@@ -84,7 +87,7 @@ const virtualizer = !!props.virtualize && useVirtualizer({
|
|
|
84
87
|
get count() {
|
|
85
88
|
return props.items?.length || 0;
|
|
86
89
|
},
|
|
87
|
-
getScrollElement
|
|
90
|
+
getScrollElement,
|
|
88
91
|
get horizontal() {
|
|
89
92
|
return isHorizontal.value;
|
|
90
93
|
},
|
|
@@ -104,6 +107,7 @@ function getVirtualItemStyle(virtualItem) {
|
|
|
104
107
|
const hasLanes = lanes.value !== void 0 && lanes.value > 1;
|
|
105
108
|
const lane = virtualItem.lane;
|
|
106
109
|
const gap = virtualizerProps.value.gap ?? 0;
|
|
110
|
+
const offset = virtualItem.start - virtualizerProps.value.scrollMargin;
|
|
107
111
|
const laneSize = hasLanes ? `calc((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value})` : "100%";
|
|
108
112
|
const lanePosition = hasLanes && lane !== void 0 ? `calc(${lane} * ((100% - ${(lanes.value - 1) * gap}px) / ${lanes.value} + ${gap}px))` : 0;
|
|
109
113
|
return {
|
|
@@ -112,26 +116,28 @@ function getVirtualItemStyle(virtualItem) {
|
|
|
112
116
|
insetInlineStart: isVertical.value && hasLanes ? lanePosition : 0,
|
|
113
117
|
blockSize: isHorizontal.value ? hasLanes ? laneSize : "100%" : void 0,
|
|
114
118
|
inlineSize: isVertical.value ? hasLanes ? laneSize : "100%" : void 0,
|
|
115
|
-
transform: isHorizontal.value ? `translateX(${isRtl.value ? -
|
|
119
|
+
transform: isHorizontal.value ? `translateX(${isRtl.value ? -offset : offset}px)` : `translateY(${offset}px)`
|
|
116
120
|
};
|
|
117
121
|
}
|
|
118
122
|
let resizeObserver = null;
|
|
119
123
|
let rafId = null;
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
124
|
+
watch(
|
|
125
|
+
getScrollElement,
|
|
126
|
+
(el) => {
|
|
127
|
+
resizeObserver?.disconnect();
|
|
128
|
+
resizeObserver = null;
|
|
129
|
+
if (!virtualizer || !el) return;
|
|
130
|
+
resizeObserver = new ResizeObserver(() => {
|
|
131
|
+
if (rafId !== null) return;
|
|
132
|
+
rafId = requestAnimationFrame(() => {
|
|
133
|
+
rafId = null;
|
|
134
|
+
virtualizer.value.measure();
|
|
130
135
|
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
}
|
|
134
|
-
}
|
|
136
|
+
});
|
|
137
|
+
resizeObserver.observe(el);
|
|
138
|
+
},
|
|
139
|
+
{ immediate: true }
|
|
140
|
+
);
|
|
135
141
|
onUnmounted(() => {
|
|
136
142
|
if (rafId !== null) {
|
|
137
143
|
cancelAnimationFrame(rafId);
|
|
@@ -4,7 +4,13 @@ import type { VirtualItem, VirtualizerOptions } from '@tanstack/vue-virtual';
|
|
|
4
4
|
import theme from '#build/ui/scroll-area';
|
|
5
5
|
import type { ComponentConfig } from '../types/tv';
|
|
6
6
|
type ScrollArea = ComponentConfig<typeof theme, AppConfig, 'scrollArea'>;
|
|
7
|
-
export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | '
|
|
7
|
+
export interface ScrollAreaVirtualizeOptions extends Partial<Omit<VirtualizerOptions<Element, Element>, 'count' | 'horizontal' | 'isRtl' | 'estimateSize' | 'lanes' | 'enabled'>> {
|
|
8
|
+
/**
|
|
9
|
+
* Virtualize against an external scroll element instead of the component's own root.
|
|
10
|
+
* Pair with `scrollMargin` set to the content's offset from the scroll element's start.
|
|
11
|
+
* @defaultValue undefined
|
|
12
|
+
*/
|
|
13
|
+
getScrollElement?: () => Element | null;
|
|
8
14
|
/**
|
|
9
15
|
* Estimated size (in px) of each item along the scroll axis. Can be a number or a function.
|
|
10
16
|
* @defaultValue 100
|
|
@@ -95,7 +101,7 @@ declare const __VLS_export: <T extends ScrollAreaItem>(__VLS_props: NonNullable<
|
|
|
95
101
|
slots: ScrollAreaSlots<T>;
|
|
96
102
|
emit: (evt: "scroll", isScrolling: boolean) => void;
|
|
97
103
|
}>) => import("vue").VNode & {
|
|
98
|
-
__ctx?: Awaited<typeof __VLS_setup
|
|
104
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
99
105
|
};
|
|
100
106
|
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
101
107
|
[K in keyof T]: T[K];
|
|
@@ -3,7 +3,9 @@ import type { VNode } from 'vue';
|
|
|
3
3
|
import type { AppConfig } from '@nuxt/schema';
|
|
4
4
|
import theme from '#build/ui/select';
|
|
5
5
|
import type { UseComponentIconsProps } from '../composables/useComponentIcons';
|
|
6
|
-
import type { AvatarProps
|
|
6
|
+
import type { AvatarProps } from './Avatar.vue';
|
|
7
|
+
import type { ChipProps } from './Chip.vue';
|
|
8
|
+
import type { IconProps } from './Icon.vue';
|
|
7
9
|
import type { ModelModifiers, ApplyModifiers } from '../types/input';
|
|
8
10
|
import type { ButtonHTMLAttributes } from '../types/html';
|
|
9
11
|
import type { AcceptableValue, ArrayOrNested, GetItemKeys, GetModelValue, NestedItem, EmitsToProps } from '../types/utils';
|
|
@@ -209,7 +211,7 @@ declare const __VLS_export: <T extends ArrayOrNested<SelectItem>, VK extends Get
|
|
|
209
211
|
nullable: true;
|
|
210
212
|
} ? GetModelValue<T, VK, M, ExcludeItem> | null : GetModelValue<T, VK, M, ExcludeItem>) => void);
|
|
211
213
|
}>) => import("vue").VNode & {
|
|
212
|
-
__ctx?: Awaited<typeof __VLS_setup
|
|
214
|
+
__ctx?: NonNullable<Awaited<typeof __VLS_setup>>;
|
|
213
215
|
};
|
|
214
216
|
type __VLS_PrettifyLocal<T> = (T extends any ? {
|
|
215
217
|
[K in keyof T]: T[K];
|