@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
@@ -226,11 +226,11 @@ defineExpose({
226
226
  <DefineCreateItemTemplate>
227
227
  <ComboboxItem
228
228
  :value="searchTerm"
229
- :class="ui.item({ class: props.ui?.item })"
230
229
  data-part="item"
230
+ :class="ui.item({ class: props.ui?.item })"
231
231
  @select="onCreate"
232
232
  >
233
- <span :class="ui.itemLabel({ class: props.ui?.itemLabel })" data-part="itemLabel">
233
+ <span data-part="itemLabel" :class="ui.itemLabel({ class: props.ui?.itemLabel })">
234
234
  <slot name="create-item-label" :item="searchTerm">
235
235
  {{ t("select.create", { label: searchTerm }) }}
236
236
  </slot>
@@ -250,38 +250,38 @@ defineExpose({
250
250
  @update:open="onUpdateOpen"
251
251
  >
252
252
  <ComboboxAnchor as-child>
253
- <ComboboxTrigger ref="triggerRef" :class="ui.base({ class: [props.ui?.base, props.class] })" data-part="base" tabindex="0">
254
- <span v-if="isLeading || !!props.avatar || slots.leading" :class="ui.leading({ class: props.ui?.leading })" data-part="leading">
253
+ <ComboboxTrigger ref="triggerRef" tabindex="0" data-part="base" :class="ui.base({ class: [props.ui?.base, props.class] })">
254
+ <span v-if="isLeading || !!props.avatar || slots.leading" data-part="leading" :class="ui.leading({ class: props.ui?.leading })">
255
255
  <slot name="leading" :model-value="modelValue" :open="open" :ui="ui">
256
256
  <Icon
257
257
  v-if="isLeading && leadingIconName"
258
258
  :name="leadingIconName"
259
- :class="ui.leadingIcon({ class: props.ui?.leadingIcon })"
260
259
  data-part="leadingIcon"
260
+ :class="ui.leadingIcon({ class: props.ui?.leadingIcon })"
261
261
  />
262
262
  <Avatar
263
263
  v-else-if="props.avatar"
264
264
  :size="props.ui?.itemLeadingChipSize || ui.itemLeadingAvatarSize()"
265
265
  v-bind="props.avatar"
266
- :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })"
267
266
  data-part="leadingAvatar"
267
+ :class="ui.leadingAvatar({ class: props.ui?.leadingAvatar })"
268
268
  />
269
269
  </slot>
270
270
  </span>
271
271
 
272
272
  <slot :model-value="modelValue" :open="open" :ui="ui">
273
273
  <template v-for="displayedModelValue in [displayValue(modelValue)]" :key="displayedModelValue">
274
- <span v-if="displayedModelValue != null" :class="ui.value({ class: props.ui?.value })" data-part="value">
274
+ <span v-if="displayedModelValue != null" data-part="value" :class="ui.value({ class: props.ui?.value })">
275
275
  {{ displayedModelValue }}
276
276
  </span>
277
- <span v-else :class="ui.placeholder({ class: props.ui?.placeholder })" data-part="placeholder">
277
+ <span v-else data-part="placeholder" :class="ui.placeholder({ class: props.ui?.placeholder })">
278
278
  <template v-if="props.placeholder">{{ props.placeholder }}</template>
279
279
  <template v-else>&nbsp;</template>
280
280
  </span>
281
281
  </template>
282
282
  </slot>
283
283
 
284
- <span v-if="isTrailing || !!slots.trailing || props.clear" :class="ui.trailing({ class: props.ui?.trailing })" data-part="trailing">
284
+ <span v-if="isTrailing || !!slots.trailing || props.clear" data-part="trailing" :class="ui.trailing({ class: props.ui?.trailing })">
285
285
  <slot name="trailing" :model-value="modelValue" :open="open" :ui="ui">
286
286
  <ComboboxCancel v-if="props.clear && !isModelValueEmpty(modelValue)" as-child>
287
287
  <Button
@@ -291,20 +291,20 @@ defineExpose({
291
291
  color="neutral"
292
292
  tabindex="-1"
293
293
  v-bind="clearProps"
294
- :class="ui.trailingClear({ class: props.ui?.trailingClear })"
295
294
  data-part="trailingClear"
295
+ :class="ui.trailingClear({ class: props.ui?.trailingClear })"
296
296
  @click.stop="onClear"
297
297
  />
298
298
  </ComboboxCancel>
299
- <Icon v-else-if="trailingIconName" :name="trailingIconName" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" data-part="trailingIcon" />
299
+ <Icon v-else-if="trailingIconName" :name="trailingIconName" data-part="trailingIcon" :class="ui.trailingIcon({ class: props.ui?.trailingIcon })" />
300
300
  </slot>
301
301
  </span>
302
302
  </ComboboxTrigger>
303
303
  </ComboboxAnchor>
304
304
 
305
305
  <ComboboxPortal v-bind="portalProps">
306
- <ComboboxContent v-bind="contentProps" :class="ui.content({ class: props.ui?.content })" data-part="content">
307
- <FocusScope trapped :class="ui.focusScope({ class: props.ui?.focusScope })" data-part="focusScope">
306
+ <ComboboxContent v-bind="contentProps" data-part="content" :class="ui.content({ class: props.ui?.content })">
307
+ <FocusScope trapped data-part="focusScope" :class="ui.focusScope({ class: props.ui?.focusScope })">
308
308
  <slot name="content-top"></slot>
309
309
 
310
310
  <ComboboxInput v-model="searchTerm" :display-value="() => searchTerm" as-child>
@@ -313,45 +313,45 @@ defineExpose({
313
313
  autocomplete="off"
314
314
  :size="props.size"
315
315
  v-bind="searchInputProps"
316
- :class="ui.input({ class: props.ui?.input })"
317
316
  data-part="input"
317
+ :class="ui.input({ class: props.ui?.input })"
318
318
  @change.stop
319
319
  />
320
320
  </ComboboxInput>
321
321
 
322
- <ComboboxEmpty :class="ui.empty({ class: props.ui?.empty })" data-part="empty">
322
+ <ComboboxEmpty data-part="empty" :class="ui.empty({ class: props.ui?.empty })">
323
323
  <slot name="empty" :search-term="searchTerm">
324
324
  {{ searchTerm ? t("select.noMatch", { searchTerm }) : t("select.noData") }}
325
325
  </slot>
326
326
  </ComboboxEmpty>
327
327
 
328
- <div role="presentation" :class="ui.viewport({ class: props.ui?.viewport })" data-part="viewport">
329
- <ComboboxGroup v-if="createItem && createItemPosition === 'top'" :class="ui.group({ class: props.ui?.group })" data-part="group">
328
+ <div role="presentation" data-part="viewport" :class="ui.viewport({ class: props.ui?.viewport })">
329
+ <ComboboxGroup v-if="createItem && createItemPosition === 'top'" data-part="group" :class="ui.group({ class: props.ui?.group })">
330
330
  <ReuseCreateItemTemplate />
331
331
  </ComboboxGroup>
332
332
 
333
- <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" :class="ui.group({ class: props.ui?.group })" data-part="group">
333
+ <ComboboxGroup v-for="(group, groupIndex) in filteredGroups" :key="`group-${groupIndex}`" data-part="group" :class="ui.group({ class: props.ui?.group })">
334
334
  <template v-for="(item, index) in group" :key="`group-${groupIndex}-${index}`">
335
335
  <ComboboxLabel
336
336
  v-if="isSelectItem(item) && item.type === 'label'"
337
- :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })"
338
337
  data-part="label"
338
+ :class="ui.label({ class: [props.ui?.label, item.ui?.label, item.class] })"
339
339
  >
340
340
  {{ get(item, props.labelKey) }}
341
341
  </ComboboxLabel>
342
342
 
343
343
  <ComboboxSeparator
344
344
  v-else-if="isSelectItem(item) && item.type === 'separator'"
345
- :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })"
346
345
  data-part="separator"
346
+ :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator, item.class] })"
347
347
  />
