@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.
Files changed (252) hide show
  1. package/.nuxt/b24ui/advice.ts +10 -2
  2. package/.nuxt/b24ui/alert.ts +10 -2
  3. package/.nuxt/b24ui/avatar-group.ts +10 -2
  4. package/.nuxt/b24ui/avatar.ts +10 -2
  5. package/.nuxt/b24ui/badge.ts +10 -2
  6. package/.nuxt/b24ui/button-group.ts +10 -2
  7. package/.nuxt/b24ui/button.ts +16 -6
  8. package/.nuxt/b24ui/calendar.ts +10 -2
  9. package/.nuxt/b24ui/checkbox.ts +10 -2
  10. package/.nuxt/b24ui/chip.ts +10 -2
  11. package/.nuxt/b24ui/collapsible.ts +10 -2
  12. package/.nuxt/b24ui/container.ts +10 -2
  13. package/.nuxt/b24ui/countdown.ts +10 -2
  14. package/.nuxt/b24ui/description-list.ts +10 -2
  15. package/.nuxt/b24ui/dropdown-menu.ts +10 -2
  16. package/.nuxt/b24ui/form-field.ts +10 -2
  17. package/.nuxt/b24ui/form.ts +10 -2
  18. package/.nuxt/b24ui/input-menu.ts +12 -4
  19. package/.nuxt/b24ui/input-number.ts +10 -2
  20. package/.nuxt/b24ui/input.ts +10 -2
  21. package/.nuxt/b24ui/kbd.ts +10 -2
  22. package/.nuxt/b24ui/link.ts +10 -2
  23. package/.nuxt/b24ui/modal.ts +10 -2
  24. package/.nuxt/b24ui/navbar-divider.ts +10 -2
  25. package/.nuxt/b24ui/navbar-section.ts +10 -2
  26. package/.nuxt/b24ui/navbar-spacer.ts +10 -2
  27. package/.nuxt/b24ui/navbar.ts +10 -2
  28. package/.nuxt/b24ui/navigation-menu.ts +10 -2
  29. package/.nuxt/b24ui/popover.ts +10 -2
  30. package/.nuxt/b24ui/progress.ts +10 -2
  31. package/.nuxt/b24ui/radio-group.ts +10 -2
  32. package/.nuxt/b24ui/range.ts +10 -2
  33. package/.nuxt/b24ui/select-menu.ts +14 -6
  34. package/.nuxt/b24ui/select.ts +12 -4
  35. package/.nuxt/b24ui/separator.ts +10 -2
  36. package/.nuxt/b24ui/sidebar-body.ts +10 -2
  37. package/.nuxt/b24ui/sidebar-footer.ts +10 -2
  38. package/.nuxt/b24ui/sidebar-header.ts +10 -2
  39. package/.nuxt/b24ui/sidebar-heading.ts +10 -2
  40. package/.nuxt/b24ui/sidebar-layout.ts +10 -2
  41. package/.nuxt/b24ui/sidebar-section.ts +10 -2
  42. package/.nuxt/b24ui/sidebar-spacer.ts +10 -2
  43. package/.nuxt/b24ui/sidebar.ts +10 -2
  44. package/.nuxt/b24ui/skeleton.ts +10 -2
  45. package/.nuxt/b24ui/slideover.ts +10 -2
  46. package/.nuxt/b24ui/stacked-layout.ts +10 -2
  47. package/.nuxt/b24ui/switch.ts +10 -2
  48. package/.nuxt/b24ui/tabs.ts +10 -2
  49. package/.nuxt/b24ui/textarea.ts +10 -2
  50. package/.nuxt/b24ui/toast.ts +10 -2
  51. package/.nuxt/b24ui/toaster.ts +10 -2
  52. package/.nuxt/b24ui/tooltip.ts +10 -2
  53. package/cli/templates.mjs +19 -15
  54. package/dist/meta.d.mts +5675 -7513
  55. package/dist/meta.mjs +5675 -7513
  56. package/dist/module.json +3 -3
  57. package/dist/module.mjs +2 -2
  58. package/dist/runtime/components/Advice.vue +27 -55
  59. package/dist/runtime/components/Advice.vue.d.ts +56 -0
  60. package/dist/runtime/components/Alert.vue +35 -97
  61. package/dist/runtime/components/Alert.vue.d.ts +97 -0
  62. package/dist/runtime/components/App.vue +24 -34
  63. package/dist/runtime/components/App.vue.d.ts +23 -0
  64. package/dist/runtime/components/Avatar.vue +43 -82
  65. package/dist/runtime/components/Avatar.vue.d.ts +62 -0
  66. package/dist/runtime/components/AvatarGroup.vue +40 -77
  67. package/dist/runtime/components/AvatarGroup.vue.d.ts +40 -0
  68. package/dist/runtime/components/Badge.vue +40 -84
  69. package/dist/runtime/components/Badge.vue.d.ts +78 -0
  70. package/dist/runtime/components/Button.vue +107 -164
  71. package/dist/runtime/components/Button.vue.d.ts +115 -0
  72. package/dist/runtime/components/ButtonGroup.vue +25 -52
  73. package/dist/runtime/components/ButtonGroup.vue.d.ts +63 -0
  74. package/dist/runtime/components/Calendar.vue +73 -153
  75. package/dist/runtime/components/Calendar.vue.d.ts +107 -0
  76. package/dist/runtime/components/Checkbox.vue +42 -74
  77. package/dist/runtime/components/Checkbox.vue.d.ts +55 -0
  78. package/dist/runtime/components/Chip.vue +26 -75
  79. package/dist/runtime/components/Chip.vue.d.ts +77 -0
  80. package/dist/runtime/components/Collapsible.vue +22 -41
  81. package/dist/runtime/components/Collapsible.vue.d.ts +50 -0
  82. package/dist/runtime/components/Container.vue +15 -28
  83. package/dist/runtime/components/Container.vue.d.ts +27 -0
  84. package/dist/runtime/components/Countdown.vue +153 -379
  85. package/dist/runtime/components/Countdown.vue.d.ts +122 -0
  86. package/dist/runtime/components/DescriptionList.vue +78 -150
  87. package/dist/runtime/components/DescriptionList.vue.d.ts +109 -0
  88. package/dist/runtime/components/DropdownMenu.vue +38 -140
  89. package/dist/runtime/components/DropdownMenu.vue.d.ts +133 -0
  90. package/dist/runtime/components/DropdownMenuContent.vue +65 -79
  91. package/dist/runtime/components/DropdownMenuContent.vue.d.ts +51 -0
  92. package/dist/runtime/components/Form.vue +132 -218
  93. package/dist/runtime/components/Form.vue.d.ts +55 -0
  94. package/dist/runtime/components/FormField.vue +36 -81
  95. package/dist/runtime/components/FormField.vue.d.ts +73 -0
  96. package/dist/runtime/components/Input.vue +79 -180
  97. package/dist/runtime/components/Input.vue.d.ts +135 -0
  98. package/dist/runtime/components/InputMenu.vue +185 -382
  99. package/dist/runtime/components/InputMenu.vue.d.ts +357 -0
  100. package/dist/runtime/components/InputNumber.vue +77 -176
  101. package/dist/runtime/components/InputNumber.vue.d.ts +238 -0
  102. package/dist/runtime/components/Kbd.vue +20 -46
  103. package/dist/runtime/components/Kbd.vue.d.ts +55 -0
  104. package/dist/runtime/components/Link.vue +99 -179
  105. package/dist/runtime/components/Link.vue.d.ts +129 -0
  106. package/dist/runtime/components/LinkBase.vue +33 -42
  107. package/dist/runtime/components/LinkBase.vue.d.ts +48 -0
  108. package/dist/runtime/components/Modal.vue +48 -128
  109. package/dist/runtime/components/Modal.vue.d.ts +124 -0
  110. package/dist/runtime/components/ModalDialogClose.vue +5 -8
  111. package/dist/runtime/components/ModalDialogClose.vue.d.ts +10 -0
  112. package/dist/runtime/components/Navbar.vue +15 -33
  113. package/dist/runtime/components/Navbar.vue.d.ts +46 -0
  114. package/dist/runtime/components/NavbarDivider.vue +15 -33
  115. package/dist/runtime/components/NavbarDivider.vue.d.ts +46 -0
  116. package/dist/runtime/components/NavbarSection.vue +15 -33
  117. package/dist/runtime/components/NavbarSection.vue.d.ts +46 -0
  118. package/dist/runtime/components/NavbarSpacer.vue +15 -33
  119. package/dist/runtime/components/NavbarSpacer.vue.d.ts +46 -0
  120. package/dist/runtime/components/NavigationMenu.vue +74 -209
  121. package/dist/runtime/components/NavigationMenu.vue.d.ts +159 -0
  122. package/dist/runtime/components/OverlayProvider.vue +14 -18
  123. package/dist/runtime/components/OverlayProvider.vue.d.ts +2 -0
  124. package/dist/runtime/components/Popover.vue +40 -82
  125. package/dist/runtime/components/Popover.vue.d.ts +79 -0
  126. package/dist/runtime/components/Progress.vue +70 -137
  127. package/dist/runtime/components/Progress.vue.d.ts +103 -0
  128. package/dist/runtime/components/RadioGroup.vue +59 -135
  129. package/dist/runtime/components/RadioGroup.vue.d.ts +88 -0
  130. package/dist/runtime/components/Range.vue +46 -86
  131. package/dist/runtime/components/Range.vue.d.ts +73 -0
  132. package/dist/runtime/components/Select.vue +110 -261
  133. package/dist/runtime/components/Select.vue.d.ts +170 -0
  134. package/dist/runtime/components/SelectMenu.vue +161 -348
  135. package/dist/runtime/components/SelectMenu.vue.d.ts +217 -0
  136. package/dist/runtime/components/Separator.vue +28 -72
  137. package/dist/runtime/components/Separator.vue.d.ts +77 -0
  138. package/dist/runtime/components/Sidebar.vue +15 -33
  139. package/dist/runtime/components/Sidebar.vue.d.ts +46 -0
  140. package/dist/runtime/components/SidebarBody.vue +17 -39
  141. package/dist/runtime/components/SidebarBody.vue.d.ts +53 -0
  142. package/dist/runtime/components/SidebarFooter.vue +15 -33
  143. package/dist/runtime/components/SidebarFooter.vue.d.ts +46 -0
  144. package/dist/runtime/components/SidebarHeader.vue +15 -33
  145. package/dist/runtime/components/SidebarHeader.vue.d.ts +46 -0
  146. package/dist/runtime/components/SidebarHeading.vue +15 -33
  147. package/dist/runtime/components/SidebarHeading.vue.d.ts +46 -0
  148. package/dist/runtime/components/SidebarLayout.vue +34 -71
  149. package/dist/runtime/components/SidebarLayout.vue.d.ts +65 -0
  150. package/dist/runtime/components/SidebarSection.vue +15 -33
  151. package/dist/runtime/components/SidebarSection.vue.d.ts +46 -0
  152. package/dist/runtime/components/SidebarSpacer.vue +15 -33
  153. package/dist/runtime/components/SidebarSpacer.vue.d.ts +46 -0
  154. package/dist/runtime/components/Skeleton.vue +14 -23
  155. package/dist/runtime/components/Skeleton.vue.d.ts +26 -0
  156. package/dist/runtime/components/Slideover.vue +50 -132
  157. package/dist/runtime/components/Slideover.vue.d.ts +127 -0
  158. package/dist/runtime/components/StackedLayout.vue +34 -74
  159. package/dist/runtime/components/StackedLayout.vue.d.ts +65 -0
  160. package/dist/runtime/components/Switch.vue +46 -96
  161. package/dist/runtime/components/Switch.vue.d.ts +77 -0
  162. package/dist/runtime/components/Tabs.vue +41 -106
  163. package/dist/runtime/components/Tabs.vue.d.ts +104 -0
  164. package/dist/runtime/components/Textarea.vue +92 -202
  165. package/dist/runtime/components/Textarea.vue.d.ts +141 -0
  166. package/dist/runtime/components/Toast.vue +47 -106
  167. package/dist/runtime/components/Toast.vue.d.ts +95 -0
  168. package/dist/runtime/components/Toaster.vue +70 -116
  169. package/dist/runtime/components/Toaster.vue.d.ts +70 -0
  170. package/dist/runtime/components/Tooltip.vue +36 -65
  171. package/dist/runtime/components/Tooltip.vue.d.ts +65 -0
  172. package/dist/runtime/components/content/TableWrapper.vue +24 -71
  173. package/dist/runtime/components/content/TableWrapper.vue.d.ts +83 -0
  174. package/dist/runtime/composables/useAvatarGroup.d.ts +1 -1
  175. package/dist/runtime/composables/useButtonGroup.d.ts +2 -2
  176. package/dist/runtime/composables/useComponentIcons.d.ts +3 -3
  177. package/dist/runtime/composables/useFormField.d.ts +2 -2
  178. package/dist/runtime/composables/useOverlay.d.ts +14 -7
  179. package/dist/runtime/composables/useOverlay.js +14 -6
  180. package/dist/runtime/prose/A.vue +16 -26
  181. package/dist/runtime/prose/A.vue.d.ts +27 -0
  182. package/dist/runtime/prose/Blockquote.vue +14 -26
  183. package/dist/runtime/prose/Blockquote.vue.d.ts +27 -0
  184. package/dist/runtime/prose/Code.vue +15 -32
  185. package/dist/runtime/prose/Code.vue.d.ts +31 -0
  186. package/dist/runtime/prose/Em.vue +16 -26
  187. package/dist/runtime/prose/Em.vue.d.ts +27 -0
  188. package/dist/runtime/prose/H1.vue +14 -26
  189. package/dist/runtime/prose/H1.vue.d.ts +27 -0
  190. package/dist/runtime/prose/H2.vue +14 -26
  191. package/dist/runtime/prose/H2.vue.d.ts +27 -0
  192. package/dist/runtime/prose/H3.vue +14 -26
  193. package/dist/runtime/prose/H3.vue.d.ts +27 -0
  194. package/dist/runtime/prose/H4.vue +14 -26
  195. package/dist/runtime/prose/H4.vue.d.ts +27 -0
  196. package/dist/runtime/prose/H5.vue +14 -26
  197. package/dist/runtime/prose/H5.vue.d.ts +27 -0
  198. package/dist/runtime/prose/H6.vue +14 -26
  199. package/dist/runtime/prose/H6.vue.d.ts +27 -0
  200. package/dist/runtime/prose/Hr.vue +13 -22
  201. package/dist/runtime/prose/Hr.vue.d.ts +19 -0
  202. package/dist/runtime/prose/Img.vue +13 -26
  203. package/dist/runtime/prose/Img.vue.d.ts +19 -0
  204. package/dist/runtime/prose/Li.vue +14 -26
  205. package/dist/runtime/prose/Li.vue.d.ts +27 -0
  206. package/dist/runtime/prose/Ol.vue +14 -26
  207. package/dist/runtime/prose/Ol.vue.d.ts +27 -0
  208. package/dist/runtime/prose/P.vue +14 -26
  209. package/dist/runtime/prose/P.vue.d.ts +27 -0
  210. package/dist/runtime/prose/Pre.vue +17 -33
  211. package/dist/runtime/prose/Pre.vue.d.ts +47 -0
  212. package/dist/runtime/prose/Strong.vue +14 -26
  213. package/dist/runtime/prose/Strong.vue.d.ts +27 -0
  214. package/dist/runtime/prose/Table.vue +21 -57
  215. package/dist/runtime/prose/Table.vue.d.ts +74 -0
  216. package/dist/runtime/prose/Tbody.vue +14 -26
  217. package/dist/runtime/prose/Tbody.vue.d.ts +27 -0
  218. package/dist/runtime/prose/Td.vue +14 -26
  219. package/dist/runtime/prose/Td.vue.d.ts +27 -0
  220. package/dist/runtime/prose/Th.vue +14 -26
  221. package/dist/runtime/prose/Th.vue.d.ts +27 -0
  222. package/dist/runtime/prose/Thead.vue +14 -26
  223. package/dist/runtime/prose/Thead.vue.d.ts +27 -0
  224. package/dist/runtime/prose/Tr.vue +14 -26
  225. package/dist/runtime/prose/Tr.vue.d.ts +27 -0
  226. package/dist/runtime/prose/Ul.vue +14 -26
  227. package/dist/runtime/prose/Ul.vue.d.ts +27 -0
  228. package/dist/runtime/types/form.d.ts +1 -0
  229. package/dist/runtime/types/utils.d.ts +42 -3
  230. package/dist/runtime/utils/link.d.ts +3 -3
  231. package/dist/runtime/utils/tv.js +2 -2
  232. package/dist/runtime/vue/components/Link.vue +122 -208
  233. package/dist/runtime/vue/components/Link.vue.d.ts +129 -0
  234. package/dist/shared/{b24ui-nuxt.CS9Lf0os.mjs → b24ui-nuxt.wBs9vEU5.mjs} +33 -8
  235. package/dist/types.d.mts +3 -5
  236. package/dist/unplugin.mjs +1 -1
  237. package/dist/vite.mjs +1 -1
  238. package/package.json +19 -27
  239. package/dist/meta.cjs +0 -72112
  240. package/dist/meta.d.cts +0 -72110
  241. package/dist/meta.d.ts +0 -72110
  242. package/dist/module.cjs +0 -63
  243. package/dist/module.d.cts +0 -15
  244. package/dist/module.d.ts +0 -15
  245. package/dist/shared/b24ui-nuxt.DrKwIWoc.cjs +0 -7721
  246. package/dist/types.d.ts +0 -7
  247. package/dist/unplugin.cjs +0 -236
  248. package/dist/unplugin.d.cts +0 -33
  249. package/dist/unplugin.d.ts +0 -33
  250. package/dist/vite.cjs +0 -21
  251. package/dist/vite.d.cts +0 -14
  252. package/dist/vite.d.ts +0 -14
