@bitrix24/b24ui-nuxt 2.1.1 → 2.1.3

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 (143) hide show
  1. package/README.md +0 -4
  2. package/cli/templates.mjs +2 -2
  3. package/dist/meta.d.mts +1324 -178
  4. package/dist/meta.mjs +1324 -178
  5. package/dist/module.json +1 -1
  6. package/dist/module.mjs +10 -2
  7. package/dist/runtime/components/Accordion.vue +9 -4
  8. package/dist/runtime/components/Advice.vue +9 -5
  9. package/dist/runtime/components/Alert.vue +9 -7
  10. package/dist/runtime/components/Avatar.vue +4 -2
  11. package/dist/runtime/components/AvatarGroup.vue +3 -3
  12. package/dist/runtime/components/Badge.vue +6 -1
  13. package/dist/runtime/components/Banner.vue +9 -8
  14. package/dist/runtime/components/Breadcrumb.vue +9 -4
  15. package/dist/runtime/components/Button.vue +12 -9
  16. package/dist/runtime/components/Calendar.vue +11 -5
  17. package/dist/runtime/components/Card.vue +4 -4
  18. package/dist/runtime/components/ChatMessage.vue +7 -5
  19. package/dist/runtime/components/ChatMessages.vue +4 -2
  20. package/dist/runtime/components/ChatPalette.vue +3 -3
  21. package/dist/runtime/components/ChatPrompt.vue +4 -3
  22. package/dist/runtime/components/ChatPromptSubmit.vue +1 -0
  23. package/dist/runtime/components/Checkbox.vue +9 -7
  24. package/dist/runtime/components/CheckboxGroup.vue +4 -2
  25. package/dist/runtime/components/Chip.vue +3 -0
  26. package/dist/runtime/components/Collapsible.vue +2 -2
  27. package/dist/runtime/components/ColorPicker.vue +7 -3
  28. package/dist/runtime/components/CommandPalette.vue +60 -21
  29. package/dist/runtime/components/ContextMenu.vue +1 -0
  30. package/dist/runtime/components/ContextMenuContent.vue +19 -6
  31. package/dist/runtime/components/Countdown.vue +8 -1
  32. package/dist/runtime/components/DashboardSearch.vue +1 -0
  33. package/dist/runtime/components/DashboardSearchButton.vue +2 -1
  34. package/dist/runtime/components/DescriptionList.vue +12 -4
  35. package/dist/runtime/components/DropdownMenu.vue +2 -1
  36. package/dist/runtime/components/DropdownMenuContent.vue +21 -7
  37. package/dist/runtime/components/Empty.vue +9 -8
  38. package/dist/runtime/components/Error.vue +5 -5
  39. package/dist/runtime/components/FileUpload.d.vue.ts +5 -0
  40. package/dist/runtime/components/FileUpload.vue +17 -9
  41. package/dist/runtime/components/FileUpload.vue.d.ts +5 -0
  42. package/dist/runtime/components/FormField.vue +11 -11
  43. package/dist/runtime/components/Input.vue +8 -3
  44. package/dist/runtime/components/InputDate.vue +9 -2
  45. package/dist/runtime/components/InputMenu.vue +35 -19
  46. package/dist/runtime/components/InputNumber.vue +5 -2
  47. package/dist/runtime/components/InputTags.vue +12 -3
  48. package/dist/runtime/components/InputTime.vue +8 -2
  49. package/dist/runtime/components/Kbd.vue +1 -1
  50. package/dist/runtime/components/Modal.vue +11 -8
  51. package/dist/runtime/components/Navbar.vue +1 -1
  52. package/dist/runtime/components/NavbarDivider.vue +1 -1
  53. package/dist/runtime/components/NavbarSection.vue +2 -1
  54. package/dist/runtime/components/NavbarSpacer.vue +1 -1
  55. package/dist/runtime/components/NavigationMenu.vue +43 -12
  56. package/dist/runtime/components/PageCard.vue +10 -9
  57. package/dist/runtime/components/PageLinks.vue +9 -7
  58. package/dist/runtime/components/Pagination.vue +8 -8
  59. package/dist/runtime/components/PinInput.vue +2 -0
  60. package/dist/runtime/components/Popover.vue +2 -2
  61. package/dist/runtime/components/Progress.vue +6 -6
  62. package/dist/runtime/components/RadioGroup.d.vue.ts +2 -2
  63. package/dist/runtime/components/RadioGroup.vue +10 -4
  64. package/dist/runtime/components/RadioGroup.vue.d.ts +2 -2
  65. package/dist/runtime/components/Range.vue +5 -4
  66. package/dist/runtime/components/Select.vue +25 -11
  67. package/dist/runtime/components/SelectMenu.vue +33 -14
  68. package/dist/runtime/components/Separator.vue +7 -7
  69. package/dist/runtime/components/Sidebar.vue +1 -1
  70. package/dist/runtime/components/SidebarBody.vue +1 -1
  71. package/dist/runtime/components/SidebarFooter.vue +1 -1
  72. package/dist/runtime/components/SidebarHeader.vue +1 -1
  73. package/dist/runtime/components/SidebarHeading.vue +1 -1
  74. package/dist/runtime/components/SidebarLayout.vue +18 -13
  75. package/dist/runtime/components/SidebarSection.vue +2 -1
  76. package/dist/runtime/components/SidebarSpacer.vue +1 -1
  77. package/dist/runtime/components/Skeleton.vue +1 -0
  78. package/dist/runtime/components/Slideover.vue +10 -7
  79. package/dist/runtime/components/Stepper.vue +12 -9
  80. package/dist/runtime/components/Switch.vue +10 -6
  81. package/dist/runtime/components/Table.vue +18 -13
  82. package/dist/runtime/components/TableWrapper.vue +1 -0
  83. package/dist/runtime/components/Tabs.d.vue.ts +3 -3
  84. package/dist/runtime/components/Tabs.vue +24 -15
  85. package/dist/runtime/components/Tabs.vue.d.ts +3 -3
  86. package/dist/runtime/components/Textarea.vue +8 -3
  87. package/dist/runtime/components/Timeline.vue +9 -6
  88. package/dist/runtime/components/Toast.vue +10 -6
  89. package/dist/runtime/components/Toaster.vue +2 -0
  90. package/dist/runtime/components/Tooltip.vue +4 -4
  91. package/dist/runtime/components/User.vue +13 -6
  92. package/dist/runtime/components/content/ContentSearch.vue +59 -68
  93. package/dist/runtime/components/content/ContentSearchButton.vue +2 -1
  94. package/dist/runtime/components/content/ContentSurround.vue +6 -4
  95. package/dist/runtime/components/content/ContentToc.vue +13 -10
  96. package/dist/runtime/components/prose/A.vue +1 -1
  97. package/dist/runtime/components/prose/Blockquote.vue +1 -1
  98. package/dist/runtime/components/prose/Callout.vue +8 -3
  99. package/dist/runtime/components/prose/Card.vue +5 -3
  100. package/dist/runtime/components/prose/Code.vue +1 -0
  101. package/dist/runtime/components/prose/CodeCollapse.vue +3 -2
  102. package/dist/runtime/components/prose/CodeGroup.vue +6 -6
  103. package/dist/runtime/components/prose/CodePreview.vue +3 -3
  104. package/dist/runtime/components/prose/Collapsible.vue +3 -2
  105. package/dist/runtime/components/prose/Em.vue +1 -1
  106. package/dist/runtime/components/prose/Field.vue +7 -7
  107. package/dist/runtime/components/prose/H1.vue +1 -0
  108. package/dist/runtime/components/prose/H2.vue +4 -2
  109. package/dist/runtime/components/prose/H3.vue +4 -2
  110. package/dist/runtime/components/prose/H4.vue +4 -2
  111. package/dist/runtime/components/prose/H5.vue +1 -0
  112. package/dist/runtime/components/prose/H6.vue +1 -0
  113. package/dist/runtime/components/prose/Hr.vue +1 -1
  114. package/dist/runtime/components/prose/Img.vue +4 -0
  115. package/dist/runtime/components/prose/Li.vue +1 -1
  116. package/dist/runtime/components/prose/Ol.vue +1 -1
  117. package/dist/runtime/components/prose/P.vue +1 -1
  118. package/dist/runtime/components/prose/Pre.vue +6 -5
  119. package/dist/runtime/components/prose/Strong.vue +1 -1
  120. package/dist/runtime/components/prose/Table.d.vue.ts +0 -3
  121. package/dist/runtime/components/prose/Table.vue +2 -1
  122. package/dist/runtime/components/prose/Table.vue.d.ts +0 -3
  123. package/dist/runtime/components/prose/Tbody.vue +1 -1
  124. package/dist/runtime/components/prose/Td.vue +1 -1
  125. package/dist/runtime/components/prose/Th.vue +1 -1
  126. package/dist/runtime/components/prose/Thead.vue +1 -1
  127. package/dist/runtime/components/prose/Tr.vue +1 -1
  128. package/dist/runtime/components/prose/Ul.vue +1 -1
  129. package/dist/runtime/composables/useContentSearch.d.ts +5 -0
  130. package/dist/runtime/composables/useContentSearch.js +30 -1
  131. package/dist/runtime/dictionary/icons.d.ts +2 -0
  132. package/dist/runtime/inertia/components/Link.d.vue.ts +1 -1
  133. package/dist/runtime/inertia/components/Link.vue.d.ts +1 -1
  134. package/dist/runtime/inertia/stubs.js +1 -1
  135. package/dist/runtime/types/index.d.ts +3 -0
  136. package/dist/runtime/types/index.js +3 -0
  137. package/dist/runtime/vue/components/Link.d.vue.ts +1 -1
  138. package/dist/runtime/vue/components/Link.vue +1 -1
  139. package/dist/runtime/vue/components/Link.vue.d.ts +1 -1
  140. package/dist/shared/{b24ui-nuxt.B13KxxqP.mjs → b24ui-nuxt.mq1NUekN.mjs} +21 -13
  141. package/dist/unplugin.mjs +1 -1
  142. package/dist/vite.mjs +1 -1
  143. package/package.json +11 -9