348
348
 
349
349
  <ComboboxItem
350
350
  v-else
351
351
  :value="props.valueKey && isSelectItem(item) ? get(item, props.valueKey) : item"
352
352
  :disabled="isSelectItem(item) && item.disabled"
353
- :class="ui.item({ class: [props.ui?.item, ...isSelectItem(item) ? [item.ui?.item, item.class] : []] })"
354
353
  data-part="item"
354
+ :class="ui.item({ class: [props.ui?.item, ...isSelectItem(item) ? [item.ui?.item, item.class] : []] })"
355
355
  @select="onSelect($event, item)"
356
356
  >
357
357
  <slot name="item" :item="item" :index="index" :ui="ui">
@@ -359,15 +359,15 @@ defineExpose({
359
359
  <Icon
360
360
  v-if="isSelectItem(item) && item.icon"
361
361
  :name="item.icon"
362
- :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })"
363
362
  data-part="itemLeadingIcon"
363
+ :class="ui.itemLeadingIcon({ class: [props.ui?.itemLeadingIcon, item.ui?.itemLeadingIcon] })"
364
364
  />
365
365
  <Avatar
366
366
  v-else-if="isSelectItem(item) && item.avatar"
367
367
  :size="item.ui?.itemLeadingAvatarSize || props.ui?.itemLeadingAvatarSize || ui.itemLeadingAvatarSize()"
368
368
  v-bind="item.avatar"
369
- :class="ui.itemLeadingAvatar({ class: [props.ui?.leadingAvatar, item.ui?.itemLeadingAvatar] })"
370
369
  data-part="itemLeadingAvatar"
370
+ :class="ui.itemLeadingAvatar({ class: [props.ui?.leadingAvatar, item.ui?.itemLeadingAvatar] })"
371
371
  />