@@ -1,38 +1,20 @@
1
- <script lang="ts">
2
- import type { AppConfig } from '@nuxt/schema'
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 lang="ts">
27
- import { Primitive } from 'reka-ui'
28
-
29
- const props = withDefaults(defineProps<NavbarSpacerProps>(), {
30
- as: 'div'
31
- })
32
- defineSlots<NavbarSpacerSlots>()
33
-
34
- // eslint-disable-next-line vue/no-dupe-keys
35
- const b24ui = navbarSpacer()
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
- <!-- eslint-disable vue/block-tag-newline -->
2
- <script lang="ts">
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 lang="ts" generic="T extends ArrayOrNested<NavigationMenuItem>">
151
- import { computed, toRef } from 'vue'
152
- import { NavigationMenuRoot, NavigationMenuList, NavigationMenuItem, NavigationMenuTrigger, NavigationMenuContent, NavigationMenuLink, NavigationMenuIndicator, NavigationMenuViewport, useForwardPropsEmits } from 'reka-ui'
153
- import { createReusableTemplate } from '@vueuse/core'
154
- import { get, isArrayOfArray } from '../utils'
155
- import { pickLinkProps } from '../utils/link'
156
- import icons from '../dictionary/icons'
157
- import B24LinkBase from './LinkBase.vue'
158
- import B24Link from './Link.vue'
159
- import B24Avatar from './Avatar.vue'
160
- import B24Badge from './Badge.vue'
161
- import B24Collapsible from './Collapsible.vue'
162
-
163
- const props = withDefaults(defineProps<NavigationMenuProps<T>>(), {
164
- orientation: 'horizontal',
165
- contentOrientation: 'vertical',
166
- externalIcon: true,
167
- delayDuration: 0,
168
- unmountOnHide: true,
169
- labelKey: 'label'
170
- })
171
- const emits = defineEmits<NavigationMenuEmits>()
172
- const slots = defineSlots<NavigationMenuSlots<T>>()
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 contentProps = toRef(() => props.content)
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
- const getLabel = (item: NavigationMenuItem) => {
203
- return get(item, props.labelKey as string)
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
- const lists = computed<NavigationMenuItem[][]>(() =>
217
- props.items?.length
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="((item.slot || 'item') as keyof NavigationMenuSlots<T>)" :item="item" :index="index">
92
+ <slot :name="item.slot || 'item'" :item="item" :index="index">
228
93
  <span :class="b24ui.linkLabelWrapper({ class: props.b24ui?.linkLabelWrapper, active })">
229
- <slot :name="((item.slot ? `${item.slot}-leading` : 'item-leading') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
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="((props.b24ui?.linkLeadingAvatarSize || b24ui.linkLeadingAvatarSize()) as AvatarProps['size'])" v-bind="item.avatar" :class="b24ui.linkLeadingAvatar({ class: props.b24ui?.linkLeadingAvatar, active, disabled: !!item.disabled })" />
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[(item.slot ? `${item.slot}-label` : 'item-label') as keyof NavigationMenuSlots<T>])"
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="((item.slot ? `${item.slot}-label` : 'item-label') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
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 || (orientation === 'horizontal' && (item.children?.length || !!slots[(item.slot ? `${item.slot}-content` : 'item-content') as keyof NavigationMenuSlots<T>])) || (orientation === 'vertical' && item.children?.length) || item.trailingIcon || !!slots[(item.slot ? `${item.slot}-trailing` : 'item-trailing') as keyof NavigationMenuSlots<T>])" :class="b24ui.linkTrailing({ class: props.b24ui?.linkTrailing })">
254
- <slot :name="((item.slot ? `${item.slot}-trailing` : 'item-trailing') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
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="(orientation === 'horizontal' && (item.children?.length || !!slots[(item.slot ? `${item.slot}-content` : 'item-content') as keyof NavigationMenuSlots<T>])) || (orientation === 'vertical' && item.children?.length)"
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="((props.b24ui?.linkTrailingBadgeSize || b24ui.linkTrailingBadgeSize()) as BadgeProps['size'])"
272
- v-bind="(typeof item.badge === 'string' || typeof item.badge === 'number') ? { label: item.badge } : item.badge"
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="(orientation === 'vertical' && item.children?.length && !collapsed) ? B24Collapsible : NavigationMenuItem"
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="(orientation === 'vertical' && item.children?.length && !collapsed) ? unmountOnHide : undefined"
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="(orientation === 'vertical' && item.children?.length && !collapsed) ? {} : pickLinkProps(item as Omit<NavigationMenuItem, 'type'>)" custom>
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="(orientation === 'horizontal' && (item.children?.length || !!slots[(item.slot ? `${item.slot}-content` : 'item-content') as keyof NavigationMenuSlots<T>])) ? NavigationMenuTrigger : NavigationMenuLink"
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[(item.slot ? `${item.slot}-content` : 'item-content') as keyof NavigationMenuSlots<T>])"
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="((item.slot ? `${item.slot}-content` : 'item-content') as keyof NavigationMenuSlots<T>)" :item="item" :active="active" :index="index">
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
+ } & {};