@bitrix24/b24ui-nuxt 2.1.2 → 2.1.4

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 (144) hide show
  1. package/cli/templates.mjs +2 -2
  2. package/dist/meta.d.mts +1321 -192
  3. package/dist/meta.mjs +1321 -192
  4. package/dist/module.json +1 -1
  5. package/dist/module.mjs +1 -1
  6. package/dist/runtime/components/Accordion.vue +9 -4
  7. package/dist/runtime/components/Advice.vue +9 -5
  8. package/dist/runtime/components/Alert.vue +9 -7
  9. package/dist/runtime/components/Avatar.vue +4 -2
  10. package/dist/runtime/components/AvatarGroup.vue +3 -3
  11. package/dist/runtime/components/Badge.vue +6 -1
  12. package/dist/runtime/components/Banner.vue +9 -8
  13. package/dist/runtime/components/Breadcrumb.vue +9 -4
  14. package/dist/runtime/components/Button.vue +12 -9
  15. package/dist/runtime/components/Calendar.vue +11 -5
  16. package/dist/runtime/components/Card.vue +4 -4
  17. package/dist/runtime/components/ChatMessage.vue +7 -5
  18. package/dist/runtime/components/ChatMessages.vue +4 -2
  19. package/dist/runtime/components/ChatPalette.vue +3 -3
  20. package/dist/runtime/components/ChatPrompt.vue +4 -3
  21. package/dist/runtime/components/ChatPromptSubmit.vue +1 -0
  22. package/dist/runtime/components/Checkbox.vue +9 -7
  23. package/dist/runtime/components/CheckboxGroup.vue +4 -2
  24. package/dist/runtime/components/Chip.vue +3 -0
  25. package/dist/runtime/components/Collapsible.vue +2 -2
  26. package/dist/runtime/components/ColorPicker.vue +7 -3
  27. package/dist/runtime/components/CommandPalette.vue +68 -23
  28. package/dist/runtime/components/ContextMenu.vue +1 -0
  29. package/dist/runtime/components/ContextMenuContent.vue +19 -6
  30. package/dist/runtime/components/Countdown.vue +8 -1
  31. package/dist/runtime/components/DashboardSearch.vue +1 -0
  32. package/dist/runtime/components/DashboardSearchButton.vue +2 -1
  33. package/dist/runtime/components/DescriptionList.vue +12 -4
  34. package/dist/runtime/components/DropdownMenu.vue +2 -1
  35. package/dist/runtime/components/DropdownMenuContent.vue +21 -7
  36. package/dist/runtime/components/Empty.vue +9 -8
  37. package/dist/runtime/components/Error.vue +5 -5
  38. package/dist/runtime/components/FileUpload.vue +15 -8
  39. package/dist/runtime/components/FormField.vue +11 -11
  40. package/dist/runtime/components/Input.vue +8 -3
  41. package/dist/runtime/components/InputDate.vue +9 -2
  42. package/dist/runtime/components/InputMenu.vue +50 -32
  43. package/dist/runtime/components/InputNumber.vue +5 -2
  44. package/dist/runtime/components/InputTags.vue +12 -3
  45. package/dist/runtime/components/InputTime.vue +8 -2
  46. package/dist/runtime/components/Kbd.vue +1 -1
  47. package/dist/runtime/components/Modal.vue +11 -8
  48. package/dist/runtime/components/Navbar.vue +1 -1
  49. package/dist/runtime/components/NavbarDivider.vue +1 -1
  50. package/dist/runtime/components/NavbarSection.vue +2 -1
  51. package/dist/runtime/components/NavbarSpacer.vue +1 -1
  52. package/dist/runtime/components/NavigationMenu.vue +43 -12
  53. package/dist/runtime/components/PageCard.vue +10 -9
  54. package/dist/runtime/components/PageLinks.vue +9 -7
  55. package/dist/runtime/components/Pagination.vue +8 -8
  56. package/dist/runtime/components/PinInput.vue +2 -0
  57. package/dist/runtime/components/Popover.vue +2 -2
  58. package/dist/runtime/components/Progress.vue +6 -6
  59. package/dist/runtime/components/RadioGroup.d.vue.ts +2 -2
  60. package/dist/runtime/components/RadioGroup.vue +10 -4
  61. package/dist/runtime/components/RadioGroup.vue.d.ts +2 -2
  62. package/dist/runtime/components/Range.vue +5 -4
  63. package/dist/runtime/components/Select.vue +25 -11
  64. package/dist/runtime/components/SelectMenu.vue +47 -25
  65. package/dist/runtime/components/Separator.vue +7 -7
  66. package/dist/runtime/components/Sidebar.vue +1 -1
  67. package/dist/runtime/components/SidebarBody.vue +1 -1
  68. package/dist/runtime/components/SidebarFooter.vue +1 -1
  69. package/dist/runtime/components/SidebarHeader.vue +1 -1
  70. package/dist/runtime/components/SidebarHeading.vue +1 -1
  71. package/dist/runtime/components/SidebarLayout.vue +18 -13
  72. package/dist/runtime/components/SidebarSection.vue +2 -1
  73. package/dist/runtime/components/SidebarSpacer.vue +1 -1
  74. package/dist/runtime/components/Skeleton.vue +1 -0
  75. package/dist/runtime/components/Slideover.vue +10 -7
  76. package/dist/runtime/components/Stepper.vue +12 -9
  77. package/dist/runtime/components/Switch.vue +10 -6
  78. package/dist/runtime/components/Table.d.vue.ts +2 -2
  79. package/dist/runtime/components/Table.vue +33 -15
  80. package/dist/runtime/components/Table.vue.d.ts +2 -2
  81. package/dist/runtime/components/TableWrapper.vue +1 -0
  82. package/dist/runtime/components/Tabs.d.vue.ts +3 -3
  83. package/dist/runtime/components/Tabs.vue +24 -15
  84. package/dist/runtime/components/Tabs.vue.d.ts +3 -3
  85. package/dist/runtime/components/Textarea.vue +8 -3
  86. package/dist/runtime/components/Timeline.vue +9 -6
  87. package/dist/runtime/components/Toast.vue +10 -6
  88. package/dist/runtime/components/Toaster.vue +2 -0
  89. package/dist/runtime/components/Tooltip.vue +4 -4
  90. package/dist/runtime/components/User.vue +13 -6
  91. package/dist/runtime/components/color-mode/ColorModeButton.d.vue.ts +2 -9
  92. package/dist/runtime/components/color-mode/ColorModeButton.vue +8 -13
  93. package/dist/runtime/components/color-mode/ColorModeButton.vue.d.ts +2 -9
  94. package/dist/runtime/components/content/ContentSearch.vue +59 -68
  95. package/dist/runtime/components/content/ContentSearchButton.vue +2 -1
  96. package/dist/runtime/components/content/ContentSurround.vue +6 -4
  97. package/dist/runtime/components/content/ContentToc.vue +13 -10
  98. package/dist/runtime/components/prose/A.vue +1 -1
  99. package/dist/runtime/components/prose/Blockquote.vue +1 -1
  100. package/dist/runtime/components/prose/Callout.vue +4 -1
  101. package/dist/runtime/components/prose/Card.vue +5 -3
  102. package/dist/runtime/components/prose/Code.vue +1 -0
  103. package/dist/runtime/components/prose/CodeCollapse.vue +3 -2
  104. package/dist/runtime/components/prose/CodeGroup.vue +6 -6
  105. package/dist/runtime/components/prose/CodePreview.vue +3 -3
  106. package/dist/runtime/components/prose/Collapsible.vue +3 -2
  107. package/dist/runtime/components/prose/Em.vue +1 -1
  108. package/dist/runtime/components/prose/Field.vue +7 -7
  109. package/dist/runtime/components/prose/H1.vue +1 -0
  110. package/dist/runtime/components/prose/H2.vue +4 -2
  111. package/dist/runtime/components/prose/H3.vue +4 -2
  112. package/dist/runtime/components/prose/H4.vue +4 -2
  113. package/dist/runtime/components/prose/H5.vue +1 -0
  114. package/dist/runtime/components/prose/H6.vue +1 -0
  115. package/dist/runtime/components/prose/Hr.vue +1 -1
  116. package/dist/runtime/components/prose/Img.vue +4 -0
  117. package/dist/runtime/components/prose/Li.vue +1 -1
  118. package/dist/runtime/components/prose/Ol.vue +1 -1
  119. package/dist/runtime/components/prose/P.vue +1 -1
  120. package/dist/runtime/components/prose/Pre.vue +6 -5
  121. package/dist/runtime/components/prose/Strong.vue +1 -1
  122. package/dist/runtime/components/prose/Table.d.vue.ts +0 -3
  123. package/dist/runtime/components/prose/Table.vue +2 -1
  124. package/dist/runtime/components/prose/Table.vue.d.ts +0 -3
  125. package/dist/runtime/components/prose/Tbody.vue +1 -1
  126. package/dist/runtime/components/prose/Td.vue +1 -1
  127. package/dist/runtime/components/prose/Th.vue +1 -1
  128. package/dist/runtime/components/prose/Thead.vue +1 -1
  129. package/dist/runtime/components/prose/Tr.vue +1 -1
  130. package/dist/runtime/components/prose/Ul.vue +1 -1
  131. package/dist/runtime/composables/useContentSearch.d.ts +5 -0
  132. package/dist/runtime/composables/useContentSearch.js +30 -1
  133. package/dist/runtime/inertia/stubs.js +1 -1
  134. package/dist/runtime/types/index.d.ts +3 -0
  135. package/dist/runtime/types/index.js +3 -0
  136. package/dist/runtime/utils/virtualizer.d.ts +6 -0
  137. package/dist/runtime/utils/virtualizer.js +32 -0
  138. package/dist/shared/{b24ui-nuxt.B9uYyQGR.mjs → b24ui-nuxt.Bs0V9FLV.mjs} +25 -19
  139. package/dist/unplugin.mjs +1 -1
  140. package/dist/vite.mjs +1 -1
  141. package/package.json +11 -11
  142. package/dist/runtime/vue/components/color-mode/ColorModeButton.d.vue.ts +0 -12
  143. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue +0 -83
  144. package/dist/runtime/vue/components/color-mode/ColorModeButton.vue.d.ts +0 -12
