@bitrix24/b24ui-nuxt 0.4.10 → 0.4.11

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 (43) hide show
  1. package/.nuxt/b24ui/collapsible.ts +6 -0
  2. package/.nuxt/b24ui/index.ts +2 -0
  3. package/.nuxt/b24ui/navigation-menu.ts +299 -0
  4. package/cli/package.json +1 -1
  5. package/dist/meta.cjs +9514 -354
  6. package/dist/meta.d.cts +9514 -354
  7. package/dist/meta.d.mts +9514 -354
  8. package/dist/meta.d.ts +9514 -354
  9. package/dist/meta.mjs +9514 -354
  10. package/dist/module.cjs +1 -1
  11. package/dist/module.json +1 -1
  12. package/dist/module.mjs +1 -1
  13. package/dist/runtime/components/Collapsible.vue +56 -0
  14. package/dist/runtime/components/DropdownMenu.vue +2 -0
  15. package/dist/runtime/components/Navbar.vue +1 -2
  16. package/dist/runtime/components/NavbarDivider.vue +1 -2
  17. package/dist/runtime/components/NavbarSection.vue +1 -2
  18. package/dist/runtime/components/NavbarSpacer.vue +1 -2
  19. package/dist/runtime/components/NavigationMenu.vue +340 -0
  20. package/dist/runtime/components/Sidebar.vue +1 -2
  21. package/dist/runtime/components/SidebarFooter.vue +1 -2
  22. package/dist/runtime/components/SidebarHeader.vue +1 -2
  23. package/dist/runtime/components/SidebarHeading.vue +1 -2
  24. package/dist/runtime/components/SidebarLayout.vue +34 -8
  25. package/dist/runtime/components/SidebarSection.vue +1 -2
  26. package/dist/runtime/components/SidebarSpacer.vue +1 -2
  27. package/dist/runtime/components/StackedLayout.vue +1 -3
  28. package/dist/runtime/composables/defineLocale.js +1 -0
  29. package/dist/runtime/composables/defineShortcuts.js +1 -0
  30. package/dist/runtime/composables/useComponentIcons.d.ts +2 -2
  31. package/dist/runtime/composables/useKbd.js +1 -1
  32. package/dist/runtime/composables/useLocale.js +2 -2
  33. package/dist/runtime/composables/useOverlay.js +1 -1
  34. package/dist/runtime/types/index.d.ts +2 -0
  35. package/dist/runtime/types/index.js +2 -0
  36. package/dist/runtime/utils/tv.js +1 -1
  37. package/dist/shared/{b24ui-nuxt._rviRWFf.mjs → b24ui-nuxt.CJqO7fYv.mjs} +265 -0
  38. package/dist/shared/{b24ui-nuxt.CY35QViH.cjs → b24ui-nuxt.CltBJi1M.cjs} +265 -0
  39. package/dist/unplugin.cjs +1 -1
  40. package/dist/unplugin.mjs +1 -1
  41. package/dist/vite.cjs +1 -1
  42. package/dist/vite.mjs +1 -1
  43. package/package.json +2 -2
@@ -1,16 +1,14 @@
1
1
  <script lang="ts">
2
- // import type { VariantProps } from 'tailwind-variants'
3
2
  import type { AppConfig } from '@nuxt/schema'
4
3
  import _appConfig from '#build/app.config'
5
4
  import theme from '#build/b24ui/sidebar-layout'
6
5
  import { tv } from '../utils/tv'
6
+ import { useRoute } from 'vue-router'
7
7
 
8
8
  const appConfigSidebarLayout = _appConfig as AppConfig & { b24ui: { sidebarLayout: Partial<typeof theme> } }
9
9
 
10
10
  const sidebarLayout = tv({ extend: tv(theme), ...(appConfigSidebarLayout.b24ui?.sidebarLayout || {}) })
11
11
 
