@byyuurin/ui 0.5.1 → 0.5.2

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 (60) hide show
  1. package/dist/module.json +1 -1
  2. package/dist/module.mjs +3 -3
  3. package/dist/runtime/components/Accordion.vue +9 -9
  4. package/dist/runtime/components/Alert.vue +9 -9
  5. package/dist/runtime/components/Avatar.vue +4 -4
  6. package/dist/runtime/components/AvatarGroup.vue +3 -3
  7. package/dist/runtime/components/Badge.vue +5 -5
  8. package/dist/runtime/components/Breadcrumb.vue +9 -9
  9. package/dist/runtime/components/Button.vue +5 -5
  10. package/dist/runtime/components/Calendar.vue +11 -11
  11. package/dist/runtime/components/Card.vue +6 -6
  12. package/dist/runtime/components/Carousel.vue +10 -10
  13. package/dist/runtime/components/Checkbox.vue +9 -9
  14. package/dist/runtime/components/CheckboxGroup.vue +4 -4
  15. package/dist/runtime/components/Chip.vue +2 -2
  16. package/dist/runtime/components/Collapsible.vue +2 -2
  17. package/dist/runtime/components/ContextMenuContent.vue +18 -18
  18. package/dist/runtime/components/Drawer.vue +9 -9
  19. package/dist/runtime/components/DropdownMenu.vue +2 -2
  20. package/dist/runtime/components/DropdownMenuContent.vue +19 -19
  21. package/dist/runtime/components/FieldGroup.vue +1 -1
  22. package/dist/runtime/components/FileUpload.vue +15 -15
  23. package/dist/runtime/components/Form.vue +1 -1
  24. package/dist/runtime/components/FormField.vue +9 -9
  25. package/dist/runtime/components/Input.vue +7 -7
  26. package/dist/runtime/components/InputNumber.vue +4 -4
  27. package/dist/runtime/components/InputTags.vue +12 -12
  28. package/dist/runtime/components/Kbd.vue +1 -1
  29. package/dist/runtime/components/Marquee.vue +2 -2
  30. package/dist/runtime/components/Modal.vue +9 -9
  31. package/dist/runtime/components/NavigationMenu.vue +40 -40
  32. package/dist/runtime/components/Pagination.vue +8 -8
  33. package/dist/runtime/components/PinInput.vue +2 -2
  34. package/dist/runtime/components/Popover.vue +2 -2
  35. package/dist/runtime/components/Progress.vue +6 -6
  36. package/dist/runtime/components/RadioGroup.vue +10 -10
  37. package/dist/runtime/components/ScrollArea.vue +7 -7
  38. package/dist/runtime/components/Select.vue +31 -31
  39. package/dist/runtime/components/Separator.vue +7 -7
  40. package/dist/runtime/components/Skeleton.vue +1 -1
  41. package/dist/runtime/components/Slider.vue +4 -4
  42. package/dist/runtime/components/Stepper.vue +12 -12
  43. package/dist/runtime/components/Switch.vue +10 -10
  44. package/dist/runtime/components/Table.vue +22 -22
  45. package/dist/runtime/components/Tabs.vue +9 -9
  46. package/dist/runtime/components/Textarea.vue +7 -7
  47. package/dist/runtime/components/Timeline.vue +9 -9
  48. package/dist/runtime/components/Toast.vue +10 -9
  49. package/dist/runtime/components/ToastProvider.vue +2 -2
  50. package/dist/runtime/components/Tooltip.vue +4 -4
  51. package/dist/runtime/components/Tree.vue +10 -10
  52. package/dist/runtime/composables/defineShortcuts.js +1 -1
  53. package/dist/runtime/composables/useOverlay.d.ts +3 -1
  54. package/dist/shared/{ui.RIHx5Yhe.mjs → ui.B6u-xvto.mjs} +17 -17
  55. package/dist/shared/{ui.DYMXCXO6.mjs → ui.Dy7aH7sf.mjs} +12 -6
  56. package/dist/unocss.d.mts +20 -2
  57. package/dist/unocss.mjs +25 -2
  58. package/dist/unplugin.mjs +3 -3
  59. package/dist/vite.mjs +2 -2
  60. package/package.json +3 -3