@@ -27,15 +27,16 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
27
27
  </script>
28
28
 
29
29
  <template>
30
- <div :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
30
+ <div data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
31
31
  <slot />
32
32
 
33
- <div :class="b24ui.footer({ class: props.b24ui?.footer })">
33
+ <div data-slot="footer" :class="b24ui.footer({ class: props.b24ui?.footer })">
34
34
  <B24Button
35
35
  :icon="icon || icons.chevronDown"
36
36
  color="air-secondary-accent-1"
37
37
  :data-state="open ? 'open' : 'closed'"
38
38
  :label="`${open ? props.closeText || t('prose.codeCollapse.closeText') : props.openText || t('prose.codeCollapse.openText')} ${props.name || t('prose.codeCollapse.name')}`"
39
+ data-slot="trigger"
39
40
  :class="b24ui.trigger({ class: props.b24ui?.trigger })"
40
41
  :b24ui="{ leadingIcon: b24ui.triggerIcon({ class: props.b24ui?.triggerIcon }) }"
41
42
  @click="open = !open"
@@ -52,14 +52,14 @@ onBeforeUpdate(() => rerenderCount.value++);
52
52
  </script>
53
53
 
54
54
  <template>
55
- <TabsRoot v-model="model" :default-value="defaultValue" :unmount-on-hide="false" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
56
- <TabsList :class="b24ui.list({ class: props.b24ui?.list })">
57
- <TabsIndicator :class="b24ui.indicator({ class: props.b24ui?.indicator })" />
55
+ <TabsRoot v-model="model" :default-value="defaultValue" :unmount-on-hide="false" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
56
+ <TabsList data-slot="list" :class="b24ui.list({ class: props.b24ui?.list })">
57
+ <TabsIndicator data-slot="indicator" :class="b24ui.indicator({ class: props.b24ui?.indicator })" />
58
58
 