12
- // type SidebarLayoutVariants = VariantProps<typeof sidebarLayout>
13
-
14
12
  export interface SidebarLayoutProps {
15
13
  /**
16
14
  * The element or component this component should render as.
@@ -26,8 +24,10 @@ export interface SidebarLayoutProps {
26
24
  export interface SidebarLayoutSlots {
27
25
  /**
28
26
  * Menu for all screen sizes.
27
+ * @param props
28
+ * @param props.handleClick - Handler for navigation click events
29
29
  */
30
- sidebar(props?: {}): any
30
+ sidebar(props: { handleClick: () => void }): any
31
31
  /**
32
32
  * Menu for mobile screen sizes.
33
33
  */
@@ -40,7 +40,7 @@ export interface SidebarLayoutSlots {
40
40
  </script>
41
41
 
42
42
  <script setup lang="ts">
43
- import { computed } from 'vue'
43
+ import { ref, computed, watch, onUnmounted } from 'vue'
44
44
  import { Primitive } from 'reka-ui'
45
45
  import B24Slideover from './Slideover.vue'
46
46
  import B24Sidebar from './Sidebar.vue'
@@ -55,12 +55,34 @@ const props = withDefaults(defineProps<SidebarLayoutProps>(), {
55
55
  })
56
56
  const slots = defineSlots<SidebarLayoutSlots>()
57
57
 
58
+ const route = useRoute()
58
59
  const isUseSideBar = computed(() => !!slots.sidebar)
60
+ const openSidebarSlideover = ref(false)
59
61
 
60
62
  const b24ui = computed(() => sidebarLayout({
61
63
  useSidebar: isUseSideBar.value,
62
64
  useLightContent: Boolean(props.useLightContent)
63
65
  }))
66
+
67
+ const closeModal = () => {
68
+ if (openSidebarSlideover.value) {
69
+ openSidebarSlideover.value = false
70
+ }
71
+ }
72
+
73
+ const stopWatcher = watch(
74
+ () => route.path,
75
+ () => closeModal(),
76
+ { immediate: true }
77
+ )
78
+
79
+ onUnmounted(() => {
80
+ stopWatcher()
81
+ })
82
+
83
+ const handleNavigationClick = () => {
84
+ closeModal()
85
+ }
64
86
  </script>
65
87
 
66
88
  <template>
@@ -68,14 +90,18 @@ const b24ui = computed(() => sidebarLayout({
68
90
  <template v-if="isUseSideBar">
69
91
  <div :class="b24ui.sidebar({ class: props.b24ui?.sidebar })">
70
92
  <B24Sidebar>
71
- <slot name="sidebar" />
93
+ <slot name="sidebar" :handle-click="handleNavigationClick" />
72
94
  </B24Sidebar>
73
95
  </div>
74
96
  </template>
75
97
 
76
98
  <header :class="b24ui.header({ class: props.b24ui?.header })">
77
- <div :class="b24ui.headerPaddings({ class: props.b24ui?.headerPaddings })">
99
+ <div
100
+ v-if="isUseSideBar"
101
+ :class="b24ui.headerPaddings({ class: props.b24ui?.headerPaddings })"
102
+ >
78
103
  <B24Slideover
104
+ v-model:open="openSidebarSlideover"
79
105
  title="Navigation"
80
106
  description="Content navigation"
81
107
  side="left"
@@ -104,7 +130,7 @@ const b24ui = computed(() => sidebarLayout({
104
130
  </B24ModalDialogClose>
105
131
  </div>
106
132
 
107
- <slot name="sidebar" />
133
+ <slot name="sidebar" :handle-click="handleNavigationClick" />
108
134
  </B24Sidebar>
109
135
  </div>
110
136
  </template>
@@ -24,7 +24,6 @@ export interface SidebarSectionSlots {
24
24
  </script>
25
25
 
26
26
  <script setup lang="ts">
27
- import { computed } from 'vue'
28
27
  import { Primitive } from 'reka-ui'
29
28
 
30
29
  const props = withDefaults(defineProps<SidebarSectionProps>(), {
@@ -33,7 +32,7 @@ const props = withDefaults(defineProps<SidebarSectionProps>(), {
33
32
  defineSlots<SidebarSectionSlots>()
34
33
 
35
34
  // eslint-disable-next-line vue/no-dupe-keys
36
- const b24ui = computed(() => sidebarSection({}))
35
+ const b24ui = sidebarSection()
37
36
  </script>
38
37
 
39
38
  <template>
@@ -24,7 +24,6 @@ export interface SidebarSpacerSlots {
24
24
  </script>
25
25
 
26
26
  <script setup lang="ts">
27
- import { computed } from 'vue'
28
27
  import { Primitive } from 'reka-ui'
29
28
 
30
29
  const props = withDefaults(defineProps<SidebarSpacerProps>(), {
@@ -33,7 +32,7 @@ const props = withDefaults(defineProps<SidebarSpacerProps>(), {
33
32
  defineSlots<SidebarSpacerSlots>()
34
33
 
35
34
  // eslint-disable-next-line vue/no-dupe-keys
36
- const b24ui = computed(() => sidebarSpacer({}))
35
+ const b24ui = sidebarSpacer()
37
36
  </script>
38
37
 
39
38
  <template>
@@ -27,7 +27,6 @@ export interface StackedLayoutSlots {
27
27
  </script>
28
28
 
29
29
  <script setup lang="ts">
30
- import { computed } from 'vue'
31
30
  import { Primitive } from 'reka-ui'
32
31
 
33
32
  const props = withDefaults(defineProps<StackedLayoutProps>(), {
@@ -36,8 +35,7 @@ const props = withDefaults(defineProps<StackedLayoutProps>(), {
36
35
  const slots = defineSlots<StackedLayoutSlots>()
37
36
 
38
37
  // eslint-disable-next-line vue/no-dupe-keys
39
- const b24ui = computed(() => stackedLayout({
40
- }))
38
+ const b24ui = stackedLayout()
41
39
  </script>
42
40
 
43
41
  <template>
@@ -1,4 +1,5 @@
1
1
  import { defu } from "defu";
2
+ // @__NO_SIDE_EFFECTS__
2
3
  export function defineLocale(options) {
3
4
  return defu(options, { dir: "ltr" });
4
5
  }
@@ -21,6 +21,7 @@ export function extractShortcuts(items) {
21
21
  traverse(items.flat());
22
22
  return shortcuts;
23
23
  }
24
+ // @__NO_SIDE_EFFECTS__
24
25
  export function defineShortcuts(config, options = {}) {
25
26
  const chainedInputs = ref([]);
26
27
  const clearChainedInput = () => {
@@ -22,6 +22,6 @@ export interface UseComponentIconsProps {
22
22
  export declare function useComponentIcons(componentProps: MaybeRefOrGetter<UseComponentIconsProps>): {
23
23
  isLeading: import("vue").ComputedRef<any>;
24
24
  isTrailing: import("vue").ComputedRef<boolean>;
25
- leadingIconName: import("vue").ComputedRef<IconComponent | undefined>;
26
- trailingIconName: import("vue").ComputedRef<IconComponent | undefined>;
25
+ leadingIconName: import("vue").ComputedRef<import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}> | undefined>;
26
+ trailingIconName: import("vue").ComputedRef<import("vue").FunctionalComponent<import("vue").HTMLAttributes & import("vue").VNodeProps, {}, any, {}> | undefined>;
27
27
  };
@@ -49,4 +49,4 @@ const _useKbd = () => {
49
49
  getKbdKey
50
50
  };
51
51
  };
52
- export const useKbd = createSharedComposable(_useKbd);
52
+ export const useKbd = /* @__PURE__ */ createSharedComposable(_useKbd);
@@ -2,9 +2,9 @@ import { computed, inject, toRef } from "vue";
2
2
  import { createSharedComposable } from "@vueuse/core";
3
3
  import { buildLocaleContext } from "../utils/locale.js";
4
4
  import en from "../locale/en.js";
5
- export const localeContextInjectionKey = Symbol("bitrix24-ui.locale-context");
5
+ export const localeContextInjectionKey = Symbol.for("bitrix24-ui.locale-context");
6
6
  const _useLocale = (localeOverrides) => {
7
7
  const locale = localeOverrides || toRef(inject(localeContextInjectionKey));
8
8
  return buildLocaleContext(computed(() => locale.value || en));
9
9
  };
10
- export const useLocale = createSharedComposable(_useLocale);
10
+ export const useLocale = /* @__PURE__ */ createSharedComposable(_useLocale);
@@ -68,4 +68,4 @@ function _useOverlay() {
68
68
  unMount
69
69
  };
70
70
  }
71
- export const useOverlay = createSharedComposable(_useOverlay);
71
+ export const useOverlay = /* @__PURE__ */ createSharedComposable(_useOverlay);
@@ -9,6 +9,7 @@ export * from '../components/ButtonGroup.vue';
9
9
  export * from '../components/Calendar.vue';
10
10
  export * from '../components/Checkbox.vue';
11
11
  export * from '../components/Chip.vue';
12
+ export * from '../components/Collapsible.vue';
12
13
  export * from '../components/Container.vue';
13
14
  export * from '../components/Countdown.vue';
14
15
  export * from '../components/DescriptionList.vue';
@@ -22,6 +23,7 @@ export * from '../components/Kbd.vue';
22
23
  export * from '../components/Link.vue';
23
24
  export * from '../components/Modal.vue';
24
25
  export * from '../components/ModalDialogClose.vue';
26
+ export * from '../components/NavigationMenu.vue';
25
27
  export * from '../components/Popover.vue';
26
28
  export * from '../components/Progress.vue';
27
29
  export * from '../components/RadioGroup.vue';
@@ -9,6 +9,7 @@ export * from "../components/ButtonGroup.vue";
9
9
  export * from "../components/Calendar.vue";
10
10
  export * from "../components/Checkbox.vue";
11
11
  export * from "../components/Chip.vue";
12
+ export * from "../components/Collapsible.vue";
12
13
  export * from "../components/Container.vue";
13
14
  export * from "../components/Countdown.vue";
14
15
  export * from "../components/DescriptionList.vue";
@@ -22,6 +23,7 @@ export * from "../components/Kbd.vue";
22
23
  export * from "../components/Link.vue";
23
24
  export * from "../components/Modal.vue";
24
25
  export * from "../components/ModalDialogClose.vue";
26
+ export * from "../components/NavigationMenu.vue";
25
27
  export * from "../components/Popover.vue";
26
28
  export * from "../components/Progress.vue";
27
29
  export * from "../components/RadioGroup.vue";
@@ -1,4 +1,4 @@
1
1
  import { createTV } from "tailwind-variants";
2
2
  import _appConfig from "#build/app.config";
3
3
  const appConfigTv = _appConfig;
4
- export const tv = createTV(appConfigTv.b24ui?.tv);
4
+ export const tv = /* @__PURE__ */ createTV(appConfigTv.b24ui?.tv);
@@ -1635,6 +1635,16 @@ const chip = {
1635
1635
  }
1636
1636
  };
1637
1637
 
1638
+ const collapsible = {
1639
+ slots: {
1640
+ root: "",
1641
+ content: [
1642
+ "motion-safe:data-[state=open]:animate-[collapsible-down_200ms_ease-out] motion-safe:data-[state=closed]:animate-[collapsible-up_200ms_ease-out]",
1643
+ "overflow-hidden"
1644
+ ].join(" ")
1645
+ }
1646
+ };
1647
+
1638
1648
  const container = {
1639
1649
  base: "max-w-[80rem] mx-auto px-5"
1640
1650
  // max-w-7xl w-full
@@ -3503,6 +3513,259 @@ const modal = {
3503
3513
  }
3504
3514
  };
3505
3515
 
3516
+ const navigationMenu = {
3517
+ slots: {
3518
+ root: "relative flex gap-1.5 [&>div]:min-w-0",
3519
+ list: "isolate min-w-0",
3520
+ label: "w-full flex items-center gap-1.5 font-semibold text-xs/5 text-(--ui-text-highlighted) px-2.5 py-1.5",
3521
+ item: "min-w-0",
3522
+ link: "group relative w-full flex items-center gap-1.5 font-medium text-sm before:absolute before:z-[-1] before:rounded-[calc(var(--ui-radius)*1.5)] focus:outline-none focus-visible:outline-none dark:focus-visible:outline-none focus-visible:before:ring-inset focus-visible:before:ring-2",
3523
+ linkLeadingIcon: "shrink-0 size-5",
3524
+ linkLeadingAvatar: "shrink-0",
3525
+ linkLeadingAvatarSize: "2xs",
3526
+ linkTrailing: "ms-auto inline-flex gap-1.5 items-center",
3527
+ linkTrailingBadge: "shrink-0",
3528
+ linkTrailingBadgeSize: "sm",
3529
+ linkTrailingIcon: "size-5 transform shrink-0 group-data-[state=open]:rotate-180 transition-transform duration-200",
3530
+ linkLabel: "truncate",
3531
+ linkLabelExternalIcon: "inline-block size-3 align-top text-(--ui-text-dimmed)",
3532
+ childList: "",
3533
+ childItem: "",
3534
+ childLink: "group size-full px-3 py-2 rounded-[calc(var(--ui-radius)*1.5)] flex items-start gap-2 text-start",
3535
+ childLinkWrapper: "flex flex-col items-start",
3536
+ childLinkIcon: "size-5 shrink-0",
3537
+ childLinkLabel: "font-semibold text-sm relative inline-flex",
3538
+ childLinkLabelExternalIcon: "inline-block size-3 align-top text-(--ui-text-dimmed)",
3539
+ childLinkDescription: "text-sm text-(--ui-text-muted)",
3540
+ separator: "px-2 h-px bg-(--ui-border)",
3541
+ viewportWrapper: "absolute top-full left-0 flex w-full",
3542
+ viewport: "relative overflow-hidden bg-(--ui-bg) shadow-lg rounded-[calc(var(--ui-radius)*1.5)] ring ring-(--ui-border) h-(--reka-navigation-menu-viewport-height) w-full transition-[width,height,left] duration-200 origin-[top_center] data-[state=open]:animate-[scale-in_100ms_ease-out] data-[state=closed]:animate-[scale-out_100ms_ease-in]",
3543
+ content: "absolute top-0 left-0 w-full",
3544
+ indicator: "absolute data-[state=visible]:animate-[fade-in_100ms_ease-out] data-[state=hidden]:animate-[fade-out_100ms_ease-in] data-[state=hidden]:opacity-0 bottom-0 z-[1] w-(--reka-navigation-menu-indicator-size) translate-x-(--reka-navigation-menu-indicator-position) flex h-2.5 items-end justify-center overflow-hidden transition-[translate,width] duration-200",
3545
+ arrow: "relative top-[50%] size-2.5 rotate-45 border border-(--ui-border) bg-(--ui-bg) z-[1] rounded-[calc(var(--ui-radius)/2)]"
3546
+ },
3547
+ variants: {
3548
+ color: {
3549
+ default: {
3550
+ link: "focus-visible:before:ring-(--ui-border-inverted)",
3551
+ childLink: "focus-visible:outline-(--ui-border-inverted)"
3552
+ }
3553
+ },
3554
+ highlightColor: {
3555
+ default: ""
3556
+ },
3557
+ variant: {
3558
+ pill: "",
3559
+ link: ""
3560
+ },
3561
+ orientation: {
3562
+ horizontal: {
3563
+ root: "items-center justify-between",
3564
+ list: "flex items-center",
3565
+ item: "py-2",
3566
+ link: "px-2.5 py-1.5 before:inset-x-px before:inset-y-0",
3567
+ childList: "grid p-2"
3568
+ },
3569
+ vertical: {
3570
+ root: "flex-col",
3571
+ link: "flex-row px-2.5 py-1.5 before:inset-y-px before:inset-x-0"
3572
+ }
3573
+ },
3574
+ contentOrientation: {
3575
+ horizontal: {
3576
+ viewport: "",
3577
+ viewportWrapper: "justify-center",
3578
+ content: "data-[motion=from-start]:animate-[enter-from-left_200ms_ease] data-[motion=from-end]:animate-[enter-from-right_200ms_ease] data-[motion=to-start]:animate-[exit-to-left_200ms_ease] data-[motion=to-end]:animate-[exit-to-right_200ms_ease]"
3579
+ },
3580
+ vertical: {
3581
+ viewport: "sm:w-(--reka-navigation-menu-viewport-width) left-(--reka-navigation-menu-viewport-left)",
3582
+ content: ""
3583
+ }
3584
+ },
3585
+ active: {
3586
+ true: {
3587
+ childLink: "bg-(--ui-bg-elevated) text-(--ui-text-highlighted)",
3588
+ childLinkIcon: "text-(--ui-text)"
3589
+ },
3590
+ false: {
3591
+ link: "text-(--ui-text-muted)",
3592
+ linkLeadingIcon: "text-(--ui-text-dimmed)",
3593
+ childLink: ["hover:bg-(--ui-bg-elevated)/50 text-(--ui-text) hover:text-(--ui-text-highlighted)", "transition-colors"],
3594
+ childLinkIcon: ["text-(--ui-text-dimmed) group-hover:text-(--ui-text)", "transition-colors"]
3595
+ }
3596
+ },
3597
+ disabled: {
3598
+ true: {
3599
+ link: "cursor-not-allowed opacity-75"
3600
+ }
3601
+ },
3602
+ highlight: {
3603
+ true: ""
3604
+ },
3605
+ level: {
3606
+ true: ""
3607
+ },
3608
+ collapsed: {
3609
+ true: ""
3610
+ }
3611
+ },
3612
+ compoundVariants: [
3613
+ {
3614
+ orientation: "horizontal",
3615
+ contentOrientation: "horizontal",
3616
+ class: {
3617
+ childList: "grid-cols-2 gap-2"
3618
+ }
3619
+ },
3620
+ {
3621
+ orientation: "horizontal",
3622
+ contentOrientation: "vertical",
3623
+ class: {
3624
+ childList: "gap-1",
3625
+ content: "w-60"
3626
+ }
3627
+ },
3628
+ {
3629
+ orientation: "horizontal",
3630
+ highlight: true,
3631
+ class: {
3632
+ link: ["after:absolute after:-bottom-2 after:inset-x-2.5 after:block after:h-px after:rounded-full", "after:transition-colors"]
3633
+ }
3634
+ },
3635
+ {
3636
+ orientation: "vertical",
3637
+ highlight: true,
3638
+ level: true,
3639
+ class: {
3640
+ link: ["after:absolute after:-start-1.5 after:inset-y-0.5 after:block after:w-px after:rounded-full", "after:transition-colors"]
3641
+ }
3642
+ },
3643
+ {
3644
+ disabled: false,
3645
+ active: false,
3646
+ variant: "pill",
3647
+ class: {
3648
+ link: ["hover:text-(--ui-text-highlighted) hover:before:bg-(--ui-bg-elevated)/50", "transition-colors before:transition-colors"],
3649
+ linkLeadingIcon: ["group-hover:text-(--ui-text)", "transition-colors"]
3650
+ }
3651
+ },
3652
+ {
3653
+ disabled: false,
3654
+ active: false,
3655
+ variant: "pill",
3656
+ orientation: "horizontal",
3657
+ class: {
3658
+ link: "data-[state=open]:text-(--ui-text-highlighted)",
3659
+ linkLeadingIcon: "group-data-[state=open]:text-(--ui-text)"
3660
+ }
3661
+ },
3662
+ {
3663
+ disabled: false,
3664
+ variant: "pill",
3665
+ highlight: true,
3666
+ orientation: "horizontal",
3667
+ class: {
3668
+ link: "data-[state=open]:before:bg-(--ui-bg-elevated)/50"
3669
+ }
3670
+ },
3671
+ {
3672
+ disabled: false,
3673
+ variant: "pill",
3674
+ highlight: false,
3675
+ active: false,
3676
+ orientation: "horizontal",
3677
+ class: {
3678
+ link: "data-[state=open]:before:bg-(--ui-bg-elevated)/50"
3679
+ }
3680
+ },
3681
+ {
3682
+ color: "default",
3683
+ variant: "pill",
3684
+ active: true,
3685
+ class: {
3686
+ link: "text-(--ui-text-highlighted)",
3687
+ linkLeadingIcon: "text-(--ui-text-highlighted) group-data-[state=open]:text-(--ui-text-highlighted)"
3688
+ }
3689
+ },
3690
+ {
3691
+ variant: "pill",
3692
+ active: true,
3693
+ highlight: false,
3694
+ class: {
3695
+ link: "before:bg-(--ui-bg-elevated)"
3696
+ }
3697
+ },
3698
+ {
3699
+ variant: "pill",
3700
+ active: true,
3701
+ highlight: true,
3702
+ class: {
3703
+ link: ["hover:before:bg-(--ui-bg-elevated)/50", "before:transition-colors"]
3704
+ }
3705
+ },
3706
+ {
3707
+ disabled: false,
3708
+ active: false,
3709
+ variant: "link",
3710
+ class: {
3711
+ link: ["hover:text-(--ui-text-highlighted)", "transition-colors"],
3712
+ linkLeadingIcon: ["group-hover:text-(--ui-text)", "transition-colors"]
3713
+ }
3714
+ },
3715
+ {
3716
+ disabled: false,
3717
+ active: false,
3718
+ variant: "link",
3719
+ orientation: "horizontal",
3720
+ class: {
3721
+ link: "data-[state=open]:text-(--ui-text-highlighted)",
3722
+ linkLeadingIcon: "group-data-[state=open]:text-(--ui-text)"
3723
+ }
3724
+ },
3725
+ {
3726
+ color: "default",
3727
+ variant: "link",
3728
+ active: true,
3729
+ class: {
3730
+ link: "text-(--ui-text-highlighted)",
3731
+ linkLeadingIcon: "text-(--ui-text-highlighted) group-data-[state=open]:text-(--ui-text-highlighted)"
3732
+ }
3733
+ },
3734
+ {
3735
+ highlightColor: "default",
3736
+ highlight: true,
3737
+ level: true,
3738
+ active: true,
3739
+ class: {
3740
+ link: "after:bg-(--ui-bg-inverted)"
3741
+ }
3742
+ },
3743
+ {
3744
+ orientation: "vertical",
3745
+ collapsed: false,
3746
+ class: {
3747
+ childList: "ms-5 border-s border-(--ui-border)",
3748
+ childItem: "ps-1.5 -ms-px"
3749
+ }
3750
+ },
3751
+ {
3752
+ orientation: "vertical",
3753
+ collapsed: true,
3754
+ class: {
3755
+ link: "px-1.5"
3756
+ }
3757
+ }
3758
+ ],
3759
+ defaultVariants: {
3760
+ /**
3761
+ * @todo change to primary
3762
+ */
3763
+ color: "default",
3764
+ highlightColor: "default",
3765
+ variant: "pill"
3766
+ }
3767
+ };
3768
+
3506
3769
  const popover = {
3507
3770
  slots: {
3508
3771
  content: [
@@ -5624,6 +5887,7 @@ const theme = {
5624
5887
  calendar: calendar,
5625
5888
  checkbox: checkbox,
5626
5889
  chip: chip,
5890
+ collapsible: collapsible,
5627
5891
  container: container,
5628
5892
  countdown: countdown,
5629
5893
  descriptionList: descriptionList,
@@ -5640,6 +5904,7 @@ const theme = {
5640
5904
  navbarDivider: navbarDivider,
5641
5905
  navbarSection: navbarSection,
5642
5906
  navbarSpacer: navbarSpacer,
5907
+ navigationMenu: navigationMenu,
5643
5908
  popover: popover,
5644
5909
  progress: progress,
5645
5910
  radioGroup: radioGroup,