@@ -102,27 +102,27 @@ defineExpose({
102
102
  <template>
103
103
  <TagsInputRoot
104
104
  v-slot="{ modelValue: tags }"
105
+ v-bind="{ ...rootProps, id, name, disabled }"
105
106
  :model-value="props.modelValue"
106
107
  :default-value="props.defaultValue"
107
- :class="ui.root({ class: [ui.base({ class: props.ui?.base }), props.ui?.root, props.class] })"
108
- v-bind="{ ...rootProps, id, name, disabled }"
109
108
  data-part="root"
109
+ :class="ui.root({ class: [ui.base({ class: props.ui?.base }), props.ui?.root, props.class] })"
110
110
  @update:model-value="onUpdate"
111
111
  >
112
112
  <TagsInputItem
113
113
  v-for="(item, index) in tags"
114
114
  :key="index"
115
115
  :value="item"
116
- :class="ui.item({ class: props.ui?.item })"
117
116
  data-part="item"
117
+ :class="ui.item({ class: props.ui?.item })"
118
118
  >
119
- <TagsInputItemText :class="ui.itemText({ class: props.ui?.itemText })" data-part="itemText">
119
+ <TagsInputItemText data-part="itemText" :class="ui.itemText({ class: props.ui?.itemText })">
120
120
  <slot name="item-text" :item="item" :index="index" :ui="ui"></slot>
121
121
  </TagsInputItemText>
122
122
 
123
- <TagsInputItemDelete :disabled="disabled" :class="ui.itemDelete({ class: props.ui?.itemDelete })" data-part="itemDelete">
123
+ <TagsInputItemDelete :disabled="disabled" data-part="itemDelete" :class="ui.itemDelete({ class: props.ui?.itemDelete })">
124
124
  <slot name="item-delete" :item="item" :index="index" :ui="ui">
125
- <Icon :name="props.deleteIcon || appConfig.ui.icons.close" :class="ui.itemDeleteIcon({ class: props.ui?.itemDeleteIcon })" data-part="itemDeleteIcon" />
125
+ <Icon :name="props.deleteIcon || appConfig.ui.icons.close" data-part="itemDeleteIcon" :class="ui.itemDeleteIcon({ class: props.ui?.itemDeleteIcon })" />
126
126
  </slot>
127
127
  </TagsInputItemDelete>
128
128
  </TagsInputItem>
@@ -132,24 +132,24 @@ defineExpose({
132
132
  v-bind="{ ...$attrs, ...ariaAttrs }"
133
133
  :placeholder="props.placeholder"
134
134
  :max-length="props.maxLength"
135
- :class="ui.input({ class: props.ui?.input })"
136
135
  data-part="input"
136
+ :class="ui.input({ class: props.ui?.input })"
137
137
  @blur="onBlur"
138
138
  @focus="onFocus"
139
139
  />
140
140
 
141
- <span v-if="isLeading || props.avatar || !!slots.leading" :class="ui.leading({ class: props.ui?.leading })" data-part="leading">
141
+ <span v-if="isLeading || props.avatar || !!slots.leading" data-part="leading" :class="ui.leading({ class: props.ui?.leading })">
142
142
  <slot name="leading" :ui="ui">
143
- <Icon v-if="isLeading && leadingIconName" :name="leadingIconName" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" data-part="leadingIcon" />
144
- <Avatar v-else-if="props.avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="props.avatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" data-part="leadingAvatar" />
143
+ <Icon v-if="isLeading && leadingIconName" :name="leadingIconName" data-part="leadingIcon" :class="ui.leadingIcon({ class: props.ui?.leadingIcon })" />
144
+ <Avatar v-else-if="props.avatar" :size="props.ui?.leadingAvatarSize || ui.leadingAvatarSize()" v-bind="props.avatar" data-part="leadingAvatar" :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })" />
145
145
  </slot>
146
146
  </span>
147
147
 
148
148
  <slot :ui="ui"></slot>
149
149
 
150
- <span v-if="isTrailing || !!slots.trailing" :class="ui.trailing({ class: props.ui?.trailing })" data-part="trailing">
150
+ <span v-if="isTrailing || !!slots.trailing" data-part="trailing" :class="ui.trailing({ class: props.ui?.trailing })">
151
151
  <slot name="trailing" :ui="ui">
152
- <Icon v-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" data-part="trailingIcon" />
152
+ <Icon v-if="trailingIconName" :name="trailingIconName" data-part="trailingIcon" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
153
153
  </slot>
154
154
  </span>
155
155
  </TagsInputRoot>
@@ -27,7 +27,7 @@ const ui = computed(() => {
27
27
  </script>
28
28
 
29
29
  <template>
30
- <Primitive :as="props.as" :class="ui.base({ class: props.class })" data-part="base">
30
+ <Primitive :as="props.as" data-part="base" :class="ui.base({ class: props.class })">
31
31
  <slot>{{ getKbdKey(props.value) }}</slot>
32
32
  </Primitive>
33
33
  </template>
@@ -27,8 +27,8 @@ const ui = computed(() => {
27
27
  </script>
28
28
 
29
29
  <template>
30
- <Primitive :as="props.as" :data-orientation="props.orientation" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
31
- <div v-for="i in props.repeat" :key="i" :class="ui.content({ class: props.ui?.content })" data-part="content">
30
+ <Primitive :as="props.as" :data-orientation="props.orientation" data-part="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
31
+ <div v-for="i in props.repeat" :key="i" data-part="content" :class="ui.content({ class: props.ui?.content })">
32
32
  <slot></slot>
33
33
  </div>
34
34
  </Primitive>
@@ -64,12 +64,12 @@ const ui = computed(() => {
64
64
  </DialogTrigger>
65
65
 
66
66
  <DialogPortal v-bind="portalProps">
67
- <DialogOverlay v-if="props.overlay" :class="ui.overlay({ class: props.ui?.overlay })" data-part="overlay" />
67
+ <DialogOverlay v-if="props.overlay" data-part="overlay" :class="ui.overlay({ class: props.ui?.overlay })" />
68
68
 
69
69
  <DialogContent
70
+ data-part="content"
70
71
  :class="ui.content({ class: [props.ui?.content, !slots.default && props.class] })"
71
72
  v-bind="contentProps"
72
- data-part="content"
73
73
  @after-enter="emit('after-enter')"
74
74
  @after-leave="emit('after-leave')"
75
75
  v-on="contentEvents"
@@ -81,14 +81,14 @@ const ui = computed(() => {
81
81
  <slot name="content" :close="close">
82
82
  <div
83
83
  v-if="slots.header || props.title || slots.title || props.description || slots.description || props.close || slots.close"
84
- :class="ui.header({ class: props.ui?.header })"
85
84
  data-part="header"
85
+ :class="ui.header({ class: props.ui?.header })"
86
86
  >
87
87
  <slot name="header" :close="close">
88
88
  <DialogTitle
89
89
  v-if="props.title || slots.title"
90
- :class="ui.title({ class: props.ui?.title })"
91
90
  data-part="title"
91
+ :class="ui.title({ class: props.ui?.title })"
92
92
  >
93
93
  <slot name="title">
94
94
  {{ props.title }}
@@ -101,18 +101,18 @@ const ui = computed(() => {
101
101
  variant="ghost"
102
102
  color="neutral"
103
103
  :icon="props.closeIcon || appConfig.ui.icons.close"
104
- v-bind="typeof props.close === 'object' ? props.close : {}"
105
104
  :aria-label="t('modal.close')"
106
- :class="ui.close({ class: props.ui?.close })"
105
+ v-bind="typeof props.close === 'object' ? props.close : {}"
107
106
  data-part="close"
107
+ :class="ui.close({ class: props.ui?.close })"
108
108
  />
109
109
  </slot>
110
110
  </DialogClose>
111
111
 
112
112
  <DialogDescription
113
113
  v-if="props.description || slots.description"
114
- :class="ui.description({ class: props.ui?.description })"
115
114
  data-part="description"
115
+ :class="ui.description({ class: props.ui?.description })"
116
116
  >
117
117
  <slot name="description">
118
118
  {{ props.description }}
@@ -121,11 +121,11 @@ const ui = computed(() => {
121
121
  </slot>
122
122
  </div>
123
123
 
124
- <div v-if="slots.body" :class="ui.body({ class: props.ui?.body })" data-part="body">
124
+ <div v-if="slots.body" data-part="body" :class="ui.body({ class: props.ui?.body })">
125
125
  <slot name="body" :close="close"></slot>
126
126
  </div>
127
127
 
128
- <div v-if="slots.footer" :class="ui.footer({ class: props.ui?.footer })" data-part="footer">
128
+ <div v-if="slots.footer" data-part="footer" :class="ui.footer({ class: props.ui?.footer })">
129
129
  <slot name="footer" :close="close"></slot>
130
130
  </div>
131
131
  </slot>
@@ -103,21 +103,21 @@ function getAccordionDefaultValue(list, level = 0) {
103
103
  v-if="item.avatar"
104
104
  :size="item.ui?.linkLeadingAvatarSize || props.ui?.linkLeadingAvatarSize || ui.linkLeadingAvatarSize()"
105
105
  v-bind="item.avatar"
106
- :class="ui.linkLeadingAvatar({ class: [props.ui?.linkLeadingAvatar, item.ui?.linkLeadingAvatar], active, disabled: item.disabled })"
107
106
  data-part="linkLeadingAvatar"
107
+ :class="ui.linkLeadingAvatar({ class: [props.ui?.linkLeadingAvatar, item.ui?.linkLeadingAvatar], active, disabled: item.disabled })"
108
108
  />
109
109
  <Icon
110
110
  v-else-if="item.icon"
111
111
  :name="item.icon"
112
- :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, item.ui?.linkLeadingIcon], active, disabled: !!item.disabled })"
113
112
  data-part="linkLeadingIcon"
113
+ :class="ui.linkLeadingIcon({ class: [props.ui?.linkLeadingIcon, item.ui?.linkLeadingIcon], active, disabled: !!item.disabled })"
114
114
  />
115
115
  </slot>
116
116
 
117
117
  <span
118
118
  v-if="get(item, props.labelKey) || slots[`${item.slot || 'item'}-label`]"
119
- :class="ui.linkLabel({ class: [props.ui?.linkLabel, item.ui?.linkLabel] })"
120
119
  data-part="linkLabel"
120
+ :class="ui.linkLabel({ class: [props.ui?.linkLabel, item.ui?.linkLabel] })"
121
121
  >
122
122
  <slot :name="`${item.slot || 'item'}-label`" :item="item" :active="active" :index="index">
123
123
  {{ get(item, props.labelKey) }}
@@ -126,8 +126,8 @@ function getAccordionDefaultValue(list, level = 0) {
126
126
  <Icon
127
127
  v-if="item.target === '_blank' && props.externalIcon !== false"
128
128
  :name="typeof props.externalIcon === 'string' ? props.externalIcon : appConfig.ui.icons.external"
129
- :class="ui.linkLabelExternalIcon({ class: [props.ui?.linkLabelExternalIcon, item.ui?.linkLabelExternalIcon], active })"
130
129
  data-part="linkLabelExternalIcon"
130
+ :class="ui.linkLabelExternalIcon({ class: [props.ui?.linkLabelExternalIcon, item.ui?.linkLabelExternalIcon], active })"
131
131
  />
132
132
  </span>
133
133
 
@@ -135,8 +135,8 @@ function getAccordionDefaultValue(list, level = 0) {
135
135
  :is="props.orientation === 'vertical' && item.children?.length && !props.collapsed ? AccordionTrigger : 'span'"
136
136
  v-if="item.badge !== void 0 || orientation === 'horizontal' && (item.children?.length || !!slots[`${item.slot || 'item'}-content`]) || orientation === 'vertical' && item.children?.length || item.trailingIcon || !!slots[`${item.slot || 'item'}-trailing`]"
137
137
  as="span"
138
- :class="ui.linkTrailing({ class: [props.ui?.linkTrailing, item.ui?.linkTrailing] })"
139
138
  data-part="linkTrailing"
139
+ :class="ui.linkTrailing({ class: [props.ui?.linkTrailing, item.ui?.linkTrailing] })"
140
140
  @click.stop.prevent
141
141
  >
142
142
  <slot :name="`${item.slot || 'item'}-trailing`" :item="item" :active="active" :index="index" :ui="ui">
@@ -146,21 +146,21 @@ function getAccordionDefaultValue(list, level = 0) {
146
146
  variant="outline"
147
147
  :size="item.ui?.linkTrailingBadgeSize || props.ui?.linkTrailingBadgeSize || ui.linkTrailingBadgeSize()"
148
148
  v-bind="typeof item.badge === 'string' || typeof item.badge === 'number' ? { label: item.badge } : item.badge"
149
- :class="ui.linkTrailingBadge({ class: [props.ui?.linkTrailingBadge, item.ui?.linkTrailingBadge] })"
150
149
  data-part="linkTrailingBadge"
150
+ :class="ui.linkTrailingBadge({ class: [props.ui?.linkTrailingBadge, item.ui?.linkTrailingBadge] })"
151
151
  />
152
152
 
153
153
  <Icon
154
154
  v-if="orientation === 'horizontal' && (item.children?.length || !!slots[`${item.slot || 'item'}-content`]) || orientation === 'vertical' && item.children?.length"
155
155
  :name="item.trailingIcon || props.trailingIcon || appConfig.ui.icons.chevronDown"
156
- :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon], active })"
157
156
  data-part="linkTrailingIcon"
157
+ :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon], active })"
158
158
  />
159
159
  <Icon
160
160
  v-else-if="item.trailingIcon"
161
161
  :name="item.trailingIcon"
162
- :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon], active })"
163
162
  data-part="linkTrailingIcon"
163
+ :class="ui.linkTrailingIcon({ class: [props.ui?.linkTrailingIcon, item.ui?.linkTrailingIcon], active })"
164
164
  />
165
165
  </slot>
166
166
  </component>
@@ -173,7 +173,7 @@ function getAccordionDefaultValue(list, level = 0) {
173
173
  as="li"
174
174
  :value="item.value || (level > 0 ? `item-${level}-${index}` : `item-${index}`)"
175
175
  >
176
- <div v-if="props.orientation === 'vertical' && item.type === 'label' && !props.collapsed" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })" data-part="label">
176
+ <div v-if="props.orientation === 'vertical' && item.type === 'label' && !props.collapsed" data-part="label" :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })">
177
177
  <ReuseLinkTemplate :item="item" :index="index" />
178
178
  </div>
179
179
  <Link
@@ -194,38 +194,38 @@ function getAccordionDefaultValue(list, level = 0) {
194
194
  <Popover
195
195
  v-if="props.orientation === 'vertical' && props.collapsed && item.children?.length && (!!props.popover || !!item.popover)"
196
196
  v-bind="{ ...popoverProps, ...typeof item.popover === 'boolean' ? {} : item.popover || {} }"
197
- :ui="{ content: ui.content({ class: [props.ui?.content, item.ui?.content] }) }"
198
197
  data-part="content"
198
+ :ui="{ content: ui.content({ class: [props.ui?.content, item.ui?.content] }) }"
199
199
  >
200
200
  <LinkBase
201
201
  v-bind="slotProps"
202
+ data-part="link"
202
203
  :class="ui.link({
203
204
  class: [props.ui?.link, item.ui?.link, item.class],
204
205
  active: active || item.active,
205
206
  disabled: item.disabled,
206
207
  level: level > 0
207
208
  })"
208
- data-part="link"
209
209
  >
210
210
  <ReuseLinkTemplate :item="item" :active="active || item.active" :index="index" />
211
211
  </LinkBase>
212
212
 
213
213
  <template #content="{ close }">
214
214
  <slot :name="`${item.slot || 'item'}-content`" :item="item" :active="active || item.active" :index="index" :ui="ui" :close="close">
215
- <ul :class="ui.childList({ class: [props.ui?.childList, item.ui?.childList] })" data-part="childList">
216
- <li :class="ui.childLabel({ class: [props.ui?.childLabel, item.ui?.childLabel] })" data-part="childLabel">
215
+ <ul data-part="childList" :class="ui.childList({ class: [props.ui?.childList, item.ui?.childList] })">
216
+ <li data-part="childLabel" :class="ui.childLabel({ class: [props.ui?.childLabel, item.ui?.childLabel] })">
217
217
  {{ get(item, props.labelKey) }}
218
218
  </li>
219
- <li v-for="(childItem, childIndex) in item.children" :key="childIndex" :class="ui.childItem({ class: [props.ui?.childItem, item.ui?.childItem] })" data-part="childItem">
219
+ <li v-for="(childItem, childIndex) in item.children" :key="childIndex" data-part="childItem" :class="ui.childItem({ class: [props.ui?.childItem, item.ui?.childItem] })">
220
220
  <Link v-slot="{ active: childActive, ...childSlotProps }" v-bind="pickLinkProps(childItem)" custom>
221
221
  <NavigationMenuLink :active="childActive" as-child @select="childItem.onSelect">
222
- <LinkBase v-bind="childSlotProps" :class="ui.childLink({ class: [props.ui?.childLink, item.ui?.childLink, childItem.class], active: childActive })" data-part="childLink">
223
- <Icon v-if="childItem.icon" :name="childItem.icon" :class="ui.childLinkIcon({ class: [props.ui?.childLinkIcon, item.ui?.childLinkIcon], active: childActive })" data-part="childLinkIcon" />
222
+ <LinkBase v-bind="childSlotProps" data-part="childLink" :class="ui.childLink({ class: [props.ui?.childLink, item.ui?.childLink, childItem.class], active: childActive })">
223
+ <Icon v-if="childItem.icon" :name="childItem.icon" data-part="childLinkIcon" :class="ui.childLinkIcon({ class: [props.ui?.childLinkIcon, item.ui?.childLinkIcon], active: childActive })" />
224
224
 
225
- <span :class="ui.childLinkLabel({ class: [props.ui?.childLinkLabel, item.ui?.childLinkLabel], active: childActive })" data-part="childLinkLabel">
225
+ <span data-part="childLinkLabel" :class="ui.childLinkLabel({ class: [props.ui?.childLinkLabel, item.ui?.childLinkLabel], active: childActive })">
226
226
  {{ get(childItem, props.labelKey) }}
227
227
 
228
- <Icon v-if="childItem.target === '_blank' && props.externalIcon !== false" :name="typeof props.externalIcon === 'string' ? props.externalIcon : appConfig.ui.icons.external" :class="ui.childLinkLabelExternalIcon({ class: [props.ui?.childLinkLabelExternalIcon, item.ui?.childLinkLabelExternalIcon], active: childActive })" data-part="childLinkLabelExternalIcon" />
228
+ <Icon v-if="childItem.target === '_blank' && props.externalIcon !== false" :name="typeof props.externalIcon === 'string' ? props.externalIcon : appConfig.ui.icons.external" data-part="childLinkLabelExternalIcon" :class="ui.childLinkLabelExternalIcon({ class: [props.ui?.childLinkLabelExternalIcon, item.ui?.childLinkLabelExternalIcon], active: childActive })" />
229
229
  </span>
230
230
  </LinkBase>
231
231
  </NavigationMenuLink>
@@ -236,11 +236,11 @@ function getAccordionDefaultValue(list, level = 0) {
236
236
  </template>
237
237
  </Popover>
238
238
  <Tooltip v-else-if="props.orientation === 'vertical' && props.collapsed && (!!props.tooltip || !!item.tooltip)" :text="get(item, props.labelKey)" v-bind="{ ...tooltipProps, ...typeof item.tooltip === 'boolean' ? {} : item.tooltip || {} }">
239
- <LinkBase v-bind="slotProps" :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], active: active || item.active, disabled: item.disabled, level: level > 0 })" data-part="link">
239
+ <LinkBase v-bind="slotProps" data-part="link" :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], active: active || item.active, disabled: item.disabled, level: level > 0 })">
240
240
  <ReuseLinkTemplate :item="item" :active="active || item.active" :index="index" />