59
- <TabsTrigger v-for="(item, index) of items" :key="index" :value="String(index)" :class="b24ui.trigger({ class: props.b24ui?.trigger })">
60
- <B24CodeIcon :icon="item.icon" :filename="item.label" :class="b24ui.triggerIcon({ class: props.b24ui?.triggerIcon })" />
59
+ <TabsTrigger v-for="(item, index) of items" :key="index" :value="String(index)" data-slot="trigger" :class="b24ui.trigger({ class: props.b24ui?.trigger })">
60
+ <B24CodeIcon :icon="item.icon" :filename="item.label" data-slot="triggerIcon" :class="b24ui.triggerIcon({ class: props.b24ui?.triggerIcon })" />
61
61
 
62
- <span :class="b24ui.triggerLabel({ class: props.b24ui?.triggerLabel })">{{ item.label }}</span>
62
+ <span data-slot="triggerLabel" :class="b24ui.triggerLabel({ class: props.b24ui?.triggerLabel })">{{ item.label }}</span>
63
63
  </TabsTrigger>
64
64
  </TabsList>
65
65
 
@@ -16,12 +16,12 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <div :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
20
- <div :class="b24ui.preview({ class: [props.b24ui?.preview] })">
19
+ <div data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
20
+ <div data-slot="preview" :class="b24ui.preview({ class: [props.b24ui?.preview] })">
21
21
  <slot />