package/dist/module.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@bitrix24/b24ui-nuxt",
3
- "version": "2.1.1",
3
+ "version": "2.1.3",
4
4
  "docs": "https://bitrix24.github.io/b24ui/guide/installation-nuxt-app.html",
5
5
  "configKey": "b24ui",
6
6
  "compatibility": {
package/dist/module.mjs CHANGED
@@ -1,6 +1,6 @@
1
1
  import { defu } from 'defu';
2
- import { defineNuxtModule, createResolver, addPlugin, hasNuxtModule, addComponentsDir, addImportsDir } from '@nuxt/kit';
3
- import { d as defaultOptions, v as version, n as name, a as getDefaultConfig, b as addTemplates } from './shared/b24ui-nuxt.B13KxxqP.mjs';
2
+ import { defineNuxtModule, createResolver, addPlugin, hasNuxtModule, addComponentsDir, addImportsDir, installModule } from '@nuxt/kit';
3
+ import { d as defaultOptions, v as version, n as name, a as getDefaultConfig, b as addTemplates } from './shared/b24ui-nuxt.mq1NUekN.mjs';
4
4
  import 'node:url';
5
5
  import 'scule';
6
6
  import 'knitwork';
@@ -36,6 +36,14 @@ const module$1 = defineNuxtModule({
36
36
  if (nuxt.options.builder !== "@nuxt/vite-builder") {
37
37
  nuxt.options.postcss.plugins["@tailwindcss/postcss"] = {};
38
38
  }
39
+ async function registerModule(name2, key, options2) {
40
+ if (!hasNuxtModule(name2)) {
41
+ await installModule(name2, defu(nuxt.options[key], options2));
42
+ } else {
43
+ nuxt.options[key] = defu(nuxt.options[key], options2);
44
+ }
45
+ }
46
+ await registerModule("@bitrix24/b24icons-nuxt", "empty", {});
39
47
  addPlugin({ src: resolve("./runtime/plugins/colors") });
40
48
  addPlugin({ src: resolve("./runtime/plugins/ui-version") });
41
49
  if (hasNuxtModule("@nuxtjs/mdc") || options.mdc || (hasNuxtModule("@nuxt/content") || options.content)) {
@@ -34,27 +34,30 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.accordi
34
34
  </script>
35
35
 
36
36
  <template>
37
- <AccordionRoot v-bind="rootProps" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
37
+ <AccordionRoot v-bind="rootProps" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
38
38
  <AccordionItem
39
39
  v-for="(item, index) in props.items"
40
40
  v-slot="{ open }"
41
41
  :key="index"
42
42
  :value="item.value || String(index)"
43
43
  :disabled="item.disabled"
44
+ data-slot="item"
44
45
  :class="b24ui.item({ class: [props.b24ui?.item, item.b24ui?.item, item.class] })"
45
46
  >
46
- <AccordionHeader as="div" :class="b24ui.header({ class: [props.b24ui?.header, item.b24ui?.header] })">
47
- <AccordionTrigger :class="b24ui.trigger({ class: [props.b24ui?.trigger, item.b24ui?.trigger], disabled: item.disabled })">
47
+ <AccordionHeader as="div" data-slot="header" :class="b24ui.header({ class: [props.b24ui?.header, item.b24ui?.header] })">
48
+ <AccordionTrigger data-slot="trigger" :class="b24ui.trigger({ class: [props.b24ui?.trigger, item.b24ui?.trigger], disabled: item.disabled })">
48
49
  <slot name="leading" :item="item" :index="index" :open="open" :b24ui="b24ui">
49
50
  <Component
50
51
  :is="item.icon"
51
52
  v-if="item.icon"
53
+ data-slot="leadingIcon"
52
54
  :class="b24ui.leadingIcon({ class: [props.b24ui?.leadingIcon, item?.b24ui?.leadingIcon] })"
53
55
  />
54
56
  </slot>
55
57
 
56
58
  <span
57
59
  v-if="get(item, props.labelKey) || !!slots.default"
60
+ data-slot="label"
58
61
  :class="b24ui.label({ class: [props.b24ui?.label, item.b24ui?.label] })"
59
62
  >
60
63
  <slot :item="item" :index="index" :open="open">{{ get(item, props.labelKey) }}</slot>
@@ -63,6 +66,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.accordi
63
66
  <slot name="trailing" :item="item" :index="index" :open="open" :b24ui="b24ui">
64
67
  <Component
65
68
  :is="item.trailingIcon || trailingIcon || icons.chevronDown"
69
+ data-slot="trailingIcon"
66
70
  :class="b24ui.trailingIcon({ class: [props.b24ui?.trailingIcon, item.b24ui?.trailingIcon] })"
67
71
  />
68
72
  </slot>
@@ -71,6 +75,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.accordi
71
75
 
72
76
  <AccordionContent
73
77
  v-if="item.content || !!slots.content || item.slot && !!slots[item.slot] || !!slots.body || item.slot && !!slots[`${item.slot}-body`]"
78
+ data-slot="content"
74
79
  :class="b24ui.content({ class: [props.b24ui?.content, item.b24ui?.content] })"
75
80
  >
76
81
  <slot
@@ -80,7 +85,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.accordi
80
85
  :open="open"
81
86
  :b24ui="b24ui"
82
87
  >
83
- <div :class="b24ui.body({ class: [props.b24ui?.body, item.b24ui?.body] })">
88
+ <div data-slot="body" :class="b24ui.body({ class: [props.b24ui?.body, item.b24ui?.body] })">
84
89
  <slot
85
90
  :name="item.slot ? `${item.slot}-body` : 'body'"
86
91
  :item="item"
@@ -30,25 +30,27 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.advice
30
30
  </script>
31
31
 
32
32
  <template>
33
- <Primitive :as="as" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
34
- <div v-if="isLeading || !!avatar || !!slots.leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
33
+ <Primitive :as="as" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
34
+ <div v-if="isLeading || !!avatar || !!slots.leading" data-slot="leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
35
35
  <slot name="leading" :b24ui="b24ui">
36
36
  <Component
37
37
  :is="leadingIconName"
38
38
  v-if="isLeading && leadingIconName"
39
+ data-slot="leadingIcon"
39
40
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
40
41
  />
41
42
  <B24Avatar
42
43
  v-else-if="!!avatar"
43
44
  :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
44
45
  v-bind="avatar"
46
+ data-slot="leadingAvatar"
45
47
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
46
48
  :b24ui="{ icon: props.b24ui?.leadingAvatarIcon || b24ui.leadingAvatarIcon() }"
47
49
  />
48
50
  </slot>
49
51
  </div>
50
- <div :class="b24ui.descriptionWrapper({ class: props.b24ui?.descriptionWrapper })">
51
- <div :class="b24ui.descriptionAngle({ class: props.b24ui?.descriptionAngle })">
52
+ <div data-slot="descriptionWrapper" :class="b24ui.descriptionWrapper({ class: props.b24ui?.descriptionWrapper })">
53
+ <div data-slot="descriptionAngle" :class="b24ui.descriptionAngle({ class: props.b24ui?.descriptionAngle })">
52
54
  <svg
53
55
  xmlns="http://www.w3.org/2000/svg"
54
56
  width="14"
@@ -57,18 +59,20 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.advice
57
59
  fill="none"
58
60
  >
59
61
  <path
62
+ data-slot="descriptionBg"
60
63
  :class="b24ui.descriptionBg({ class: props.b24ui?.descriptionBg })"
61
64
  fill-rule="evenodd"
62
65
  clip-rule="evenodd"
63
66
  d="M11.3513 11.1621C11.3492 11.1591 11.3471 11.1562 11.3449 11.1532C8.41055 10.7202 3.75061 9.56187 0.411676 6.46663C-0.404067 5.71042 0.0889447 4.42611 1.14665 4.08179C3.50511 3.31403 5.56665 2.10552 7.2199 0.897773L7.23071 0.893616L8.27368 0.163147L10.7925 5.46165L13.8677 11.5454L11.3513 11.1621Z"
64
67
  /><path
68
+ data-slot="descriptionBorder"
65
69
  :class="b24ui.descriptionBorder({ class: props.b24ui?.descriptionBorder })"
66
70
  fill-rule="evenodd"
67
71
  clip-rule="evenodd"
68
72
  d="M11.4909 10.1639C11.7603 10.2036 12.0018 10.3515 12.1597 10.5733C12.3534 10.8456 12.5531 11.1134 12.7585 11.3765L11.3513 11.1621C11.3492 11.1591 11.3471 11.1561 11.3449 11.1531C8.41055 10.7202 3.75061 9.56187 0.411676 6.46662C-0.404067 5.71041 0.0889447 4.4261 1.14665 4.08178C3.50511 3.31403 5.56665 2.10551 7.2199 0.897764L7.23071 0.893607L8.16412 0.239868C8.18419 0.40792 8.20611 0.57539 8.22987 0.742259C8.28188 1.1077 8.12836 1.47208 7.8305 1.6901C6.11459 2.94612 3.95168 4.2203 1.45619 5.03267C1.22829 5.10686 1.07777 5.27921 1.02492 5.43712C1.00004 5.51147 1.00122 5.56804 1.00948 5.60492C1.01647 5.63618 1.03368 5.67964 1.09152 5.73326C4.20493 8.61944 8.61693 9.73979 11.4909 10.1639Z"
69
73
  /></svg>
70
74
  </div>
71
- <div :class="b24ui.description({ class: props.b24ui?.description })">
75
+ <div data-slot="description" :class="b24ui.description({ class: props.b24ui?.description })">
72
76
  <slot>
73
77
  {{ description }}
74
78
  </slot>
@@ -41,36 +41,37 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.alert |
41
41
  </script>
42
42
 
43
43
  <template>
44
- <Primitive :as="as" :data-orientation="orientation" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
44
+ <Primitive :as="as" :data-orientation="orientation" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
45
45
  <slot name="leading" :b24ui="b24ui">
46
46
  <Component
47
47
  :is="icon"
48
48
  v-if="icon"
49
+ data-slot="icon"
49
50
  :class="b24ui.icon({ class: props.b24ui?.icon })"
50
51
  />
51
- <B24Avatar v-else-if="avatar" :size="props.b24ui?.avatarSize || b24ui.avatarSize()" v-bind="avatar" :class="b24ui.avatar({ class: props.b24ui?.avatar })" />
52
+ <B24Avatar v-else-if="avatar" :size="props.b24ui?.avatarSize || b24ui.avatarSize()" v-bind="avatar" data-slot="avatar" :class="b24ui.avatar({ class: props.b24ui?.avatar })" />
52
53
  </slot>
53
54
 
54
- <div :class="b24ui.wrapper({ class: props.b24ui?.wrapper })">
55
- <div v-if="title || !!slots.title" :class="b24ui.title({ class: props.b24ui?.title })">
55
+ <div data-slot="wrapper" :class="b24ui.wrapper({ class: props.b24ui?.wrapper })">
56
+ <div v-if="title || !!slots.title" data-slot="title" :class="b24ui.title({ class: props.b24ui?.title })">
56
57
  <slot name="title">
57
58
  {{ title }}
58
59
  </slot>
59
60
  </div>
60
- <div v-if="description || !!slots.description" :class="b24ui.description({ class: props.b24ui?.description })">
61
+ <div v-if="description || !!slots.description" data-slot="description" :class="b24ui.description({ class: props.b24ui?.description })">
61
62
  <slot name="description">
62
63
  {{ description }}
63
64
  </slot>
64
65
  </div>
65
66
 
66
- <div v-if="orientation === 'vertical' && (actions?.length || !!slots.actions)" :class="b24ui.actions({ class: props.b24ui?.actions })">
67
+ <div v-if="orientation === 'vertical' && (actions?.length || !!slots.actions)" data-slot="actions" :class="b24ui.actions({ class: props.b24ui?.actions })">
67
68
  <slot name="actions">
68
69
  <B24Button v-for="(action, index) in actions" :key="index" size="sm" v-bind="action" />
69
70
  </slot>
70
71
  </div>
71
72
  </div>
72
73
 
73
- <div v-if="orientation === 'horizontal' && (actions?.length || !!slots.actions) || close" :class="b24ui.actions({ class: props.b24ui?.actions, orientation: 'horizontal' })">
74
+ <div v-if="orientation === 'horizontal' && (actions?.length || !!slots.actions) || close" data-slot="actions" :class="b24ui.actions({ class: props.b24ui?.actions, orientation: 'horizontal' })">
74
75
  <template v-if="orientation === 'horizontal' && (actions?.length || !!slots.actions)">
75
76
  <slot name="actions">
76
77
  <B24Button v-for="(action, index) in actions" :key="index" size="sm" v-bind="action" />
@@ -85,6 +86,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.alert |
85
86
  color="air-tertiary-no-accent"
86
87
  :aria-label="t('alert.close')"
87
88
  v-bind="typeof close === 'object' ? close : {}"
89
+ data-slot="close"
88
90
  :class="b24ui.close({ class: props.b24ui?.close })"
89
91
  @click="emits('update:open', false)"
90
92
  />
@@ -65,6 +65,7 @@ function onError() {
65
65
  :is="props.chip ? B24Chip : Primitive"
66
66
  :as="as.root"
67
67
  v-bind="props.chip ? typeof props.chip === 'object' ? { inset: true, ...props.chip } : { inset: true } : {}"
68
+ data-slot="root"
68
69
  :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
69
70
  :style="props.style"
70
71
  >
@@ -76,14 +77,15 @@ function onError() {
76
77
  :width="sizePx"
77
78
  :height="sizePx"
78
79
  v-bind="$attrs"
80
+ data-slot="image"
79
81
  :class="b24ui.image({ class: props.b24ui?.image })"
80
82
  @error="onError"
81
83
  />
82
84
 
83
85
  <Slot v-else v-bind="$attrs">
84
86
  <slot>
85
- <Component :is="icon" v-if="icon" :class="b24ui.icon({ class: props.b24ui?.icon })" />
86
- <span v-else :class="b24ui.fallback({ class: props.b24ui?.fallback })">{{ fallback || "\xA0" }}</span>
87
+ <Component :is="icon" v-if="icon" data-slot="icon" :class="b24ui.icon({ class: props.b24ui?.icon })" />
88
+ <span v-else data-slot="fallback" :class="b24ui.fallback({ class: props.b24ui?.fallback })">{{ fallback || "\xA0" }}</span>
87
89
  </slot>
88
90
  </Slot>
89
91
  </component>
@@ -58,8 +58,8 @@ provide(avatarGroupInjectionKey, computed(() => ({
58
58
  </script>
59
59
 
60
60
  <template>
61
- <Primitive :as="as" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
62
- <component :is="avatar" v-for="(avatar, count) in visibleAvatars" :key="count" :class="b24ui.base({ class: props.b24ui?.base })" />
63
- <B24Avatar v-if="hiddenCount > 0" :text="`+${hiddenCount}`" :class="b24ui.base({ class: props.b24ui?.base })" />
61
+ <Primitive :as="as" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
62
+ <component :is="avatar" v-for="(avatar, count) in visibleAvatars" :key="count" data-slot="base" :class="b24ui.base({ class: props.b24ui?.base })" />
63
+ <B24Avatar v-if="hiddenCount > 0" :text="`+${hiddenCount}`" data-slot="base" :class="b24ui.base({ class: props.b24ui?.base })" />
64
64
  </Primitive>
65
65
  </template>
@@ -54,28 +54,32 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.badge |
54
54
  <template>
55
55
  <Primitive
56
56
  :as="as"
57
+ data-slot="base"
57
58
  :class="b24ui.base({ class: [props.b24ui?.base, props.class] })"
58
59
  >
59
60
  <Primitive
60
61
  :as="as"
62
+ data-slot="wrapper"
61
63
  :class="b24ui.wrapper({ class: props.b24ui?.wrapper })"
62
64
  >
63
65
  <slot name="leading" :b24ui="b24ui">
64
66
  <Component
65
67
  :is="leadingIconName"
66
68
  v-if="isLeading && leadingIconName"
69
+ data-slot="leadingIcon"
67
70
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
68
71
  />
69
72
  <B24Avatar
70
73
  v-else-if="!!avatar"
71
74
  :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
72
75
  v-bind="avatar"
76
+ data-slot="leadingAvatar"
73
77
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
74
78
  />
75
79
  </slot>
76
80
 
77
81
  <slot :b24ui="b24ui">
78
- <span v-if="label !== void 0 && label !== null" :class="b24ui.label({ class: props.b24ui?.label })">
82
+ <span v-if="label !== void 0 && label !== null" data-slot="label" :class="b24ui.label({ class: props.b24ui?.label })">
79
83
  {{ label }}
80
84
  </span>
81
85
  </slot>
@@ -83,6 +87,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.badge |
83
87
  <slot name="trailing" :b24ui="b24ui">
84
88
  <Cross20Icon
85
89
  v-if="useClose"
90
+ data-slot="trailingIcon"
86
91
  :class="b24ui.trailingIcon({ class: props.b24ui?.trailingIcon })"
87
92
  aria-hidden="true"
88
93
  @click.stop.prevent="onCloseClickWrapper"
@@ -60,7 +60,7 @@ function onClose() {
60
60
  </script>
61
61
 
62
62
  <template>
63
- <Primitive :as="as" class="banner" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
63
+ <Primitive :as="as" class="banner" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
64
64
  <B24Link
65
65
  v-if="to"
66
66
  :aria-label="title"
@@ -72,21 +72,21 @@ function onClose() {
72
72
  <span class="absolute inset-0 " aria-hidden="true" />
73
73
  </B24Link>
74
74
 
75
- <B24Container :class="b24ui.container({ class: props.b24ui?.container })">
76
- <div :class="b24ui.left({ class: props.b24ui?.left })" />
75
+ <B24Container data-slot="container" :class="b24ui.container({ class: props.b24ui?.container })">
76
+ <div data-slot="left" :class="b24ui.left({ class: props.b24ui?.left })" />
77
77
 
78
- <div :class="b24ui.center({ class: props.b24ui?.center })">
78
+ <div data-slot="center" :class="b24ui.center({ class: props.b24ui?.center })">
79
79
  <slot name="leading" :b24ui="b24ui">
80
- <Component :is="icon" v-if="icon" :class="b24ui.icon({ class: props.b24ui?.icon })" />
80
+ <Component :is="icon" v-if="icon" data-slot="icon" :class="b24ui.icon({ class: props.b24ui?.icon })" />
81
81
  </slot>
82
82
 
83
- <div v-if="title || !!slots.title" :class="b24ui.title({ class: props.b24ui?.title })">
83
+ <div v-if="title || !!slots.title" data-slot="title" :class="b24ui.title({ class: props.b24ui?.title })">
84
84
  <slot name="title">
85
85
  {{ title }}
86
86
  </slot>
87
87
  </div>
88
88
 
89
- <div v-if="actions?.length || !!slots.actions" :class="b24ui.actions({ class: props.b24ui?.actions })">
89
+ <div v-if="actions?.length || !!slots.actions" data-slot="actions" :class="b24ui.actions({ class: props.b24ui?.actions })">
90
90
  <slot name="actions">
91
91
  <B24Button
92
92
  v-for="(action, index) in actions"
@@ -99,7 +99,7 @@ function onClose() {
99
99
  </div>
100
100
  </div>
101
101
 
102
- <div :class="b24ui.right({ class: props.b24ui?.right })">
102
+ <div data-slot="right" :class="b24ui.right({ class: props.b24ui?.right })">
103
103
  <slot name="close" :b24ui="b24ui">
104
104
  <B24Button
105
105
  v-if="close"
@@ -108,6 +108,7 @@ function onClose() {
108
108
  color="air-tertiary-no-accent"
109
109
  :aria-label="t('banner.close')"
110
110
  v-bind="typeof close === 'object' ? close : {}"
111
+ data-slot="close"
111
112
  :class="b24ui.close({ class: props.b24ui?.close })"
112
113
  @click="onClose"
113
114
  />
@@ -30,15 +30,16 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.breadcr
30
30
  </script>
31
31
 
32
32
  <template>
33
- <Primitive :as="as" aria-label="breadcrumb" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
34
- <ol :class="b24ui.list({ class: props.b24ui?.list })">
33
+ <Primitive :as="as" aria-label="breadcrumb" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
34
+ <ol data-slot="list" :class="b24ui.list({ class: props.b24ui?.list })">
35
35
  <template v-for="(item, index) in items" :key="index">
36
- <li :class="b24ui.item({ class: [props.b24ui?.item, item.b24ui?.item] })">
36
+ <li data-slot="item" :class="b24ui.item({ class: [props.b24ui?.item, item.b24ui?.item] })">
37
37
  <B24Link v-slot="{ active, ...slotProps }" v-bind="pickLinkProps(item)" custom>
38
38
  <B24LinkBase
39
39
  v-bind="slotProps"
40
40
  as="span"
41
41
  :aria-current="(item.active ?? active) && index === items.length - 1 ? 'page' : void 0"
42
+ data-slot="link"
42
43
  :class="b24ui.link({ class: [props.b24ui?.link, item.b24ui?.link, item.class], active: item.active ?? index === items.length - 1, disabled: !!item.disabled, to: !!item.to })"
43
44
  >
44
45
  <slot
@@ -58,18 +59,21 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.breadcr
58
59
  <Component
59
60
  :is="item.icon"
60
61
  v-if="item.icon"
62
+ data-slot="linkLeadingIcon"
61
63
  :class="b24ui.linkLeadingIcon({ class: [props.b24ui?.linkLeadingIcon, item.b24ui?.linkLeadingIcon], active: item.active ?? index === items.length - 1 })"
62
64
  />
63
65
  <B24Avatar
64
66
  v-else-if="item.avatar"
65
67
  :size="props.b24ui?.linkLeadingAvatarSize || b24ui.linkLeadingAvatarSize()"
66
68
  v-bind="item.avatar"
69
+ data-slot="linkLeadingAvatar"
67
70
  :class="b24ui.linkLeadingAvatar({ class: [props.b24ui?.linkLeadingAvatar, item.b24ui?.linkLeadingAvatar], active: item.active ?? index === items.length - 1 })"
68
71
  />
69
72
  </slot>
70
73
 
71
74
  <span
72
75
  v-if="get(item, props.labelKey) || !!slots[item.slot ? `${item.slot}-label` : 'item-label']"
76
+ data-slot="linkLabel"
73
77
  :class="b24ui.linkLabel({ class: [props.b24ui?.linkLabel, item.b24ui?.linkLabel] })"
74
78
  >
75
79
  <slot
@@ -93,10 +97,11 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.breadcr
93
97
  </B24Link>
94
98
  </li>
95
99
 
96
- <li v-if="index < items.length - 1" role="presentation" aria-hidden="true" :class="b24ui.separator({ class: [props.b24ui?.separator, item.b24ui?.separator] })">
100
+ <li v-if="index < items.length - 1" role="presentation" aria-hidden="true" data-slot="separator" :class="b24ui.separator({ class: [props.b24ui?.separator, item.b24ui?.separator] })">
97
101
  <slot name="separator" :b24ui="b24ui">
98
102
  <Component
99
103
  :is="separatorIcon"
104
+ data-slot="separatorIcon"
100
105
  :class="b24ui.separatorIcon({ class: [props.b24ui?.separatorIcon, item.b24ui?.separatorIcon] })"
101
106
  />
102
107
  </slot>
@@ -140,6 +140,7 @@ const b24ui = computed(() => tv({
140
140
  >
141
141
  <B24LinkBase
142
142
  v-bind="slotProps"
143
+ data-slot="base"
143
144
  :class="b24ui.base({
144
145
  class: [props.b24ui?.base, props.class],
145
146
  active,
@@ -150,35 +151,36 @@ const b24ui = computed(() => tv({
150
151
  >
151
152
  <div
152
153
  v-if="isLoading"
154
+ data-slot="baseLoading"
153
155
  :class="b24ui.baseLoading({ class: props.b24ui?.baseLoading, active })"
154
156
  >
155
- <LoaderWaitIcon v-if="useWait" :class="b24ui.baseLoadingWaitIcon({ class: props.b24ui?.baseLoadingWaitIcon })" aria-hidden="true" />
156
- <LoaderClockIcon v-else-if="useClock" :class="b24ui.baseLoadingClockIcon({ class: props.b24ui?.baseLoadingClockIcon })" aria-hidden="true" />
157
- <SpinnerIcon v-else :class="b24ui.baseLoadingSpinnerIcon({ class: props.b24ui?.baseLoadingSpinnerIcon })" aria-hidden="true" />
157
+ <LoaderWaitIcon v-if="useWait" data-slot="baseLoadingWaitIcon" :class="b24ui.baseLoadingWaitIcon({ class: props.b24ui?.baseLoadingWaitIcon })" aria-hidden="true" />
158
+ <LoaderClockIcon v-else-if="useClock" data-slot="baseLoadingClockIcon" :class="b24ui.baseLoadingClockIcon({ class: props.b24ui?.baseLoadingClockIcon })" aria-hidden="true" />
159
+ <SpinnerIcon v-else data-slot="baseLoadingSpinnerIcon" :class="b24ui.baseLoadingSpinnerIcon({ class: props.b24ui?.baseLoadingSpinnerIcon })" aria-hidden="true" />
158
160
  </div>
159
161
  <div
160
- :class="[
161
- b24ui.baseLine({ class: [props.b24ui?.baseLine] }),
162
- isLoading ? 'invisible' : ''
163
- ]"
162
+ data-slot="baseLine"
163
+ :class="[b24ui.baseLine({ class: [props.b24ui?.baseLine] }), isLoading ? 'invisible' : '']"
164
164
  >
165
165
  <slot name="leading" :b24ui="b24ui">
166
166
  <Component
167
167
  :is="leadingIconName"
168
168
  v-if="isLeading && typeof leadingIconName !== 'undefined'"
169
+ data-slot="leadingIcon"
169
170
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
170
171
  />
171
172
  <B24Avatar
172
173
  v-else-if="!!avatar"
173
174
  :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
174
175
  v-bind="avatar"
176
+ data-slot="leadingAvatar"
175
177
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
176
178
  />
177
179
  </slot>
178
180
 
179
181
  <slot :b24ui="b24ui">
180
- <span v-if="label !== void 0 && label !== null" :class="b24ui.label({ class: props.b24ui?.label, active })">
181
- <span :class="b24ui.labelInner({ class: props.b24ui?.labelInner, active })">
182
+ <span v-if="label !== void 0 && label !== null" data-slot="label" :class="b24ui.label({ class: props.b24ui?.label, active })">
183
+ <span data-slot="labelInner" :class="b24ui.labelInner({ class: props.b24ui?.labelInner, active })">
182
184
  {{ label }}
183
185
  </span>
184
186
  </span>
@@ -187,6 +189,7 @@ const b24ui = computed(() => tv({
187
189
  <slot name="trailing" :b24ui="b24ui">
188
190
  <ChevronDownSIcon
189
191
  v-if="useDropdown"
192
+ data-slot="trailingIcon"
190
193
  :class="b24ui.trailingIcon({ class: props.b24ui?.trailingIcon })"
191
194
  aria-hidden="true"
192
195
  />
@@ -92,16 +92,17 @@ const btnSize = computed(() => {
92
92
  v-bind="rootProps"
93
93
  :model-value="modelValue"
94
94
  :default-value="defaultValue"
95
+ data-slot="root"
95
96
  :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
96
97
  >
97
- <Calendar.Header :class="b24ui.header({ class: props.b24ui?.header })">
98
+ <Calendar.Header data-slot="header" :class="b24ui.header({ class: props.b24ui?.header })">
98
99
  <Calendar.Prev v-if="props.yearControls" :prev-page="(date) => paginateYear(date, -1)" :aria-label="t('calendar.prevYear')" as-child>
99
100
  <B24Button :icon="prevYearIcon" :size="btnSize" color="air-tertiary" v-bind="props.prevYear" />
100
101
  </Calendar.Prev>
101
102
  <Calendar.Prev v-if="props.monthControls" :aria-label="t('calendar.prevMonth')" as-child>
102
103
  <B24Button :icon="prevMonthIcon" :size="btnSize" color="air-tertiary" v-bind="props.prevMonth" />
103
104
  </Calendar.Prev>
104
- <Calendar.Heading v-slot="{ headingValue }" :class="b24ui.heading({ class: props.b24ui?.heading })">
105
+ <Calendar.Heading v-slot="{ headingValue }" data-slot="heading" :class="b24ui.heading({ class: props.b24ui?.heading })">
105
106
  <slot name="heading" :value="headingValue">
106
107
  {{ headingValue }}
107
108
  </slot>
@@ -113,17 +114,19 @@ const btnSize = computed(() => {
113
114
  <B24Button :icon="nextYearIcon" :size="btnSize" color="air-tertiary" v-bind="props.nextYear" />
114
115
  </Calendar.Next>
115
116
  </Calendar.Header>
116
- <div :class="b24ui.body({ class: props.b24ui?.body })">
117
+ <div data-slot="body" :class="b24ui.body({ class: props.b24ui?.body })">
117
118
  <Calendar.Grid
118
119
  v-for="month in grid"
119
120
  :key="month.value.toString()"
121
+ data-slot="grid"
120
122
  :class="b24ui.grid({ class: props.b24ui?.grid })"
121
123
  >
122
124
  <Calendar.GridHead>
123
- <Calendar.GridRow :class="b24ui.gridWeekDaysRow({ class: props.b24ui?.gridWeekDaysRow })">
125
+ <Calendar.GridRow data-slot="gridWeekDaysRow" :class="b24ui.gridWeekDaysRow({ class: props.b24ui?.gridWeekDaysRow })">
124
126
  <Calendar.HeadCell
125
127
  v-for="day in weekDays"
126
128
  :key="day"
129
+ data-slot="headCell"
127
130
  :class="b24ui.headCell({ class: props.b24ui?.headCell })"
128
131
  >
129
132
  <slot name="week-day" :day="day">
@@ -132,21 +135,24 @@ const btnSize = computed(() => {
132
135
  </Calendar.HeadCell>
133
136
  </Calendar.GridRow>
134
137
  </Calendar.GridHead>
135
- <Calendar.GridBody :class="b24ui.gridBody({ class: props.b24ui?.gridBody })">
138
+ <Calendar.GridBody data-slot="gridBody" :class="b24ui.gridBody({ class: props.b24ui?.gridBody })">
136
139
  <Calendar.GridRow
137
140
  v-for="(weekDates, index) in month.rows"
138
141
  :key="`weekDate-${index}`"
142
+ data-slot="gridRow"
139
143
  :class="b24ui.gridRow({ class: props.b24ui?.gridRow })"
140
144
  >
141
145
  <Calendar.Cell
142
146
  v-for="weekDate in weekDates"
143
147
  :key="weekDate.toString()"
144
148
  :date="weekDate"
149
+ data-slot="cell"
145
150
  :class="b24ui.cell({ class: props.b24ui?.cell })"
146
151
  >
147
152
  <Calendar.CellTrigger
148
153
  :day="weekDate"
149
154
  :month="month.value"
155
+ data-slot="cellTrigger"
150
156
  :class="b24ui.cellTrigger({ class: props.b24ui?.cellTrigger })"
151
157
  >
152
158
  <slot name="day" :day="weekDate">
@@ -21,16 +21,16 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.card ||
21
21
  </script>
22
22
 
23
23
  <template>
24
- <Primitive :as="as" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
25
- <div v-if="!!slots.header" :class="b24ui.header({ class: props.b24ui?.header })">
24
+ <Primitive :as="as" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
25
+ <div v-if="!!slots.header" data-slot="header" :class="b24ui.header({ class: props.b24ui?.header })">
26
26
  <slot name="header" />
27
27
  </div>
28
28
 
29
- <div v-if="!!slots.default" :class="b24ui.body({ class: props.b24ui?.body })">
29
+ <div v-if="!!slots.default" data-slot="body" :class="b24ui.body({ class: props.b24ui?.body })">
30
30
  <slot />
31
31
  </div>
32
32
 
33
- <div v-if="!!slots.footer" :class="b24ui.footer({ class: props.b24ui?.footer })">
33
+ <div v-if="!!slots.footer" data-slot="footer" :class="b24ui.footer({ class: props.b24ui?.footer })">
34
34
  <slot name="footer" />
35
35
  </div>
36
36
  </Primitive>
@@ -38,25 +38,27 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.chatMes
38
38
  </script>
39
39
 
40
40
  <template>
41
- <Primitive :as="as" :data-role="role" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
42
- <div :class="b24ui.container({ class: props.b24ui?.container })">
43
- <div v-if="icon || avatar || !!slots.leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
41
+ <Primitive :as="as" :data-role="role" data-slot="root" :class="b24ui.root({ class: [props.b24ui?.root, props.class] })">
42
+ <div data-slot="container" :class="b24ui.container({ class: props.b24ui?.container })">
43
+ <div v-if="icon || avatar || !!slots.leading" data-slot="leading" :class="b24ui.leading({ class: props.b24ui?.leading })">
44
44
  <slot name="leading" :avatar="avatar" :b24ui="b24ui">
45
45
  <Component
46
46
  :is="icon"
47
47
  v-if="icon"
48
+ data-slot="leadingIcon"
48
49
  :class="b24ui.leadingIcon({ class: props.b24ui?.leadingIcon })"
49
50
  />
50
51
  <B24Avatar
51
52
  v-else-if="avatar"
52
53
  :size="props.b24ui?.leadingAvatarSize || b24ui.leadingAvatarSize()"
53
54
  v-bind="avatar"
55
+ data-slot="leadingAvatar"
54
56
  :class="b24ui.leadingAvatar({ class: props.b24ui?.leadingAvatar })"
55
57
  />
56
58
  </slot>
57
59
  </div>
58
60
 
59
- <div v-if="parts.length || !!slots.content" :class="b24ui.content({ class: props.b24ui?.content })">
61
+ <div v-if="parts.length || !!slots.content" data-slot="content" :class="b24ui.content({ class: props.b24ui?.content })">
60
62
  <slot
61
63
  :id="id"
62
64
  name="content"
@@ -71,7 +73,7 @@ const b24ui = computed(() => tv({ extend: tv(theme), ...appConfig.b24ui?.chatMes
71
73
  </slot>
72
74
  </div>
73
75
 
74
- <div v-if="actions || !!slots.actions" :class="b24ui.actions({ class: props.b24ui?.actions })">
76
+ <div v-if="actions || !!slots.actions" data-slot="actions" :class="b24ui.actions({ class: props.b24ui?.actions })">
75
77
  <slot name="actions" :actions="actions">
76
78
  <B24Tooltip v-for="(action, index) in actions" :key="index" :text="action.label">
77
79
  <B24Button
@@ -174,6 +174,7 @@ onMounted(() => {
174
174
  <div
175
175
  ref="el"
176
176
  :data-status="status"
177
+ data-slot="root"
177
178
  :class="b24ui.root({ class: [props.b24ui?.root, props.class] })"
178
179
  :style="{ '--last-message-height': `${lastMessageHeight}px` }"
179
180
  >
@@ -200,7 +201,7 @@ onMounted(() => {
200
201
  >
201
202
  <template #content>
202
203
  <slot name="indicator" :b24ui="b24ui">
203
- <div :class="b24ui.indicator({ class: props.b24ui?.indicator })">
204
+ <div data-slot="indicator" :class="b24ui.indicator({ class: props.b24ui?.indicator })">
204
205
  <span />
205
206
  <span />
206
207
  <span />
@@ -210,13 +211,14 @@ onMounted(() => {
210
211
  </B24ChatMessage>
211
212
 
212
213
  <Presence :present="showAutoScroll">
213
- <div :data-state="showAutoScroll ? 'open' : 'closed'" :class="b24ui.viewport({ class: props.b24ui?.viewport })">
214
+ <div :data-state="showAutoScroll ? 'open' : 'closed'" data-slot="viewport" :class="b24ui.viewport({ class: props.b24ui?.viewport })">
214
215
  <slot name="viewport" :b24ui="b24ui" :on-click="onAutoScrollClick">
215
216
  <B24Button
216
217
  v-if="autoScroll"
217
218
  :icon="autoScrollIcon || icons.arrowDown"
218
219
  color="air-secondary-no-accent"
219
220
  v-bind="typeof autoScroll === 'object' ? autoScroll : {}"
221
+ data-slot="autoScroll"
220
222
  :class="b24ui.autoScroll({ class: props.b24ui?.autoScroll })"
221
223
  @click="onAutoScrollClick"
222
224
  />