241
241
  </LinkBase>
242
242
  </Tooltip>
243
- <LinkBase v-else v-bind="slotProps" :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], active: active || item.active, disabled: item.disabled, level: props.orientation === 'horizontal' || level > 0 })" data-part="link">
243
+ <LinkBase v-else v-bind="slotProps" data-part="link" :class="ui.link({ class: [props.ui?.link, item.ui?.link, item.class], active: active || item.active, disabled: item.disabled, level: props.orientation === 'horizontal' || level > 0 })">
244
244
  <ReuseLinkTemplate :item="item" :active="active || item.active" :index="index" />
245
245
  </LinkBase>
246
246
  </component>
@@ -248,24 +248,24 @@ function getAccordionDefaultValue(list, level = 0) {
248
248
  <NavigationMenuContent
249
249
  v-if="props.orientation === 'horizontal' && (item.children?.length || slots[`${item.slot || 'item'}-content`])"
250
250
  v-bind="contentProps"
251
- :class="ui.content({ class: [props.ui?.content, item.ui?.content] })"
252
251
  data-part="content"
252
+ :class="ui.content({ class: [props.ui?.content, item.ui?.content] })"
253
253
  >
254
254
  <slot :name="`${item.slot || 'item'}-content`" :item="item" :active="active" :index="index" :ui="ui">
255
- <ul :class="ui.childList({ class: [props.ui?.childList, item.ui?.childList] })" data-part="childList">
256
- <li v-for="(childItem, childIndex) in item.children" :key="childIndex" :class="ui.childItem({ class: [props.ui?.childItem, item.ui?.childItem] })" data-part="childItem">
255
+ <ul data-part="childList" :class="ui.childList({ class: [props.ui?.childList, item.ui?.childList] })">
256
+ <li v-for="(childItem, childIndex) in item.children" :key="childIndex" data-part="childItem" :class="ui.childItem({ class: [props.ui?.childItem, item.ui?.childItem] })">
257
257
  <Link v-slot="{ active: childActive, ...childSlotProps }" v-bind="pickLinkProps(childItem)" custom>
258
258
  <NavigationMenuLink :active="childActive" as-child @select="childItem.onSelect">
259
- <LinkBase v-bind="childSlotProps" :class="ui.childLink({ class: [props.ui?.childLink, item.ui?.childLink, childItem.class], active: childActive })" data-part="childLink">
260
- <Icon v-if="childItem.icon" :name="childItem.icon" :class="ui.childLinkIcon({ class: [props.ui?.childLinkIcon, item.ui?.childLinkIcon], active: childActive })" data-part="childLinkIcon" />
259
+ <LinkBase v-bind="childSlotProps" data-part="childLink" :class="ui.childLink({ class: [props.ui?.childLink, item.ui?.childLink, childItem.class], active: childActive })">
260
+ <Icon v-if="childItem.icon" :name="childItem.icon" data-part="childLinkIcon" :class="ui.childLinkIcon({ class: [props.ui?.childLinkIcon, item.ui?.childLinkIcon], active: childActive })" />
261
261
 
262
- <div :class="ui.childLinkWrapper({ class: [props.ui?.childLinkWrapper, item.ui?.childLinkWrapper] })" data-part="childLinkWrapper">
263
- <p :class="ui.childLinkLabel({ class: [props.ui?.childLinkLabel, item.ui?.childLinkLabel], active: childActive })" data-part="childLinkLabel">
262
+ <div data-part="childLinkWrapper" :class="ui.childLinkWrapper({ class: [props.ui?.childLinkWrapper, item.ui?.childLinkWrapper] })">
263
+ <p data-part="childLinkLabel" :class="ui.childLinkLabel({ class: [props.ui?.childLinkLabel, item.ui?.childLinkLabel], active: childActive })">
264
264
  {{ get(childItem, props.labelKey) }}
265
265
 
266
- <Icon v-if="childItem.target === '_blank' && props.externalIcon !== false" :name="typeof props.externalIcon === 'string' ? props.externalIcon : appConfig.ui.icons.external" :class="ui.childLinkLabelExternalIcon({ class: [props.ui?.childLinkLabelExternalIcon, item.ui?.childLinkLabelExternalIcon], active: childActive })" data-part="childLinkLabelExternalIcon" />
266
+ <Icon v-if="childItem.target === '_blank' && props.externalIcon !== false" :name="typeof props.externalIcon === 'string' ? props.externalIcon : appConfig.ui.icons.external" data-part="childLinkLabelExternalIcon" :class="ui.childLinkLabelExternalIcon({ class: [props.ui?.childLinkLabelExternalIcon, item.ui?.childLinkLabelExternalIcon], active: childActive })" />
267
267
  </p>
268
- <p v-if="childItem.description" :class="ui.childLinkDescription({ class: [props.ui?.childLinkDescription, item.ui?.childLinkDescription], active: childActive })" data-part="childLinkDescription">
268
+ <p v-if="childItem.description" data-part="childLinkDescription" :class="ui.childLinkDescription({ class: [props.ui?.childLinkDescription, item.ui?.childLinkDescription], active: childActive })">
269
269
  {{ childItem.description }}
270
270
  </p>
271
271
  </div>
@@ -278,12 +278,12 @@ function getAccordionDefaultValue(list, level = 0) {
278
278
  </NavigationMenuContent>
279
279
  </Link>
280
280
 
281
- <AccordionContent v-if="props.orientation === 'vertical' && item.children?.length && !props.collapsed" :class="ui.content({ class: [props.ui?.content, item.ui?.content] })" data-part="content">
281
+ <AccordionContent v-if="props.orientation === 'vertical' && item.children?.length && !props.collapsed" data-part="content" :class="ui.content({ class: [props.ui?.content, item.ui?.content] })">
282
282
  <AccordionRoot
283
283
  v-bind="{ ...accordionProps, defaultValue: getAccordionDefaultValue(item.children, level + 1) }"
284
284
  as="ul"
285
- :class="ui.childList({ class: [props.ui?.childList, item.ui?.childList] })"
286
285
  data-part="childList"
286
+ :class="ui.childList({ class: [props.ui?.childList, item.ui?.childList] })"
287
287
  >
288
288
  <ReuseItemTemplate
289
289
  v-for="(childItem, childIndex) in item.children"
@@ -291,8 +291,8 @@ function getAccordionDefaultValue(list, level = 0) {
291
291
  :item="childItem"
292
292
  :index="childIndex"
293
293
  :level="level + 1"
294
- :class="ui.childItem({ class: [props.ui?.childItem, childItem.ui?.childItem] })"
295
294
  data-part="childItem"
295
+ :class="ui.childItem({ class: [props.ui?.childItem, childItem.ui?.childItem] })"
296
296
  />
297
297
  </AccordionRoot>
298
298
  </AccordionContent>
@@ -308,9 +308,9 @@ function getAccordionDefaultValue(list, level = 0) {
308
308
  } : {},
309
309
  ...$attrs
310
310
  }"
311
- :class="ui.root({ class: [props.ui?.root, props.class] })"
312
311
  :data-collapsed="props.collapsed"
313
312
  data-part="root"
313
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
314
314
  >
315
315
  <slot name="list-leading"></slot>
316
316
 
@@ -323,23 +323,23 @@ function getAccordionDefaultValue(list, level = 0) {
323
323
  } : {}"
324
324
  :is="props.orientation === 'vertical' ? AccordionRoot : NavigationMenuList"
325
325
  as="ul"
326
- :class="ui.list({ class: props.ui?.list })"
327
326
  data-part="list"
327
+ :class="ui.list({ class: props.ui?.list })"
328
328
  >
329
- <ReuseItemTemplate v-for="(item, index) in list" :key="`list-${listIndex}-${index}`" :item="item" :index="index" :class="ui.item({ class: [props.ui?.item, item.ui?.item] })" data-part="item" />
329
+ <ReuseItemTemplate v-for="(item, index) in list" :key="`list-${listIndex}-${index}`" :item="item" :index="index" data-part="item" :class="ui.item({ class: [props.ui?.item, item.ui?.item] })" />
330
330
  </component>
331
331
 
332
- <div v-if="props.orientation === 'vertical' && listIndex < lists.length - 1" :class="ui.separator({ class: props.ui?.separator })" data-part="separator"></div>
332
+ <div v-if="props.orientation === 'vertical' && listIndex < lists.length - 1" data-part="separator" :class="ui.separator({ class: props.ui?.separator })"></div>
333
333
  </template>
334
334
 
335
335
  <slot name="list-trailing"></slot>
336
336
 
337
- <div v-if="props.orientation === 'horizontal'" :class="ui.viewportWrapper({ class: props.ui?.viewportWrapper })" data-part="viewportWrapper">
338
- <NavigationMenuIndicator v-if="props.arrow" :class="ui.indicator({ class: props.ui?.indicator })" data-part="indicator">
339
- <div :class="ui.arrow({ class: props.ui?.arrow })" data-part="arrow"></div>
337
+ <div v-if="props.orientation === 'horizontal'" data-part="viewportWrapper" :class="ui.viewportWrapper({ class: props.ui?.viewportWrapper })">
338
+ <NavigationMenuIndicator v-if="props.arrow" data-part="indicator" :class="ui.indicator({ class: props.ui?.indicator })">
339
+ <div data-part="arrow" :class="ui.arrow({ class: props.ui?.arrow })"></div>
340
340
  </NavigationMenuIndicator>
341
341
 
342
- <NavigationMenuViewport :class="ui.viewport({ class: props.ui?.viewport })" data-part="viewport" />
342
+ <NavigationMenuViewport data-part="viewport" :class="ui.viewport({ class: props.ui?.viewport })" />
343
343
  </div>
344
344
  </NavigationMenuRoot>
345
345
  </template>
@@ -51,21 +51,21 @@ const lastIcon = computed(() => props.lastIcon || (dir.value === "rtl" ? appConf
51
51
  </script>
52
52
 
53
53
  <template>
54
- <PaginationRoot v-slot="{ page, pageCount }" v-bind="rootProps" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
55
- <PaginationList v-slot="{ items }" :class="ui.list({ class: props.ui?.list })" data-part="list">
56
- <PaginationFirst v-if="props.showControls || !!slots.first" :class="ui.first({ class: props.ui?.first })" as-child data-part="first">
54
+ <PaginationRoot v-slot="{ page, pageCount }" v-bind="rootProps" data-part="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
55
+ <PaginationList v-slot="{ items }" data-part="list" :class="ui.list({ class: props.ui?.list })">
56
+ <PaginationFirst v-if="props.showControls || !!slots.first" data-part="first" :class="ui.first({ class: props.ui?.first })" as-child>
57
57
  <slot name="first">
58
58
  <Button :color="props.color" :variant="props.variant" :size="props.size" :icon="firstIcon" :to="props.to?.(1)" />
59
59
  </slot>
60
60
  </PaginationFirst>
61
- <PaginationPrev v-if="props.showControls || !!slots.prev" :class="ui.prev({ class: props.ui?.prev })" as-child data-part="perv">
61
+ <PaginationPrev v-if="props.showControls || !!slots.prev" data-part="perv" :class="ui.prev({ class: props.ui?.prev })" as-child>
62
62
  <slot name="prev">
63
63
  <Button :color="props.color" :variant="props.variant" :size="props.size" :icon="prevIcon" :to="page > 1 ? props.to?.(page - 1) : void 0" />
64
64
  </slot>
65
65
  </PaginationPrev>
66
66
 
67
67
  <template v-for="(item, index) in items" :key="index">
68
- <PaginationListItem v-if="item.type === 'page'" :value="item.value" :class="ui.item({ class: props.ui?.item })" as-child data-part="item">
68
+ <PaginationListItem v-if="item.type === 'page'" :value="item.value" data-part="item" :class="ui.item({ class: props.ui?.item })" as-child>
69
69
  <slot name="item" v-bind="{ item, index, page, pageCount }">
70
70
  <Button
71
71
  :color="props.page === item.value ? props.activeColor : props.color"
@@ -79,19 +79,19 @@ const lastIcon = computed(() => props.lastIcon || (dir.value === "rtl" ? appConf
79
79
  </slot>
80
80
  </PaginationListItem>
81
81
 
82
- <PaginationEllipsis v-else :class="ui.ellipsis({ class: props.ui?.ellipsis })" as-child data-part="ellipsis">
82
+ <PaginationEllipsis v-else data-part="ellipsis" :class="ui.ellipsis({ class: props.ui?.ellipsis })" as-child>
83
83
  <slot name="ellipsis" :ui="ui">
84
84
  <Button as="div" :color="props.color" :variant="props.variant" :size="props.size" :icon="ellipsisIcon || appConfig.ui.icons.ellipsis" />
85
85
  </slot>
86
86
  </PaginationEllipsis>
87
87
  </template>
88
88
 
89
- <PaginationNext v-if="props.showControls || !!slots.next" :class="ui.next({ class: props.ui?.next })" as-child data-part="next">
89
+ <PaginationNext v-if="props.showControls || !!slots.next" data-part="next" :class="ui.next({ class: props.ui?.next })" as-child>
90
90
  <slot name="next">
91
91
  <Button :color="props.color" :variant="props.variant" :size="props.size" :icon="nextIcon" :to="page < pageCount ? props.to?.(page + 1) : void 0" />
92
92
  </slot>
93
93
  </PaginationNext>
94
- <PaginationLast v-if="props.showControls || !!slots.last" :class="ui.last({ class: props.ui?.last })" as-child data-part="last">
94
+ <PaginationLast v-if="props.showControls || !!slots.last" data-part="last" :class="ui.last({ class: props.ui?.last })" as-child>
95
95
  <slot name="last">
96
96
  <Button :color="props.color" :variant="props.variant" :size="props.size" :icon="lastIcon" :to="props.to?.(pageCount)" />
97
97
  </slot>
@@ -76,8 +76,8 @@ defineExpose({
76
76
  :placeholder="props.placeholder"
77
77
  :model-value="modelValue"
78
78
  :default-value="props.defaultValue"
79
- :class="ui.root({ class: [props.ui?.root, props.class] })"
80
79
  data-part="root"
80
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
81
81
  @update:model-value="emitFormInput"
82
82
  @complete="onComplete"
83
83
  >
@@ -87,8 +87,8 @@ defineExpose({
87
87
  :ref="(el) => inputsRef[index] = el"
88
88
  :index="index"
89
89
  :disabled="disabled"
90
- :class="ui.base({ class: props.ui?.base })"
91
90
  data-part="base"
91
+ :class="ui.base({ class: props.ui?.base })"
92
92
  @blur="onBlur"
93
93
  @focus="emitFormFocus"
94
94
  />
@@ -66,13 +66,13 @@ const ui = computed(() => {
66
66
  <Component.Portal v-bind="portalProps">
67
67
  <Component.Content
68
68
  v-bind="contentProps"
69
- :class="ui.content({ class: [props.ui?.content, !slots.default && props.class] })"
70
69
  data-part="content"
70
+ :class="ui.content({ class: [props.ui?.content, !slots.default && props.class] })"
71
71
  v-on="contentEvents"
72
72
  >
73
73
  <slot name="content" v-bind="close ? { close } : {}"></slot>
74
74
 
75
- <Component.Arrow v-if="!!props.arrow" v-bind="arrowProps" :class="ui.arrow({ class: props.ui?.arrow })" data-part="arrow" />
75
+ <Component.Arrow v-if="!!props.arrow" v-bind="arrowProps" data-part="arrow" :class="ui.arrow({ class: props.ui?.arrow })" />
76
76
  </Component.Content>
77
77
  </Component.Portal>
78
78
  </Component.Root>
@@ -88,8 +88,8 @@ const ui = computed(() => {
88
88
  </script>
89
89
 
90
90
  <template>
91
- <Primitive :as="props.as" :class="ui.root({ class: [props.ui?.root, props.class] })" :data-orientation="orientation" data-part="root">
92
- <div v-if="!isIndeterminate && (props.status || !!slots.status)" :class="ui.status({ class: props.ui?.status })" data-part="status" :style="statusStyle">
91
+ <Primitive :as="props.as" data-part="root" :class="ui.root({ class: [props.ui?.root, props.class] })" :data-orientation="orientation">
92
+ <div v-if="!isIndeterminate && (props.status || !!slots.status)" data-part="status" :class="ui.status({ class: props.ui?.status })" :style="statusStyle">
93
93
  <slot name="status" :percent="percent">
94
94
  {{ percent }}%
95
95
  </slot>
@@ -98,15 +98,15 @@ const ui = computed(() => {
98
98
  <ProgressRoot
99
99
  v-bind="rootProps"
100
100
  :max="realMax"
101
- :class="ui.base({ class: props.ui?.base })"
102
101
  data-part="base"
102
+ :class="ui.base({ class: props.ui?.base })"
103
103
  style="transform: translateZ(0)"
104
104
  >
105
- <ProgressIndicator :class="ui.indicator({ class: props.ui?.indicator })" data-part="indicator" :style="indicatorStyle" />
105
+ <ProgressIndicator data-part="indicator" :class="ui.indicator({ class: props.ui?.indicator })" :style="indicatorStyle" />
106
106
  </ProgressRoot>
107
107
 
108
- <div v-if="hasSteps" :class="ui.steps({ class: props.ui?.steps })" data-part="steps">
109
- <div v-for="(step, index) in props.max" :key="index" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })" data-part="step">
108
+ <div v-if="hasSteps" data-part="steps" :class="ui.steps({ class: props.ui?.steps })">
109
+ <div v-for="(step, index) in props.max" :key="index" data-part="step" :class="ui.step({ class: props.ui?.step, step: stepVariant(index) })">
110
110
  <slot :name="`step-${index}`" :step="step">
111
111
  {{ step }}
112
112
  </slot>
@@ -101,12 +101,12 @@ function onUpdate(value) {
101
101
  :model-value="props.modelValue"
102
102
  :default-value="props.defaultValue"
103
103
  :orientation="props.orientation"
104
- :class="ui.root({ class: [props.ui?.root, props.class] })"
105
104
  data-part="root"
105
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
106
106
  @update:model-value="onUpdate"
107
107
  >
108
- <fieldset v-bind="ariaAttrs" :class="ui.fieldset({ class: props.ui?.fieldset })" data-part="fieldset">
109
- <legend v-if="props.legend || !!slots.legend" :class="ui.legend({ class: props.ui?.legend })" data-part="legend">
108
+ <fieldset v-bind="ariaAttrs" data-part="fieldset" :class="ui.fieldset({ class: props.ui?.fieldset })">
109
+ <legend v-if="props.legend || !!slots.legend" data-part="legend" :class="ui.legend({ class: props.ui?.legend })">
110
110
  <slot name="legend">
111
111
  {{ props.legend }}
112
112
  </slot>
@@ -115,29 +115,29 @@ function onUpdate(value) {
115
115
  :is="!props.variant || props.variant === 'list' ? 'div' : Label"
116
116
  v-for="item in normalizedItems"
117
117
  :key="item.value"
118
- :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class], disabled: item.disabled })"
119
118
  data-part="item"
119
+ :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class], disabled: item.disabled })"
120
120
  >
121
- <div :class="ui.container({ class: [props.ui?.container, item.ui?.container], disabled: item.disabled })" data-part="container">
121
+ <div data-part="container" :class="ui.container({ class: [props.ui?.container, item.ui?.container], disabled: item.disabled })">
122
122
  <RekaRadioGroupItem
123
123
  :id="item.id"
124
124
  :value="item.value"
125
125
  :disabled="item.disabled"
126
- :class="ui.base({ class: [props.ui?.base, item.ui?.base], disabled: item.disabled, indicator: props.indicator })"
127
126
  data-part="base"
127
+ :class="ui.base({ class: [props.ui?.base, item.ui?.base], disabled: item.disabled, indicator: props.indicator })"
128
128
  :data-indicator="props.indicator"
129
129
  >
130
- <RadioGroupIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator], disabled: item.disabled })" data-part="indicator" force-mount />
130
+ <RadioGroupIndicator data-part="indicator" :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator], disabled: item.disabled })" force-mount />
131
131
  </RekaRadioGroupItem>
132
132
  </div>
133
133
 
134
- <div v-if="item.label || !!slots.label || (item.description || !!slots.description)" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper], disabled: item.disabled })" data-part="wrapper">
135
- <component :is="!props.variant || props.variant === 'list' ? Label : 'p'" :for="item.id" :class="ui.label({ class: [props.ui?.label, item.ui?.label], disabled: item.disabled })" data-part="label">
134
+ <div v-if="item.label || !!slots.label || (item.description || !!slots.description)" data-part="wrapper" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper], disabled: item.disabled })">
135
+ <component :is="!props.variant || props.variant === 'list' ? Label : 'p'" :for="item.id" data-part="label" :class="ui.label({ class: [props.ui?.label, item.ui?.label], disabled: item.disabled })">
136
136
  <slot name="label" :item="item" :model-value="modelValue">