372
372
  <Chip
373
373
  v-else-if="isSelectItem(item) && item.chip"
@@ -375,13 +375,13 @@ defineExpose({
375
375
  inset
376
376
  standalone
377
377
  v-bind="item.chip"
378
- :class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
379
378
  data-part="itemLeadingChip"
379
+ :class="ui.itemLeadingChip({ class: [props.ui?.itemLeadingChip, item.ui?.itemLeadingChip] })"
380
380
  />
381
381
  </slot>
382
382
 
383
- <span :class="ui.itemWrapper({ class: [props.ui?.itemWrapper, isSelectItem(item) && item.ui?.itemWrapper] })" data-part="itemWrapper">
384
- <span :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })" data-part="itemLabel">
383
+ <span data-part="itemWrapper" :class="ui.itemWrapper({ class: [props.ui?.itemWrapper, isSelectItem(item) && item.ui?.itemWrapper] })">
384
+ <span data-part="itemLabel" :class="ui.itemLabel({ class: [props.ui?.itemLabel, isSelectItem(item) && item.ui?.itemLabel] })">
385
385
  <slot name="item-label" :item="item" :index="index">
386
386
  {{ isSelectItem(item) ? get(item, props.labelKey) : item }}
387
387
  </slot>
@@ -389,8 +389,8 @@ defineExpose({
389
389
 
390
390
  <span
391
391
  v-if="isSelectItem(item) && get(item, props.descriptionKey) || !!slots['item-description']"
392
- :class="ui.itemDescription({ class: [props.ui?.itemDescription, isSelectItem(item) && item.ui?.itemDescription] })"
393
392
  data-part="itemDescription"
393
+ :class="ui.itemDescription({ class: [props.ui?.itemDescription, isSelectItem(item) && item.ui?.itemDescription] })"
394
394
  >
395
395
  <slot name="item-description" :item="item" :index="index">
396
396
  {{ isSelectItem(item) ? get(item, props.descriptionKey) : "" }}
@@ -398,11 +398,11 @@ defineExpose({
398
398
  </span>
399
399
  </span>
400
400
 
401
- <span :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })" data-part="itemTrailing">
401
+ <span data-part="itemTrailing" :class="ui.itemTrailing({ class: [props.ui?.itemTrailing, isSelectItem(item) && item.ui?.itemTrailing] })">
402
402
  <slot name="item-trailing" :item="item" :index="index" :ui="ui"></slot>
403
403
 
404
404
  <ComboboxItemIndicator as-child>
405
- <Icon :name="props.selectedIcon || appConfig.ui.icons.check" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" data-part="itemTrailingIcon" />
405
+ <Icon :name="props.selectedIcon || appConfig.ui.icons.check" data-part="itemTrailingIcon" :class="ui.itemTrailingIcon({ class: [props.ui?.itemTrailingIcon, isSelectItem(item) && item.ui?.itemTrailingIcon] })" />
406
406
  </ComboboxItemIndicator>
407
407
  </span>
408
408
  </slot>
@@ -410,7 +410,7 @@ defineExpose({
410
410
  </template>
411
411
  </ComboboxGroup>
412
412
 
413
- <ComboboxGroup v-if="createItem && createItemPosition === 'bottom'" :class="ui.group({ class: props.ui?.group })" data-part="group">
413
+ <ComboboxGroup v-if="createItem && createItemPosition === 'bottom'" data-part="group" :class="ui.group({ class: props.ui?.group })">
414
414
  <ReuseCreateItemTemplate />
415
415
  </ComboboxGroup>
416
416
  </div>
@@ -418,7 +418,7 @@ defineExpose({
418
418
  <slot name="content-bottom"></slot>
419
419
  </FocusScope>
420
420
 
421
- <ComboboxArrow v-if="props.arrow" v-bind="arrowProps" :class="ui.arrow({ class: props.ui?.arrow })" data-part="arrow" />
421
+ <ComboboxArrow v-if="props.arrow" v-bind="arrowProps" data-part="arrow" :class="ui.arrow({ class: props.ui?.arrow })" />
422
422
  </ComboboxContent>
423
423
  </ComboboxPortal>
424
424
  </ComboboxRoot>
@@ -35,34 +35,34 @@ const ui = computed(() => {
35
35
  </script>
36
36
 
37
37
  <template>
38
- <Separator v-bind="rootProps" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
39
- <div :class="ui.border({ class: props.ui?.border, start: props.align === 'start' })" data-part="border"></div>
38
+ <Separator v-bind="rootProps" data-part="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
39
+ <div data-part="border" :class="ui.border({ class: props.ui?.border, start: props.align === 'start' })"></div>
40
40
 
41
41
  <template v-if="props.label || props.icon || props.avatar || !!slots.default">
42
- <div :class="ui.container({ class: props.ui?.container })" data-part="container">
42
+ <div data-part="container" :class="ui.container({ class: props.ui?.container })">
43
43
  <slot :ui="ui">
44
44
  <span
45
45
  v-if="props.label"
46
- :class="ui.label({ class: props.ui?.label })"
47
46
  data-part="label"
47
+ :class="ui.label({ class: props.ui?.label })"
48
48
  >{{ props.label }}</span>
49
49
  <Icon
50
50
  v-else-if="props.icon"
51
51
  :name="props.icon"
52
- :class="ui.icon({ class: props.ui?.icon })"
53
52
  data-part="icon"
53
+ :class="ui.icon({ class: props.ui?.icon })"
54
54
  />
55
55
  <Avatar
56
56
  v-else-if="props.avatar"
57
57
  :size="props.ui?.avatarSize || ui.avatarSize()"
58
58
  v-bind="props.avatar"
59
- :class="ui.avatar({ class: props.ui?.avatar })"
60
59
  data-part="avatar"
60
+ :class="ui.avatar({ class: props.ui?.avatar })"
61
61
  />
62
62
  </slot>
63
63
  </div>
64
64
 
65
- <div :class="ui.border({ class: props.ui?.border, end: props.align === 'end' })" data-part="border"></div>
65
+ <div data-part="border" :class="ui.border({ class: props.ui?.border, end: props.align === 'end' })"></div>
66
66
  </template>
67
67
  </Separator>
68
68
  </template>
@@ -26,8 +26,8 @@ const ui = computed(() => {
26
26
  aria-label="loading"
27
27
  aria-live="polite"
28
28
  role="alert"
29
- :class="ui.base({ class: props.class })"
30
29
  data-part="base"
30
+ :class="ui.base({ class: props.class })"
31
31
  >
32
32
  <slot></slot>
33
33
  </Primitive>
@@ -71,14 +71,14 @@ function onChange(value) {
71
71
  v-bind="{ ...rootProps, ...ariaAttrs, id, name, disabled }"
72
72
  v-model="sliderValue"
73
73
  :default-value="defaultSliderValue"
74
- :class="ui.root({ class: [props.ui?.root, props.class] })"
75
74
  :data-steps="thumbs"
76
75
  data-part="root"
76
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
77
77
  @update:model-value="emitFormInput()"
78
78
  @value-commit="onChange"
79
79
  >
80
- <SliderTrack :class="ui.track({ class: props.ui?.track })" data-part="track">
81
- <SliderRange :class="ui.range({ class: props.ui?.range })" data-part="range" />
80
+ <SliderTrack data-part="track" :class="ui.track({ class: props.ui?.track })">
81
+ <SliderRange data-part="range" :class="ui.range({ class: props.ui?.range })" />
82
82
  </SliderTrack>
83
83
 
84
84
  <Tooltip
@@ -89,7 +89,7 @@ function onChange(value) {
89
89
  :disabled="!props.tooltip"
90
90
  disable-closing-trigger
91
91
  >
92
- <SliderThumb :class="ui.thumb({ class: props.ui?.thumb })" data-part="thumb" :aria-label="thumbs === 1 ? 'Thumb' : `Thumb ${thumb} of ${thumbs}`" />
92
+ <SliderThumb :aria-label="thumbs === 1 ? 'Thumb' : `Thumb ${thumb} of ${thumbs}`" data-part="thumb" :class="ui.thumb({ class: props.ui?.thumb })" />
93
93
  </Tooltip>
94
94
  </SliderRoot>
95
95
  </template>
@@ -63,21 +63,21 @@ defineExpose({
63
63
  </script>
64
64
 
65
65
  <template>
66
- <StepperRoot v-bind="rootProps" v-model="currentStepIndex" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
67
- <div :class="ui.header({ class: props.ui?.header })" data-part="header">
66
+ <StepperRoot v-bind="rootProps" v-model="currentStepIndex" data-part="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
67
+ <div data-part="header" :class="ui.header({ class: props.ui?.header })">
68
68
  <StepperItem
69
69
  v-for="(item, count) in props.items"
70
70
  :key="item.value ?? count"
71
71
  :step="count"
72
72
  :disabled="item.disabled || props.disabled"
73
- :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class] })"
74
73
  data-part="item"
74
+ :class="ui.item({ class: [props.ui?.item, item.ui?.item, item.class] })"
75
75
  >
76
- <div :class="ui.container({ class: [props.ui?.container, item.ui?.container] })" data-part="container">
77
- <StepperTrigger :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })" data-part="trigger">
78
- <StepperIndicator :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator] })" data-part="indicator">
76
+ <div data-part="container" :class="ui.container({ class: [props.ui?.container, item.ui?.container] })">
77
+ <StepperTrigger data-part="trigger" :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })">
78
+ <StepperIndicator data-part="indicator" :class="ui.indicator({ class: [props.ui?.indicator, item.ui?.indicator] })">
79
79
  <slot name="indicator" :item="item" :ui="ui">
80
- <Icon v-if="item.icon" :name="item.icon" :class="ui.icon({ class: [props.ui?.icon, item.ui?.icon] })" data-part="icon" />
80
+ <Icon v-if="item.icon" :name="item.icon" data-part="icon" :class="ui.icon({ class: [props.ui?.icon, item.ui?.icon] })" />
81
81
  <template v-else>
82
82
  {{ count + 1 }}
83
83
  </template>
@@ -87,20 +87,20 @@ defineExpose({
87
87
 
88
88
  <StepperSeparator
89
89
  v-if="count < props.items.length - 1"
90
- :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator] })"
91
90
  data-part="separator"
91
+ :class="ui.separator({ class: [props.ui?.separator, item.ui?.separator] })"
92
92
  />
93
93
  </div>
94
94
 
95
- <div :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })" data-part="wrapper">
95
+ <div data-part="wrapper" :class="ui.wrapper({ class: [props.ui?.wrapper, item.ui?.wrapper] })">
96
96
  <slot :name="item.slot ? `${item.slot}-wrapper` : 'wrapper'" :item="item">
97
- <StepperTitle v-if="item.title || !!slots[item.slot ? `${item.slot}-title` : 'title']" as="div" :class="ui.title({ class: [props.ui?.title, item.ui?.title] })" data-part="title">
97
+ <StepperTitle v-if="item.title || !!slots[item.slot ? `${item.slot}-title` : 'title']" as="div" data-part="title" :class="ui.title({ class: [props.ui?.title, item.ui?.title] })">
98
98
  <slot :name="item.slot ? `${item.slot}-title` : 'title'" :item="item">
99
99
  {{ item.title }}
100
100
  </slot>
101
101
  </StepperTitle>
102
102
 
103
- <StepperDescription v-if="item.description || !!slots[item.slot ? `${item.slot}-description` : 'description']" as="div" :class="ui.description({ class: [props.ui?.description, item.ui?.description] })" data-part="description">
103
+ <StepperDescription v-if="item.description || !!slots[item.slot ? `${item.slot}-description` : 'description']" as="div" data-part="description" :class="ui.description({ class: [props.ui?.description, item.ui?.description] })">
104
104
  <slot :name="item.slot ? `${item.slot}-description` : 'description'" :item="item">
105
105
  {{ item.description }}
106
106
  </slot>
@@ -110,7 +110,7 @@ defineExpose({
110
110
  </StepperItem>
111
111
  </div>
112
112
 
113
- <div v-if="currentStep?.content || !!slots.content || currentStep?.slot && !!slots[currentStep.slot]" :class="ui.content({ class: props.ui?.content })" data-part="content">
113
+ <div v-if="currentStep?.content || !!slots.content || currentStep?.slot && !!slots[currentStep.slot]" data-part="content" :class="ui.content({ class: props.ui?.content })">
114
114
  <slot :name="currentStep?.slot || 'content'" :item="currentStep">
115
115
  {{ currentStep?.content }}
116
116
  </slot>
@@ -57,30 +57,30 @@ function onUpdate(value) {
57
57
  </script>
58
58
 
59
59
  <template>
60
- <Primitive :as="props.as" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
61
- <div :class="ui.container({ class: props.ui?.container })" data-part="container">
60
+ <Primitive :as="props.as" data-part="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
61
+ <div data-part="container" :class="ui.container({ class: props.ui?.container })">
62
62
  <SwitchRoot
63
63
  v-bind="{ id, ...rootProps, ...ariaAttrs, name }"
64
64
  v-model="modelValue"
65
65
  :disabled="disabled || props.loading"
66
- :class="ui.base({ class: props.ui?.base })"
67
66
  data-part="base"
67
+ :class="ui.base({ class: props.ui?.base })"
68
68
  @update:model-value="onUpdate"
69
69
  >
70
- <SwitchThumb :class="ui.thumb({ class: props.ui?.thumb })" data-part="thumb">
71
- <Icon v-if="props.loading" :name="props.loadingIcon || appConfig.ui.icons.loading" :class="ui.icon({ class: props.ui?.icon, checked: true, unchecked: true })" data-part="icon" />
70
+ <SwitchThumb data-part="thumb" :class="ui.thumb({ class: props.ui?.thumb })">
71
+ <Icon v-if="props.loading" :name="props.loadingIcon || appConfig.ui.icons.loading" data-part="icon" :class="ui.icon({ class: props.ui?.icon, checked: true, unchecked: true })" />
72
72
  <template v-else>
73
- <Icon v-if="props.checkedIcon" :name="props.checkedIcon" :class="ui.icon({ class: props.ui?.icon, checked: true })" data-part="icon" />
74
- <Icon v-if="props.uncheckedIcon" :name="props.uncheckedIcon" :class="ui.icon({ class: props.ui?.icon, unchecked: true })" data-part="icon" />
73
+ <Icon v-if="props.checkedIcon" :name="props.checkedIcon" data-part="icon" :class="ui.icon({ class: props.ui?.icon, checked: true })" />
74
+ <Icon v-if="props.uncheckedIcon" :name="props.uncheckedIcon" data-part="icon" :class="ui.icon({ class: props.ui?.icon, unchecked: true })" />
75
75
  </template>
76
76
  </SwitchThumb>
77
77
  </SwitchRoot>
78
78
  </div>
79
- <div v-if="props.label || !!slots.label || (props.description || !!slots.description)" :class="ui.wrapper({ class: props.ui?.wrapper })" data-part="wrapper">
80
- <Label v-if="props.label || !!slots.label" :for="id" :class="ui.label({ class: props.ui?.label })" data-part="label">
79
+ <div v-if="props.label || !!slots.label || (props.description || !!slots.description)" data-part="wrapper" :class="ui.wrapper({ class: props.ui?.wrapper })">
80
+ <Label v-if="props.label || !!slots.label" :for="id" data-part="label" :class="ui.label({ class: props.ui?.label })">
81
81
  <slot name="label" :label="props.label">{{ props.label }}</slot>
82
82
  </Label>
83
- <p v-if="props.description || !!slots.description" :class="ui.description({ class: props.ui?.description })" data-part="description">
83
+ <p v-if="props.description || !!slots.description" data-part="description" :class="ui.description({ class: props.ui?.description })">
84
84
  <slot name="description" :description="props.description">
85
85
  {{ props.description }}
86
86
  </slot>
@@ -302,16 +302,16 @@ defineExpose({
302
302
  <tr
303
303
  :role="props.onSelect ? 'button' : void 0"
304
304
  :tabindex="props.onSelect ? 0 : void 0"
305
+ :data-selected="row.getIsSelected()"
306
+ :data-selectable="!!props.onSelect || !!props.onHover || !!props.onContextmenu"
307
+ :data-expanded="row.getIsExpanded()"
308
+ data-part="tr"
305
309
  :class="ui.tr({
306
310
  class: [
307
311
  props.ui?.tr,
308
312
  resolveValue(tableApi.options.meta?.class?.tr, row)
309
313
  ]
310
314
  })"
311
- :data-selected="row.getIsSelected()"
312
- :data-selectable="!!props.onSelect || !!props.onHover || !!props.onContextmenu"
313
- :data-expanded="row.getIsExpanded()"
314
- data-part="tr"
315
315
  :style="[resolveValue(tableApi.options.meta?.style?.tr, row), style]"
316
316
  @click="onRowSelect($event, row)"
317
317
  @pointerenter="onRowHover($event, row)"
@@ -323,6 +323,8 @@ defineExpose({
323
323
  :key="cell.id"
324
324
  :colspan="resolveValue(cell.column.columnDef.meta?.colspan?.td, cell)"
325
325
  :rowspan="resolveValue(cell.column.columnDef.meta?.rowspan?.td, cell)"
326
+ :data-pinned="cell.column.getIsPinned()"
327
+ data-part="td"
326
328
  :class="ui.td({
327
329
  class: [
328
330
  props.ui?.td,
@@ -330,8 +332,6 @@ defineExpose({
330
332
  ],
331
333
  pinned: !!cell.column.getIsPinned()
332
334
  })"
333
- :data-pinned="cell.column.getIsPinned()"
334
- data-part="td"
335
335
  :style="[
336
336
  getColumnStyles(cell.column),
337
337
  resolveValue(cell.column.columnDef.meta?.style?.td, cell)
@@ -343,23 +343,23 @@ defineExpose({
343
343
  </td>
344
344
  </tr>
345
345
 
346
- <tr v-if="row.getIsExpanded()" :class="ui.tr({ class: props.ui?.tr })" data-part="tr">
347
- <td :colspan="row.getAllCells().length" :class="ui.td({ class: props.ui?.td })" data-part="td">
346
+ <tr v-if="row.getIsExpanded()" data-part="tr" :class="ui.tr({ class: props.ui?.tr })">
347
+ <td :colspan="row.getAllCells().length" data-part="td" :class="ui.td({ class: props.ui?.td })">
348
348
  <slot name="expanded" :row="row"></slot>
349
349
  </td>
350
350
  </tr>
351
351
  </DefineRowTemplate>
352
352
 
353
353
  <DefineTableTemplate>
354
- <table ref="tableRef" :class="ui.base({ class: props.ui?.base })" data-part="base">
355
- <caption v-if="caption || !!slots.caption" :class="ui.caption({ class: [props.ui?.caption] })" data-part="caption">
354
+ <table ref="tableRef" data-part="base" :class="ui.base({ class: props.ui?.base })">
355
+ <caption v-if="caption || !!slots.caption" data-part="caption" :class="ui.caption({ class: [props.ui?.caption] })">
356
356
  <slot name="caption">
357
357
  {{ caption }}
358
358
  </slot>
359
359
  </caption>
360
360
 
361
- <thead :class="ui.thead({ class: [props.ui?.thead] })" data-part="thead">
362
- <tr v-for="headerGroup in tableApi.getHeaderGroups()" :key="headerGroup.id" :class="ui.tr({ class: [props.ui?.tr] })" data-part="tr">
361
+ <thead data-part="thead" :class="ui.thead({ class: [props.ui?.thead] })">
362
+ <tr v-for="headerGroup in tableApi.getHeaderGroups()" :key="headerGroup.id" data-part="tr" :class="ui.tr({ class: [props.ui?.tr] })">
363
363
  <th
364
364
  v-for="header in headerGroup.headers"
365
365
  :key="header.id"
@@ -367,6 +367,7 @@ defineExpose({
367
367
  :scope="header.colSpan > 1 ? 'colgroup' : 'col'"
368
368
  :colspan="header.colSpan > 1 ? header.colSpan : void 0"
369
369
  :rowspan="header.rowSpan > 1 ? header.rowSpan : void 0"
370
+ data-part="th"
370
371
  :class="ui.th({
371
372
  class: [
372
373
  props.ui?.th,
@@ -374,7 +375,6 @@ defineExpose({
374
375
  ],
375
376
  pinned: !!header.column.getIsPinned()
376
377
  })"
377
- data-part="th"
378
378
  :style="[
379
379
  getColumnStyles(header.column),
380
380
  resolveValue(header.column.columnDef.meta?.style?.th, header)
@@ -386,10 +386,10 @@ defineExpose({
386
386
  </th>
387
387
  </tr>
388
388
 
389
- <tr :class="ui.separator({ class: [props.ui?.separator] })" data-part="separator"></tr>
389
+ <tr data-part="separator" :class="ui.separator({ class: [props.ui?.separator] })"></tr>
390
390
  </thead>
391
391
 
392
- <tbody :class="ui.tbody({ class: [props.ui?.tbody] })" data-part="tbody">
392
+ <tbody data-part="tbody" :class="ui.tbody({ class: [props.ui?.tbody] })">
393
393
  <slot name="body-top"></slot>
394
394
 
395
395
  <template v-if="rows.length">
@@ -411,13 +411,13 @@ defineExpose({
411
411
  </template>
412
412
 
413
413
  <tr v-else-if="props.loading && !!slots.loading">
414
- <td :colspan="tableApi.getAllLeafColumns().length" :class="ui.loading({ class: props.ui?.loading })" data-part="loading">
414
+ <td :colspan="tableApi.getAllLeafColumns().length" data-part="loading" :class="ui.loading({ class: props.ui?.loading })">
415
415
  <slot name="loading"></slot>
416
416
  </td>
417
417
  </tr>
418
418
 
419
419
  <tr v-else>
420
- <td :colspan="tableApi.getAllLeafColumns().length" :class="ui.empty({ class: props.ui?.empty })" data-part="empty">
420
+ <td :colspan="tableApi.getAllLeafColumns().length" data-part="empty" :class="ui.empty({ class: props.ui?.empty })">
421
421
  <slot name="empty">
422
422
  {{ props.empty || t("table.noData") }}
423
423
  </slot>
@@ -429,21 +429,22 @@ defineExpose({
429
429
 
430
430
  <tfoot
431
431
  v-if="hasFooter"
432
- :class="ui.tfoot({ class: props.ui?.tfoot })"
433
432
  data-part="tfoot"
433
+ :class="ui.tfoot({ class: props.ui?.tfoot })"
434
434
  :style="virtualizer ? {
435
435
  transform: `translateY(${virtualizer.getTotalSize() - virtualizer.getVirtualItems().length * virtualizerProps.estimateSize}px)`
436
436
  } : void 0"
437
437
  >
438
- <tr :class="ui.separator({ class: props.ui?.separator })" data-part="separator"></tr>
438
+ <tr data-part="separator" :class="ui.separator({ class: props.ui?.separator })"></tr>
439
439
 
440
- <tr v-for="footerGroup in tableApi.getFooterGroups()" :key="footerGroup.id" :class="ui.tr({ class: props.ui?.tr })" data-part="tr">
440
+ <tr v-for="footerGroup in tableApi.getFooterGroups()" :key="footerGroup.id" data-part="tr" :class="ui.tr({ class: props.ui?.tr })">
441
441
  <th
442
442
  v-for="header in footerGroup.headers"
443
443
  :key="header.id"
444
444
  :data-pinned="header.column.getIsPinned()"
445
445
  :colspan="header.colSpan > 1 ? header.colSpan : void 0"
446
446
  :rowspan="header.rowSpan > 1 ? header.rowSpan : void 0"
447
+ data-part="th"
447
448
  :class="ui.th({
448
449
  class: [
449
450
  props.ui?.th,
@@ -451,7 +452,6 @@ defineExpose({
451
452
  ],
452
453
  pinned: !!header.column.getIsPinned()
453
454
  })"
454
- data-part="th"
455
455
  :style="[
456
456
  getColumnStyles(header.column),
457
457
  resolveValue(header.column.columnDef.meta?.style?.th, header)
@@ -466,7 +466,7 @@ defineExpose({
466
466
  </table>
467
467
  </DefineTableTemplate>
468
468
 
469
- <Primitive ref="rootRef" :as="props.as" v-bind="$attrs" :class="ui.root({ class: [props.ui?.root, props.class] })" data-part="root">
469
+ <Primitive ref="rootRef" :as="props.as" v-bind="$attrs" data-part="root" :class="ui.root({ class: [props.ui?.root, props.class] })">
470
470
  <div v-if="virtualizer" :style="{ height: `${virtualizer.getTotalSize()}px` }">
471
471
  <ReuseTableTemplate />
472
472
  </div>
@@ -49,11 +49,11 @@ defineExpose({
49
49
  :default-value="props.defaultValue"
50
50
  :orientation="props.orientation"
51
51
  :activation-mode="props.activationMode"
52
- :class="ui.root({ class: [props.ui?.root, props.class] })"
53
52
  data-part="root"
53
+ :class="ui.root({ class: [props.ui?.root, props.class] })"
54
54
  >
55
- <TabsList :class="ui.list({ class: props.ui?.list })" data-part="list">
56
- <TabsIndicator :class="ui.indicator({ class: props.ui?.indicator })" data-part="indicator" />
55
+ <TabsList data-part="list" :class="ui.list({ class: props.ui?.list })">
56
+ <TabsIndicator data-part="indicator" :class="ui.indicator({ class: props.ui?.indicator })" />
57
57
 
58
58
  <slot name="list-leading">
59
59
  </slot>
@@ -64,26 +64,26 @@ defineExpose({
64
64
  :key="index"
65
65
  :value="item.value ?? String(index)"
66
66
  :disabled="item.disabled"
67
- :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })"
68
67
  data-part="trigger"
68
+ :class="ui.trigger({ class: [props.ui?.trigger, item.ui?.trigger] })"
69
69
  >
70
70
  <slot name="leading" :item="item" :index="index" :ui="ui">
71
71
  <Icon
72
72
  v-if="item.icon"
73
73
  :name="item.icon"
74
- :class="ui.leadingIcon({ class: [props.ui?.leadingIcon, item.ui?.leadingIcon] })"
75
74
  data-part="leadingIcon"
75
+ :class="ui.leadingIcon({ class: [props.ui?.leadingIcon, item.ui?.leadingIcon] })"
76
76
  />
77
77
  <Avatar
78
78
  v-else-if="item.avatar"
79
79
  :size="item.ui?.leadingAvatarSize || props.ui?.leadingAvatarSize || ui.leadingAvatarSize()"
80
80
  v-bind="item.avatar"
81
- :class="ui.leadingAvatar({ class: [props.ui?.leadingAvatar, item.ui?.leadingAvatar] })"
82
81
  data-part="leadingAvatar"
82
+ :class="ui.leadingAvatar({ class: [props.ui?.leadingAvatar, item.ui?.leadingAvatar] })"
83
83
  />
84
84
  </slot>
85
85
 
86
- <span v-if="get(item, props.labelKey) || !!slots.default" :class="ui.label({ class: [props.ui?.label, item.ui?.label] })" data-part="label">
86
+ <span v-if="get(item, props.labelKey) || !!slots.default" data-part="label" :class="ui.label({ class: [props.ui?.label, item.ui?.label] })">
87
87
  <slot :item="item" :index="index">{{ get(item, props.labelKey) }}</slot>
88
88
  </span>
89
89
 
@@ -94,8 +94,8 @@ defineExpose({
94
94
  variant="outline"
95
95
  :size="item.ui?.trailingBadgeSize || props.ui?.trailingBadgeSize || ui.trailingBadgeSize()"
96
96
  v-bind="typeof item.badge === 'string' || typeof item.badge === 'number' ? { label: item.badge } : item.badge"
97
- :class="ui.trailingBadge({ class: [props.ui?.trailingBadge, item.ui?.trailingBadge] })"
98
97
  data-part="trailingBadge"
98
+ :class="ui.trailingBadge({ class: [props.ui?.trailingBadge, item.ui?.trailingBadge] })"
99
99
  />
100
100
  </slot>
101
101
  </TabsTrigger>
@@ -108,8 +108,8 @@ defineExpose({
108
108
  v-for="(item, index) of items"
109
109
  :key="index"
110
110
  :value="item.value ?? String(index)"
111
- :class="ui.content({ class: [props.ui?.content, item.ui?.content] })"
112
111
  data-part="content"
112
+ :class="ui.content({ class: [props.ui?.content, item.ui?.content] })"
113
113
  >
114
114
  <slot :name="item.slot || 'content'" :item="item" :index="index" :ui="ui">
115
115
  {{ item.content }}