@bitrix24/b24ui-nuxt 0.5.11 → 0.6.1
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/b24ui/advice.ts +10 -2
- package/.nuxt/b24ui/alert.ts +10 -2
- package/.nuxt/b24ui/avatar-group.ts +10 -2
- package/.nuxt/b24ui/avatar.ts +10 -2
- package/.nuxt/b24ui/badge.ts +10 -2
- package/.nuxt/b24ui/button-group.ts +10 -2
- package/.nuxt/b24ui/button.ts +16 -6
- package/.nuxt/b24ui/calendar.ts +10 -2
- package/.nuxt/b24ui/checkbox.ts +10 -2
- package/.nuxt/b24ui/chip.ts +10 -2
- package/.nuxt/b24ui/collapsible.ts +10 -2
- package/.nuxt/b24ui/container.ts +10 -2
- package/.nuxt/b24ui/countdown.ts +10 -2
- package/.nuxt/b24ui/description-list.ts +10 -2
- package/.nuxt/b24ui/dropdown-menu.ts +10 -2
- package/.nuxt/b24ui/form-field.ts +10 -2
- package/.nuxt/b24ui/form.ts +10 -2
- package/.nuxt/b24ui/input-menu.ts +12 -4
- package/.nuxt/b24ui/input-number.ts +10 -2
- package/.nuxt/b24ui/input.ts +10 -2
- package/.nuxt/b24ui/kbd.ts +10 -2
- package/.nuxt/b24ui/link.ts +10 -2
- package/.nuxt/b24ui/modal.ts +10 -2
- package/.nuxt/b24ui/navbar-divider.ts +10 -2
- package/.nuxt/b24ui/navbar-section.ts +10 -2
- package/.nuxt/b24ui/navbar-spacer.ts +10 -2
- package/.nuxt/b24ui/navbar.ts +10 -2
- package/.nuxt/b24ui/navigation-menu.ts +10 -2
- package/.nuxt/b24ui/popover.ts +10 -2
- package/.nuxt/b24ui/progress.ts +10 -2
- package/.nuxt/b24ui/radio-group.ts +10 -2
- package/.nuxt/b24ui/range.ts +10 -2
- package/.nuxt/b24ui/select-menu.ts +14 -6
- package/.nuxt/b24ui/select.ts +12 -4
- package/.nuxt/b24ui/separator.ts +10 -2
- package/.nuxt/b24ui/sidebar-body.ts +10 -2
- package/.nuxt/b24ui/sidebar-footer.ts +10 -2
- package/.nuxt/b24ui/sidebar-header.ts +10 -2
- package/.nuxt/b24ui/sidebar-heading.ts +10 -2
- package/.nuxt/b24ui/sidebar-layout.ts +10 -2
- package/.nuxt/b24ui/sidebar-section.ts +10 -2
- package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
- package/.nuxt/b24ui/sidebar.ts +10 -2
- package/.nuxt/b24ui/skeleton.ts +10 -2
- package/.nuxt/b24ui/slideover.ts +10 -2
- package/.nuxt/b24ui/stacked-layout.ts +10 -2
- package/.nuxt/b24ui/switch.ts +10 -2
- package/.nuxt/b24ui/tabs.ts +10 -2
- package/.nuxt/b24ui/textarea.ts +10 -2
- package/.nuxt/b24ui/toast.ts +10 -2
- package/.nuxt/b24ui/toaster.ts +10 -2
- package/.nuxt/b24ui/tooltip.ts +10 -2
- package/cli/templates.mjs +19 -15
- package/dist/meta.d.mts +5675 -7513
- package/dist/meta.mjs +5675 -7513
- package/dist/module.json +3 -3
- package/dist/module.mjs +2 -2
- package/dist/runtime/components/Advice.vue +27 -55
- package/dist/runtime/components/Advice.vue.d.ts +56 -0
- package/dist/runtime/components/Alert.vue +35 -97
- package/dist/runtime/components/Alert.vue.d.ts +97 -0
- package/dist/runtime/components/App.vue +24 -34
- package/dist/runtime/components/App.vue.d.ts +23 -0
- package/dist/runtime/components/Avatar.vue +43 -82
- package/dist/runtime/components/Avatar.vue.d.ts +62 -0
- package/dist/runtime/components/AvatarGroup.vue +40 -77
- package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
- package/dist/runtime/components/Badge.vue +40 -84
- package/dist/runtime/components/Badge.vue.d.ts +78 -0
- package/dist/runtime/components/Button.vue +107 -164
- package/dist/runtime/components/Button.vue.d.ts +115 -0
- package/dist/runtime/components/ButtonGroup.vue +25 -52
- package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
- package/dist/runtime/components/Calendar.vue +73 -153
- package/dist/runtime/components/Calendar.vue.d.ts +107 -0
- package/dist/runtime/components/Checkbox.vue +42 -74
- package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
- package/dist/runtime/components/Chip.vue +26 -75
- package/dist/runtime/components/Chip.vue.d.ts +77 -0
- package/dist/runtime/components/Collapsible.vue +22 -41
- package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
- package/dist/runtime/components/Container.vue +15 -28
- package/dist/runtime/components/Container.vue.d.ts +27 -0
- package/dist/runtime/components/Countdown.vue +153 -379
- package/dist/runtime/components/Countdown.vue.d.ts +122 -0
- package/dist/runtime/components/DescriptionList.vue +78 -150
- package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
- package/dist/runtime/components/DropdownMenu.vue +38 -140
- package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
- package/dist/runtime/components/DropdownMenuContent.vue +65 -79
- package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
- package/dist/runtime/components/Form.vue +132 -218
- package/dist/runtime/components/Form.vue.d.ts +55 -0
- package/dist/runtime/components/FormField.vue +36 -81
- package/dist/runtime/components/FormField.vue.d.ts +73 -0
- package/dist/runtime/components/Input.vue +79 -180
- package/dist/runtime/components/Input.vue.d.ts +135 -0
- package/dist/runtime/components/InputMenu.vue +185 -382
- package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
- package/dist/runtime/components/InputNumber.vue +77 -176
- package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
- package/dist/runtime/components/Kbd.vue +20 -46
- package/dist/runtime/components/Kbd.vue.d.ts +55 -0
- package/dist/runtime/components/Link.vue +99 -179
- package/dist/runtime/components/Link.vue.d.ts +129 -0
- package/dist/runtime/components/LinkBase.vue +33 -42
- package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
- package/dist/runtime/components/Modal.vue +48 -128
- package/dist/runtime/components/Modal.vue.d.ts +124 -0
- package/dist/runtime/components/ModalDialogClose.vue +5 -8
- package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
- package/dist/runtime/components/Navbar.vue +15 -33
- package/dist/runtime/components/Navbar.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarDivider.vue +15 -33
- package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarSection.vue +15 -33
- package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
- package/dist/runtime/components/NavbarSpacer.vue +15 -33
- package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
- package/dist/runtime/components/NavigationMenu.vue +74 -209
- package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
- package/dist/runtime/components/OverlayProvider.vue +14 -18
- package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
- package/dist/runtime/components/Popover.vue +40 -82
- package/dist/runtime/components/Popover.vue.d.ts +79 -0
- package/dist/runtime/components/Progress.vue +70 -137
- package/dist/runtime/components/Progress.vue.d.ts +103 -0
- package/dist/runtime/components/RadioGroup.vue +59 -135
- package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
- package/dist/runtime/components/Range.vue +46 -86
- package/dist/runtime/components/Range.vue.d.ts +73 -0
- package/dist/runtime/components/Select.vue +110 -261
- package/dist/runtime/components/Select.vue.d.ts +170 -0
- package/dist/runtime/components/SelectMenu.vue +161 -348
- package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
- package/dist/runtime/components/Separator.vue +28 -72
- package/dist/runtime/components/Separator.vue.d.ts +77 -0
- package/dist/runtime/components/Sidebar.vue +15 -33
- package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarBody.vue +17 -39
- package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
- package/dist/runtime/components/SidebarFooter.vue +15 -33
- package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarHeader.vue +15 -33
- package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarHeading.vue +15 -33
- package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarLayout.vue +34 -71
- package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
- package/dist/runtime/components/SidebarSection.vue +15 -33
- package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
- package/dist/runtime/components/SidebarSpacer.vue +15 -33
- package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
- package/dist/runtime/components/Skeleton.vue +14 -23
- package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
- package/dist/runtime/components/Slideover.vue +50 -132
- package/dist/runtime/components/Slideover.vue.d.ts +127 -0
- package/dist/runtime/components/StackedLayout.vue +34 -74
- package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
- package/dist/runtime/components/Switch.vue +46 -96
- package/dist/runtime/components/Switch.vue.d.ts +77 -0
- package/dist/runtime/components/Tabs.vue +41 -106
- package/dist/runtime/components/Tabs.vue.d.ts +104 -0
- package/dist/runtime/components/Textarea.vue +92 -202
- package/dist/runtime/components/Textarea.vue.d.ts +141 -0
- package/dist/runtime/components/Toast.vue +47 -106
- package/dist/runtime/components/Toast.vue.d.ts +95 -0
- package/dist/runtime/components/Toaster.vue +70 -116
- package/dist/runtime/components/Toaster.vue.d.ts +70 -0
- package/dist/runtime/components/Tooltip.vue +36 -65
- package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
- package/dist/runtime/components/content/TableWrapper.vue +24 -71
- package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
- package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
- package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
- package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
- package/dist/runtime/composables/useFormField.d.ts +2 -2
- package/dist/runtime/composables/useOverlay.d.ts +14 -7
- package/dist/runtime/composables/useOverlay.js +14 -6
- package/dist/runtime/prose/A.vue +16 -26
- package/dist/runtime/prose/A.vue.d.ts +27 -0
- package/dist/runtime/prose/Blockquote.vue +14 -26
- package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
- package/dist/runtime/prose/Code.vue +15 -32
- package/dist/runtime/prose/Code.vue.d.ts +31 -0
- package/dist/runtime/prose/Em.vue +16 -26
- package/dist/runtime/prose/Em.vue.d.ts +27 -0
- package/dist/runtime/prose/H1.vue +14 -26
- package/dist/runtime/prose/H1.vue.d.ts +27 -0
- package/dist/runtime/prose/H2.vue +14 -26
- package/dist/runtime/prose/H2.vue.d.ts +27 -0
- package/dist/runtime/prose/H3.vue +14 -26
- package/dist/runtime/prose/H3.vue.d.ts +27 -0
- package/dist/runtime/prose/H4.vue +14 -26
- package/dist/runtime/prose/H4.vue.d.ts +27 -0
- package/dist/runtime/prose/H5.vue +14 -26
- package/dist/runtime/prose/H5.vue.d.ts +27 -0
- package/dist/runtime/prose/H6.vue +14 -26
- package/dist/runtime/prose/H6.vue.d.ts +27 -0
- package/dist/runtime/prose/Hr.vue +13 -22
- package/dist/runtime/prose/Hr.vue.d.ts +19 -0
- package/dist/runtime/prose/Img.vue +13 -26
- package/dist/runtime/prose/Img.vue.d.ts +19 -0
- package/dist/runtime/prose/Li.vue +14 -26
- package/dist/runtime/prose/Li.vue.d.ts +27 -0
- package/dist/runtime/prose/Ol.vue +14 -26
- package/dist/runtime/prose/Ol.vue.d.ts +27 -0
- package/dist/runtime/prose/P.vue +14 -26
- package/dist/runtime/prose/P.vue.d.ts +27 -0
- package/dist/runtime/prose/Pre.vue +17 -33
- package/dist/runtime/prose/Pre.vue.d.ts +47 -0
- package/dist/runtime/prose/Strong.vue +14 -26
- package/dist/runtime/prose/Strong.vue.d.ts +27 -0
- package/dist/runtime/prose/Table.vue +21 -57
- package/dist/runtime/prose/Table.vue.d.ts +74 -0
- package/dist/runtime/prose/Tbody.vue +14 -26
- package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
- package/dist/runtime/prose/Td.vue +14 -26
- package/dist/runtime/prose/Td.vue.d.ts +27 -0
- package/dist/runtime/prose/Th.vue +14 -26
- package/dist/runtime/prose/Th.vue.d.ts +27 -0
- package/dist/runtime/prose/Thead.vue +14 -26
- package/dist/runtime/prose/Thead.vue.d.ts +27 -0
- package/dist/runtime/prose/Tr.vue +14 -26
- package/dist/runtime/prose/Tr.vue.d.ts +27 -0
- package/dist/runtime/prose/Ul.vue +14 -26
- package/dist/runtime/prose/Ul.vue.d.ts +27 -0
- package/dist/runtime/types/form.d.ts +1 -0
- package/dist/runtime/types/utils.d.ts +42 -3
- package/dist/runtime/utils/link.d.ts +3 -3
- package/dist/runtime/utils/tv.js +2 -2
- package/dist/runtime/vue/components/Link.vue +122 -208
- package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
- package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
- package/dist/types.d.mts +3 -5
- package/dist/unplugin.mjs +1 -1
- package/dist/vite.mjs +1 -1
- package/package.json +19 -27
- package/dist/meta.cjs +0 -72112
- package/dist/meta.d.cts +0 -72110
- package/dist/meta.d.ts +0 -72110
- package/dist/module.cjs +0 -63
- package/dist/module.d.cts +0 -15
- package/dist/module.d.ts +0 -15
- package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
- package/dist/types.d.ts +0 -7
- package/dist/unplugin.cjs +0 -236
- package/dist/unplugin.d.cts +0 -33
- package/dist/unplugin.d.ts +0 -33
- package/dist/vite.cjs +0 -21
- package/dist/vite.d.cts +0 -14
- package/dist/vite.d.ts +0 -14
|
@@ -1,38 +1,20 @@
|
|
|
1
|
-
<script
|
|
2
|
-
import
|
|
3
|
-
import _appConfig from '#build/app.config'
|
|
4
|
-
import theme from '#build/b24ui/navbar-spacer'
|
|
5
|
-
import { tv } from '../utils/tv'
|
|
6
|
-
|
|
7
|
-
const appConfigNavbarSpacer = _appConfig as AppConfig & { b24ui: { navbarSpacer: Partial<typeof theme> } }
|
|
8
|
-
|
|
9
|
-
const navbarSpacer = tv({ extend: tv(theme), ...(appConfigNavbarSpacer.b24ui?.navbarSpacer || {}) })
|
|
10
|
-
|
|
11
|
-
export interface NavbarSpacerProps {
|
|
12
|
-
/**
|
|
13
|
-
* The element or component this component should render as.
|
|
14
|
-
* @defaultValue 'div'
|
|
15
|
-
*/
|
|
16
|
-
as?: any
|
|
17
|
-
class?: any
|
|
18
|
-
b24ui?: Partial<typeof navbarSpacer.slots>
|
|
19
|
-
}
|
|
20
|
-
|
|
21
|
-
export interface NavbarSpacerSlots {
|
|
22
|
-
default(props?: {}): any
|
|
23
|
-
}
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/navbar-spacer";
|
|
24
3
|
</script>
|
|
25
4
|
|
|
26
|
-
<script setup
|
|
27
|
-
import {
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed } from "vue";
|
|
7
|
+
import { Primitive } from "reka-ui";
|
|
8
|
+
import { useAppConfig } from "#imports";
|
|
9
|
+
import { tv } from "../utils/tv";
|
|
10
|
+
const props = defineProps({
|
|
11
|
+
as: { type: null, required: false, default: "div" },
|
|
12
|
+
class: { type: null, required: false },
|
|
13
|
+
b24ui: { type: null, required: false }
|
|
14
|
+
});
|
|
15
|
+
defineSlots();
|
|
16
|
+
const appConfig = useAppConfig();
|
|
17
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.navbarSpacer || {} })());
|
|
36
18
|
</script>
|
|
37
19
|
|
|
38
20
|
<template>
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
2
|
+
import theme from '#build/b24ui/navbar-spacer';
|
|
3
|
+
import type { ComponentConfig } from '../types/utils';
|
|
4
|
+
type NavbarSpacer = ComponentConfig<typeof theme, AppConfig, 'navbarSpacer'>;
|
|
5
|
+
export interface NavbarSpacerProps {
|
|
6
|
+
/**
|
|
7
|
+
* The element or component this component should render as.
|
|
8
|
+
* @defaultValue 'div'
|
|
9
|
+
*/
|
|
10
|
+
as?: any;
|
|
11
|
+
class?: any;
|
|
12
|
+
b24ui?: NavbarSpacer['slots'];
|
|
13
|
+
}
|
|
14
|
+
export interface NavbarSpacerSlots {
|
|
15
|
+
default(props?: {}): any;
|
|
16
|
+
}
|
|
17
|
+
declare const _default: __VLS_WithTemplateSlots<import("vue").DefineComponent<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<NavbarSpacerProps>, {
|
|
18
|
+
as: string;
|
|
19
|
+
}>>, {}, {}, {}, {}, import("vue").ComponentOptionsMixin, import("vue").ComponentOptionsMixin, {}, string, import("vue").PublicProps, Readonly<import("vue").ExtractPropTypes<__VLS_WithDefaults<__VLS_TypePropsToOption<NavbarSpacerProps>, {
|
|
20
|
+
as: string;
|
|
21
|
+
}>>> & Readonly<{}>, {
|
|
22
|
+
as: any;
|
|
23
|
+
}, {}, {}, {}, string, import("vue").ComponentProvideOptions, true, {}, any>, Readonly<NavbarSpacerSlots> & NavbarSpacerSlots>;
|
|
24
|
+
export default _default;
|
|
25
|
+
type __VLS_WithDefaults<P, D> = {
|
|
26
|
+
[K in keyof Pick<P, keyof P>]: K extends keyof D ? __VLS_PrettifyLocal<P[K] & {
|
|
27
|
+
default: D[K];
|
|
28
|
+
}> : P[K];
|
|
29
|
+
};
|
|
30
|
+
type __VLS_NonUndefinedable<T> = T extends undefined ? never : T;
|
|
31
|
+
type __VLS_TypePropsToOption<T> = {
|
|
32
|
+
[K in keyof T]-?: {} extends Pick<T, K> ? {
|
|
33
|
+
type: import('vue').PropType<__VLS_NonUndefinedable<T[K]>>;
|
|
34
|
+
} : {
|
|
35
|
+
type: import('vue').PropType<T[K]>;
|
|
36
|
+
required: true;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
type __VLS_WithTemplateSlots<T, S> = T & {
|
|
40
|
+
new (): {
|
|
41
|
+
$slots: S;
|
|
42
|
+
};
|
|
43
|
+
};
|
|
44
|
+
type __VLS_PrettifyLocal<T> = {
|
|
45
|
+
[K in keyof T]: T[K];
|
|
46
|
+
} & {};
|
|
@@ -1,176 +1,50 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
import type { VariantProps } from 'tailwind-variants'
|
|
4
|
-
import type { NavigationMenuRootProps, NavigationMenuRootEmits, NavigationMenuContentProps, NavigationMenuContentEmits, CollapsibleRootProps } from 'reka-ui'
|
|
5
|
-
import type { AppConfig } from '@nuxt/schema'
|
|
6
|
-
import _appConfig from '#build/app.config'
|
|
7
|
-
import theme from '#build/b24ui/navigation-menu'
|
|
8
|
-
import { tv } from '../utils/tv'
|
|
9
|
-
import type { AvatarProps, BadgeProps, LinkProps, IconComponent } from '../types'
|
|
10
|
-
import type {
|
|
11
|
-
ArrayOrNested,
|
|
12
|
-
DynamicSlots,
|
|
13
|
-
MergeTypes,
|
|
14
|
-
NestedItem,
|
|
15
|
-
PartialString,
|
|
16
|
-
EmitsToProps
|
|
17
|
-
} from '../types/utils'
|
|
18
|
-
|
|
19
|
-
const appConfigNavigationMenu = _appConfig as AppConfig & { b24ui: { navigationMenu: Partial<typeof theme> } }
|
|
20
|
-
|
|
21
|
-
const navigationMenu = tv({ extend: tv(theme), ...(appConfigNavigationMenu.b24ui?.navigationMenu || {}) })
|
|
22
|
-
|
|
23
|
-
export interface NavigationMenuChildItem extends Omit<NavigationMenuItem, 'type'> {
|
|
24
|
-
/** Description is only used when `orientation` is `horizontal`. */
|
|
25
|
-
description?: string
|
|
26
|
-
[key: string]: any
|
|
27
|
-
}
|
|
28
|
-
|
|
29
|
-
export interface NavigationMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'>, Pick<CollapsibleRootProps, 'defaultOpen' | 'open'> {
|
|
30
|
-
label?: string
|
|
31
|
-
/**
|
|
32
|
-
* @IconComponent
|
|
33
|
-
*/
|
|
34
|
-
icon?: IconComponent
|
|
35
|
-
avatar?: AvatarProps
|
|
36
|
-
/**
|
|
37
|
-
* Display a badge on the item.
|
|
38
|
-
* `{ size: 'sm', color: 'neutral', variant: 'outline' }`{lang="ts-type"}
|
|
39
|
-
*/
|
|
40
|
-
badge?: string | number | BadgeProps
|
|
41
|
-
/**
|
|
42
|
-
* @IconComponent
|
|
43
|
-
*/
|
|
44
|
-
trailingIcon?: IconComponent
|
|
45
|
-
/**
|
|
46
|
-
* The type of the item.
|
|
47
|
-
* The `label` type only works on `vertical` orientation.
|
|
48
|
-
* @defaultValue 'link'
|
|
49
|
-
*/
|
|
50
|
-
type?: 'label' | 'link'
|
|
51
|
-
slot?: string
|
|
52
|
-
value?: string
|
|
53
|
-
children?: NavigationMenuChildItem[]
|
|
54
|
-
/**
|
|
55
|
-
* With orientation=`horizontal` if `true` it will position the dropdown menu correctly
|
|
56
|
-
*/
|
|
57
|
-
viewportRtl?: boolean
|
|
58
|
-
onSelect?(e: Event): void
|
|
59
|
-
[key: string]: any
|
|
60
|
-
}
|
|
61
|
-
|
|
62
|
-
type NavigationMenuVariants = VariantProps<typeof navigationMenu>
|
|
63
|
-
|
|
64
|
-
export interface NavigationMenuProps<T extends ArrayOrNested<NavigationMenuItem> = ArrayOrNested<NavigationMenuItem>> extends Pick<NavigationMenuRootProps, 'modelValue' | 'defaultValue' | 'delayDuration' | 'disableClickTrigger' | 'disableHoverTrigger' | 'skipDelayDuration' | 'disablePointerLeaveClose' | 'unmountOnHide'> {
|
|
65
|
-
/**
|
|
66
|
-
* The element or component this component should render as.
|
|
67
|
-
* @defaultValue 'div'
|
|
68
|
-
*/
|
|
69
|
-
as?: any
|
|
70
|
-
/**
|
|
71
|
-
* The icon displayed to open the menu.
|
|
72
|
-
* @defaultValue icons.chevronDown
|
|
73
|
-
* @IconComponent
|
|
74
|
-
*/
|
|
75
|
-
trailingIcon?: IconComponent
|
|
76
|
-
/**
|
|
77
|
-
* The icon displayed when the item is an external link.
|
|
78
|
-
* Set to `false` to hide the external icon.
|
|
79
|
-
* @defaultValue icons.external
|
|
80
|
-
* @IconComponent
|
|
81
|
-
*/
|
|
82
|
-
externalIcon?: boolean | IconComponent
|
|
83
|
-
items?: T
|
|
84
|
-
/**
|
|
85
|
-
* @defaultValue 'primary'
|
|
86
|
-
*/
|
|
87
|
-
color?: NavigationMenuVariants['color']
|
|
88
|
-
/**
|
|
89
|
-
* @defaultValue 'pill'
|
|
90
|
-
*/
|
|
91
|
-
variant?: NavigationMenuVariants['variant']
|
|
92
|
-
/**
|
|
93
|
-
* The orientation of the menu.
|
|
94
|
-
* @defaultValue 'horizontal'
|
|
95
|
-
*/
|
|
96
|
-
orientation?: NavigationMenuRootProps['orientation']
|
|
97
|
-
/**
|
|
98
|
-
* Collapse the navigation menu to only show icons.
|
|
99
|
-
* Only works when `orientation` is `vertical`.
|
|
100
|
-
* @defaultValue false
|
|
101
|
-
*/
|
|
102
|
-
collapsed?: boolean
|
|
103
|
-
/** Display a line next to the active item. */
|
|
104
|
-
highlight?: boolean
|
|
105
|
-
/**
|
|
106
|
-
* @defaultValue 'primary'
|
|
107
|
-
*/
|
|
108
|
-
highlightColor?: NavigationMenuVariants['highlightColor']
|
|
109
|
-
/**
|
|
110
|
-
* The content of the menu.
|
|
111
|
-
*/
|
|
112
|
-
content?: Omit<NavigationMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<NavigationMenuContentEmits>>
|
|
113
|
-
/**
|
|
114
|
-
* The orientation of the content.
|
|
115
|
-
* Only works when `orientation` is `horizontal`.
|
|
116
|
-
* @defaultValue 'vertical'
|
|
117
|
-
*/
|
|
118
|
-
contentOrientation?: NavigationMenuVariants['contentOrientation']
|
|
119
|
-
/**
|
|
120
|
-
* Display an arrow alongside the menu.
|
|
121
|
-
* @defaultValue false
|
|
122
|
-
*/
|
|
123
|
-
arrow?: boolean
|
|
124
|
-
/**
|
|
125
|
-
* The key used to get the label from the item.
|
|
126
|
-
* @defaultValue 'label'
|
|
127
|
-
*/
|
|
128
|
-
labelKey?: keyof NestedItem<T>
|
|
129
|
-
class?: any
|
|
130
|
-
b24ui?: PartialString<typeof navigationMenu.slots>
|
|
131
|
-
}
|
|
132
|
-
|
|
133
|
-
export interface NavigationMenuEmits extends NavigationMenuRootEmits {}
|
|
134
|
-
|
|
135
|
-
type SlotProps<T extends NavigationMenuItem> = (props: { item: T, index: number, active?: boolean }) => any
|
|
136
|
-
|
|
137
|
-
export type NavigationMenuSlots<
|
|
138
|
-
A extends ArrayOrNested<NavigationMenuItem> = ArrayOrNested<NavigationMenuItem>,
|
|
139
|
-
T extends NestedItem<A> = NestedItem<A>
|
|
140
|
-
> = {
|
|
141
|
-
'item': SlotProps<T>
|
|
142
|
-
'item-leading': SlotProps<T>
|
|
143
|
-
'item-label': SlotProps<T>
|
|
144
|
-
'item-trailing': SlotProps<T>
|
|
145
|
-
'item-content': SlotProps<T>
|
|
146
|
-
} & DynamicSlots<MergeTypes<T>, 'leading' | 'label' | 'trailing' | 'content', { index: number, active?: boolean }>
|
|
147
|
-
|
|
1
|
+
<script>
|
|
2
|
+
import theme from "#build/b24ui/navigation-menu";
|
|
148
3
|
</script>
|
|
149
4
|
|
|
150
|
-
<script setup
|
|
151
|
-
import { computed, toRef } from
|
|
152
|
-
import { NavigationMenuRoot, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, useForwardPropsEmits } from
|
|
153
|
-
import { createReusableTemplate } from
|
|
154
|
-
import {
|
|
155
|
-
import {
|
|
156
|
-
import
|
|
157
|
-
import
|
|
158
|
-
import
|
|
159
|
-
import
|
|
160
|
-
import
|
|
161
|
-
import
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
}
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
5
|
+
<script setup>
|
|
6
|
+
import { computed, toRef } from "vue";
|
|
7
|
+
import { NavigationMenuRoot, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, useForwardPropsEmits } from "reka-ui";
|
|
8
|
+
import { createReusableTemplate } from "@vueuse/core";
|
|
9
|
+
import { useAppConfig } from "#imports";
|
|
10
|
+
import { get, isArrayOfArray } from "../utils";
|
|
11
|
+
import { tv } from "../utils/tv";
|
|
12
|
+
import { pickLinkProps } from "../utils/link";
|
|
13
|
+
import icons from "../dictionary/icons";
|
|
14
|
+
import B24LinkBase from "./LinkBase.vue";
|
|
15
|
+
import B24Link from "./Link.vue";
|
|
16
|
+
import B24Avatar from "./Avatar.vue";
|
|
17
|
+
import B24Badge from "./Badge.vue";
|
|
18
|
+
import B24Collapsible from "./Collapsible.vue";
|
|
19
|
+
const props = defineProps({
|
|
20
|
+
as: { type: null, required: false },
|
|
21
|
+
trailingIcon: { type: [Function, Object], required: false },
|
|
22
|
+
externalIcon: { type: [Boolean, Function, Object], required: false, default: true },
|
|
23
|
+
items: { type: null, required: false },
|
|
24
|
+
color: { type: null, required: false },
|
|
25
|
+
variant: { type: null, required: false },
|
|
26
|
+
orientation: { type: null, required: false, default: "horizontal" },
|
|
27
|
+
collapsed: { type: Boolean, required: false },
|
|
28
|
+
highlight: { type: Boolean, required: false },
|
|
29
|
+
highlightColor: { type: null, required: false },
|
|
30
|
+
content: { type: Object, required: false },
|
|
31
|
+
contentOrientation: { type: null, required: false, default: "vertical" },
|
|
32
|
+
arrow: { type: Boolean, required: false },
|
|
33
|
+
labelKey: { type: null, required: false, default: "label" },
|
|
34
|
+
class: { type: null, required: false },
|
|
35
|
+
b24ui: { type: null, required: false },
|
|
36
|
+
modelValue: { type: String, required: false },
|
|
37
|
+
defaultValue: { type: String, required: false },
|
|
38
|
+
delayDuration: { type: Number, required: false, default: 0 },
|
|
39
|
+
disableClickTrigger: { type: Boolean, required: false },
|
|
40
|
+
disableHoverTrigger: { type: Boolean, required: false },
|
|
41
|
+
skipDelayDuration: { type: Number, required: false },
|
|
42
|
+
disablePointerLeaveClose: { type: Boolean, required: false },
|
|
43
|
+
unmountOnHide: { type: Boolean, required: false, default: true }
|
|
44
|
+
});
|
|
45
|
+
const emits = defineEmits(["update:modelValue"]);
|
|
46
|
+
const slots = defineSlots();
|
|
47
|
+
const appConfig = useAppConfig();
|
|
174
48
|
const rootProps = useForwardPropsEmits(computed(() => ({
|
|
175
49
|
as: props.as,
|
|
176
50
|
modelValue: props.modelValue,
|
|
@@ -182,12 +56,10 @@ const rootProps = useForwardPropsEmits(computed(() => ({
|
|
|
182
56
|
disableHoverTrigger: props.disableHoverTrigger,
|
|
183
57
|
disablePointerLeaveClose: props.disablePointerLeaveClose,
|
|
184
58
|
unmountOnHide: props.unmountOnHide
|
|
185
|
-
})), emits)
|
|
186
|
-
|
|
187
|
-
const
|
|
188
|
-
|
|
189
|
-
const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate<{ item: NavigationMenuItem, index: number, active?: boolean }>()
|
|
190
|
-
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate<{ item: NavigationMenuItem, index: number, level?: number }>({
|
|
59
|
+
})), emits);
|
|
60
|
+
const contentProps = toRef(() => props.content);
|
|
61
|
+
const [DefineLinkTemplate, ReuseLinkTemplate] = createReusableTemplate();
|
|
62
|
+
const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate({
|
|
191
63
|
props: {
|
|
192
64
|
item: Object,
|
|
193
65
|
index: Number,
|
|
@@ -197,13 +69,11 @@ const [DefineItemTemplate, ReuseItemTemplate] = createReusableTemplate<{ item: N
|
|
|
197
69
|
default: 0
|
|
198
70
|
}
|
|
199
71
|
}
|
|
200
|
-
})
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
}
|
|
205
|
-
|
|
206
|
-
const b24ui = computed(() => navigationMenu({
|
|
72
|
+
});
|
|
73
|
+
const getLabel = (item) => {
|
|
74
|
+
return get(item, props.labelKey);
|
|
75
|
+
};
|
|
76
|
+
const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.navigationMenu || {} })({
|
|
207
77
|
orientation: props.orientation,
|
|
208
78
|
contentOrientation: props.contentOrientation,
|
|
209
79
|
collapsed: props.collapsed,
|
|
@@ -211,35 +81,30 @@ const b24ui = computed(() => navigationMenu({
|
|
|
211
81
|
variant: props.variant,
|
|
212
82
|
highlight: props.highlight,
|
|
213
83
|
highlightColor: props.highlightColor || props.color
|
|
214
|
-
}))
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
? isArrayOfArray(props.items)
|
|
219
|
-
? props.items
|
|
220
|
-
: [props.items]
|
|
221
|
-
: []
|
|
222
|
-
)
|
|
84
|
+
}));
|
|
85
|
+
const lists = computed(
|
|
86
|
+
() => props.items?.length ? isArrayOfArray(props.items) ? props.items : [props.items] : []
|
|
87
|
+
);
|
|
223
88
|
</script>
|
|
224
89
|
|
|
225
90
|
<template>
|
|
226
91
|
<DefineLinkTemplate v-slot="{ item, active, index }">
|
|
227
|
-
<slot :name="
|
|
92
|
+
<slot :name="item.slot || 'item'" :item="item" :index="index">
|
|
228
93
|
<span :class="b24ui.linkLabelWrapper({ class: props.b24ui?.linkLabelWrapper, active })">
|
|
229
|
-
<slot :name="
|
|
94
|
+
<slot :name="item.slot ? `${item.slot}-leading` : 'item-leading'" :item="item" :active="active" :index="index">
|
|
230
95
|
<Component
|
|
231
96
|
:is="item.icon"
|
|
232
97
|
v-if="item.icon"
|
|
233
98
|
:class="b24ui.linkLeadingIcon({ class: props.b24ui?.linkLeadingIcon, active, disabled: !!item.disabled })"
|
|
234
99
|
/>
|
|
235
|
-
<B24Avatar v-else-if="item.avatar" :size="
|
|
100
|
+
<B24Avatar v-else-if="item.avatar" :size="props.b24ui?.linkLeadingAvatarSize || b24ui.linkLeadingAvatarSize()" v-bind="item.avatar" :class="b24ui.linkLeadingAvatar({ class: props.b24ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
|
|
236
101
|
</slot>
|
|
237
102
|
|
|
238
103
|
<span
|
|
239
|
-
v-if="(!collapsed || orientation !== 'vertical') && (getLabel(item) || !!slots[
|
|
104
|
+
v-if="(!collapsed || orientation !== 'vertical') && (getLabel(item) || !!slots[item.slot ? `${item.slot}-label` : 'item-label'])"
|
|
240
105
|
:class="b24ui.linkLabel({ class: props.b24ui?.linkLabel, active })"
|
|
241
106
|
>
|
|
242
|
-
<slot :name="
|
|
107
|
+
<slot :name="item.slot ? `${item.slot}-label` : 'item-label'" :item="item" :active="active" :index="index">
|
|
243
108
|
{{ getLabel(item) }}
|
|
244
109
|
</slot>
|
|
245
110
|
|
|
@@ -250,11 +115,11 @@ const lists = computed<NavigationMenuItem[][]>(() =>
|
|
|
250
115
|
/>
|
|
251
116
|
</span>
|
|
252
117
|
</span>
|
|
253
|
-
<span v-if="(!collapsed || orientation !== 'vertical') && (item.badge ||
|
|
254
|
-
<slot :name="
|
|
118
|
+
<span v-if="(!collapsed || orientation !== 'vertical') && (item.badge || orientation === 'horizontal' && (item.children?.length || !!slots[item.slot ? `${item.slot}-content` : 'item-content']) || orientation === 'vertical' && item.children?.length || item.trailingIcon || !!slots[item.slot ? `${item.slot}-trailing` : 'item-trailing'])" :class="b24ui.linkTrailing({ class: props.b24ui?.linkTrailing })">
|
|
119
|
+
<slot :name="item.slot ? `${item.slot}-trailing` : 'item-trailing'" :item="item" :active="active" :index="index">
|
|
255
120
|
<Component
|
|
256
121
|
:is="item.trailingIcon || trailingIcon || icons.chevronDown"
|
|
257
|
-
v-if="
|
|
122
|
+
v-if="orientation === 'horizontal' && (item.children?.length || !!slots[item.slot ? `${item.slot}-content` : 'item-content']) || orientation === 'vertical' && item.children?.length"
|
|
258
123
|
:class="b24ui.linkTrailingIcon({ class: props.b24ui?.linkTrailingIcon, active })"
|
|
259
124
|
/>
|
|
260
125
|
<Component
|
|
@@ -268,8 +133,8 @@ const lists = computed<NavigationMenuItem[][]>(() =>
|
|
|
268
133
|
color="danger"
|
|
269
134
|
depth="dark"
|
|
270
135
|
:use-fill="true"
|
|
271
|
-
:size="
|
|
272
|
-
v-bind="
|
|
136
|
+
:size="props.b24ui?.linkTrailingBadgeSize || b24ui.linkTrailingBadgeSize()"
|
|
137
|
+
v-bind="typeof item.badge === 'string' || typeof item.badge === 'number' ? { label: item.badge } : item.badge"
|
|
273
138
|
:class="b24ui.linkTrailingBadge({ class: props.b24ui?.linkTrailingBadge })"
|
|
274
139
|
/>
|
|
275
140
|
</slot>
|
|
@@ -279,19 +144,19 @@ const lists = computed<NavigationMenuItem[][]>(() =>
|
|
|
279
144
|
|
|
280
145
|
<DefineItemTemplate v-slot="{ item, index, level }">
|
|
281
146
|
<component
|
|
282
|
-
:is="
|
|
147
|
+
:is="orientation === 'vertical' && item.children?.length && !collapsed ? B24Collapsible : NavigationMenuItem"
|
|
283
148
|
as="li"
|
|
284
149
|
:value="item.value || String(index)"
|
|
285
150
|
:default-open="item.defaultOpen"
|
|
286
|
-
:unmount-on-hide="
|
|
151
|
+
:unmount-on-hide="orientation === 'vertical' && item.children?.length && !collapsed ? unmountOnHide : void 0"
|
|
287
152
|
:open="item.open"
|
|
288
153
|
>
|
|
289
154
|
<div v-if="orientation === 'vertical' && item.type === 'label'" :class="b24ui.label({ class: props.b24ui?.label })">
|
|
290
155
|
<ReuseLinkTemplate :item="item" :index="index" />
|
|
291
156
|
</div>
|
|
292
|
-
<B24Link v-else-if="item.type !== 'label'" v-slot="{ active, ...slotProps }" v-bind="
|
|
157
|
+
<B24Link v-else-if="item.type !== 'label'" v-slot="{ active, ...slotProps }" v-bind="orientation === 'vertical' && item.children?.length && !collapsed ? {} : pickLinkProps(item)" custom>
|
|
293
158
|
<component
|
|
294
|
-
:is="
|
|
159
|
+
:is="orientation === 'horizontal' && (item.children?.length || !!slots[item.slot ? `${item.slot}-content` : 'item-content']) ? NavigationMenuTrigger : NavigationMenuLink"
|
|
295
160
|
as-child
|
|
296
161
|
:active="active || item.active"
|
|
297
162
|
:disabled="item.disabled"
|
|
@@ -303,12 +168,12 @@ const lists = computed<NavigationMenuItem[][]>(() =>
|
|
|
303
168
|
</component>
|
|
304
169
|
|
|
305
170
|
<NavigationMenuContent
|
|
306
|
-
v-if="orientation === 'horizontal' && (item.children?.length || !!slots[
|
|
171
|
+
v-if="orientation === 'horizontal' && (item.children?.length || !!slots[item.slot ? `${item.slot}-content` : 'item-content'])"
|
|
307
172
|
v-bind="contentProps"
|
|
308
173
|
:data-viewport="item.viewportRtl ? 'rtl' : 'ltr'"
|
|
309
174
|
:class="b24ui.content({ class: props.b24ui?.content })"
|
|
310
175
|
>
|
|
311
|
-
<slot :name="
|
|
176
|
+
<slot :name="item.slot ? `${item.slot}-content` : 'item-content'" :item="item" :active="active" :index="index">
|
|
312
177
|
<ul :class="b24ui.childList({ class: props.b24ui?.childList })">
|
|
313
178
|
<li v-for="(childItem, childIndex) in item.children" :key="childIndex" :class="b24ui.childItem({ class: props.b24ui?.childItem })">
|
|
314
179
|
<B24Link v-slot="{ active: childActive, ...childSlotProps }" v-bind="pickLinkProps(childItem)" custom>
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import type { NavigationMenuRootProps, NavigationMenuRootEmits, NavigationMenuContentProps, NavigationMenuContentEmits, CollapsibleRootProps } from 'reka-ui';
|
|
2
|
+
import type { AppConfig } from '@nuxt/schema';
|
|
3
|
+
import theme from '#build/b24ui/navigation-menu';
|
|
4
|
+
import type { AvatarProps, BadgeProps, LinkProps, IconComponent } from '../types';
|
|
5
|
+
import type { ArrayOrNested, DynamicSlots, MergeTypes, NestedItem, EmitsToProps, ComponentConfig } from '../types/utils';
|
|
6
|
+
type NavigationMenu = ComponentConfig<typeof theme, AppConfig, 'navigationMenu'>;
|
|
7
|
+
export interface NavigationMenuChildItem extends Omit<NavigationMenuItem, 'type'> {
|
|
8
|
+
/** Description is only used when `orientation` is `horizontal`. */
|
|
9
|
+
description?: string;
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export interface NavigationMenuItem extends Omit<LinkProps, 'type' | 'raw' | 'custom'>, Pick<CollapsibleRootProps, 'defaultOpen' | 'open'> {
|
|
13
|
+
label?: string;
|
|
14
|
+
/**
|
|
15
|
+
* @IconComponent
|
|
16
|
+
*/
|
|
17
|
+
icon?: IconComponent;
|
|
18
|
+
avatar?: AvatarProps;
|
|
19
|
+
/**
|
|
20
|
+
* Display a badge on the item.
|
|
21
|
+
* `{ size: 'sm', color: 'neutral', variant: 'outline' }`{lang="ts-type"}
|
|
22
|
+
*/
|
|
23
|
+
badge?: string | number | BadgeProps;
|
|
24
|
+
/**
|
|
25
|
+
* @IconComponent
|
|
26
|
+
*/
|
|
27
|
+
trailingIcon?: IconComponent;
|
|
28
|
+
/**
|
|
29
|
+
* The type of the item.
|
|
30
|
+
* The `label` type only works on `vertical` orientation.
|
|
31
|
+
* @defaultValue 'link'
|
|
32
|
+
*/
|
|
33
|
+
type?: 'label' | 'link';
|
|
34
|
+
slot?: string;
|
|
35
|
+
value?: string;
|
|
36
|
+
children?: NavigationMenuChildItem[];
|
|
37
|
+
/**
|
|
38
|
+
* With orientation=`horizontal` if `true` it will position the dropdown menu correctly
|
|
39
|
+
*/
|
|
40
|
+
viewportRtl?: boolean;
|
|
41
|
+
onSelect?(e: Event): void;
|
|
42
|
+
[key: string]: any;
|
|
43
|
+
}
|
|
44
|
+
export interface NavigationMenuProps<T extends ArrayOrNested<NavigationMenuItem> = ArrayOrNested<NavigationMenuItem>> extends Pick<NavigationMenuRootProps, 'modelValue' | 'defaultValue' | 'delayDuration' | 'disableClickTrigger' | 'disableHoverTrigger' | 'skipDelayDuration' | 'disablePointerLeaveClose' | 'unmountOnHide'> {
|
|
45
|
+
/**
|
|
46
|
+
* The element or component this component should render as.
|
|
47
|
+
* @defaultValue 'div'
|
|
48
|
+
*/
|
|
49
|
+
as?: any;
|
|
50
|
+
/**
|
|
51
|
+
* The icon displayed to open the menu.
|
|
52
|
+
* @defaultValue icons.chevronDown
|
|
53
|
+
* @IconComponent
|
|
54
|
+
*/
|
|
55
|
+
trailingIcon?: IconComponent;
|
|
56
|
+
/**
|
|
57
|
+
* The icon displayed when the item is an external link.
|
|
58
|
+
* Set to `false` to hide the external icon.
|
|
59
|
+
* @defaultValue icons.external
|
|
60
|
+
* @IconComponent
|
|
61
|
+
*/
|
|
62
|
+
externalIcon?: boolean | IconComponent;
|
|
63
|
+
items?: T;
|
|
64
|
+
/**
|
|
65
|
+
* @defaultValue 'primary'
|
|
66
|
+
*/
|
|
67
|
+
color?: NavigationMenu['variants']['color'];
|
|
68
|
+
/**
|
|
69
|
+
* @defaultValue 'pill'
|
|
70
|
+
*/
|
|
71
|
+
variant?: NavigationMenu['variants']['variant'];
|
|
72
|
+
/**
|
|
73
|
+
* The orientation of the menu.
|
|
74
|
+
* @defaultValue 'horizontal'
|
|
75
|
+
*/
|
|
76
|
+
orientation?: NavigationMenuRootProps['orientation'];
|
|
77
|
+
/**
|
|
78
|
+
* Collapse the navigation menu to only show icons.
|
|
79
|
+
* Only works when `orientation` is `vertical`.
|
|
80
|
+
* @defaultValue false
|
|
81
|
+
*/
|
|
82
|
+
collapsed?: boolean;
|
|
83
|
+
/** Display a line next to the active item. */
|
|
84
|
+
highlight?: boolean;
|
|
85
|
+
/**
|
|
86
|
+
* @defaultValue 'primary'
|
|
87
|
+
*/
|
|
88
|
+
highlightColor?: NavigationMenu['variants']['highlightColor'];
|
|
89
|
+
/**
|
|
90
|
+
* The content of the menu.
|
|
91
|
+
*/
|
|
92
|
+
content?: Omit<NavigationMenuContentProps, 'as' | 'asChild' | 'forceMount'> & Partial<EmitsToProps<NavigationMenuContentEmits>>;
|
|
93
|
+
/**
|
|
94
|
+
* The orientation of the content.
|
|
95
|
+
* Only works when `orientation` is `horizontal`.
|
|
96
|
+
* @defaultValue 'vertical'
|
|
97
|
+
*/
|
|
98
|
+
contentOrientation?: NavigationMenu['variants']['contentOrientation'];
|
|
99
|
+
/**
|
|
100
|
+
* Display an arrow alongside the menu.
|
|
101
|
+
* @defaultValue false
|
|
102
|
+
*/
|
|
103
|
+
arrow?: boolean;
|
|
104
|
+
/**
|
|
105
|
+
* The key used to get the label from the item.
|
|
106
|
+
* @defaultValue 'label'
|
|
107
|
+
*/
|
|
108
|
+
labelKey?: keyof NestedItem<T>;
|
|
109
|
+
class?: any;
|
|
110
|
+
b24ui?: NavigationMenu['slots'];
|
|
111
|
+
}
|
|
112
|
+
export interface NavigationMenuEmits extends NavigationMenuRootEmits {
|
|
113
|
+
}
|
|
114
|
+
type SlotProps<T extends NavigationMenuItem> = (props: {
|
|
115
|
+
item: T;
|
|
116
|
+
index: number;
|
|
117
|
+
active?: boolean;
|
|
118
|
+
}) => any;
|
|
119
|
+
export type NavigationMenuSlots<A extends ArrayOrNested<NavigationMenuItem> = ArrayOrNested<NavigationMenuItem>, T extends NestedItem<A> = NestedItem<A>> = {
|
|
120
|
+
'item': SlotProps<T>;
|
|
121
|
+
'item-leading': SlotProps<T>;
|
|
122
|
+
'item-label': SlotProps<T>;
|
|
123
|
+
'item-trailing': SlotProps<T>;
|
|
124
|
+
'item-content': SlotProps<T>;
|
|
125
|
+
} & DynamicSlots<MergeTypes<T>, 'leading' | 'label' | 'trailing' | 'content', {
|
|
126
|
+
index: number;
|
|
127
|
+
active?: boolean;
|
|
128
|
+
}>;
|
|
129
|
+
declare const _default: <T extends ArrayOrNested<NavigationMenuItem>>(__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<{
|
|
130
|
+
props: __VLS_PrettifyLocal<any & NavigationMenuProps<T> & Partial<{}>> & (import("vue").VNodeProps & import("vue").AllowedComponentProps & import("vue").ComponentCustomProps);
|
|
131
|
+
expose(exposed: import("vue").ShallowUnwrapRef<{}>): void;
|
|
132
|
+
attrs: any;
|
|
133
|
+
slots: Readonly<{
|
|
134
|
+
item: SlotProps<NestedItem<T>>;
|
|
135
|
+
'item-leading': SlotProps<NestedItem<T>>;
|
|
136
|
+
'item-label': SlotProps<NestedItem<T>>;
|
|
137
|
+
'item-trailing': SlotProps<NestedItem<T>>;
|
|
138
|
+
'item-content': SlotProps<NestedItem<T>>;
|
|
139
|
+
} & DynamicSlots<MergeTypes<NestedItem<T>>, "leading" | "trailing" | "label" | "content", {
|
|
140
|
+
index: number;
|
|
141
|
+
active?: boolean;
|
|
142
|
+
}>> & {
|
|
143
|
+
item: SlotProps<NestedItem<T>>;
|
|
144
|
+
'item-leading': SlotProps<NestedItem<T>>;
|
|
145
|
+
'item-label': SlotProps<NestedItem<T>>;
|
|
146
|
+
'item-trailing': SlotProps<NestedItem<T>>;
|
|
147
|
+
'item-content': SlotProps<NestedItem<T>>;
|
|
148
|
+
} & DynamicSlots<MergeTypes<NestedItem<T>>, "leading" | "trailing" | "label" | "content", {
|
|
149
|
+
index: number;
|
|
150
|
+
active?: boolean;
|
|
151
|
+
}>;
|
|
152
|
+
emit: (evt: "update:modelValue", value: string) => void;
|
|
153
|
+
}>) => import("vue").VNode & {
|
|
154
|
+
__ctx?: Awaited<typeof __VLS_setup>;
|
|
155
|
+
};
|
|
156
|
+
export default _default;
|
|
157
|
+
type __VLS_PrettifyLocal<T> = {
|
|
158
|
+
[K in keyof T]: T[K];
|
|
159
|
+
} & {};
|