137
137
  {{ item.label }}
138
138
  </slot>
139
139
  </component>
140
- <p v-if="item.description || !!slots.description" :class="ui.description({ class: [props.ui?.description, item.ui?.description], disabled: item.disabled })" data-part="description">
140
+ <p v-if="item.description || !!slots.description" data-part="description" :class="ui.description({ class: [props.ui?.description, item.ui?.description], disabled: item.disabled })">
141
141
  <slot name="description" :item="item" :model-value="modelValue">
142
142
  {{ item.description }}
143
143
  </slot>
@@ -39,33 +39,33 @@ function scrollTopLeft() {
39
39
  <ScrollAreaRoot
40
40
  ref="rootRef"
41
41
  v-bind="rootProps"
42
- :class="ui.root({ class: [props.class, props.ui?.root] })"
43
42
  data-part="root"
43
+ :class="ui.root({ class: [props.class, props.ui?.root] })"
44
44
  >
45
- <ScrollAreaViewport :class="ui.viewport({ class: props.ui?.viewport })" data-part="viewport">
45
+ <ScrollAreaViewport data-part="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
46
46
  <slot></slot>
47
47
  </ScrollAreaViewport>
48
48
 
49
49
  <ScrollAreaScrollbar
50
50
  key="scrollbar-horizontal"
51
51
  orientation="horizontal"
52
- :class="ui.scrollbar({ class: props.ui?.scrollbar })"
53
52
  data-part="scrollbar"
53
+ :class="ui.scrollbar({ class: props.ui?.scrollbar })"
54
54
  >
55
- <ScrollAreaThumb :class="ui.thumb({ class: props.ui?.thumb })" data-part="thumb" />
55
+ <ScrollAreaThumb data-part="thumb" :class="ui.thumb({ class: props.ui?.thumb })" />
56
56
  </ScrollAreaScrollbar>
57
57
  <ScrollAreaScrollbar
58
58
  key="scrollbar-vertical"
59
59
  orientation="vertical"
60
- :class="ui.scrollbar({ class: props.ui?.scrollbar })"
61
60
  data-part="scrollbar"
61
+ :class="ui.scrollbar({ class: props.ui?.scrollbar })"
62
62
  >
63
- <ScrollAreaThumb :class="ui.thumb({ class: props.ui?.thumb })" data-part="thumb" />
63
+ <ScrollAreaThumb data-part="thumb" :class="ui.thumb({ class: props.ui?.thumb })" />
64
64
  </ScrollAreaScrollbar>
65
65
  <ScrollAreaCorner
66
66
  key="corner"
67
- :class="ui.corner({ class: props.ui?.corner })"
68
67
  data-part="corner"
68
+ :class="ui.corner({ class: props.ui?.corner })"
69
69
  />
70
70
  </ScrollAreaRoot>
71
71
  </template>