@nuxt/ui 4.2.0 → 4.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nuxt/ui.css +154 -0
- package/README.md +2 -1
- package/dist/module.json +1 -1
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/Accordion.d.vue.ts +3 -3
- package/dist/runtime/components/Accordion.vue +1 -1
- package/dist/runtime/components/Accordion.vue.d.ts +3 -3
- package/dist/runtime/components/Alert.d.vue.ts +3 -5
- package/dist/runtime/components/Alert.vue +2 -2
- package/dist/runtime/components/Alert.vue.d.ts +3 -5
- package/dist/runtime/components/App.d.vue.ts +3 -1
- package/dist/runtime/components/App.vue.d.ts +3 -1
- package/dist/runtime/components/AuthForm.d.vue.ts +8 -46
- package/dist/runtime/components/AuthForm.vue +1 -1
- package/dist/runtime/components/AuthForm.vue.d.ts +8 -46
- package/dist/runtime/components/Avatar.vue +1 -1
- package/dist/runtime/components/Badge.d.vue.ts +1 -3
- package/dist/runtime/components/Badge.vue +3 -3
- package/dist/runtime/components/Badge.vue.d.ts +1 -3
- package/dist/runtime/components/Banner.d.vue.ts +2 -2
- package/dist/runtime/components/Banner.vue +2 -2
- package/dist/runtime/components/Banner.vue.d.ts +2 -2
- package/dist/runtime/components/BlogPost.d.vue.ts +1 -4
- package/dist/runtime/components/BlogPost.vue +0 -1
- package/dist/runtime/components/BlogPost.vue.d.ts +1 -4
- package/dist/runtime/components/BlogPosts.d.vue.ts +3 -1
- package/dist/runtime/components/BlogPosts.vue.d.ts +3 -1
- package/dist/runtime/components/Breadcrumb.d.vue.ts +3 -1
- package/dist/runtime/components/Breadcrumb.vue +1 -1
- package/dist/runtime/components/Breadcrumb.vue.d.ts +3 -1
- package/dist/runtime/components/Button.vue +4 -4
- package/dist/runtime/components/Calendar.d.vue.ts +8 -11
- package/dist/runtime/components/Calendar.vue +4 -4
- package/dist/runtime/components/Calendar.vue.d.ts +8 -11
- package/dist/runtime/components/Carousel.d.vue.ts +6 -6
- package/dist/runtime/components/Carousel.vue +24 -2
- package/dist/runtime/components/Carousel.vue.d.ts +6 -6
- package/dist/runtime/components/ChangelogVersion.d.vue.ts +1 -4
- package/dist/runtime/components/ChangelogVersion.vue +0 -1
- package/dist/runtime/components/ChangelogVersion.vue.d.ts +1 -4
- package/dist/runtime/components/ChangelogVersions.d.vue.ts +3 -1
- package/dist/runtime/components/ChangelogVersions.vue.d.ts +3 -1
- package/dist/runtime/components/ChatMessage.d.vue.ts +1 -3
- package/dist/runtime/components/ChatMessage.vue +1 -1
- package/dist/runtime/components/ChatMessage.vue.d.ts +1 -3
- package/dist/runtime/components/ChatMessages.d.vue.ts +3 -8
- package/dist/runtime/components/ChatMessages.vue +1 -1
- package/dist/runtime/components/ChatMessages.vue.d.ts +3 -8
- package/dist/runtime/components/ChatPrompt.d.vue.ts +2 -7
- package/dist/runtime/components/ChatPrompt.vue +2 -2
- package/dist/runtime/components/ChatPrompt.vue.d.ts +2 -7
- package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +9 -17
- package/dist/runtime/components/ChatPromptSubmit.vue +14 -33
- package/dist/runtime/components/ChatPromptSubmit.vue.d.ts +9 -17
- package/dist/runtime/components/Checkbox.vue +2 -2
- package/dist/runtime/components/CheckboxGroup.d.vue.ts +3 -4
- package/dist/runtime/components/CheckboxGroup.vue +1 -1
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +3 -4
- package/dist/runtime/components/Chip.d.vue.ts +1 -4
- package/dist/runtime/components/Chip.vue.d.ts +1 -4
- package/dist/runtime/components/Collapsible.d.vue.ts +1 -3
- package/dist/runtime/components/Collapsible.vue.d.ts +1 -3
- package/dist/runtime/components/ColorPicker.d.vue.ts +1 -5
- package/dist/runtime/components/ColorPicker.vue.d.ts +1 -5
- package/dist/runtime/components/CommandPalette.d.vue.ts +9 -14
- package/dist/runtime/components/CommandPalette.vue +7 -7
- package/dist/runtime/components/CommandPalette.vue.d.ts +9 -14
- package/dist/runtime/components/ContextMenu.d.vue.ts +9 -5
- package/dist/runtime/components/ContextMenu.vue +3 -3
- package/dist/runtime/components/ContextMenu.vue.d.ts +9 -5
- package/dist/runtime/components/ContextMenuContent.d.vue.ts +3 -7
- package/dist/runtime/components/ContextMenuContent.vue +5 -5
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +3 -7
- package/dist/runtime/components/DashboardGroup.d.vue.ts +1 -6
- package/dist/runtime/components/DashboardGroup.vue.d.ts +1 -6
- package/dist/runtime/components/DashboardNavbar.d.vue.ts +3 -6
- package/dist/runtime/components/DashboardNavbar.vue +1 -1
- package/dist/runtime/components/DashboardNavbar.vue.d.ts +3 -6
- package/dist/runtime/components/DashboardPanel.d.vue.ts +1 -4
- package/dist/runtime/components/DashboardPanel.vue.d.ts +1 -4
- package/dist/runtime/components/DashboardSearch.d.vue.ts +4 -9
- package/dist/runtime/components/DashboardSearch.vue +3 -3
- package/dist/runtime/components/DashboardSearch.vue.d.ts +4 -9
- package/dist/runtime/components/DashboardSearchButton.d.vue.ts +3 -8
- package/dist/runtime/components/DashboardSearchButton.vue +5 -24
- package/dist/runtime/components/DashboardSearchButton.vue.d.ts +3 -8
- package/dist/runtime/components/DashboardSidebar.d.vue.ts +5 -6
- package/dist/runtime/components/DashboardSidebar.vue.d.ts +5 -6
- package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +3 -7
- package/dist/runtime/components/DashboardSidebarCollapse.vue +5 -24
- package/dist/runtime/components/DashboardSidebarCollapse.vue.d.ts +3 -7
- package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +3 -7
- package/dist/runtime/components/DashboardSidebarToggle.vue +5 -24
- package/dist/runtime/components/DashboardSidebarToggle.vue.d.ts +3 -7
- package/dist/runtime/components/Drawer.d.vue.ts +1 -8
- package/dist/runtime/components/Drawer.vue.d.ts +1 -8
- package/dist/runtime/components/DropdownMenu.d.vue.ts +9 -5
- package/dist/runtime/components/DropdownMenu.vue +3 -3
- package/dist/runtime/components/DropdownMenu.vue.d.ts +9 -5
- package/dist/runtime/components/DropdownMenuContent.d.vue.ts +3 -7
- package/dist/runtime/components/DropdownMenuContent.vue +5 -5
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +3 -7
- package/dist/runtime/components/Editor.d.vue.ts +87 -0
- package/dist/runtime/components/Editor.vue +185 -0
- package/dist/runtime/components/Editor.vue.d.ts +87 -0
- package/dist/runtime/components/EditorDragHandle.d.vue.ts +64 -0
- package/dist/runtime/components/EditorDragHandle.vue +127 -0
- package/dist/runtime/components/EditorDragHandle.vue.d.ts +64 -0
- package/dist/runtime/components/EditorEmojiMenu.d.vue.ts +35 -0
- package/dist/runtime/components/EditorEmojiMenu.vue +70 -0
- package/dist/runtime/components/EditorEmojiMenu.vue.d.ts +35 -0
- package/dist/runtime/components/EditorMentionMenu.d.vue.ts +39 -0
- package/dist/runtime/components/EditorMentionMenu.vue +72 -0
- package/dist/runtime/components/EditorMentionMenu.vue.d.ts +39 -0
- package/dist/runtime/components/EditorSuggestionMenu.d.vue.ts +52 -0
- package/dist/runtime/components/EditorSuggestionMenu.vue +80 -0
- package/dist/runtime/components/EditorSuggestionMenu.vue.d.ts +52 -0
- package/dist/runtime/components/EditorToolbar.d.vue.ts +90 -0
- package/dist/runtime/components/EditorToolbar.vue +242 -0
- package/dist/runtime/components/EditorToolbar.vue.d.ts +90 -0
- package/dist/runtime/components/Empty.vue +1 -1
- package/dist/runtime/components/Error.d.vue.ts +2 -5
- package/dist/runtime/components/Error.vue.d.ts +2 -5
- package/dist/runtime/components/FieldGroup.d.vue.ts +1 -3
- package/dist/runtime/components/FieldGroup.vue.d.ts +1 -3
- package/dist/runtime/components/FileUpload.d.vue.ts +5 -6
- package/dist/runtime/components/FileUpload.vue +3 -3
- package/dist/runtime/components/FileUpload.vue.d.ts +5 -6
- package/dist/runtime/components/Footer.d.vue.ts +1 -3
- package/dist/runtime/components/Footer.vue.d.ts +1 -3
- package/dist/runtime/components/FooterColumns.d.vue.ts +3 -1
- package/dist/runtime/components/FooterColumns.vue.d.ts +3 -1
- package/dist/runtime/components/Form.d.vue.ts +3 -4
- package/dist/runtime/components/Form.vue.d.ts +3 -4
- package/dist/runtime/components/FormField.d.vue.ts +5 -0
- package/dist/runtime/components/FormField.vue +6 -5
- package/dist/runtime/components/FormField.vue.d.ts +5 -0
- package/dist/runtime/components/Header.d.vue.ts +5 -5
- package/dist/runtime/components/Header.vue.d.ts +5 -5
- package/dist/runtime/components/Icon.d.vue.ts +1 -1
- package/dist/runtime/components/Icon.vue +1 -1
- package/dist/runtime/components/Icon.vue.d.ts +1 -1
- package/dist/runtime/components/Input.d.vue.ts +5 -7
- package/dist/runtime/components/Input.vue +4 -4
- package/dist/runtime/components/Input.vue.d.ts +5 -7
- package/dist/runtime/components/InputDate.d.vue.ts +4 -8
- package/dist/runtime/components/InputDate.vue +5 -5
- package/dist/runtime/components/InputDate.vue.d.ts +4 -8
- package/dist/runtime/components/InputMenu.d.vue.ts +9 -15
- package/dist/runtime/components/InputMenu.vue +20 -7
- package/dist/runtime/components/InputMenu.vue.d.ts +9 -15
- package/dist/runtime/components/InputNumber.d.vue.ts +7 -9
- package/dist/runtime/components/InputNumber.vue +2 -2
- package/dist/runtime/components/InputNumber.vue.d.ts +7 -9
- package/dist/runtime/components/InputTags.d.vue.ts +4 -10
- package/dist/runtime/components/InputTags.vue +5 -5
- package/dist/runtime/components/InputTags.vue.d.ts +4 -10
- package/dist/runtime/components/InputTime.d.vue.ts +3 -5
- package/dist/runtime/components/InputTime.vue +4 -4
- package/dist/runtime/components/InputTime.vue.d.ts +3 -5
- package/dist/runtime/components/Kbd.d.vue.ts +1 -3
- package/dist/runtime/components/Kbd.vue.d.ts +1 -3
- package/dist/runtime/components/Link.d.vue.ts +58 -8
- package/dist/runtime/components/Link.vue.d.ts +58 -8
- package/dist/runtime/components/LinkBase.d.vue.ts +1 -4
- package/dist/runtime/components/LinkBase.vue.d.ts +1 -4
- package/dist/runtime/components/Marquee.d.vue.ts +1 -5
- package/dist/runtime/components/Marquee.vue.d.ts +1 -5
- package/dist/runtime/components/Modal.d.vue.ts +3 -10
- package/dist/runtime/components/Modal.vue +1 -1
- package/dist/runtime/components/Modal.vue.d.ts +3 -10
- package/dist/runtime/components/NavigationMenu.d.vue.ts +3 -3
- package/dist/runtime/components/NavigationMenu.vue +2 -2
- package/dist/runtime/components/NavigationMenu.vue.d.ts +3 -3
- package/dist/runtime/components/PageAnchors.d.vue.ts +3 -1
- package/dist/runtime/components/PageAnchors.vue.d.ts +3 -1
- package/dist/runtime/components/PageAside.d.vue.ts +1 -3
- package/dist/runtime/components/PageAside.vue.d.ts +1 -3
- package/dist/runtime/components/PageCTA.d.vue.ts +1 -4
- package/dist/runtime/components/PageCTA.vue.d.ts +1 -4
- package/dist/runtime/components/PageCard.d.vue.ts +1 -3
- package/dist/runtime/components/PageCard.vue +1 -1
- package/dist/runtime/components/PageCard.vue.d.ts +1 -3
- package/dist/runtime/components/PageFeature.d.vue.ts +1 -3
- package/dist/runtime/components/PageFeature.vue +3 -3
- package/dist/runtime/components/PageFeature.vue.d.ts +1 -3
- package/dist/runtime/components/PageHero.d.vue.ts +1 -3
- package/dist/runtime/components/PageHero.vue.d.ts +1 -3
- package/dist/runtime/components/PageLinks.d.vue.ts +3 -1
- package/dist/runtime/components/PageLinks.vue.d.ts +3 -1
- package/dist/runtime/components/PageList.d.vue.ts +1 -3
- package/dist/runtime/components/PageList.vue.d.ts +1 -3
- package/dist/runtime/components/PageLogos.d.vue.ts +1 -3
- package/dist/runtime/components/PageLogos.vue.d.ts +1 -3
- package/dist/runtime/components/PageSection.d.vue.ts +1 -4
- package/dist/runtime/components/PageSection.vue +1 -1
- package/dist/runtime/components/PageSection.vue.d.ts +1 -4
- package/dist/runtime/components/Pagination.d.vue.ts +1 -12
- package/dist/runtime/components/Pagination.vue +5 -5
- package/dist/runtime/components/Pagination.vue.d.ts +1 -12
- package/dist/runtime/components/PinInput.d.vue.ts +4 -7
- package/dist/runtime/components/PinInput.vue +1 -1
- package/dist/runtime/components/PinInput.vue.d.ts +4 -7
- package/dist/runtime/components/Popover.d.vue.ts +3 -4
- package/dist/runtime/components/Popover.vue.d.ts +3 -4
- package/dist/runtime/components/PricingPlan.d.vue.ts +1 -3
- package/dist/runtime/components/PricingPlan.vue.d.ts +1 -3
- package/dist/runtime/components/PricingPlans.d.vue.ts +3 -1
- package/dist/runtime/components/PricingPlans.vue.d.ts +3 -1
- package/dist/runtime/components/PricingTable.d.vue.ts +3 -1
- package/dist/runtime/components/PricingTable.vue.d.ts +3 -1
- package/dist/runtime/components/Progress.d.vue.ts +1 -5
- package/dist/runtime/components/Progress.vue.d.ts +1 -5
- package/dist/runtime/components/RadioGroup.d.vue.ts +3 -4
- package/dist/runtime/components/RadioGroup.vue.d.ts +3 -4
- package/dist/runtime/components/ScrollArea.d.vue.ts +81 -0
- package/dist/runtime/components/ScrollArea.vue +187 -0
- package/dist/runtime/components/ScrollArea.vue.d.ts +81 -0
- package/dist/runtime/components/Select.d.vue.ts +6 -8
- package/dist/runtime/components/Select.vue +19 -6
- package/dist/runtime/components/Select.vue.d.ts +6 -8
- package/dist/runtime/components/SelectMenu.d.vue.ts +9 -14
- package/dist/runtime/components/SelectMenu.vue +19 -6
- package/dist/runtime/components/SelectMenu.vue.d.ts +9 -14
- package/dist/runtime/components/Separator.d.vue.ts +1 -3
- package/dist/runtime/components/Separator.vue +1 -1
- package/dist/runtime/components/Separator.vue.d.ts +1 -3
- package/dist/runtime/components/Slideover.d.vue.ts +8 -11
- package/dist/runtime/components/Slideover.vue +4 -2
- package/dist/runtime/components/Slideover.vue.d.ts +8 -11
- package/dist/runtime/components/Slider.d.vue.ts +3 -4
- package/dist/runtime/components/Slider.vue +2 -2
- package/dist/runtime/components/Slider.vue.d.ts +3 -4
- package/dist/runtime/components/Stepper.d.vue.ts +3 -5
- package/dist/runtime/components/Stepper.vue.d.ts +3 -5
- package/dist/runtime/components/Switch.vue +3 -3
- package/dist/runtime/components/Table.d.vue.ts +5 -16
- package/dist/runtime/components/Table.vue +55 -33
- package/dist/runtime/components/Table.vue.d.ts +5 -16
- package/dist/runtime/components/Tabs.d.vue.ts +3 -3
- package/dist/runtime/components/Tabs.vue.d.ts +3 -3
- package/dist/runtime/components/Textarea.d.vue.ts +5 -7
- package/dist/runtime/components/Textarea.vue +4 -4
- package/dist/runtime/components/Textarea.vue.d.ts +5 -7
- package/dist/runtime/components/Timeline.d.vue.ts +3 -3
- package/dist/runtime/components/Timeline.vue.d.ts +3 -3
- package/dist/runtime/components/Toast.d.vue.ts +3 -7
- package/dist/runtime/components/Toast.vue +2 -2
- package/dist/runtime/components/Toast.vue.d.ts +3 -7
- package/dist/runtime/components/Toaster.d.vue.ts +1 -7
- package/dist/runtime/components/Toaster.vue.d.ts +1 -7
- package/dist/runtime/components/Tooltip.d.vue.ts +1 -3
- package/dist/runtime/components/Tooltip.vue.d.ts +1 -3
- package/dist/runtime/components/Tree.d.vue.ts +3 -4
- package/dist/runtime/components/Tree.vue +3 -3
- package/dist/runtime/components/Tree.vue.d.ts +3 -4
- package/dist/runtime/components/User.d.vue.ts +1 -3
- package/dist/runtime/components/User.vue +0 -1
- package/dist/runtime/components/User.vue.d.ts +1 -3
- package/dist/runtime/components/color-mode/ColorModeAvatar.vue +1 -1
- package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +3 -6
- package/dist/runtime/components/color-mode/ColorModeButton.vue +8 -26
- package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +3 -6
- package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
- package/dist/runtime/components/color-mode/ColorModeSelect.vue +5 -4
- package/dist/runtime/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
- package/dist/runtime/components/color-mode/ColorModeSwitch.vue +1 -1
- package/dist/runtime/components/content/ContentNavigation.d.vue.ts +3 -3
- package/dist/runtime/components/content/ContentNavigation.vue +1 -1
- package/dist/runtime/components/content/ContentNavigation.vue.d.ts +3 -3
- package/dist/runtime/components/content/ContentSearch.d.vue.ts +6 -6
- package/dist/runtime/components/content/ContentSearch.vue +3 -3
- package/dist/runtime/components/content/ContentSearch.vue.d.ts +6 -6
- package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +3 -8
- package/dist/runtime/components/content/ContentSearchButton.vue +5 -24
- package/dist/runtime/components/content/ContentSearchButton.vue.d.ts +3 -8
- package/dist/runtime/components/content/ContentSurround.d.vue.ts +3 -1
- package/dist/runtime/components/content/ContentSurround.vue +2 -2
- package/dist/runtime/components/content/ContentSurround.vue.d.ts +3 -1
- package/dist/runtime/components/content/ContentToc.d.vue.ts +3 -4
- package/dist/runtime/components/content/ContentToc.vue +1 -1
- package/dist/runtime/components/content/ContentToc.vue.d.ts +3 -4
- package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +1 -5
- package/dist/runtime/components/locale/LocaleSelect.vue +15 -8
- package/dist/runtime/components/locale/LocaleSelect.vue.d.ts +1 -5
- package/dist/runtime/components/prose/Accordion.d.vue.ts +1 -3
- package/dist/runtime/components/prose/Accordion.vue.d.ts +1 -3
- package/dist/runtime/components/prose/Callout.vue +1 -2
- package/dist/runtime/components/prose/Card.vue +1 -2
- package/dist/runtime/components/prose/CodeCollapse.vue +1 -1
- package/dist/runtime/components/prose/CodeGroup.d.vue.ts +1 -3
- package/dist/runtime/components/prose/CodeGroup.vue.d.ts +1 -3
- package/dist/runtime/components/prose/CodeIcon.vue +1 -1
- package/dist/runtime/components/prose/CodeTree.d.vue.ts +20 -1
- package/dist/runtime/components/prose/CodeTree.vue +32 -8
- package/dist/runtime/components/prose/CodeTree.vue.d.ts +20 -1
- package/dist/runtime/components/prose/Collapsible.vue +1 -1
- package/dist/runtime/components/prose/Img.d.vue.ts +1 -3
- package/dist/runtime/components/prose/Img.vue.d.ts +1 -3
- package/dist/runtime/components/prose/Pre.vue +1 -1
- package/dist/runtime/components/prose/Tabs.d.vue.ts +1 -3
- package/dist/runtime/components/prose/Tabs.vue.d.ts +1 -3
- package/dist/runtime/components/prose/callout/Caution.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Caution.vue.d.ts +2 -2
- package/dist/runtime/components/prose/callout/Note.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Note.vue.d.ts +2 -2
- package/dist/runtime/components/prose/callout/Tip.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Tip.vue.d.ts +2 -2
- package/dist/runtime/components/prose/callout/Warning.d.vue.ts +2 -2
- package/dist/runtime/components/prose/callout/Warning.vue.d.ts +2 -2
- package/dist/runtime/composables/defineShortcuts.d.ts +2 -1
- package/dist/runtime/composables/defineShortcuts.js +62 -15
- package/dist/runtime/composables/useComponentIcons.d.ts +2 -2
- package/dist/runtime/composables/useEditorMenu.d.ts +64 -0
- package/dist/runtime/composables/useEditorMenu.js +448 -0
- package/dist/runtime/composables/useFileUpload.d.ts +1 -2
- package/dist/runtime/locale/en_gb.d.ts +3 -0
- package/dist/runtime/locale/en_gb.js +7 -0
- package/dist/runtime/locale/eu.d.ts +3 -0
- package/dist/runtime/locale/eu.js +129 -0
- package/dist/runtime/locale/index.d.ts +3 -0
- package/dist/runtime/locale/index.js +3 -0
- package/dist/runtime/locale/lo.d.ts +3 -0
- package/dist/runtime/locale/lo.js +129 -0
- package/dist/runtime/types/editor.d.ts +69 -0
- package/dist/runtime/types/editor.js +0 -0
- package/dist/runtime/types/index.d.ts +8 -0
- package/dist/runtime/types/index.js +8 -0
- package/dist/runtime/utils/content.d.ts +2 -2
- package/dist/runtime/utils/editor.d.ts +69 -0
- package/dist/runtime/utils/editor.js +364 -0
- package/dist/runtime/utils/locale.d.ts +1 -2
- package/dist/runtime/vue/components/Icon.vue +1 -1
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +1 -3
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue +5 -4
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.vue.d.ts +1 -3
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.vue +1 -1
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.d.vue.ts +6 -8
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue +27 -8
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/Link.vue.d.ts +6 -8
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.d.vue.ts +3 -5
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue +5 -2
- package/dist/runtime/{inertia/components → vue/overrides/inertia}/LinkBase.vue.d.ts +3 -5
- package/dist/runtime/vue/overrides/none/Link.d.vue.ts +71 -0
- package/dist/runtime/vue/overrides/none/Link.vue +122 -0
- package/dist/runtime/vue/overrides/none/Link.vue.d.ts +71 -0
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.d.vue.ts +6 -9
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue +34 -11
- package/dist/runtime/vue/{components → overrides/vue-router}/Link.vue.d.ts +6 -9
- package/dist/runtime/vue/{stubs.d.ts → stubs/base.d.ts} +4 -5
- package/dist/runtime/vue/{stubs.js → stubs/base.js} +4 -5
- package/dist/runtime/vue/stubs/inertia.d.ts +5 -0
- package/dist/runtime/vue/stubs/inertia.js +10 -0
- package/dist/runtime/vue/stubs/none.d.ts +56 -0
- package/dist/runtime/vue/stubs/none.js +48 -0
- package/dist/runtime/vue/stubs/vue-router.d.ts +2 -0
- package/dist/runtime/vue/stubs/vue-router.js +2 -0
- package/dist/shared/{ui.B77q-Dvh.mjs → ui.DegC4tw1.mjs} +282 -60
- package/dist/unplugin.d.mts +14 -0
- package/dist/unplugin.mjs +73 -48
- package/dist/vite.mjs +1 -1
- package/package.json +49 -31
- package/dist/runtime/inertia/stubs.d.ts +0 -44
- package/dist/runtime/inertia/stubs.js +0 -84
|
@@ -0,0 +1,242 @@
|
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/ui/editor-toolbar";
|
|
3
|
+
</script>
|
|
4
|
+
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, inject } from "vue";
|
|
7
|
+
import { Primitive, Separator, useForwardProps } from "reka-ui";
|
|
8
|
+
import { defu } from "defu";
|
|
9
|
+
import { BubbleMenu, FloatingMenu } from "@tiptap/vue-3/menus";
|
|
10
|
+
import { reactiveOmit } from "@vueuse/core";
|
|
11
|
+
import { useAppConfig } from "#imports";
|
|
12
|
+
import { isArrayOfArray, pick, omit } from "../utils";
|
|
13
|
+
import { createHandlers } from "../utils/editor";
|
|
14
|
+
import { tv } from "../utils/tv";
|
|
15
|
+
import UButton from "./Button.vue";
|
|
16
|
+
import UDropdownMenu from "./DropdownMenu.vue";
|
|
17
|
+
import UTooltip from "./Tooltip.vue";
|
|
18
|
+
defineOptions({ inheritAttrs: false });
|
|
19
|
+
const props = defineProps({
|
|
20
|
+
as: { type: null, required: false },
|
|
21
|
+
color: { type: null, required: false, default: "neutral" },
|
|
22
|
+
variant: { type: null, required: false, default: "ghost" },
|
|
23
|
+
activeColor: { type: null, required: false, default: "primary" },
|
|
24
|
+
activeVariant: { type: null, required: false, default: "soft" },
|
|
25
|
+
size: { type: null, required: false, default: "sm" },
|
|
26
|
+
items: { type: null, required: false },
|
|
27
|
+
editor: { type: Object, required: true },
|
|
28
|
+
class: { type: null, required: false },
|
|
29
|
+
ui: { type: null, required: false },
|
|
30
|
+
layout: { type: String, required: false, default: "fixed" },
|
|
31
|
+
pluginKey: { type: [Object, String], required: false },
|
|
32
|
+
updateDelay: { type: Number, required: false },
|
|
33
|
+
resizeDelay: { type: Number, required: false },
|
|
34
|
+
shouldShow: { type: [Function, null], required: false },
|
|
35
|
+
appendTo: { type: Function, required: false, skipCheck: true },
|
|
36
|
+
getReferencedVirtualElement: { type: Function, required: false },
|
|
37
|
+
options: { type: Object, required: false }
|
|
38
|
+
});
|
|
39
|
+
defineSlots();
|
|
40
|
+
const appConfig = useAppConfig();
|
|
41
|
+
const handlers = inject("editorHandlers", computed(() => createHandlers()));
|
|
42
|
+
const Component = computed(() => {
|
|
43
|
+
return {
|
|
44
|
+
bubble: BubbleMenu,
|
|
45
|
+
floating: FloatingMenu,
|
|
46
|
+
fixed: "template"
|
|
47
|
+
}[props.layout];
|
|
48
|
+
});
|
|
49
|
+
const rootProps = useForwardProps(reactiveOmit(props, "as", "color", "variant", "activeColor", "activeVariant", "size", "items", "layout", "editor", "class", "ui"));
|
|
50
|
+
const options = computed(() => defu(props.options, {
|
|
51
|
+
offset: 8,
|
|
52
|
+
shift: { padding: 8 }
|
|
53
|
+
}));
|
|
54
|
+
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.editorToolbar || {} })({
|
|
55
|
+
layout: props.layout
|
|
56
|
+
}));
|
|
57
|
+
const groups = computed(
|
|
58
|
+
() => props.items?.length ? isArrayOfArray(props.items) ? props.items : [props.items] : []
|
|
59
|
+
);
|
|
60
|
+
function isActive(item) {
|
|
61
|
+
if (!props.editor?.isEditable) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if ("items" in item && item.items?.length) {
|
|
65
|
+
return item.items?.some((item2) => isActive(item2)) || false;
|
|
66
|
+
}
|
|
67
|
+
if (!("kind" in item)) {
|
|
68
|
+
return item.active ?? false;
|
|
69
|
+
}
|
|
70
|
+
const handler = handlers?.value?.[item.kind];
|
|
71
|
+
return handler?.isActive(props.editor, item) || false;
|
|
72
|
+
}
|
|
73
|
+
function isDisabled(item) {
|
|
74
|
+
if (!props.editor?.isEditable) {
|
|
75
|
+
return true;
|
|
76
|
+
}
|
|
77
|
+
if ("items" in item && item.items?.length) {
|
|
78
|
+
const items = isArrayOfArray(item.items) ? item.items.flat() : item.items;
|
|
79
|
+
const itemItems = items.filter((item2) => "kind" in item2);
|
|
80
|
+
if (itemItems.length === 0) {
|
|
81
|
+
return true;
|
|
82
|
+
}
|
|
83
|
+
return itemItems.every((item2) => isDisabled(item2));
|
|
84
|
+
}
|
|
85
|
+
if (!("kind" in item)) {
|
|
86
|
+
return item.disabled ?? false;
|
|
87
|
+
}
|
|
88
|
+
const handler = handlers?.value?.[item.kind];
|
|
89
|
+
if (!handler) {
|
|
90
|
+
return false;
|
|
91
|
+
}
|
|
92
|
+
if (handler.isDisabled?.(props.editor, item)) {
|
|
93
|
+
return true;
|
|
94
|
+
}
|
|
95
|
+
return !handler.canExecute(props.editor, item);
|
|
96
|
+
}
|
|
97
|
+
function onClick(e, item) {
|
|
98
|
+
if (!props.editor?.isEditable || isDisabled(item)) {
|
|
99
|
+
return;
|
|
100
|
+
}
|
|
101
|
+
if ("items" in item || !("kind" in item)) {
|
|
102
|
+
if ("onClick" in item) {
|
|
103
|
+
for (const onClick2 of Array.isArray(item.onClick) ? item.onClick : [item.onClick]) {
|
|
104
|
+
onClick2?.(e);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
const handler = handlers?.value?.[item.kind];
|
|
110
|
+
if (handler) {
|
|
111
|
+
handler.execute(props.editor, item).run();
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
function getActiveChildItem(item) {
|
|
115
|
+
if (!item.items) {
|
|
116
|
+
return void 0;
|
|
117
|
+
}
|
|
118
|
+
const items = isArrayOfArray(item.items) ? item.items.flat() : item.items;
|
|
119
|
+
return items.find((childItem) => {
|
|
120
|
+
if (!("kind" in childItem)) {
|
|
121
|
+
return false;
|
|
122
|
+
}
|
|
123
|
+
return isActive(childItem);
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
function getButtonProps(item) {
|
|
127
|
+
const baseProps = omit(item, ["kind", "mark", "align", "level", "href", "src", "pos", "items", "slot", "checkedIcon", "loadingIcon", "externalIcon", "content", "arrow", "portal", "modal", "tooltip"]);
|
|
128
|
+
if ("items" in item && item.items?.length) {
|
|
129
|
+
const activeChild = getActiveChildItem(item);
|
|
130
|
+
if (activeChild?.icon) {
|
|
131
|
+
baseProps.icon = activeChild.icon;
|
|
132
|
+
}
|
|
133
|
+
if (activeChild?.label && baseProps.label !== void 0) {
|
|
134
|
+
baseProps.label = activeChild.label;
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
return defu(baseProps, {
|
|
138
|
+
color: props.color,
|
|
139
|
+
activeColor: props.activeColor,
|
|
140
|
+
activeVariant: props.activeVariant,
|
|
141
|
+
variant: props.variant,
|
|
142
|
+
size: props.size
|
|
143
|
+
});
|
|
144
|
+
}
|
|
145
|
+
function getDropdownProps(item) {
|
|
146
|
+
const baseProps = pick(item, ["checkedIcon", "loadingIcon", "externalIcon", "content", "arrow", "portal", "modal", "ui"]);
|
|
147
|
+
return defu(baseProps, {
|
|
148
|
+
modal: false
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
function mapDropdownItem(item) {
|
|
152
|
+
const children = "children" in item && Array.isArray(item.children) ? item.children.map(mapDropdownItem) : void 0;
|
|
153
|
+
if (!("kind" in item)) {
|
|
154
|
+
return children ? { ...item, children } : item;
|
|
155
|
+
}
|
|
156
|
+
const editorToolbarItem = item;
|
|
157
|
+
return {
|
|
158
|
+
...editorToolbarItem,
|
|
159
|
+
...children && { children },
|
|
160
|
+
active: isActive(editorToolbarItem),
|
|
161
|
+
disabled: isDisabled(editorToolbarItem),
|
|
162
|
+
onSelect: (e) => onClick(e, editorToolbarItem)
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
function getDropdownItems(item) {
|
|
166
|
+
if (!item.items) {
|
|
167
|
+
return [];
|
|
168
|
+
}
|
|
169
|
+
return isArrayOfArray(item.items) ? item.items.map((group) => group.map(mapDropdownItem)) : [item.items.map(mapDropdownItem)];
|
|
170
|
+
}
|
|
171
|
+
</script>
|
|
172
|
+
|
|
173
|
+
<template>
|
|
174
|
+
<Primitive
|
|
175
|
+
:as="Component"
|
|
176
|
+
v-bind="Component !== 'template' ? {
|
|
177
|
+
editor,
|
|
178
|
+
tabindex: -1,
|
|
179
|
+
class: ui.root({ class: props.ui?.root }),
|
|
180
|
+
...rootProps,
|
|
181
|
+
options,
|
|
182
|
+
...$attrs
|
|
183
|
+
} : {
|
|
184
|
+
...$attrs
|
|
185
|
+
}"
|
|
186
|
+
>
|
|
187
|
+
<Primitive :as="as" role="toolbar" data-slot="base" :class="ui.base({ class: [props.ui?.base, props.class] })">
|
|
188
|
+
<template v-for="(group, groupIndex) in groups" :key="`group-${groupIndex}`">
|
|
189
|
+
<div role="group" data-slot="group" :class="ui.group({ class: props.ui?.group })">
|
|
190
|
+
<template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
|
|
191
|
+
<slot
|
|
192
|
+
:name="item.slot || 'item'"
|
|
193
|
+
:item="item"
|
|
194
|
+
:index="index"
|
|
195
|
+
:is-active="isActive"
|
|
196
|
+
:is-disabled="isDisabled"
|
|
197
|
+
:on-click="onClick"
|
|
198
|
+
>
|
|
199
|
+
<UDropdownMenu
|
|
200
|
+
v-if="'items' in item && item.items?.length"
|
|
201
|
+
v-bind="getDropdownProps(item)"
|
|
202
|
+
:items="getDropdownItems(item)"
|
|
203
|
+
>
|
|
204
|
+
<UTooltip v-if="item.tooltip" :disabled="isDisabled(item)" v-bind="{ ...item.tooltip || {} }">
|
|
205
|
+
<UButton :active="isActive(item)" :disabled="isDisabled(item)" v-bind="getButtonProps(item)" />
|
|
206
|
+
</UTooltip>
|
|
207
|
+
|
|
208
|
+
<UButton v-else :active="isActive(item)" :disabled="isDisabled(item)" v-bind="getButtonProps(item)" />
|
|
209
|
+
</UDropdownMenu>
|
|
210
|
+
|
|
211
|
+
<UTooltip v-else-if="item.tooltip" :disabled="isDisabled(item)" v-bind="{ ...item.tooltip || {} }">
|
|
212
|
+
<UButton
|
|
213
|
+
:active="isActive(item)"
|
|
214
|
+
:disabled="isDisabled(item)"
|
|
215
|
+
v-bind="getButtonProps(item)"
|
|
216
|
+
:ui="item.ui"
|
|
217
|
+
@click="onClick($event, item)"
|
|
218
|
+
/>
|
|
219
|
+
</UTooltip>
|
|
220
|
+
|
|
221
|
+
<UButton
|
|
222
|
+
v-else
|
|
223
|
+
:active="isActive(item)"
|
|
224
|
+
:disabled="isDisabled(item)"
|
|
225
|
+
v-bind="getButtonProps(item)"
|
|
226
|
+
:ui="item.ui"
|
|
227
|
+
@click="onClick($event, item)"
|
|
228
|
+
/>
|
|
229
|
+
</slot>
|
|
230
|
+
</template>
|
|
231
|
+
</div>
|
|
232
|
+
|
|
233
|
+
<Separator
|
|
234
|
+
v-if="groupIndex < groups.length - 1"
|
|
235
|
+
data-slot="separator"
|
|
236
|
+
:class="ui.separator({ class: props.ui?.separator })"
|
|
237
|
+
orientation="vertical"
|
|
238
|
+
/>
|
|
239
|
+
</template>
|
|
240
|
+
</Primitive>
|
|
241
|
+
</Primitive>
|
|
242
|
+
</template>
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import type { Editor } from '@tiptap/vue-3';
|
|
3
|
+
import type { BubbleMenuPluginProps } from '@tiptap/extension-bubble-menu';
|
|
4
|
+
import type { FloatingMenuPluginProps } from '@tiptap/extension-floating-menu';
|
|
5
|
+
import theme from '#build/ui/editor-toolbar';
|
|
6
|
+
import type { ButtonProps, DropdownMenuProps, DropdownMenuItem, TooltipProps, LinkPropsKeys } from '../types';
|
|
7
|
+
import type { EditorItem, EditorCustomHandlers } from '../types/editor';
|
|
8
|
+
import type { ArrayOrNested, DynamicSlots, MergeTypes, NestedItem } from '../types/utils';
|
|
9
|
+
import type { ComponentConfig } from '../types/tv';
|
|
10
|
+
type EditorToolbar = ComponentConfig<typeof theme, AppConfig, 'editorToolbar'>;
|
|
11
|
+
type ButtonItem = Omit<ButtonProps, 'type'> & {
|
|
12
|
+
'slot'?: string;
|
|
13
|
+
'tooltip'?: TooltipProps;
|
|
14
|
+
'aria-label'?: string;
|
|
15
|
+
};
|
|
16
|
+
type EditorToolbarButtonItem<H extends EditorCustomHandlers = EditorCustomHandlers> = Omit<ButtonItem, LinkPropsKeys> & EditorItem<H>;
|
|
17
|
+
type EditorToolbarDropdownChildItem<H extends EditorCustomHandlers = EditorCustomHandlers> = DropdownMenuItem | (Omit<DropdownMenuItem, 'type'> & EditorItem<H>);
|
|
18
|
+
type EditorToolbarDropdownItem<H extends EditorCustomHandlers = EditorCustomHandlers> = ButtonItem & DropdownMenuProps<ArrayOrNested<EditorToolbarDropdownChildItem<H>>>;
|
|
19
|
+
export type EditorToolbarItem<H extends EditorCustomHandlers = EditorCustomHandlers> = ButtonItem | EditorToolbarButtonItem<H> | EditorToolbarDropdownItem<H>;
|
|
20
|
+
type EditorToolbarBaseProps<T extends ArrayOrNested<EditorToolbarItem> = ArrayOrNested<EditorToolbarItem>> = {
|
|
21
|
+
/**
|
|
22
|
+
* The element or component this component should render as.
|
|
23
|
+
* @defaultValue 'div'
|
|
24
|
+
*/
|
|
25
|
+
as?: any;
|
|
26
|
+
/**
|
|
27
|
+
* The color of the toolbar controls.
|
|
28
|
+
* @defaultValue 'neutral'
|
|
29
|
+
*/
|
|
30
|
+
color?: ButtonProps['color'];
|
|
31
|
+
/**
|
|
32
|
+
* The variant of the toolbar controls.
|
|
33
|
+
* @defaultValue 'ghost'
|
|
34
|
+
*/
|
|
35
|
+
variant?: ButtonProps['variant'];
|
|
36
|
+
/**
|
|
37
|
+
* The color of the active toolbar control.
|
|
38
|
+
* @defaultValue 'primary'
|
|
39
|
+
*/
|
|
40
|
+
activeColor?: ButtonProps['color'];
|
|
41
|
+
/**
|
|
42
|
+
* The variant of the active toolbar control.
|
|
43
|
+
* @defaultValue 'soft'
|
|
44
|
+
*/
|
|
45
|
+
activeVariant?: ButtonProps['variant'];
|
|
46
|
+
/**
|
|
47
|
+
* The size of the toolbar controls.
|
|
48
|
+
* @defaultValue 'sm'
|
|
49
|
+
*/
|
|
50
|
+
size?: ButtonProps['size'];
|
|
51
|
+
items?: T;
|
|
52
|
+
editor: Editor;
|
|
53
|
+
class?: any;
|
|
54
|
+
ui?: EditorToolbar['slots'];
|
|
55
|
+
};
|
|
56
|
+
export type EditorToolbarProps<T extends ArrayOrNested<EditorToolbarItem> = ArrayOrNested<EditorToolbarItem>> = (EditorToolbarBaseProps<T> & {
|
|
57
|
+
layout?: 'fixed';
|
|
58
|
+
}) | (EditorToolbarBaseProps<T> & Partial<Omit<BubbleMenuPluginProps, 'editor' | 'element'>> & {
|
|
59
|
+
layout?: 'bubble';
|
|
60
|
+
}) | (EditorToolbarBaseProps<T> & Partial<Omit<FloatingMenuPluginProps, 'editor' | 'element'>> & {
|
|
61
|
+
layout?: 'floating';
|
|
62
|
+
});
|
|
63
|
+
type SlotPropsProps = {
|
|
64
|
+
index: number;
|
|
65
|
+
isActive: (item: EditorToolbarItem) => boolean;
|
|
66
|
+
isDisabled: (item: EditorToolbarItem) => boolean;
|
|
67
|
+
onClick: (e: MouseEvent, item: EditorToolbarItem) => void;
|
|
68
|
+
};
|
|
69
|
+
type SlotProps<T extends EditorToolbarItem> = (props: {
|
|
70
|
+
item: T;
|
|
71
|
+
} & SlotPropsProps) => any;
|
|
72
|
+
export type EditorToolbarSlots<A extends ArrayOrNested<EditorToolbarItem> = ArrayOrNested<EditorToolbarItem>, T extends NestedItem<A> = NestedItem<A>> = {
|
|
73
|
+
item: SlotProps<T>;
|
|
74
|
+
} & DynamicSlots<MergeTypes<T>, undefined, SlotPropsProps>;
|
|
75
|
+
declare const __VLS_export: <T extends ArrayOrNested<EditorToolbarItem>>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
76
|
+
props: __VLS_PrettifyLocal<EditorToolbarProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
77
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
78
|
+
} ? P : {});
|
|
79
|
+
expose: (exposed: {}) => void;
|
|
80
|
+
attrs: any;
|
|
81
|
+
slots: EditorToolbarSlots<T, NestedItem<T>>;
|
|
82
|
+
emit: {};
|
|
83
|
+
}>) => import("vue").VNode & {
|
|
84
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
85
|
+
};
|
|
86
|
+
declare const _default: typeof __VLS_export;
|
|
87
|
+
export default _default;
|
|
88
|
+
type __VLS_PrettifyLocal<T> = {
|
|
89
|
+
[K in keyof T as K]: T[K];
|
|
90
|
+
} & {};
|
|
@@ -11,7 +11,7 @@ import UAvatar from "./Avatar.vue";
|
|
|
11
11
|
import UButton from "./Button.vue";
|
|
12
12
|
const props = defineProps({
|
|
13
13
|
as: { type: null, required: false },
|
|
14
|
-
icon: { type:
|
|
14
|
+
icon: { type: null, required: false },
|
|
15
15
|
avatar: { type: Object, required: false },
|
|
16
16
|
title: { type: String, required: false },
|
|
17
17
|
description: { type: String, required: false },
|
|
@@ -23,7 +23,7 @@ export interface ErrorProps {
|
|
|
23
23
|
* `{ size: 'lg', color: 'primary', variant: 'solid', label: 'Back to home' }`{lang="ts-type"}
|
|
24
24
|
* @defaultValue true
|
|
25
25
|
*/
|
|
26
|
-
clear?: boolean |
|
|
26
|
+
clear?: boolean | ButtonProps;
|
|
27
27
|
class?: any;
|
|
28
28
|
ui?: Error['slots'];
|
|
29
29
|
}
|
|
@@ -34,10 +34,7 @@ export interface ErrorSlots {
|
|
|
34
34
|
message(props?: {}): any;
|
|
35
35
|
links(props?: {}): any;
|
|
36
36
|
}
|
|
37
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ErrorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ErrorProps> & Readonly<{}>, {
|
|
38
|
-
redirect: string;
|
|
39
|
-
clear: boolean | Partial<ButtonProps>;
|
|
40
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ErrorSlots>;
|
|
37
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ErrorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ErrorProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ErrorSlots>;
|
|
41
38
|
declare const _default: typeof __VLS_export;
|
|
42
39
|
export default _default;
|
|
43
40
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -23,7 +23,7 @@ export interface ErrorProps {
|
|
|
23
23
|
* `{ size: 'lg', color: 'primary', variant: 'solid', label: 'Back to home' }`{lang="ts-type"}
|
|
24
24
|
* @defaultValue true
|
|
25
25
|
*/
|
|
26
|
-
clear?: boolean |
|
|
26
|
+
clear?: boolean | ButtonProps;
|
|
27
27
|
class?: any;
|
|
28
28
|
ui?: Error['slots'];
|
|
29
29
|
}
|
|
@@ -34,10 +34,7 @@ export interface ErrorSlots {
|
|
|
34
34
|
message(props?: {}): any;
|
|
35
35
|
links(props?: {}): any;
|
|
36
36
|
}
|
|
37
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ErrorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ErrorProps> & Readonly<{}>, {
|
|
38
|
-
redirect: string;
|
|
39
|
-
clear: boolean | Partial<ButtonProps>;
|
|
40
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ErrorSlots>;
|
|
37
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<ErrorProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<ErrorProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ErrorSlots>;
|
|
41
38
|
declare const _default: typeof __VLS_export;
|
|
42
39
|
export default _default;
|
|
43
40
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -23,9 +23,7 @@ export interface FieldGroupProps {
|
|
|
23
23
|
export interface FieldGroupSlots {
|
|
24
24
|
default(props?: {}): any;
|
|
25
25
|
}
|
|
26
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FieldGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FieldGroupProps> & Readonly<{}>, {
|
|
27
|
-
orientation: FieldGroup["variants"]["orientation"];
|
|
28
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FieldGroupSlots>;
|
|
26
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FieldGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FieldGroupProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FieldGroupSlots>;
|
|
29
27
|
declare const _default: typeof __VLS_export;
|
|
30
28
|
export default _default;
|
|
31
29
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -23,9 +23,7 @@ export interface FieldGroupProps {
|
|
|
23
23
|
export interface FieldGroupSlots {
|
|
24
24
|
default(props?: {}): any;
|
|
25
25
|
}
|
|
26
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FieldGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FieldGroupProps> & Readonly<{}>, {
|
|
27
|
-
orientation: FieldGroup["variants"]["orientation"];
|
|
28
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FieldGroupSlots>;
|
|
26
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FieldGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FieldGroupProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FieldGroupSlots>;
|
|
29
27
|
declare const _default: typeof __VLS_export;
|
|
30
28
|
export default _default;
|
|
31
29
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AppConfig } from '@nuxt/schema';
|
|
2
2
|
import type { UseFileDialogReturn } from '@vueuse/core';
|
|
3
3
|
import theme from '#build/ui/file-upload';
|
|
4
|
-
import type { ButtonProps, IconProps } from '../types';
|
|
4
|
+
import type { ButtonProps, IconProps, LinkPropsKeys } from '../types';
|
|
5
5
|
import type { InputHTMLAttributes } from '../types/html';
|
|
6
6
|
import type { ComponentConfig } from '../types/tv';
|
|
7
7
|
type FileUpload = ComponentConfig<typeof theme, AppConfig, 'fileUpload'>;
|
|
@@ -83,7 +83,7 @@ export interface FileUploadProps<M extends boolean = false> extends /** @vue-ign
|
|
|
83
83
|
* When `layout` is `grid`, the default is `{ color: 'neutral', variant: 'solid', size: 'xs' }`{lang="ts-type"}
|
|
84
84
|
* When `layout` is `list`, the default is `{ color: 'neutral', variant: 'link' }`{lang="ts-type"}
|
|
85
85
|
*/
|
|
86
|
-
fileDelete?: boolean |
|
|
86
|
+
fileDelete?: boolean | Omit<ButtonProps, LinkPropsKeys>;
|
|
87
87
|
/**
|
|
88
88
|
* The icon displayed to delete a file.
|
|
89
89
|
* @defaultValue appConfig.ui.icons.close
|
|
@@ -157,10 +157,9 @@ export interface FileUploadSlots<M extends boolean = false> {
|
|
|
157
157
|
declare const __VLS_export: <M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
158
158
|
props: __VLS_PrettifyLocal<(FileUploadProps<M> & {
|
|
159
159
|
modelValue?: (M extends true ? File[] : File) | null;
|
|
160
|
-
}) & {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}> & import("vue").PublicProps;
|
|
160
|
+
}) & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: (M extends true ? File[] : File) | null | undefined) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
161
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
162
|
+
} ? P : {});
|
|
164
163
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
165
164
|
inputRef: Readonly<import("vue").Ref<HTMLInputElement, HTMLInputElement>>;
|
|
166
165
|
dropzoneRef: import("vue").Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
|
|
@@ -18,7 +18,7 @@ const props = defineProps({
|
|
|
18
18
|
as: { type: null, required: false },
|
|
19
19
|
id: { type: String, required: false },
|
|
20
20
|
name: { type: String, required: false },
|
|
21
|
-
icon: { type:
|
|
21
|
+
icon: { type: null, required: false },
|
|
22
22
|
label: { type: String, required: false },
|
|
23
23
|
description: { type: String, required: false },
|
|
24
24
|
color: { type: null, required: false },
|
|
@@ -34,9 +34,9 @@ const props = defineProps({
|
|
|
34
34
|
interactive: { type: Boolean, required: false, default: true },
|
|
35
35
|
required: { type: Boolean, required: false },
|
|
36
36
|
disabled: { type: Boolean, required: false },
|
|
37
|
-
fileIcon: { type:
|
|
37
|
+
fileIcon: { type: null, required: false },
|
|
38
38
|
fileDelete: { type: [Boolean, Object], required: false, default: true },
|
|
39
|
-
fileDeleteIcon: { type:
|
|
39
|
+
fileDeleteIcon: { type: null, required: false },
|
|
40
40
|
preview: { type: Boolean, required: false, default: true },
|
|
41
41
|
class: { type: null, required: false },
|
|
42
42
|
ui: { type: null, required: false }
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { AppConfig } from '@nuxt/schema';
|
|
2
2
|
import type { UseFileDialogReturn } from '@vueuse/core';
|
|
3
3
|
import theme from '#build/ui/file-upload';
|
|
4
|
-
import type { ButtonProps, IconProps } from '../types';
|
|
4
|
+
import type { ButtonProps, IconProps, LinkPropsKeys } from '../types';
|
|
5
5
|
import type { InputHTMLAttributes } from '../types/html';
|
|
6
6
|
import type { ComponentConfig } from '../types/tv';
|
|
7
7
|
type FileUpload = ComponentConfig<typeof theme, AppConfig, 'fileUpload'>;
|
|
@@ -83,7 +83,7 @@ export interface FileUploadProps<M extends boolean = false> extends /** @vue-ign
|
|
|
83
83
|
* When `layout` is `grid`, the default is `{ color: 'neutral', variant: 'solid', size: 'xs' }`{lang="ts-type"}
|
|
84
84
|
* When `layout` is `list`, the default is `{ color: 'neutral', variant: 'link' }`{lang="ts-type"}
|
|
85
85
|
*/
|
|
86
|
-
fileDelete?: boolean |
|
|
86
|
+
fileDelete?: boolean | Omit<ButtonProps, LinkPropsKeys>;
|
|
87
87
|
/**
|
|
88
88
|
* The icon displayed to delete a file.
|
|
89
89
|
* @defaultValue appConfig.ui.icons.close
|
|
@@ -157,10 +157,9 @@ export interface FileUploadSlots<M extends boolean = false> {
|
|
|
157
157
|
declare const __VLS_export: <M extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
158
158
|
props: __VLS_PrettifyLocal<(FileUploadProps<M> & {
|
|
159
159
|
modelValue?: (M extends true ? File[] : File) | null;
|
|
160
|
-
}) & {
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
}> & import("vue").PublicProps;
|
|
160
|
+
}) & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "change", event: Event) => void) & ((evt: "update:modelValue", value: (M extends true ? File[] : File) | null | undefined) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
161
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
162
|
+
} ? P : {});
|
|
164
163
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
165
164
|
inputRef: Readonly<import("vue").Ref<HTMLInputElement, HTMLInputElement>>;
|
|
166
165
|
dropzoneRef: import("vue").Ref<HTMLDivElement | undefined, HTMLDivElement | undefined>;
|
|
@@ -18,9 +18,7 @@ export interface FooterSlots {
|
|
|
18
18
|
top(props?: {}): any;
|
|
19
19
|
bottom(props?: {}): any;
|
|
20
20
|
}
|
|
21
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {
|
|
22
|
-
as: any;
|
|
23
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FooterSlots>;
|
|
21
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FooterSlots>;
|
|
24
22
|
declare const _default: typeof __VLS_export;
|
|
25
23
|
export default _default;
|
|
26
24
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -18,9 +18,7 @@ export interface FooterSlots {
|
|
|
18
18
|
top(props?: {}): any;
|
|
19
19
|
bottom(props?: {}): any;
|
|
20
20
|
}
|
|
21
|
-
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {
|
|
22
|
-
as: any;
|
|
23
|
-
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FooterSlots>;
|
|
21
|
+
declare const __VLS_export: __VLS_WithSlots<import("vue").DefineComponent<FooterProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<FooterProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, FooterSlots>;
|
|
24
22
|
declare const _default: typeof __VLS_export;
|
|
25
23
|
export default _default;
|
|
26
24
|
type __VLS_WithSlots<T, S> = T & {
|
|
@@ -50,7 +50,9 @@ export interface FooterColumnsSlots<T extends FooterColumnLink = FooterColumnLin
|
|
|
50
50
|
}): any;
|
|
51
51
|
}
|
|
52
52
|
declare const __VLS_export: <T extends FooterColumnLink>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
53
|
-
props: __VLS_PrettifyLocal<FooterColumnsProps<T>> & import("vue").PublicProps
|
|
53
|
+
props: __VLS_PrettifyLocal<FooterColumnsProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
54
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
55
|
+
} ? P : {});
|
|
54
56
|
expose: (exposed: {}) => void;
|
|
55
57
|
attrs: any;
|
|
56
58
|
slots: FooterColumnsSlots<T>;
|
|
@@ -50,7 +50,9 @@ export interface FooterColumnsSlots<T extends FooterColumnLink = FooterColumnLin
|
|
|
50
50
|
}): any;
|
|
51
51
|
}
|
|
52
52
|
declare const __VLS_export: <T extends FooterColumnLink>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
53
|
-
props: __VLS_PrettifyLocal<FooterColumnsProps<T>> & import("vue").PublicProps
|
|
53
|
+
props: __VLS_PrettifyLocal<FooterColumnsProps<T>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
54
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
55
|
+
} ? P : {});
|
|
54
56
|
expose: (exposed: {}) => void;
|
|
55
57
|
attrs: any;
|
|
56
58
|
slots: FooterColumnsSlots<T>;
|
|
@@ -60,10 +60,9 @@ export interface FormSlots {
|
|
|
60
60
|
}): any;
|
|
61
61
|
}
|
|
62
62
|
declare const __VLS_export: <S extends FormSchema, T extends boolean = true, N extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
63
|
-
props: __VLS_PrettifyLocal<FormProps<S, T, N> & {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}> & import("vue").PublicProps;
|
|
63
|
+
props: __VLS_PrettifyLocal<FormProps<S, T, N> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "error", event: FormErrorEvent) => void) & ((evt: "submit", event: FormSubmitEvent<FormData<S, T>>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
64
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
65
|
+
} ? P : {});
|
|
67
66
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
68
67
|
validate: {
|
|
69
68
|
<T_1 extends boolean>(opts: {
|
|
@@ -60,10 +60,9 @@ export interface FormSlots {
|
|
|
60
60
|
}): any;
|
|
61
61
|
}
|
|
62
62
|
declare const __VLS_export: <S extends FormSchema, T extends boolean = true, N extends boolean = false>(__VLS_props: NonNullable<Awaited<typeof __VLS_setup>>["props"], __VLS_ctx?: __VLS_PrettifyLocal<Pick<NonNullable<Awaited<typeof __VLS_setup>>, "attrs" | "emit" | "slots">>, __VLS_expose?: NonNullable<Awaited<typeof __VLS_setup>>["expose"], __VLS_setup?: Promise<{
|
|
63
|
-
props: __VLS_PrettifyLocal<FormProps<S, T, N> & {
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
}> & import("vue").PublicProps;
|
|
63
|
+
props: __VLS_PrettifyLocal<FormProps<S, T, N> & __VLS_EmitsToProps<__VLS_NormalizeEmits<((evt: "error", event: FormErrorEvent) => void) & ((evt: "submit", event: FormSubmitEvent<FormData<S, T>>) => void)>>> & import("vue").PublicProps & (typeof globalThis extends {
|
|
64
|
+
__VLS_PROPS_FALLBACK: infer P;
|
|
65
|
+
} ? P : {});
|
|
67
66
|
expose: (exposed: import("vue").ShallowUnwrapRef<{
|
|
68
67
|
validate: {
|
|
69
68
|
<T_1 extends boolean>(opts: {
|
|
@@ -29,6 +29,11 @@ export interface FormFieldProps {
|
|
|
29
29
|
* @defaultValue `300`
|
|
30
30
|
*/
|
|
31
31
|
validateOnInputDelay?: number;
|
|
32
|
+
/**
|
|
33
|
+
* The orientation of the form field.
|
|
34
|
+
* @defaultValue 'vertical'
|
|
35
|
+
*/
|
|
36
|
+
orientation?: FormField['variants']['orientation'];
|
|
32
37
|
class?: any;
|
|
33
38
|
ui?: FormField['slots'];
|
|
34
39
|
}
|
|
@@ -15,12 +15,13 @@ const props = defineProps({
|
|
|
15
15
|
label: { type: String, required: false },
|
|
16
16
|
description: { type: String, required: false },
|
|
17
17
|
help: { type: String, required: false },
|
|
18
|
-
error: { type: [Boolean, String], required: false },
|
|
18
|
+
error: { type: [Boolean, String], required: false, default: void 0 },
|
|
19
19
|
hint: { type: String, required: false },
|
|
20
20
|
size: { type: null, required: false },
|
|
21
21
|
required: { type: Boolean, required: false },
|
|
22
22
|
eagerValidation: { type: Boolean, required: false },
|
|
23
23
|
validateOnInputDelay: { type: Number, required: false },
|
|
24
|
+
orientation: { type: null, required: false },
|
|
24
25
|
class: { type: null, required: false },
|
|
25
26
|
ui: { type: null, required: false }
|
|
26
27
|
});
|
|
@@ -28,7 +29,8 @@ const slots = defineSlots();
|
|
|
28
29
|
const appConfig = useAppConfig();
|
|
29
30
|
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.formField || {} })({
|
|
30
31
|
size: props.size,
|
|
31
|
-
required: props.required
|
|
32
|
+
required: props.required,
|
|
33
|
+
orientation: props.orientation
|
|
32
34
|
}));
|
|
33
35
|
const formErrors = inject(formErrorsInjectionKey, null);
|
|
34
36
|
const error = computed(() => props.error || formErrors?.value?.find((error2) => error2.name === props.name || props.errorPattern && error2.name?.match(props.errorPattern))?.message);
|
|
@@ -56,7 +58,7 @@ provide(formFieldInjectionKey, computed(() => ({
|
|
|
56
58
|
</script>
|
|
57
59
|
|
|
58
60
|
<template>
|
|
59
|
-
<Primitive :as="as" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
61
|
+
<Primitive :as="as" :data-orientation="orientation" data-slot="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
|
|
60
62
|
<div data-slot="wrapper" :class="ui.wrapper({ class: props.ui?.wrapper })">
|
|
61
63
|
<div v-if="label || !!slots.label" data-slot="labelWrapper" :class="ui.labelWrapper({ class: props.ui?.labelWrapper })">
|
|
62
64
|
<Label :for="id" data-slot="label" :class="ui.label({ class: props.ui?.label })">
|
|
@@ -80,8 +82,7 @@ provide(formFieldInjectionKey, computed(() => ({
|
|
|
80
82
|
|
|
81
83
|
<div :class="[(label || !!slots.label || description || !!slots.description) && ui.container({ class: props.ui?.container })]">
|
|
82
84
|
<slot :error="error" />
|
|
83
|
-
|
|
84
|
-
<div v-if="typeof error === 'string' && error || !!slots.error" :id="`${ariaId}-error`" data-slot="error" :class="ui.error({ class: props.ui?.error })">
|
|
85
|
+
<div v-if="props.error !== false && (typeof error === 'string' && error || !!slots.error)" :id="`${ariaId}-error`" data-slot="error" :class="ui.error({ class: props.ui?.error })">
|
|
85
86
|
<slot name="error" :error="error">
|
|
86
87
|
{{ error }}
|
|
87
88
|
</slot>
|