@nuxt/ui 4.0.0-alpha.1 → 4.0.0-alpha.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.nuxt/ui/content/content-navigation.ts +2 -1
- package/.nuxt/ui/marquee.ts +1 -1
- package/.nuxt/ui/progress.ts +3 -3
- package/.nuxt/ui/prose/code-tree.ts +1 -1
- package/.nuxt/ui/tree.ts +1 -1
- package/README.md +13 -1
- package/dist/module.d.mts +6 -6
- package/dist/module.json +2 -2
- package/dist/module.mjs +8 -6
- package/dist/runtime/components/Accordion.d.vue.ts +79 -0
- package/dist/runtime/components/Accordion.vue +3 -3
- package/dist/runtime/components/Accordion.vue.d.ts +2 -2
- package/dist/runtime/components/Alert.d.vue.ts +81 -0
- package/dist/runtime/components/App.d.vue.ts +25 -0
- package/dist/runtime/components/AuthForm.d.vue.ts +128 -0
- package/dist/runtime/components/AuthForm.vue.d.ts +39 -1
- package/dist/runtime/components/Avatar.d.vue.ts +41 -0
- package/dist/runtime/components/AvatarGroup.d.vue.ts +31 -0
- package/dist/runtime/components/Badge.d.vue.ts +43 -0
- package/dist/runtime/components/Banner.d.vue.ts +72 -0
- package/dist/runtime/components/Banner.vue +1 -1
- package/dist/runtime/components/BlogPost.d.vue.ts +60 -0
- package/dist/runtime/components/BlogPosts.d.vue.ts +31 -0
- package/dist/runtime/components/Breadcrumb.d.vue.ts +67 -0
- package/dist/runtime/components/Breadcrumb.vue +1 -1
- package/dist/runtime/components/Breadcrumb.vue.d.ts +2 -2
- package/dist/runtime/components/Button.d.vue.ts +44 -0
- package/dist/runtime/components/Calendar.d.vue.ts +112 -0
- package/dist/runtime/components/Card.d.vue.ts +29 -0
- package/dist/runtime/components/Carousel.d.vue.ts +127 -0
- package/dist/runtime/components/Carousel.vue.d.ts +10 -10
- package/dist/runtime/components/ChangelogVersion.d.vue.ts +59 -0
- package/dist/runtime/components/ChangelogVersions.d.vue.ts +78 -0
- package/dist/runtime/components/ChangelogVersions.vue +2 -2
- package/dist/runtime/components/ChatMessage.d.vue.ts +67 -0
- package/dist/runtime/components/ChatMessages.d.vue.ts +83 -0
- package/dist/runtime/components/ChatMessages.vue +2 -2
- package/dist/runtime/components/ChatPalette.d.vue.ts +24 -0
- package/dist/runtime/components/ChatPrompt.d.vue.ts +61 -0
- package/dist/runtime/components/ChatPrompt.vue +2 -2
- package/dist/runtime/components/ChatPromptSubmit.d.vue.ts +100 -0
- package/dist/runtime/components/Checkbox.d.vue.ts +74 -0
- package/dist/runtime/components/CheckboxGroup.d.vue.ts +89 -0
- package/dist/runtime/components/CheckboxGroup.vue +8 -8
- package/dist/runtime/components/CheckboxGroup.vue.d.ts +17 -13
- package/dist/runtime/components/Chip.d.vue.ts +57 -0
- package/dist/runtime/components/Collapsible.d.vue.ts +35 -0
- package/dist/runtime/components/ColorPicker.d.vue.ts +48 -0
- package/dist/runtime/components/CommandPalette.d.vue.ts +193 -0
- package/dist/runtime/components/CommandPalette.vue +5 -4
- package/dist/runtime/components/CommandPalette.vue.d.ts +2 -1
- package/dist/runtime/components/Container.d.vue.ts +18 -0
- package/dist/runtime/components/ContextMenu.d.vue.ts +110 -0
- package/dist/runtime/components/ContextMenu.vue +2 -2
- package/dist/runtime/components/ContextMenu.vue.d.ts +2 -2
- package/dist/runtime/components/ContextMenuContent.d.vue.ts +50 -0
- package/dist/runtime/components/ContextMenuContent.vue +2 -2
- package/dist/runtime/components/ContextMenuContent.vue.d.ts +2 -2
- package/dist/runtime/components/DashboardGroup.d.vue.ts +24 -0
- package/dist/runtime/components/DashboardNavbar.d.vue.ts +52 -0
- package/dist/runtime/components/DashboardPanel.d.vue.ts +30 -0
- package/dist/runtime/components/DashboardResizeHandle.d.vue.ts +18 -0
- package/dist/runtime/components/DashboardSearch.d.vue.ts +91 -0
- package/dist/runtime/components/DashboardSearch.vue +2 -2
- package/dist/runtime/components/DashboardSearchButton.d.vue.ts +59 -0
- package/dist/runtime/components/DashboardSearchButton.vue +2 -2
- package/dist/runtime/components/DashboardSidebar.d.vue.ts +75 -0
- package/dist/runtime/components/DashboardSidebarCollapse.d.vue.ts +19 -0
- package/dist/runtime/components/DashboardSidebarToggle.d.vue.ts +19 -0
- package/dist/runtime/components/DashboardToolbar.d.vue.ts +25 -0
- package/dist/runtime/components/Drawer.d.vue.ts +84 -0
- package/dist/runtime/components/DropdownMenu.d.vue.ts +120 -0
- package/dist/runtime/components/DropdownMenu.vue +2 -2
- package/dist/runtime/components/DropdownMenu.vue.d.ts +2 -2
- package/dist/runtime/components/DropdownMenuContent.d.vue.ts +56 -0
- package/dist/runtime/components/DropdownMenuContent.vue +2 -2
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +2 -2
- package/dist/runtime/components/Error.d.vue.ts +47 -0
- package/dist/runtime/components/FieldGroup.d.vue.ts +34 -0
- package/dist/runtime/components/FileUpload.d.vue.ts +166 -0
- package/dist/runtime/components/FileUpload.vue +1 -0
- package/dist/runtime/components/Footer.d.vue.ts +29 -0
- package/dist/runtime/components/FooterColumns.d.vue.ts +57 -0
- package/dist/runtime/components/Form.d.vue.ts +114 -0
- package/dist/runtime/components/Form.vue +111 -52
- package/dist/runtime/components/Form.vue.d.ts +54 -11
- package/dist/runtime/components/FormField.d.vue.ts +61 -0
- package/dist/runtime/components/Header.d.vue.ts +68 -0
- package/dist/runtime/components/Icon.d.vue.ts +8 -0
- package/dist/runtime/components/Input.d.vue.ts +74 -0
- package/dist/runtime/components/Input.vue.d.ts +4 -3
- package/dist/runtime/components/InputMenu.d.vue.ts +330 -0
- package/dist/runtime/components/InputMenu.vue +1 -1
- package/dist/runtime/components/InputMenu.vue.d.ts +4 -4
- package/dist/runtime/components/InputNumber.d.vue.ts +188 -0
- package/dist/runtime/components/InputNumber.vue +2 -2
- package/dist/runtime/components/InputNumber.vue.d.ts +0 -2
- package/dist/runtime/components/InputTags.d.vue.ts +186 -0
- package/dist/runtime/components/Kbd.d.vue.ts +38 -0
- package/dist/runtime/components/Link.d.vue.ts +91 -0
- package/dist/runtime/components/LinkBase.d.vue.ts +25 -0
- package/dist/runtime/components/Main.d.vue.ts +20 -0
- package/dist/runtime/components/Marquee.d.vue.ts +32 -0
- package/dist/runtime/components/Marquee.vue +1 -1
- package/dist/runtime/components/Modal.d.vue.ts +107 -0
- package/dist/runtime/components/NavigationMenu.d.vue.ts +171 -0
- package/dist/runtime/components/NavigationMenu.vue.d.ts +2 -2
- package/dist/runtime/components/OverlayProvider.d.vue.ts +2 -0
- package/dist/runtime/components/Page.d.vue.ts +25 -0
- package/dist/runtime/components/PageAnchors.d.vue.ts +47 -0
- package/dist/runtime/components/PageAside.d.vue.ts +27 -0
- package/dist/runtime/components/PageBody.d.vue.ts +18 -0
- package/dist/runtime/components/PageCTA.d.vue.ts +56 -0
- package/dist/runtime/components/PageCard.d.vue.ts +72 -0
- package/dist/runtime/components/PageColumns.d.vue.ts +18 -0
- package/dist/runtime/components/PageFeature.d.vue.ts +44 -0
- package/dist/runtime/components/PageGrid.d.vue.ts +18 -0
- package/dist/runtime/components/PageHeader.d.vue.ts +36 -0
- package/dist/runtime/components/PageHero.d.vue.ts +53 -0
- package/dist/runtime/components/PageLinks.d.vue.ts +49 -0
- package/dist/runtime/components/PageList.d.vue.ts +21 -0
- package/dist/runtime/components/PageLogos.d.vue.ts +33 -0
- package/dist/runtime/components/PageSection.d.vue.ts +68 -0
- package/dist/runtime/components/Pagination.d.vue.ts +118 -0
- package/dist/runtime/components/PinInput.d.vue.ts +60 -0
- package/dist/runtime/components/Popover.d.vue.ts +71 -0
- package/dist/runtime/components/PricingPlan.d.vue.ts +112 -0
- package/dist/runtime/components/PricingPlans.d.vue.ts +44 -0
- package/dist/runtime/components/PricingTable.d.vue.ts +105 -0
- package/dist/runtime/components/Progress.d.vue.ts +66 -0
- package/dist/runtime/components/Progress.vue +2 -3
- package/dist/runtime/components/RadioGroup.d.vue.ts +99 -0
- package/dist/runtime/components/RadioGroup.vue +13 -11
- package/dist/runtime/components/RadioGroup.vue.d.ts +17 -13
- package/dist/runtime/components/Select.d.vue.ts +254 -0
- package/dist/runtime/components/Select.vue +3 -3
- package/dist/runtime/components/Select.vue.d.ts +5 -5
- package/dist/runtime/components/SelectMenu.d.vue.ts +303 -0
- package/dist/runtime/components/SelectMenu.vue.d.ts +4 -4
- package/dist/runtime/components/Separator.d.vue.ts +54 -0
- package/dist/runtime/components/Skeleton.d.vue.ts +17 -0
- package/dist/runtime/components/Slideover.d.vue.ts +108 -0
- package/dist/runtime/components/Slider.d.vue.ts +57 -0
- package/dist/runtime/components/Stepper.d.vue.ts +87 -0
- package/dist/runtime/components/Switch.d.vue.ts +71 -0
- package/dist/runtime/components/Table.d.vue.ts +201 -0
- package/dist/runtime/components/Table.vue.d.ts +26 -26
- package/dist/runtime/components/Tabs.d.vue.ts +99 -0
- package/dist/runtime/components/Tabs.vue +10 -3
- package/dist/runtime/components/Tabs.vue.d.ts +2 -2
- package/dist/runtime/components/Textarea.d.vue.ts +74 -0
- package/dist/runtime/components/Timeline.d.vue.ts +71 -0
- package/dist/runtime/components/Toast.d.vue.ts +165 -0
- package/dist/runtime/components/Toaster.d.vue.ts +44 -0
- package/dist/runtime/components/Tooltip.d.vue.ts +57 -0
- package/dist/runtime/components/Tree.d.vue.ts +116 -0
- package/dist/runtime/components/Tree.vue +68 -40
- package/dist/runtime/components/Tree.vue.d.ts +1 -1
- package/dist/runtime/components/User.d.vue.ts +47 -0
- package/dist/runtime/components/color-mode/ColorModeAvatar.d.vue.ts +7 -0
- package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +23 -0
- package/dist/runtime/components/color-mode/ColorModeImage.d.vue.ts +6 -0
- package/dist/runtime/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
- package/dist/runtime/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
- package/dist/runtime/components/content/ContentNavigation.d.vue.ts +102 -0
- package/dist/runtime/components/content/ContentNavigation.vue +5 -4
- package/dist/runtime/components/content/ContentNavigation.vue.d.ts +2 -2
- package/dist/runtime/components/content/ContentSearch.d.vue.ts +114 -0
- package/dist/runtime/components/content/ContentSearch.vue +2 -2
- package/dist/runtime/components/content/ContentSearchButton.d.vue.ts +59 -0
- package/dist/runtime/components/content/ContentSearchButton.vue +2 -2
- package/dist/runtime/components/content/ContentSurround.d.vue.ts +59 -0
- package/dist/runtime/components/content/ContentToc.d.vue.ts +88 -0
- package/dist/runtime/components/locale/LocaleSelect.d.vue.ts +15 -0
- package/dist/runtime/components/prose/A.d.vue.ts +15 -0
- package/dist/runtime/components/prose/Accordion.d.vue.ts +16 -0
- package/dist/runtime/components/prose/AccordionItem.d.vue.ts +15 -0
- package/dist/runtime/components/prose/Badge.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Blockquote.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Callout.d.vue.ts +26 -0
- package/dist/runtime/components/prose/Card.d.vue.ts +29 -0
- package/dist/runtime/components/prose/CardGroup.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Code.d.vue.ts +22 -0
- package/dist/runtime/components/prose/CodeCollapse.d.vue.ts +47 -0
- package/dist/runtime/components/prose/CodeGroup.d.vue.ts +37 -0
- package/dist/runtime/components/prose/CodeIcon.d.vue.ts +7 -0
- package/dist/runtime/components/prose/CodePreview.d.vue.ts +19 -0
- package/dist/runtime/components/prose/CodeTree.d.vue.ts +28 -0
- package/dist/runtime/components/prose/CodeTree.vue +38 -31
- package/dist/runtime/components/prose/Collapsible.d.vue.ts +39 -0
- package/dist/runtime/components/prose/Em.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Field.d.vue.ts +39 -0
- package/dist/runtime/components/prose/FieldGroup.d.vue.ts +18 -0
- package/dist/runtime/components/prose/H1.d.vue.ts +19 -0
- package/dist/runtime/components/prose/H2.d.vue.ts +19 -0
- package/dist/runtime/components/prose/H3.d.vue.ts +19 -0
- package/dist/runtime/components/prose/H4.d.vue.ts +19 -0
- package/dist/runtime/components/prose/Hr.d.vue.ts +5 -0
- package/dist/runtime/components/prose/Icon.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Img.d.vue.ts +21 -0
- package/dist/runtime/components/prose/Kbd.d.vue.ts +6 -0
- package/dist/runtime/components/prose/Li.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Ol.d.vue.ts +13 -0
- package/dist/runtime/components/prose/P.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Pre.d.vue.ts +26 -0
- package/dist/runtime/components/prose/Script.d.vue.ts +5 -0
- package/dist/runtime/components/prose/Steps.d.vue.ts +22 -0
- package/dist/runtime/components/prose/Strong.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Table.d.vue.ts +18 -0
- package/dist/runtime/components/prose/Tabs.d.vue.ts +36 -0
- package/dist/runtime/components/prose/TabsItem.d.vue.ts +15 -0
- package/dist/runtime/components/prose/Tbody.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Td.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Th.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Thead.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Tr.d.vue.ts +13 -0
- package/dist/runtime/components/prose/Ul.d.vue.ts +13 -0
- package/dist/runtime/components/prose/callout/Caution.d.vue.ts +14 -0
- package/dist/runtime/components/prose/callout/Note.d.vue.ts +14 -0
- package/dist/runtime/components/prose/callout/Tip.d.vue.ts +14 -0
- package/dist/runtime/components/prose/callout/Warning.d.vue.ts +14 -0
- package/dist/runtime/composables/useFormField.d.ts +1 -0
- package/dist/runtime/composables/useFormField.js +1 -0
- package/dist/runtime/inertia/components/Link.d.vue.ts +63 -0
- package/dist/runtime/inertia/components/LinkBase.d.vue.ts +25 -0
- package/dist/runtime/locale/de_ch.d.ts +3 -0
- package/dist/runtime/locale/de_ch.js +129 -0
- package/dist/runtime/locale/id.js +1 -1
- package/dist/runtime/locale/index.d.ts +2 -0
- package/dist/runtime/locale/index.js +2 -0
- package/dist/runtime/locale/ka.d.ts +3 -0
- package/dist/runtime/locale/ka.js +132 -0
- package/dist/runtime/types/form.d.ts +9 -8
- package/dist/runtime/types/form.js +1 -3
- package/dist/runtime/types/index.d.ts +1 -0
- package/dist/runtime/types/index.js +1 -0
- package/dist/runtime/types/utils.d.ts +7 -3
- package/dist/runtime/utils/form.d.ts +2 -0
- package/dist/runtime/utils/form.js +28 -0
- package/dist/runtime/utils/fuse.d.ts +2 -1
- package/dist/runtime/utils/index.d.ts +3 -3
- package/dist/runtime/utils/index.js +6 -3
- package/dist/runtime/vue/components/Icon.d.vue.ts +6 -0
- package/dist/runtime/vue/components/Link.d.vue.ts +93 -0
- package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +16 -0
- package/dist/runtime/vue/components/color-mode/ColorModeSelect.d.vue.ts +5 -0
- package/dist/runtime/vue/components/color-mode/ColorModeSwitch.d.vue.ts +5 -0
- package/dist/shared/{ui.BEZXPd3d.mjs → ui.Bs5uUhtm.mjs} +17 -12
- package/dist/unplugin.mjs +1 -1
- package/dist/vite.mjs +1 -1
- package/package.json +21 -34
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
import type { ContextMenuRootProps, ContextMenuRootEmits, ContextMenuContentProps, ContextMenuContentEmits } from 'reka-ui';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/ui/context-menu';
|
|
4
|
+
import type { AvatarProps, IconProps, KbdProps, LinkProps } from '../types';
|
|
5
|
+
import type { ArrayOrNested, DynamicSlots, GetItemKeys, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
|
|
6
|
+
import type { ComponentConfig } from '../types/tv';
|
|
7
|
+
type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
|
|
8
|
+
export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'> {
|
|
9
|
+
label?: string;
|
|
10
|
+
/**
|
|
11
|
+
* @IconifyIcon
|
|
12
|
+
*/
|
|
13
|
+
icon?: IconProps['name'];
|
|
14
|
+
color?: ContextMenu['variants']['color'];
|
|
15
|
+
avatar?: AvatarProps;
|
|
16
|
+
content?: Omit<ContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<ContextMenuContentEmits>>;
|
|
17
|
+
kbds?: KbdProps['value'][] | KbdProps[];
|
|
18
|
+
/**
|
|
19
|
+
* The item type.
|
|
20
|
+
* @defaultValue 'link'
|
|
21
|
+
*/
|
|
22
|
+
type?: 'label' | 'separator' | 'link' | 'checkbox';
|
|
23
|
+
slot?: string;
|
|
24
|
+
loading?: boolean;
|
|
25
|
+
disabled?: boolean;
|
|
26
|
+
checked?: boolean;
|
|
27
|
+
open?: boolean;
|
|
28
|
+
defaultOpen?: boolean;
|
|
29
|
+
children?: ArrayOrNested<ContextMenuItem>;
|
|
30
|
+
onSelect?(e: Event): void;
|
|
31
|
+
onUpdateChecked?(checked: boolean): void;
|
|
32
|
+
class?: any;
|
|
33
|
+
ui?: Pick<ContextMenu['slots'], 'item' | 'label' | 'separator' | 'itemLeadingIcon' | 'itemLeadingAvatarSize' | 'itemLeadingAvatar' | 'itemLabel' | 'itemLabelExternalIcon' | 'itemTrailing' | 'itemTrailingIcon' | 'itemTrailingKbds' | 'itemTrailingKbdsSize'>;
|
|
34
|
+
[key: string]: any;
|
|
35
|
+
}
|
|
36
|
+
export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>> extends Omit<ContextMenuRootProps, 'dir'> {
|
|
37
|
+
/**
|
|
38
|
+
* @defaultValue 'md'
|
|
39
|
+
*/
|
|
40
|
+
size?: ContextMenu['variants']['size'];
|
|
41
|
+
items?: T;
|
|
42
|
+
/**
|
|
43
|
+
* The icon displayed when an item is checked.
|
|
44
|
+
* @defaultValue appConfig.ui.icons.check
|
|
45
|
+
* @IconifyIcon
|
|
46
|
+
*/
|
|
47
|
+
checkedIcon?: IconProps['name'];
|
|
48
|
+
/**
|
|
49
|
+
* The icon displayed when an item is loading.
|
|
50
|
+
* @defaultValue appConfig.ui.icons.loading
|
|
51
|
+
* @IconifyIcon
|
|
52
|
+
*/
|
|
53
|
+
loadingIcon?: IconProps['name'];
|
|
54
|
+
/**
|
|
55
|
+
* The icon displayed when the item is an external link.
|
|
56
|
+
* Set to `false` to hide the external icon.
|
|
57
|
+
* @defaultValue appConfig.ui.icons.external
|
|
58
|
+
* @IconifyIcon
|
|
59
|
+
*/
|
|
60
|
+
externalIcon?: boolean | IconProps['name'];
|
|
61
|
+
/** The content of the menu. */
|
|
62
|
+
content?: Omit<ContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<ContextMenuContentEmits>>;
|
|
63
|
+
/**
|
|
64
|
+
* Render the menu in a portal.
|
|
65
|
+
* @defaultValue true
|
|
66
|
+
*/
|
|
67
|
+
portal?: boolean | string | HTMLElement;
|
|
68
|
+
/**
|
|
69
|
+
* The key used to get the label from the item.
|
|
70
|
+
* @defaultValue 'label'
|
|
71
|
+
*/
|
|
72
|
+
labelKey?: GetItemKeys<T>;
|
|
73
|
+
disabled?: boolean;
|
|
74
|
+
class?: any;
|
|
75
|
+
ui?: ContextMenu['slots'];
|
|
76
|
+
}
|
|
77
|
+
export interface ContextMenuEmits extends ContextMenuRootEmits {
|
|
78
|
+
}
|
|
79
|
+
type SlotProps<T extends ContextMenuItem> = (props: {
|
|
80
|
+
item: T;
|
|
81
|
+
active?: boolean;
|
|
82
|
+
index: number;
|
|
83
|
+
}) => any;
|
|
84
|
+
export type ContextMenuSlots<A extends ArrayOrNested<ContextMenuItem> = ArrayOrNested<ContextMenuItem>, T extends NestedItem<A> = NestedItem<A>> = {
|
|
85
|
+
'default'(props?: {}): any;
|
|
86
|
+
'item': SlotProps<T>;
|
|
87
|
+
'item-leading': SlotProps<T>;
|
|
88
|
+
'item-label': SlotProps<T>;
|
|
89
|
+
'item-trailing': SlotProps<T>;
|
|
90
|
+
'content-top': (props?: {}) => any;
|
|
91
|
+
'content-bottom': (props?: {}) => any;
|
|
92
|
+
} & DynamicSlots<MergeTypes<T>, 'leading' | 'label' | 'trailing', {
|
|
93
|
+
active?: boolean;
|
|
94
|
+
index: number;
|
|
95
|
+
}>;
|
|
96
|
+
declare const _default: <T extends ArrayOrNested<ContextMenuItem>>(__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<{
|
|
97
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
98
|
+
readonly "onUpdate:open"?: ((payload: boolean) => any) | undefined;
|
|
99
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:open"> & ContextMenuProps<T> & {}> & import("vue").PublicProps;
|
|
100
|
+
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
101
|
+
attrs: any;
|
|
102
|
+
slots: ContextMenuSlots<T, NestedItem<T>>;
|
|
103
|
+
emit: (evt: "update:open", payload: boolean) => void;
|
|
104
|
+
}>) => import("vue").VNode & {
|
|
105
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
106
|
+
};
|
|
107
|
+
export default _default;
|
|
108
|
+
type __VLS_PrettifyLocal<T> = {
|
|
109
|
+
[K in keyof T as K]: T[K];
|
|
110
|
+
} & {};
|
|
@@ -30,7 +30,7 @@ const slots = defineSlots();
|
|
|
30
30
|
const appConfig = useAppConfig();
|
|
31
31
|
const rootProps = useForwardPropsEmits(reactivePick(props, "modal"), emits);
|
|
32
32
|
const contentProps = toRef(() => props.content);
|
|
33
|
-
const
|
|
33
|
+
const getProxySlots = () => omit(slots, ["default"]);
|
|
34
34
|
const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contextMenu || {} })({
|
|
35
35
|
size: props.size
|
|
36
36
|
}));
|
|
@@ -54,7 +54,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.contextMenu |
|
|
|
54
54
|
:loading-icon="loadingIcon"
|
|
55
55
|
:external-icon="externalIcon"
|
|
56
56
|
>
|
|
57
|
-
<template v-for="(_, name) in
|
|
57
|
+
<template v-for="(_, name) in getProxySlots()" #[name]="slotData">
|
|
58
58
|
<slot :name="name" v-bind="slotData" />
|
|
59
59
|
</template>
|
|
60
60
|
</UContextMenuContent>
|
|
@@ -2,7 +2,7 @@ import type { ContextMenuRootProps, ContextMenuRootEmits, ContextMenuContentProp
|
|
|
2
2
|
import type { AppConfig } from '@nuxt/schema';
|
|
3
3
|
import theme from '#build/ui/context-menu';
|
|
4
4
|
import type { AvatarProps, IconProps, KbdProps, LinkProps } from '../types';
|
|
5
|
-
import type { ArrayOrNested, DynamicSlots, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
|
|
5
|
+
import type { ArrayOrNested, DynamicSlots, GetItemKeys, MergeTypes, NestedItem, EmitsToProps } from '../types/utils';
|
|
6
6
|
import type { ComponentConfig } from '../types/tv';
|
|
7
7
|
type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
|
|
8
8
|
export interface ContextMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'> {
|
|
@@ -69,7 +69,7 @@ export interface ContextMenuProps<T extends ArrayOrNested<ContextMenuItem> = Arr
|
|
|
69
69
|
* The key used to get the label from the item.
|
|
70
70
|
* @defaultValue 'label'
|
|
71
71
|
*/
|
|
72
|
-
labelKey?:
|
|
72
|
+
labelKey?: GetItemKeys<T>;
|
|
73
73
|
disabled?: boolean;
|
|
74
74
|
class?: any;
|
|
75
75
|
ui?: ContextMenu['slots'];
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { ContextMenu } from 'reka-ui/namespaced';
|
|
2
|
+
import type { ContextMenuContentProps as RekaContextMenuContentProps } from 'reka-ui';
|
|
3
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
4
|
+
import type theme from '#build/ui/context-menu';
|
|
5
|
+
import type { ContextMenuItem, ContextMenuSlots, IconProps } from '../types';
|
|
6
|
+
import type { ArrayOrNested, GetItemKeys } from '../types/utils';
|
|
7
|
+
import type { ComponentConfig } from '../types/tv';
|
|
8
|
+
type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
|
|
9
|
+
interface ContextMenuContentProps<T extends ArrayOrNested<ContextMenuItem>> extends Omit<RekaContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> {
|
|
10
|
+
items?: T;
|
|
11
|
+
portal?: boolean | string | HTMLElement;
|
|
12
|
+
sub?: boolean;
|
|
13
|
+
labelKey: GetItemKeys<T>;
|
|
14
|
+
/**
|
|
15
|
+
* @IconifyIcon
|
|
16
|
+
*/
|
|
17
|
+
checkedIcon?: IconProps['name'];
|
|
18
|
+
/**
|
|
19
|
+
* @IconifyIcon
|
|
20
|
+
*/
|
|
21
|
+
loadingIcon?: IconProps['name'];
|
|
22
|
+
/**
|
|
23
|
+
* @IconifyIcon
|
|
24
|
+
*/
|
|
25
|
+
externalIcon?: boolean | IconProps['name'];
|
|
26
|
+
class?: any;
|
|
27
|
+
ui: {
|
|
28
|
+
[K in keyof Required<ContextMenu['slots']>]: (props?: Record<string, any>) => string;
|
|
29
|
+
};
|
|
30
|
+
uiOverride?: ContextMenu['slots'];
|
|
31
|
+
}
|
|
32
|
+
declare const _default: <T extends ArrayOrNested<ContextMenuItem>>(__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<{
|
|
33
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
34
|
+
readonly onEscapeKeyDown?: ((event: KeyboardEvent) => any) | undefined;
|
|
35
|
+
readonly onPointerDownOutside?: ((event: import("reka-ui").PointerDownOutsideEvent) => any) | undefined;
|
|
36
|
+
readonly onFocusOutside?: ((event: import("reka-ui").FocusOutsideEvent) => any) | undefined;
|
|
37
|
+
readonly onInteractOutside?: ((event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => any) | undefined;
|
|
38
|
+
readonly onCloseAutoFocus?: ((event: Event) => any) | undefined;
|
|
39
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onEscapeKeyDown" | "onPointerDownOutside" | "onFocusOutside" | "onInteractOutside" | "onCloseAutoFocus"> & ContextMenuContentProps<T> & {}> & import("vue").PublicProps;
|
|
40
|
+
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
41
|
+
attrs: any;
|
|
42
|
+
slots: ContextMenuSlots<T>;
|
|
43
|
+
emit: ((evt: "escapeKeyDown", event: KeyboardEvent) => void) & ((evt: "pointerDownOutside", event: import("reka-ui").PointerDownOutsideEvent) => void) & ((evt: "focusOutside", event: import("reka-ui").FocusOutsideEvent) => void) & ((evt: "interactOutside", event: import("reka-ui").PointerDownOutsideEvent | import("reka-ui").FocusOutsideEvent) => void) & ((evt: "closeAutoFocus", event: Event) => void);
|
|
44
|
+
}>) => import("vue").VNode & {
|
|
45
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
46
|
+
};
|
|
47
|
+
export default _default;
|
|
48
|
+
type __VLS_PrettifyLocal<T> = {
|
|
49
|
+
[K in keyof T as K]: T[K];
|
|
50
|
+
} & {};
|
|
@@ -49,7 +49,7 @@ const { dir } = useLocale();
|
|
|
49
49
|
const appConfig = useAppConfig();
|
|
50
50
|
const portalProps = usePortal(toRef(() => props.portal));
|
|
51
51
|
const contentProps = useForwardPropsEmits(reactiveOmit(props, "sub", "items", "portal", "labelKey", "checkedIcon", "loadingIcon", "externalIcon", "class", "ui", "uiOverride"), emits);
|
|
52
|
-
const
|
|
52
|
+
const getProxySlots = () => omit(slots, ["default"]);
|
|
53
53
|
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate();
|
|
54
54
|
const childrenIcon = computed(() => dir.value === "rtl" ? appConfig.ui.icons.chevronLeft : appConfig.ui.icons.chevronRight);
|
|
55
55
|
const groups = computed(
|
|
@@ -125,7 +125,7 @@ const groups = computed(
|
|
|
125
125
|
:external-icon="externalIcon"
|
|
126
126
|
v-bind="item.content"
|
|
127
127
|
>
|
|
128
|
-
<template v-for="(_, name) in
|
|
128
|
+
<template v-for="(_, name) in getProxySlots()" #[name]="slotData">
|
|
129
129
|
<slot :name="name" v-bind="slotData" />
|
|
130
130
|
</template>
|
|
131
131
|
</UContextMenuContent>
|
|
@@ -3,14 +3,14 @@ import type { ContextMenuContentProps as RekaContextMenuContentProps } from 'rek
|
|
|
3
3
|
import type { AppConfig } from '@nuxt/schema';
|
|
4
4
|
import type theme from '#build/ui/context-menu';
|
|
5
5
|
import type { ContextMenuItem, ContextMenuSlots, IconProps } from '../types';
|
|
6
|
-
import type { ArrayOrNested,
|
|
6
|
+
import type { ArrayOrNested, GetItemKeys } from '../types/utils';
|
|
7
7
|
import type { ComponentConfig } from '../types/tv';
|
|
8
8
|
type ContextMenu = ComponentConfig<typeof theme, AppConfig, 'contextMenu'>;
|
|
9
9
|
interface ContextMenuContentProps<T extends ArrayOrNested<ContextMenuItem>> extends Omit<RekaContextMenuContentProps, 'as' | 'asChild' | 'forceMount'> {
|
|
10
10
|
items?: T;
|
|
11
11
|
portal?: boolean | string | HTMLElement;
|
|
12
12
|
sub?: boolean;
|
|
13
|
-
labelKey:
|
|
13
|
+
labelKey: GetItemKeys<T>;
|
|
14
14
|
/**
|
|
15
15
|
* @IconifyIcon
|
|
16
16
|
*/
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import type { UseResizableProps } from '../composables/useResizable';
|
|
2
|
+
export interface DashboardGroupProps extends Pick<UseResizableProps, 'storage' | 'storageKey' | 'persistent' | 'unit'> {
|
|
3
|
+
/**
|
|
4
|
+
* The element or component this component should render as.
|
|
5
|
+
* @defaultValue 'div'
|
|
6
|
+
*/
|
|
7
|
+
as?: any;
|
|
8
|
+
class?: any;
|
|
9
|
+
}
|
|
10
|
+
export interface DashboardGroupSlots {
|
|
11
|
+
default(props?: {}): any;
|
|
12
|
+
}
|
|
13
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardGroupProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardGroupProps> & Readonly<{}>, {
|
|
14
|
+
storage: "cookie" | "local";
|
|
15
|
+
unit: "%" | "rem" | "px";
|
|
16
|
+
storageKey: string;
|
|
17
|
+
persistent: boolean;
|
|
18
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardGroupSlots>;
|
|
19
|
+
export default _default;
|
|
20
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
21
|
+
new (): {
|
|
22
|
+
$slots: S;
|
|
23
|
+
};
|
|
24
|
+
};
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/ui/dashboard-navbar';
|
|
3
|
+
import type { DashboardContext } from '../utils/dashboard';
|
|
4
|
+
import type { ButtonProps, IconProps } from '../types';
|
|
5
|
+
import type { ComponentConfig } from '../types/tv';
|
|
6
|
+
type DashboardNavbar = ComponentConfig<typeof theme, AppConfig, 'dashboardNavbar'>;
|
|
7
|
+
export interface DashboardNavbarProps {
|
|
8
|
+
/**
|
|
9
|
+
* The element or component this component should render as.
|
|
10
|
+
* @defaultValue 'div'
|
|
11
|
+
*/
|
|
12
|
+
as?: any;
|
|
13
|
+
/**
|
|
14
|
+
* The icon displayed next to the title.
|
|
15
|
+
* @IconifyIcon
|
|
16
|
+
*/
|
|
17
|
+
icon?: IconProps['name'];
|
|
18
|
+
title?: string;
|
|
19
|
+
/**
|
|
20
|
+
* Customize the toggle button to open the sidebar.
|
|
21
|
+
* `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
|
|
22
|
+
* @defaultValue true
|
|
23
|
+
*/
|
|
24
|
+
toggle?: boolean | Partial<ButtonProps>;
|
|
25
|
+
/**
|
|
26
|
+
* The side to render the toggle button on.
|
|
27
|
+
* @defaultValue 'left'
|
|
28
|
+
*/
|
|
29
|
+
toggleSide?: 'left' | 'right';
|
|
30
|
+
class?: any;
|
|
31
|
+
ui?: DashboardNavbar['slots'];
|
|
32
|
+
}
|
|
33
|
+
type DashboardNavbarSlotsProps = Omit<DashboardContext, 'storage' | 'storageKey' | 'persistent' | 'unit'>;
|
|
34
|
+
export interface DashboardNavbarSlots {
|
|
35
|
+
title(props?: {}): any;
|
|
36
|
+
leading(props: DashboardNavbarSlotsProps): any;
|
|
37
|
+
trailing(props: DashboardNavbarSlotsProps): any;
|
|
38
|
+
left(props: DashboardNavbarSlotsProps): any;
|
|
39
|
+
default(props: DashboardNavbarSlotsProps): any;
|
|
40
|
+
right(props: DashboardNavbarSlotsProps): any;
|
|
41
|
+
toggle(props: DashboardNavbarSlotsProps): any;
|
|
42
|
+
}
|
|
43
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardNavbarProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardNavbarProps> & Readonly<{}>, {
|
|
44
|
+
toggle: boolean | Partial<ButtonProps>;
|
|
45
|
+
toggleSide: "left" | "right";
|
|
46
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardNavbarSlots>;
|
|
47
|
+
export default _default;
|
|
48
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
49
|
+
new (): {
|
|
50
|
+
$slots: S;
|
|
51
|
+
};
|
|
52
|
+
};
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/ui/dashboard-panel';
|
|
3
|
+
import type { UseResizableProps } from '../composables/useResizable';
|
|
4
|
+
import type { ComponentConfig } from '../types/tv';
|
|
5
|
+
type DashboardPanel = ComponentConfig<typeof theme, AppConfig, 'dashboardPanel'>;
|
|
6
|
+
export interface DashboardPanelProps extends Pick<UseResizableProps, 'id' | 'minSize' | 'maxSize' | 'defaultSize' | 'resizable'> {
|
|
7
|
+
class?: any;
|
|
8
|
+
ui?: DashboardPanel['slots'];
|
|
9
|
+
}
|
|
10
|
+
export interface DashboardPanelSlots {
|
|
11
|
+
'default'(props?: {}): any;
|
|
12
|
+
'header'(props?: {}): any;
|
|
13
|
+
'body'(props?: {}): any;
|
|
14
|
+
'footer'(props?: {}): any;
|
|
15
|
+
'resize-handle'(props: {
|
|
16
|
+
onMouseDown: (e: MouseEvent) => void;
|
|
17
|
+
onTouchStart: (e: TouchEvent) => void;
|
|
18
|
+
onDoubleClick: (e: MouseEvent) => void;
|
|
19
|
+
}): any;
|
|
20
|
+
}
|
|
21
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardPanelProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardPanelProps> & Readonly<{}>, {
|
|
22
|
+
minSize: number;
|
|
23
|
+
resizable: boolean;
|
|
24
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardPanelSlots>;
|
|
25
|
+
export default _default;
|
|
26
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
27
|
+
new (): {
|
|
28
|
+
$slots: S;
|
|
29
|
+
};
|
|
30
|
+
};
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface DashboardResizeHandleProps {
|
|
2
|
+
/**
|
|
3
|
+
* The element or component this component should render as.
|
|
4
|
+
* @defaultValue 'div'
|
|
5
|
+
*/
|
|
6
|
+
as?: any;
|
|
7
|
+
class?: any;
|
|
8
|
+
}
|
|
9
|
+
export interface DashboardResizeHandleSlots {
|
|
10
|
+
default(props?: {}): any;
|
|
11
|
+
}
|
|
12
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardResizeHandleProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardResizeHandleProps> & Readonly<{}>, {}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardResizeHandleSlots>;
|
|
13
|
+
export default _default;
|
|
14
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
15
|
+
new (): {
|
|
16
|
+
$slots: S;
|
|
17
|
+
};
|
|
18
|
+
};
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import type { UseFuseOptions } from '@vueuse/integrations/useFuse';
|
|
3
|
+
import theme from '#build/ui/dashboard-search';
|
|
4
|
+
import type { ButtonProps, InputProps, ModalProps, CommandPaletteProps, CommandPaletteSlots, CommandPaletteGroup, CommandPaletteItem, IconProps } from '../types';
|
|
5
|
+
import type { ComponentConfig } from '../types/tv';
|
|
6
|
+
type DashboardSearch = ComponentConfig<typeof theme, AppConfig, 'dashboardSearch'>;
|
|
7
|
+
export interface DashboardSearchProps<T extends CommandPaletteItem = CommandPaletteItem> extends /* @vue-ignore */ Pick<ModalProps, 'title' | 'description' | 'overlay' | 'transition' | 'content' | 'dismissible' | 'fullscreen' | 'modal' | 'portal'> {
|
|
8
|
+
/**
|
|
9
|
+
* The icon displayed in the input.
|
|
10
|
+
* @defaultValue appConfig.ui.icons.search
|
|
11
|
+
* @IconifyIcon
|
|
12
|
+
*/
|
|
13
|
+
icon?: IconProps['name'];
|
|
14
|
+
/**
|
|
15
|
+
* The placeholder text for the input.
|
|
16
|
+
* @defaultValue t('commandPalette.placeholder')
|
|
17
|
+
*/
|
|
18
|
+
placeholder?: InputProps['placeholder'];
|
|
19
|
+
/**
|
|
20
|
+
* Automatically focus the input when component is mounted.
|
|
21
|
+
* @defaultValue true
|
|
22
|
+
*/
|
|
23
|
+
autofocus?: boolean;
|
|
24
|
+
/** When `true`, the loading icon will be displayed. */
|
|
25
|
+
loading?: boolean;
|
|
26
|
+
/**
|
|
27
|
+
* The icon when the `loading` prop is `true`.
|
|
28
|
+
* @defaultValue appConfig.ui.icons.loading
|
|
29
|
+
* @IconifyIcon
|
|
30
|
+
*/
|
|
31
|
+
loadingIcon?: IconProps['name'];
|
|
32
|
+
/**
|
|
33
|
+
* Display a close button in the input (useful when inside a Modal for example).
|
|
34
|
+
* `{ size: 'md', color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
|
|
35
|
+
* @emits 'update:open'
|
|
36
|
+
* @defaultValue true
|
|
37
|
+
*/
|
|
38
|
+
close?: boolean | Partial<ButtonProps>;
|
|
39
|
+
/**
|
|
40
|
+
* The icon displayed in the close button.
|
|
41
|
+
* @defaultValue appConfig.ui.icons.close
|
|
42
|
+
* @IconifyIcon
|
|
43
|
+
*/
|
|
44
|
+
closeIcon?: IconProps['name'];
|
|
45
|
+
/**
|
|
46
|
+
* Keyboard shortcut to open the search (used by [`defineShortcuts`](https://ui.nuxt.com/docs/composables/define-shortcuts))
|
|
47
|
+
* @defaultValue 'meta_k'
|
|
48
|
+
*/
|
|
49
|
+
shortcut?: string;
|
|
50
|
+
groups?: CommandPaletteGroup<T>[];
|
|
51
|
+
/**
|
|
52
|
+
* Options for [useFuse](https://vueuse.org/integrations/useFuse) passed to the [CommandPalette](https://ui.nuxt.com/docs/components/command-palette).
|
|
53
|
+
* @defaultValue {}
|
|
54
|
+
*/
|
|
55
|
+
fuse?: UseFuseOptions<T>;
|
|
56
|
+
/**
|
|
57
|
+
* When `true`, the theme command will be added to the groups.
|
|
58
|
+
* @defaultValue true
|
|
59
|
+
*/
|
|
60
|
+
colorMode?: boolean;
|
|
61
|
+
class?: any;
|
|
62
|
+
ui?: DashboardSearch['slots'] & CommandPaletteProps<CommandPaletteGroup<CommandPaletteItem>, CommandPaletteItem>['ui'];
|
|
63
|
+
}
|
|
64
|
+
export type DashboardSearchSlots = CommandPaletteSlots<CommandPaletteGroup<CommandPaletteItem>, CommandPaletteItem> & {
|
|
65
|
+
content(props?: {}): any;
|
|
66
|
+
};
|
|
67
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardSearchProps<CommandPaletteItem> & {
|
|
68
|
+
open?: boolean;
|
|
69
|
+
searchTerm?: string;
|
|
70
|
+
}, {
|
|
71
|
+
commandPaletteRef: Readonly<import("vue").ShallowRef<import("vue").ShallowUnwrapRef<{}> | null>>;
|
|
72
|
+
}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {
|
|
73
|
+
"update:open": (value: boolean) => any;
|
|
74
|
+
"update:searchTerm": (value: string) => any;
|
|
75
|
+
}, string, import("vue").PublicProps, Readonly<DashboardSearchProps<CommandPaletteItem> & {
|
|
76
|
+
open?: boolean;
|
|
77
|
+
searchTerm?: string;
|
|
78
|
+
}> & Readonly<{
|
|
79
|
+
"onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
80
|
+
"onUpdate:searchTerm"?: ((value: string) => any) | undefined;
|
|
81
|
+
}>, {
|
|
82
|
+
close: boolean | Partial<ButtonProps>;
|
|
83
|
+
colorMode: boolean;
|
|
84
|
+
shortcut: string;
|
|
85
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, DashboardSearchSlots>;
|
|
86
|
+
export default _default;
|
|
87
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
88
|
+
new (): {
|
|
89
|
+
$slots: S;
|
|
90
|
+
};
|
|
91
|
+
};
|
|
@@ -38,7 +38,7 @@ const { t } = useLocale();
|
|
|
38
38
|
const colorMode = useColorMode();
|
|
39
39
|
const appConfig = useAppConfig();
|
|
40
40
|
const commandPaletteProps = useForwardProps(reactivePick(props, "icon", "placeholder", "autofocus", "loading", "loadingIcon", "close", "closeIcon"));
|
|
41
|
-
const
|
|
41
|
+
const getProxySlots = () => omit(slots, ["content"]);
|
|
42
42
|
const fuse = computed(() => defu({}, props.fuse, {
|
|
43
43
|
fuseOptions: {}
|
|
44
44
|
}));
|
|
@@ -114,7 +114,7 @@ defineExpose({
|
|
|
114
114
|
@update:model-value="onSelect"
|
|
115
115
|
@update:open="open = $event"
|
|
116
116
|
>
|
|
117
|
-
<template v-for="(_, name) in
|
|
117
|
+
<template v-for="(_, name) in getProxySlots()" #[name]="slotData">
|
|
118
118
|
<slot :name="name" v-bind="slotData" />
|
|
119
119
|
</template>
|
|
120
120
|
</UCommandPalette>
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/ui/dashboard-search-button';
|
|
3
|
+
import type { ButtonProps, ButtonSlots, IconProps, KbdProps, TooltipProps } from '../types';
|
|
4
|
+
import type { ComponentConfig } from '../types/tv';
|
|
5
|
+
type DashboardSearchButton = ComponentConfig<typeof theme, AppConfig, 'dashboardSearchButton'>;
|
|
6
|
+
export interface DashboardSearchButtonProps {
|
|
7
|
+
/**
|
|
8
|
+
* The icon displayed in the button.
|
|
9
|
+
* @defaultValue appConfig.ui.icons.search
|
|
10
|
+
* @IconifyIcon
|
|
11
|
+
*/
|
|
12
|
+
icon?: IconProps['name'];
|
|
13
|
+
/**
|
|
14
|
+
* The label displayed in the button.
|
|
15
|
+
* @defaultValue t('dashboardSearchButton.label')
|
|
16
|
+
*/
|
|
17
|
+
label?: string;
|
|
18
|
+
/**
|
|
19
|
+
* The color of the button.
|
|
20
|
+
* @defaultValue 'neutral'
|
|
21
|
+
*/
|
|
22
|
+
color?: ButtonProps['color'];
|
|
23
|
+
/**
|
|
24
|
+
* The variant of the button.
|
|
25
|
+
* Defaults to 'outline' when not collapsed, 'ghost' when collapsed.
|
|
26
|
+
*/
|
|
27
|
+
variant?: ButtonProps['variant'];
|
|
28
|
+
size?: ButtonProps['size'];
|
|
29
|
+
/**
|
|
30
|
+
* Whether the button is collapsed.
|
|
31
|
+
* @defaultValue false
|
|
32
|
+
*/
|
|
33
|
+
collapsed?: boolean;
|
|
34
|
+
/**
|
|
35
|
+
* Display a tooltip on the button when is collapsed with the button label.
|
|
36
|
+
* This has priority over the global `tooltip` prop.
|
|
37
|
+
*/
|
|
38
|
+
tooltip?: boolean | TooltipProps;
|
|
39
|
+
/**
|
|
40
|
+
* The keyboard keys to display in the button.
|
|
41
|
+
* `{ variant: 'subtle' }`{lang="ts-type"}
|
|
42
|
+
* @defaultValue ['meta', 'k']
|
|
43
|
+
*/
|
|
44
|
+
kbds?: KbdProps['value'][] | KbdProps[];
|
|
45
|
+
ui?: DashboardSearchButton['slots'] & ButtonProps['ui'];
|
|
46
|
+
class?: any;
|
|
47
|
+
}
|
|
48
|
+
declare const _default: __VLS_WithSlots<import("vue").DefineComponent<DashboardSearchButtonProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardSearchButtonProps> & Readonly<{}>, {
|
|
49
|
+
color: "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral";
|
|
50
|
+
tooltip: boolean | TooltipProps;
|
|
51
|
+
kbds: KbdProps["value"][] | KbdProps[];
|
|
52
|
+
collapsed: boolean;
|
|
53
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>, ButtonSlots>;
|
|
54
|
+
export default _default;
|
|
55
|
+
type __VLS_WithSlots<T, S> = T & {
|
|
56
|
+
new (): {
|
|
57
|
+
$slots: S;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
@@ -30,7 +30,7 @@ const props = defineProps({
|
|
|
30
30
|
});
|
|
31
31
|
const slots = defineSlots();
|
|
32
32
|
const [DefineButtonTemplate, ReuseButtonTemplate] = createReusableTemplate();
|
|
33
|
-
const
|
|
33
|
+
const getProxySlots = () => omit(slots, ["trailing"]);
|
|
34
34
|
const rootProps = useForwardProps(reactivePick(props, "color", "size"));
|
|
35
35
|
const tooltipProps = toRef(() => defu(typeof props.tooltip === "boolean" ? {} : props.tooltip, { delayDuration: 0, content: { side: "right" } }));
|
|
36
36
|
const { t } = useLocale();
|
|
@@ -59,7 +59,7 @@ const ui = computed(() => tv({ extend: tv(theme), ...appConfig.ui?.dashboardSear
|
|
|
59
59
|
:ui="transformUI(ui, props.ui)"
|
|
60
60
|
@click="toggleSearch"
|
|
61
61
|
>
|
|
62
|
-
<template v-for="(_, name) in
|
|
62
|
+
<template v-for="(_, name) in getProxySlots()" #[name]="slotData">
|
|
63
63
|
<slot :name="name" v-bind="slotData" />
|
|
64
64
|
</template>
|
|
65
65
|
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/ui/dashboard-sidebar';
|
|
3
|
+
import type { UseResizableProps } from '../composables/useResizable';
|
|
4
|
+
import type { ButtonProps, DrawerProps, ModalProps, SlideoverProps } from '../types';
|
|
5
|
+
import type { ComponentConfig } from '../types/tv';
|
|
6
|
+
type DashboardSidebar = ComponentConfig<typeof theme, AppConfig, 'dashboardSidebar'>;
|
|
7
|
+
type DashboardSidebarMode = 'modal' | 'slideover' | 'drawer';
|
|
8
|
+
type DashboardSidebarMenu<T> = T extends 'modal' ? ModalProps : T extends 'slideover' ? SlideoverProps : T extends 'drawer' ? DrawerProps : never;
|
|
9
|
+
export interface DashboardSidebarProps<T extends DashboardSidebarMode = DashboardSidebarMode> extends Pick<UseResizableProps, 'id' | 'side' | 'minSize' | 'maxSize' | 'defaultSize' | 'resizable' | 'collapsible' | 'collapsedSize'> {
|
|
10
|
+
/**
|
|
11
|
+
* The mode of the sidebar menu.
|
|
12
|
+
* @defaultValue 'modal'
|
|
13
|
+
*/
|
|
14
|
+
mode?: T;
|
|
15
|
+
/**
|
|
16
|
+
* The props for the sidebar menu component.
|
|
17
|
+
*/
|
|
18
|
+
menu?: DashboardSidebarMenu<T>;
|
|
19
|
+
/**
|
|
20
|
+
* Customize the toggle button to open the sidebar.
|
|
21
|
+
* `{ color: 'neutral', variant: 'ghost' }`{lang="ts-type"}
|
|
22
|
+
* @defaultValue true
|
|
23
|
+
*/
|
|
24
|
+
toggle?: boolean | Partial<ButtonProps>;
|
|
25
|
+
/**
|
|
26
|
+
* The side to render the toggle button on.
|
|
27
|
+
* @defaultValue 'left'
|
|
28
|
+
*/
|
|
29
|
+
toggleSide?: 'left' | 'right';
|
|
30
|
+
class?: any;
|
|
31
|
+
ui?: DashboardSidebar['slots'];
|
|
32
|
+
}
|
|
33
|
+
export interface DashboardSidebarSlots {
|
|
34
|
+
'header'(props: {
|
|
35
|
+
collapsed?: boolean;
|
|
36
|
+
collapse?: (value: boolean) => void;
|
|
37
|
+
}): any;
|
|
38
|
+
'default'(props: {
|
|
39
|
+
collapsed?: boolean;
|
|
40
|
+
collapse?: (value: boolean) => void;
|
|
41
|
+
}): any;
|
|
42
|
+
'footer'(props: {
|
|
43
|
+
collapsed?: boolean;
|
|
44
|
+
collapse?: (value: boolean) => void;
|
|
45
|
+
}): any;
|
|
46
|
+
'toggle'(props: {
|
|
47
|
+
open: boolean;
|
|
48
|
+
toggle: () => void;
|
|
49
|
+
}): any;
|
|
50
|
+
'content'(props?: {}): any;
|
|
51
|
+
'resize-handle'(props: {
|
|
52
|
+
onMouseDown: (e: MouseEvent) => void;
|
|
53
|
+
onTouchStart: (e: TouchEvent) => void;
|
|
54
|
+
onDoubleClick: (e: MouseEvent) => void;
|
|
55
|
+
}): any;
|
|
56
|
+
}
|
|
57
|
+
declare const _default: <T extends DashboardSidebarMode>(__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<{
|
|
58
|
+
props: __VLS_PrettifyLocal<Pick<Partial<{}> & Omit<{
|
|
59
|
+
readonly "onUpdate:open"?: ((value: boolean) => any) | undefined;
|
|
60
|
+
readonly "onUpdate:collapsed"?: ((value: boolean) => any) | undefined;
|
|
61
|
+
} & import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps, never>, "onUpdate:open" | "onUpdate:collapsed"> & (DashboardSidebarProps<T> & {
|
|
62
|
+
open?: boolean;
|
|
63
|
+
collapsed?: boolean;
|
|
64
|
+
}) & {}> & import("vue").PublicProps;
|
|
65
|
+
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
66
|
+
attrs: any;
|
|
67
|
+
slots: DashboardSidebarSlots;
|
|
68
|
+
emit: ((evt: "update:open", value: boolean) => void) & ((evt: "update:collapsed", value: boolean) => void);
|
|
69
|
+
}>) => import("vue").VNode & {
|
|
70
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
71
|
+
};
|
|
72
|
+
export default _default;
|
|
73
|
+
type __VLS_PrettifyLocal<T> = {
|
|
74
|
+
[K in keyof T as K]: T[K];
|
|
75
|
+
} & {};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { ButtonProps } from '../types';
|
|
2
|
+
export interface DashboardSidebarCollapseProps extends /** @vue-ignore */ Pick<ButtonProps, 'as' | 'size' | 'disabled' | 'ui'> {
|
|
3
|
+
side?: 'left' | 'right';
|
|
4
|
+
/**
|
|
5
|
+
* @defaultValue 'neutral'
|
|
6
|
+
*/
|
|
7
|
+
color?: ButtonProps['color'];
|
|
8
|
+
/**
|
|
9
|
+
* @defaultValue 'ghost'
|
|
10
|
+
*/
|
|
11
|
+
variant?: ButtonProps['variant'];
|
|
12
|
+
class?: any;
|
|
13
|
+
}
|
|
14
|
+
declare const _default: import("vue").DefineComponent<DashboardSidebarCollapseProps, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<DashboardSidebarCollapseProps> & Readonly<{}>, {
|
|
15
|
+
color: "error" | "primary" | "secondary" | "success" | "info" | "warning" | "neutral";
|
|
16
|
+
variant: "link" | "solid" | "outline" | "soft" | "subtle" | "ghost";
|
|
17
|
+
side: "left" | "right";
|
|
18
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, false, {}, any>;
|
|
19
|
+
export default _default;
|