22
22
  </div>
23
23
 
24
- <div v-if="!!slots.code" :class="b24ui.code({ class: [props.b24ui?.code] })">
24
+ <div v-if="!!slots.code" data-slot="code" :class="b24ui.code({ class: [props.b24ui?.code] })">
25
25
  <slot name="code" />
26
26
  </div>
27
27
  </div>
@@ -27,12 +27,13 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
27
27
  <template>
28
28
  <B24Collapsible :unmount-on-hide="false" :class="props.class" :b24ui="transformUI(b24ui, props.b24ui)">
29
29
  <template #default="{ open }">
30
- <button :class="b24ui.trigger({ class: props.b24ui?.trigger })">
30
+ <button data-slot="trigger" :class="b24ui.trigger({ class: props.b24ui?.trigger })">
31
31
  <Component
32
32
  :is="icon || icons.chevronDown"
33
+ data-slot="triggerIcon"
33
34
  :class="b24ui.triggerIcon({ class: props.b24ui?.triggerIcon })"
34
35
  />
35
- <span :class="b24ui.triggerLabel({ class: props.b24ui?.triggerLabel })">
36
+ <span data-slot="triggerLabel" :class="b24ui.triggerLabel({ class: props.b24ui?.triggerLabel })">
36
37
  {{ open ? props.closeText || t("prose.collapsible.closeText") : props.openText || t("prose.collapsible.openText") }} {{ props.name || t("prose.collapsible.name") }}
37
38
  </span>
38
39
  </button>
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <em :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <em data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </em>
22
22
  </template>
@@ -22,24 +22,24 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
22
22
  </script>
23
23
 
24
24
  <template>
25
- <Primitive :as="as" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
26
- <div :class="b24ui.container({ class: props.b24ui?.container })">
27
- <span v-if="name" :class="b24ui.name({ class: props.b24ui?.name })">
25
+ <Primitive :as="as" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
26
+ <div data-slot="container" :class="b24ui.container({ class: props.b24ui?.container })">
27
+ <span v-if="name" data-slot="name" :class="b24ui.name({ class: props.b24ui?.name })">
28
28
  {{ name }}
29
29
  </span>
30
30
 
31
- <div v-if="type || required" :class="b24ui.wrapper({ class: props.b24ui?.wrapper })">
32
- <span v-if="type" :class="b24ui.type({ class: props.b24ui?.type })">
31
+ <div v-if="type || required" data-slot="wrapper" :class="b24ui.wrapper({ class: props.b24ui?.wrapper })">
32
+ <span v-if="type" data-slot="type" :class="b24ui.type({ class: props.b24ui?.type })">
33
33
  {{ type }}
34
34
  </span>
35
35
 
36
- <span v-if="required" :class="b24ui.required({ class: props.b24ui?.required })">
36
+ <span v-if="required" data-slot="required" :class="b24ui.required({ class: props.b24ui?.required })">
37
37
  required
38
38
  </span>
39
39
  </div>
40
40
  </div>
41
41
 
42
- <div v-if="!!slots.default || description" :class="b24ui.description({ class: props.b24ui?.description })">
42
+ <div v-if="!!slots.default || description" data-slot="description" :class="b24ui.description({ class: props.b24ui?.description })">
43
43
  <slot mdc-unwrap="p">
44
44
  {{ description }}
45
45
  </slot>
@@ -24,6 +24,7 @@ const generate = computed(() => props.id && typeof headings?.anchorLinks === "ob
24
24
  <template>
25
25
  <h1
26
26
  :id="id"
27
+ data-slot="base"
27
28
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
28
29
  >
29
30
  <a v-if="id && generate" :href="`#${id}`" :class="b24ui.link({ class: props.b24ui?.link })">
@@ -25,12 +25,14 @@ const generate = computed(() => props.id && typeof headings?.anchorLinks === "ob
25
25
  <template>
26
26
  <h2
27
27
  :id="id"
28
+ data-slot="base"
28
29
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
29
30
  >
30
- <a v-if="id && generate" :href="`#${id}`" :class="b24ui.link({ class: props.b24ui?.link })">
31
- <span :class="b24ui.leading({ class: props.b24ui?.leading })">
31
+ <a v-if="id && generate" :href="`#${id}`" data-slot="link" :class="b24ui.link({ class: props.b24ui?.link })">
32
+ <span data-slot="leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
32
33
  <Component
33
34
  :is="icons.hash"
35
+ data-slot="leadingIcon"
34
36
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
35
37
  />
36
38
  </span>
@@ -25,12 +25,14 @@ const generate = computed(() => props.id && typeof headings?.anchorLinks === "ob
25
25
  <template>
26
26
  <h3
27
27
  :id="id"
28
+ data-slot="base"
28
29
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
29
30
  >
30
- <a v-if="id && generate" :href="`#${id}`" :class="b24ui.link({ class: props.b24ui?.link })">
31
- <span :class="b24ui.leading({ class: props.b24ui?.leading })">
31
+ <a v-if="id && generate" :href="`#${id}`" data-slot="link" :class="b24ui.link({ class: props.b24ui?.link })">
32
+ <span data-slot="leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
32
33
  <Component
33
34
  :is="icons.hash"
35
+ data-slot="leadingIcon"
34
36
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
35
37
  />
36
38
  </span>
@@ -25,12 +25,14 @@ const generate = computed(() => props.id && typeof headings?.anchorLinks === "ob
25
25
  <template>
26
26
  <h4
27
27
  :id="id"
28
+ data-slot="base"
28
29
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
29
30
  >
30
- <a v-if="id && generate" :href="`#${id}`" :class="b24ui.link({ class: props.b24ui?.link })">
31
- <span :class="b24ui.leading({ class: props.b24ui?.leading })">
31
+ <a v-if="id && generate" :href="`#${id}`" data-slot="link" :class="b24ui.link({ class: props.b24ui?.link })">
32
+ <span data-slot="leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
32
33
  <Component
33
34
  :is="icons.hash"
35
+ data-slot="leadingIcon"
34
36
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
35
37
  />
36
38
  </span>
@@ -22,6 +22,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
22
22
  <template>
23
23
  <h5
24
24
  :id="id"
25
+ data-slot="base"
25
26
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
26
27
  >
27
28
  <slot />
@@ -22,6 +22,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
22
22
  <template>
23
23
  <h6
24
24
  :id="id"
25
+ data-slot="base"
25
26
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
26
27
  >
27
28
  <slot />
@@ -15,5 +15,5 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
15
15
  </script>
16
16
 
17
17
  <template>
18
- <hr :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
18
+ <hr data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
19
  </template>
@@ -48,6 +48,7 @@ if (props.zoom) {
48
48
  :width="width"
49
49
  :height="height"
50
50
  v-bind="$attrs"
51
+ data-slot="base"
51
52
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
52
53
  />
53
54
  </DefineImageTemplate>
@@ -58,6 +59,7 @@ if (props.zoom) {
58
59
  :src="refinedSrc"
59
60
  :alt="alt"
60
61
  v-bind="$attrs"
62
+ data-slot="zoomedImage"
61
63
  :class="b24ui.zoomedImage({ class: [props.b24ui?.zoomedImage] })"
62
64
  />
63
65
  </DefineZoomedImageTemplate>
@@ -81,11 +83,13 @@ if (props.zoom) {
81
83
  :initial="{ opacity: 0 }"
82
84
  :animate="{ opacity: 1 }"
83
85
  :exit="{ opacity: 0 }"
86
+ data-slot="overlay"
84
87
  :class="b24ui.overlay({ class: [props.b24ui?.overlay] })"
85
88
  />
86
89
 
87
90
  <div
88
91
  v-if="open"
92
+ data-slot="content"
89
93
  :class="b24ui.content({ class: [props.b24ui?.content] })"
90
94
  @click="close"
91
95
  >
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <li :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <li data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </li>
22
22
  </template>
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <ol :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <ol data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </ol>
22
22
  </template>
@@ -21,7 +21,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
21
21
  </script>
22
22
 
23
23
  <template>
24
- <p :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
24
+ <p data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
25
25
  <slot />
26
26
  </p>
27
27
  </template>
@@ -31,17 +31,18 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
31
31
  </script>
32
32
 
33
33
  <template>
34
- <div :class="b24ui.root({ class: [props.b24ui?.root], filename: !!filename })">
35
- <div v-if="filename && !hideHeader" :class="b24ui.header({ class: props.b24ui?.header })">
36
- <B24CodeIcon :icon="icon" :filename="filename" :class="b24ui.icon({ class: props.b24ui?.icon })" />
34
+ <div data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root], filename: !!filename })">
35
+ <div v-if="filename && !hideHeader" data-slot="header" :class="b24ui.header({ class: props.b24ui?.header })">
36
+ <B24CodeIcon :icon="icon" :filename="filename" data-slot="icon" :class="b24ui.icon({ class: props.b24ui?.icon })" />
37
37
 
38
- <span :class="b24ui.filename({ class: props.b24ui?.filename })">{{ filename }}</span>
38
+ <span data-slot="filename" :class="b24ui.filename({ class: props.b24ui?.filename })">{{ filename }}</span>
39
39
  </div>
40
40
 
41
41
  <B24Button
42
42
  color="air-secondary-no-accent"
43
43
  size="sm"
44
44
  :aria-label="t('prose.pre.copy')"
45
+ data-slot="copy"
45
46
  :class="b24ui.copy({ class: props.b24ui?.copy })"
46
47
  tabindex="-1"
47
48
  :icon="copied ? icons.copyCheck : icons.copy"
@@ -51,7 +52,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
51
52
  @click="copy(props.code || '')"
52
53
  />
53
54
 
54
- <pre :class="b24ui.base({ class: [props.b24ui?.base, props.class] })" v-bind="$attrs"><slot /></pre>
55
+ <pre data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })" v-bind="$attrs"><slot /></pre>
55
56
  </div>
56
57
  </template>
57
58
 
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <strong :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <strong data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </strong>
22
22
  </template>
@@ -27,9 +27,6 @@ export interface ProseTableProps {
27
27
  class?: any;
28
28
  b24ui?: ProseTable['slots'];
29
29
  }
30
- /**
31
- * @todo add Pick<Xxxx
32
- */
33
30
  export interface ProseTableSlots {
34
31
  default(props?: {}): any;
35
32
  }
@@ -25,6 +25,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
25
25
  <template>
26
26
  <B24TableWrapper
27
27
  :as="as"
28
+ data-slot="root"
28
29
  :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
29
30
  :zebra="props.zebra"
30
31
  :row-hover="props.rowHover"
@@ -32,7 +33,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
32
33
  :bordered="props.bordered"
33
34
  size="sm"
34
35
  >
35
- <table :class="b24ui.base({ class: props.b24ui?.base })">
36
+ <table data-slot="base" :class="b24ui.base({ class: props.b24ui?.base })">
36
37
  <slot />
37
38
  </table>
38
39
  </B24TableWrapper>
@@ -27,9 +27,6 @@ export interface ProseTableProps {
27
27
  class?: any;
28
28
  b24ui?: ProseTable['slots'];
29
29
  }
30
- /**
31
- * @todo add Pick<Xxxx
32
- */
33
30
  export interface ProseTableSlots {
34
31
  default(props?: {}): any;
35
32
  }
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <tbody :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <tbody data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </tbody>
22
22
  </template>
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <td :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <td data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </td>
22
22
  </template>
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <th :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <th data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </th>
22
22
  </template>
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <thead :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <thead data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </thead>
22
22
  </template>
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <tr :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <tr data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </tr>
22
22
  </template>
@@ -16,7 +16,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.prose?.
16
16
  </script>
17
17
 
18
18
  <template>
19
- <ul :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
19
+ <ul data-slot="base" :class="b24ui.base({ class: [props.b24ui?.base, props.class] })">
20
20
  <slot />
21
21
  </ul>
22
22
  </template>
@@ -1,5 +1,10 @@
1
+ import type { ContentNavigationItem } from '@nuxt/content';
2
+ import type { ContentSearchFile, ContentSearchItem } from '../components/content/ContentSearch.vue';
1
3
  declare function _useContentSearch(): {
2
4
  open: import("vue").Ref<boolean, boolean>;
5
+ mapFile: (file: ContentSearchFile, link: ContentNavigationItem, parent?: ContentNavigationItem) => ContentSearchItem;
6
+ mapNavigationItems: (children: ContentNavigationItem[], files: ContentSearchFile[], parent?: ContentNavigationItem) => ContentSearchItem[];
7
+ postFilter: (query: string, items: ContentSearchItem[]) => ContentSearchItem[];
3
8
  };
4
9
  export declare const useContentSearch: typeof _useContentSearch;
5
10
  export {};
@@ -1,9 +1,38 @@
1
1
  import { ref } from "vue";
2
2
  import { createSharedComposable } from "@vueuse/core";
3
+ import icons from "../dictionary/icons.js";
3
4
  function _useContentSearch() {
4
5
  const open = ref(false);
6
+ function mapFile(file, link, parent) {
7
+ const prefix = [...new Set([parent?.title, ...file.titles].filter(Boolean))];
8
+ return {
9
+ prefix: prefix?.length ? prefix.join(" > ") + " >" : void 0,
10
+ label: file.id === link.path ? link.title : file.title,
11
+ suffix: file.content.replaceAll("<", "&lt;").replaceAll(">", "&gt;"),
12
+ to: file.id,
13
+ icon: link.icon || parent?.icon || (file.level > 1 ? icons.hash : icons.file),
14
+ level: file.level
15
+ };
16
+ }
17
+ function mapNavigationItems(children, files, parent) {
18
+ return children.flatMap((link) => {
19
+ if (link.children?.length) {
20
+ return mapNavigationItems(link.children, files, link);
21
+ }
22
+ return files?.filter((file) => file.id === link.path || file.id.startsWith(`${link.path}#`))?.map((file) => mapFile(file, link, parent)) || [];
23
+ });
24
+ }
25
+ function postFilter(query, items) {
26
+ if (!query) {
27
+ return items?.filter((item) => item.level === 1);
28
+ }
29
+ return items;
30
+ }
5
31
  return {
6
- open
32
+ open,
33
+ mapFile,
34
+ mapNavigationItems,
35
+ postFilter
7
36
  };
8
37
  }
9
38
  export const useContentSearch = /* @__PURE__ */ createSharedComposable(_useContentSearch);
@@ -74,7 +74,7 @@ const hooks = createHooks();
74
74
  export function useNuxtApp() {
75
75
  return {
76
76
  isHydrating: true,
77
- payload: { serverRendered: false },
77
+ payload: { serverRendered: typeof window === "undefined" },
78
78
  hooks,
79
79
  hook: hooks.hook
80
80
  };
@@ -91,7 +91,10 @@ export * from '../components/color-mode/ColorModeImage.vue';
91
91
  export * from '../components/color-mode/ColorModeSelect.vue';
92
92
  export * from '../components/color-mode/ColorModeSwitch.vue';
93
93
  export * from '../components/locale/LocaleSelect.vue';
94
+ export * from './content';
94
95
  export * from './form';
95
96
  export * from './icons';
96
97
  export * from './locale';
98
+ export * from './prose';
97
99
  export * from './color-mode';
100
+ export * from './utils';
@@ -91,7 +91,10 @@ export * from "../components/color-mode/ColorModeImage.vue";
91
91
  export * from "../components/color-mode/ColorModeSelect.vue";
92
92
  export * from "../components/color-mode/ColorModeSwitch.vue";
93
93
  export * from "../components/locale/LocaleSelect.vue";
94
+ export * from "./content.js";
94
95
  export * from "./form.js";
95
96
  export * from "./icons.js";
96
97
  export * from "./locale.js";
98
+ export * from "./prose.js";
97
99
  export * from "./color-mode.js";
100
+ export * from "./utils.js";
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Get estimate size for virtualizers that checks each item individually
3
+ * NOTE: This requires Reka UI to support functions for estimateSize (https://github.com/unovue/reka-ui/pull/2288)
4
+ * Until then, we check if ANY item has a description and use that for all items
5
+ */
6
+ export declare function getEstimateSize(items: any[], size: 'xss' | 'xs' | 'sm' | 'md' | 'lg' | 'xl', descriptionKey?: string): number;
@@ -0,0 +1,32 @@
1
+ import { get } from "./index.js";
2
+ function hasDescription(item, descriptionKey) {
3
+ if (typeof item !== "object" || item === null) {
4
+ return false;
5
+ }
6
+ const value = get(item, descriptionKey);
7
+ return value !== void 0 && value !== null && value !== "";
8
+ }
9
+ function getSize(size, hasDescription2) {
10
+ if (hasDescription2) {
11
+ return {
12
+ xss: 40,
13
+ xs: 44,
14
+ sm: 48,
15
+ md: 52,
16
+ lg: 56,
17
+ xl: 60
18
+ }[size];
19
+ }
20
+ return {
21
+ xss: 20,
22
+ xs: 24,
23
+ sm: 28,
24
+ md: 32,
25
+ lg: 36,
26
+ xl: 40
27
+ }[size];
28
+ }
29
+ export function getEstimateSize(items, size, descriptionKey) {
30
+ const anyHasDescription = descriptionKey ? items.some((item) => hasDescription(item, descriptionKey)) : false;
31
+ return getSize(size, anyHasDescription);
32
+ }
@@ -8,7 +8,7 @@ import { globSync } from 'tinyglobby';
8
8
  import { defuFn } from 'defu';
9
9
 
10
10
  const name = "@bitrix24/b24ui-nuxt";
11
- const version = "2.1.2";
11
+ const version = "2.1.4";
12
12
 
13
13
  function getDefaultConfig(theme) {
14
14
  return {
@@ -102,30 +102,32 @@ function resolveComponentDependencies(component, dependencyGraph, resolved = /*
102
102
  }
103
103
  return resolved;
104
104
  }
105
- async function detectUsedComponents(rootDir, prefix, componentDir, includeComponents) {
105
+ async function detectUsedComponents(dirs, prefix, componentDir, includeComponents) {
106
106
  const detectedComponents = /* @__PURE__ */ new Set();
107
107
  if (includeComponents && includeComponents.length > 0) {
108
108
  for (const component of includeComponents) {
109
109
  detectedComponents.add(component);
110
110
  }
111
111
  }
112
- const appFiles = globSync(["**/*.{vue,ts,js,tsx,jsx}"], {
113
- cwd: rootDir,
114
- ignore: ["node_modules/**", ".nuxt/**", "dist/**"]
115
- });
116
112
  const componentPattern = new RegExp(`<(?:Lazy)?${prefix}([A-Z][a-zA-Z]+)|\\b(?:Lazy)?${prefix}([A-Z][a-zA-Z]+)\\b`, "g");
117
- for (const file of appFiles) {
118
- try {
119
- const filePath = join(rootDir, file);
120
- const content = await readFile(filePath, "utf-8");
121
- const matches = content.matchAll(componentPattern);
122
- for (const match of matches) {
123
- const componentName = match[1] || match[2];
124
- if (componentName) {
125
- detectedComponents.add(componentName);
113
+ for (const dir of dirs) {
114
+ const appFiles = globSync(["**/*.{vue,ts,js,tsx,jsx}"], {
115
+ cwd: dir,
116
+ ignore: ["node_modules/**", ".nuxt/**", "dist/**"]
117
+ });
118
+ for (const file of appFiles) {
119
+ try {
120
+ const filePath = join(dir, file);
121
+ const content = await readFile(filePath, "utf-8");
122
+ const matches = content.matchAll(componentPattern);
123
+ for (const match of matches) {
124
+ const componentName = match[1] || match[2];
125
+ if (componentName) {
126
+ detectedComponents.add(componentName);
127
+ }
126
128
  }
129
+ } catch {
127
130
  }
128
- } catch {
129
131
  }
130
132
  }
131
133
  if (detectedComponents.size === 0) {
@@ -8927,7 +8929,7 @@ const sidebarHeader = {
8927
8929
  "flex flex-col",
8928
8930
  "text-(--ui-color-base-1)",
8929
8931
  "border-b border-(--leftmenu-bg-divider)",
8930
- "[&>[data-slot=section]+[data-slot=section]]:mt-2.5"
8932
+ "[&>[data-component=section]+[data-component=section]]:mt-2.5"
8931
8933
  ].join(" ")
8932
8934
  }
8933
8935
  };
@@ -8960,7 +8962,7 @@ const sidebarFooter = {
8960
8962
  "flex flex-col",
8961
8963
  "max-lg:hidden",
8962
8964
  // 'border-t border-(--leftmenu-bg-divider)',
8963
- "[&>[data-slot=section]+[data-slot=section]]:mt-2.5"
8965
+ "[&>[data-component=section]+[data-component=section]]:mt-2.5"
8964
8966
  ].join(" ")
8965
8967
  }
8966
8968
  };
@@ -10343,8 +10345,12 @@ function getTemplates(options, uiConfig, nuxt, resolve) {
10343
10345
  async function generateSources() {
10344
10346
  let sources = "";
10345
10347
  if (!!nuxt && !!resolve && options.experimental?.componentDetection) {
10346
- const detectedComponents = await detectUsedComponents(
10348
+ const dirs = [.../* @__PURE__ */ new Set([
10347
10349
  nuxt.options.rootDir,
10350
+ ...nuxt.options._layers?.map((layer) => layer.config.rootDir).filter(Boolean) || []
10351
+ ])];
10352
+ const detectedComponents = await detectUsedComponents(
10353
+ dirs,
10348
10354
  "B24",
10349
10355
  resolve("./runtime/components"),
10350
10356
  Array.isArray(options.experimental.componentDetection) ? options.experimental.componentDetection : void 0