@auronui/vue 1.0.15 → 1.0.17

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 (156) hide show
  1. package/dist/cjs/index.cjs +582 -75
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js +7 -1
  4. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  5. package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js +7 -1
  6. package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  7. package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js +7 -1
  8. package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +7 -1
  10. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  11. package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js +7 -1
  12. package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  13. package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js +7 -1
  14. package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
  15. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js +7 -1
  16. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  17. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js +10 -1
  18. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +7 -1
  20. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +7 -1
  22. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  23. package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js +7 -1
  24. package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  25. package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js +7 -1
  26. package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js +7 -1
  28. package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +7 -1
  30. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
  31. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js +7 -1
  32. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js +7 -1
  34. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js +7 -1
  36. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  37. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js +7 -1
  38. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js +7 -1
  40. package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js.map +1 -1
  41. package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js +7 -1
  42. package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js +7 -1
  44. package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/card/CardHeader.vue_vue_type_script_setup_true_lang.js +7 -1
  46. package/dist/components/card/CardHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  47. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +7 -1
  48. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js +7 -1
  50. package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js +7 -1
  52. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js.map +1 -1
  53. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js +7 -1
  54. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js +7 -1
  56. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js +7 -1
  58. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  59. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js +10 -1
  60. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  61. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js +7 -1
  62. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js +7 -1
  64. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  65. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js +7 -1
  66. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +7 -1
  68. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +7 -1
  70. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  71. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js +7 -1
  72. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  73. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js +10 -1
  74. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  75. package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js +7 -1
  76. package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -1
  77. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js +7 -1
  78. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js.map +1 -1
  79. package/dist/components/list-box/ListBox.js.map +1 -1
  80. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js +11 -2
  81. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  82. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js +10 -1
  83. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js +7 -1
  85. package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  86. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js +7 -1
  87. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  88. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js +7 -1
  89. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js +7 -1
  91. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  92. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +10 -1
  93. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  94. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js +7 -1
  95. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js +7 -1
  97. package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  98. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +7 -1
  99. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  100. package/dist/components/select/SelectContent.js.map +1 -1
  101. package/dist/components/select/SelectContent.vue_vue_type_script_setup_true_lang.js +5 -1
  102. package/dist/components/select/SelectContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  103. package/dist/components/select/SelectTrigger.js.map +1 -1
  104. package/dist/components/select/SelectTrigger.vue_vue_type_script_setup_true_lang.js +16 -2
  105. package/dist/components/select/SelectTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  106. package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +7 -1
  107. package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +7 -1
  109. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  110. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js +10 -1
  111. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  112. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js +10 -1
  113. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js +10 -1
  115. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  116. package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js +10 -1
  117. package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  118. package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js +10 -1
  119. package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  120. package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js +10 -1
  121. package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js.map +1 -1
  122. package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js +10 -1
  123. package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  124. package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js +10 -1
  125. package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js +10 -1
  127. package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  128. package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js +10 -1
  129. package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  130. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js +7 -1
  131. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js +7 -1
  133. package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  134. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js +7 -1
  135. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  136. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js +7 -1
  137. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js +7 -1
  139. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  140. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js +7 -1
  141. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  142. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js +7 -1
  143. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +7 -1
  145. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js +7 -1
  147. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  148. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js +10 -1
  149. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js.map +1 -1
  150. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js +10 -1
  151. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js +10 -1
  153. package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  154. package/dist/index.d.ts +18 -18
  155. package/dist/utils/composeClassName.js.map +1 -1
  156. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"TimeField.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/time-field/TimeField.vue"],"sourcesContent":["<!--\n TimeField — form-field mirror of Input.vue for @internationalized/date Time values.\n\n Anatomy, data-attributes, floating-label behavior, start/end content\n slots, and a11y wiring all mirror Input.vue / DateInput.vue. See the\n Input.vue docblock for the canonical contract.\n-->\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, useAttrs, useId, watch } from 'vue'\nimport { TimeFieldRoot, TimeFieldInput } from 'reka-ui'\nimport type { TimeValue } from 'reka-ui'\nimport { timeFieldVariants, type TimeFieldVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<Props>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n labelPlacement: 'inside',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadOnly: false,\n isRequired: false,\n granularity: 'minute',\n hideTimeZone: false,\n})\n\nconst modelValue = defineModel<TimeValue | null | undefined>()\n\ntype Props = {\n /** Visual style of the field. @default 'flat' */\n variant?: TimeFieldVariants['variant']\n /** Field height. @default 'md' */\n size?: TimeFieldVariants['size']\n /** Accent color applied to focus ring + floating label. @default 'default' */\n color?: TimeFieldVariants['color']\n /** Label placement relative to the field. @default 'inside' */\n labelPlacement?: TimeFieldVariants['labelPlacement']\n /** Stretches root wrapper to 100% width. @default false */\n fullWidth?: boolean\n /** Marks the field as invalid. @default false */\n isInvalid?: boolean\n /** Disables the field. @default false */\n isDisabled?: boolean\n /** Makes the field read-only. @default false */\n isReadOnly?: boolean\n /** Adds a required asterisk next to the label. @default false */\n isRequired?: boolean\n /** Field label. When omitted, floating-label behavior is skipped. */\n label?: string\n /** Helper text below the field. Suppressed when isInvalid && errorMessage is shown. */\n description?: string\n /** Error text below the field. Only rendered when isInvalid is true. */\n errorMessage?: string\n /** Extra classes merged onto the root wrapper. */\n class?: ClassValue\n /** Per-slot class overrides. */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n mainWrapper: ClassValue\n inputWrapper: ClassValue\n startContent: ClassValue\n segmentList: ClassValue\n segment: ClassValue\n endContent: ClassValue\n helperWrapper: ClassValue\n errorMessage: ClassValue\n description: ClassValue\n }>\n\n /* ─── TimeField-specific ──────────────────────────────────────── */\n defaultValue?: TimeValue\n placeholderValue?: TimeValue\n minValue?: TimeValue\n maxValue?: TimeValue\n granularity?: 'hour' | 'minute' | 'second'\n hourCycle?: 12 | 24\n locale?: string\n name?: string\n hideTimeZone?: boolean\n}\n\nconst attrs = useAttrs()\nconst generatedId = useId()\nconst fieldId = computed(() => (attrs.id as string | undefined) ?? `${generatedId}-field`)\nconst labelId = computed(() => `${generatedId}-label`)\nconst descriptionId = computed(() => `${generatedId}-description`)\nconst errorMessageId = computed(() => `${generatedId}-error`)\n\nconst hasLabel = computed(() => !!props.label)\nconst isFilled = computed(() => modelValue.value != null)\n\nconst showError = computed(() => props.isInvalid && !!props.errorMessage)\nconst showDescription = computed(() => !!props.description && !showError.value)\nconst hasHelper = computed(() => showError.value || showDescription.value)\nconst ariaDescribedBy = computed(() => {\n if (showError.value) return errorMessageId.value\n if (showDescription.value) return descriptionId.value\n return undefined\n})\n\nconst fieldRef = ref<HTMLElement | null>(null)\n// Reka components expose their root DOM node via $el — unwrap before using DOM APIs.\nconst fieldEl = computed<HTMLElement | null>(() => {\n const r = fieldRef.value as unknown as { $el?: HTMLElement } | HTMLElement | null\n if (!r) return null\n if (r instanceof HTMLElement) return r\n return r.$el ?? null\n})\n\n// `isFocused` tracks focus on a TIME SEGMENT specifically — not any descendant.\n// This prevents nested interactive children (e.g. a TimePickerTrigger button in\n// endContent) from flipping the field into the focused visual state.\nconst isFocused = ref(false)\nfunction updateSegmentFocus() {\n const root = fieldEl.value\n if (!root) { isFocused.value = false; return }\n const active = (root.ownerDocument ?? document).activeElement as HTMLElement | null\n isFocused.value = !!active\n && root.contains(active)\n && active.hasAttribute('data-reka-time-field-segment')\n}\nfunction onDocFocusIn() { updateSegmentFocus() }\nfunction onDocFocusOut() { queueMicrotask(updateSegmentFocus) }\n\n// Guard against a focus snap-back after an outside click. When the user\n// clicks outside the field, we mark a short-lived \"suppress segment focus\"\n// window. Any focusin landing on a segment inside that window gets blurred\n// immediately — kills the two-click-to-blur UX regardless of which internal\n// mechanism (Reka VisuallyHidden, label-for, contenteditable selection\n// restoration) tried to restore the focus.\nlet suppressSegmentFocusUntil = 0\nfunction onDocPointerDown(e: PointerEvent) {\n const root = fieldEl.value\n if (!root) return\n const target = e.target as Node | null\n if (!target || root.contains(target)) return\n suppressSegmentFocusUntil = performance.now() + 250\n const active = (root.ownerDocument ?? document).activeElement as HTMLElement | null\n if (active && root.contains(active) && active.hasAttribute('data-reka-time-field-segment')) {\n active.blur()\n }\n}\nfunction onDocFocusInGuard(e: FocusEvent) {\n if (performance.now() >= suppressSegmentFocusUntil) return\n const root = fieldEl.value\n if (!root) return\n const t = e.target as HTMLElement | null\n if (t && root.contains(t) && t.hasAttribute?.('data-reka-time-field-segment')) {\n t.blur()\n }\n}\n\nonMounted(() => {\n document.addEventListener('focusin', onDocFocusIn)\n document.addEventListener('focusout', onDocFocusOut)\n document.addEventListener('pointerdown', onDocPointerDown, true)\n document.addEventListener('focusin', onDocFocusInGuard, true)\n})\nonBeforeUnmount(() => {\n document.removeEventListener('focusin', onDocFocusIn)\n document.removeEventListener('focusout', onDocFocusOut)\n document.removeEventListener('pointerdown', onDocPointerDown, true)\n document.removeEventListener('focusin', onDocFocusInGuard, true)\n})\n\n// Track data-filled synchronously from the rendered segments — defaultValue +\n// isFilled from modelValue misses the uncontrolled case and the partially-typed\n// case. After each value/segment render, sniff any non-literal segment that\n// carries data-placeholder=\"false\".\nconst segmentsFilled = ref(false)\nfunction recomputeFilled() {\n const root = fieldEl.value\n if (!root || typeof root.querySelectorAll !== 'function') {\n segmentsFilled.value = false\n return\n }\n const segs = root.querySelectorAll('[data-reka-time-field-segment]:not([data-reka-time-field-segment=\"literal\"])')\n let anyFilled = false\n segs.forEach((el) => {\n if ((el as HTMLElement).dataset.placeholder === 'false') anyFilled = true\n })\n segmentsFilled.value = anyFilled\n}\nwatch([modelValue, () => props.defaultValue, () => props.granularity, () => props.hourCycle], () => {\n queueMicrotask(recomputeFilled)\n}, { immediate: true })\n\nconst effectiveFilled = computed(() => isFilled.value || segmentsFilled.value)\n\n// Only intervene on the INITIAL click that enters the field. Once a segment\n// already holds focus, leave subsequent mousedowns alone so the user can\n// blur naturally (clicking elsewhere) without focus snapping back to a\n// segment and requiring a second click.\nfunction handleFieldMousedown(e: MouseEvent) {\n const target = e.target as HTMLElement | null\n if (!target) return\n if (target.closest('[data-reka-time-field-segment]')) return\n if (target.closest('[data-slot=\"start-content\"]')) return\n if (target.closest('[data-slot=\"end-content\"]')) return\n if (target.closest('button, [role=\"button\"]')) return\n const root = fieldEl.value\n if (!root) return\n const active = (root.ownerDocument ?? document).activeElement as HTMLElement | null\n if (active && root.contains(active) && active.hasAttribute('data-reka-time-field-segment')) {\n return\n }\n const first = root.querySelector<HTMLElement>(\n '[data-reka-time-field-segment]:not([data-reka-time-field-segment=\"literal\"])',\n )\n if (first) {\n e.preventDefault()\n first.focus()\n }\n}\n\nconst slotFns = computed(() =>\n timeFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadOnly,\n hasLabel: hasLabel.value,\n labelPlacement: props.labelPlacement,\n }),\n)\n\nconst showOutsideLabel = computed(\n () => hasLabel.value && props.labelPlacement !== 'inside',\n)\nconst showInsideLabel = computed(\n () => hasLabel.value && props.labelPlacement === 'inside',\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"isInvalid || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-readonly=\"isReadOnly || undefined\"\n :data-required=\"isRequired || undefined\"\n :data-has-label=\"hasLabel || undefined\"\n :data-has-helper=\"hasHelper || undefined\"\n >\n <label\n v-if=\"showOutsideLabel\"\n :id=\"labelId\"\n :for=\"fieldId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n\n <div :class=\"composeClassName(slotFns.mainWrapper(), props.classNames?.mainWrapper)\">\n <TimeFieldRoot\n :id=\"fieldId\"\n ref=\"fieldRef\"\n v-model=\"modelValue\"\n :default-value=\"defaultValue\"\n :placeholder=\"placeholderValue\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :granularity=\"granularity\"\n :hour-cycle=\"hourCycle\"\n :locale=\"locale\"\n :disabled=\"isDisabled\"\n :readonly=\"isReadOnly\"\n :name=\"name\"\n :hide-time-zone=\"hideTimeZone\"\n :aria-labelledby=\"hasLabel ? labelId : undefined\"\n :aria-describedby=\"ariaDescribedBy\"\n :aria-required=\"isRequired || undefined\"\n :aria-invalid=\"isInvalid || undefined\"\n :class=\"composeClassName(slotFns.inputWrapper(), props.classNames?.inputWrapper)\"\n :data-filled=\"hasLabel ? (effectiveFilled || undefined) : undefined\"\n :data-focused=\"isFocused || undefined\"\n :data-invalid=\"isInvalid || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-readonly=\"isReadOnly || undefined\"\n @mousedown=\"handleFieldMousedown\"\n >\n <template #default=\"{ segments }\">\n <label\n v-if=\"showInsideLabel\"\n :id=\"labelId\"\n :for=\"fieldId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n data-slot=\"start-content\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <div\n :class=\"composeClassName(slotFns.segmentList(), props.classNames?.segmentList)\"\n data-slot=\"segment-list\"\n >\n <template\n v-for=\"(segment, _i) in segments\"\n :key=\"_i\"\n >\n <TimeFieldInput\n :part=\"segment.part\"\n :class=\"composeClassName(slotFns.segment(), props.classNames?.segment)\"\n >\n {{ segment.value }}\n </TimeFieldInput>\n </template>\n </div>\n\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n data-slot=\"end-content\"\n >\n <slot name=\"endContent\" />\n </span>\n </template>\n </TimeFieldRoot>\n\n <div\n v-if=\"hasHelper\"\n :class=\"composeClassName(slotFns.helperWrapper(), props.classNames?.helperWrapper)\"\n >\n <div\n v-if=\"showError\"\n :id=\"errorMessageId\"\n :class=\"composeClassName(slotFns.errorMessage(), props.classNames?.errorMessage)\"\n role=\"alert\"\n >\n {{ errorMessage }}\n </div>\n <div\n v-else-if=\"showDescription\"\n :id=\"descriptionId\"\n :class=\"composeClassName(slotFns.description(), props.classNames?.description)\"\n >\n {{ description }}\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"TimeField.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/time-field/TimeField.vue"],"sourcesContent":["<!--\n TimeField — form-field mirror of Input.vue for @internationalized/date Time values.\n\n Anatomy, data-attributes, floating-label behavior, start/end content\n slots, and a11y wiring all mirror Input.vue / DateInput.vue. See the\n Input.vue docblock for the canonical contract.\n-->\n<script setup lang=\"ts\">\nimport { computed, onBeforeUnmount, onMounted, ref, useAttrs, useId, watch } from 'vue'\nimport { TimeFieldRoot, TimeFieldInput } from 'reka-ui'\nimport type { TimeValue } from 'reka-ui'\nimport { timeFieldVariants, type TimeFieldVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<Props>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n labelPlacement: 'inside',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadOnly: false,\n isRequired: false,\n granularity: 'minute',\n hideTimeZone: false,\n})\n\nconst modelValue = defineModel<TimeValue | null | undefined>()\n\ntype Props = {\n /** Visual style of the field. @default 'flat' */\n variant?: TimeFieldVariants['variant']\n /** Field height. @default 'md' */\n size?: TimeFieldVariants['size']\n /** Accent color applied to focus ring + floating label. @default 'default' */\n color?: TimeFieldVariants['color']\n /** Label placement relative to the field. @default 'inside' */\n labelPlacement?: TimeFieldVariants['labelPlacement']\n /** Stretches root wrapper to 100% width. @default false */\n fullWidth?: boolean\n /** Marks the field as invalid. @default false */\n isInvalid?: boolean\n /** Disables the field. @default false */\n isDisabled?: boolean\n /** Makes the field read-only. @default false */\n isReadOnly?: boolean\n /** Adds a required asterisk next to the label. @default false */\n isRequired?: boolean\n /** Field label. When omitted, floating-label behavior is skipped. */\n label?: string\n /** Helper text below the field. Suppressed when isInvalid && errorMessage is shown. */\n description?: string\n /** Error text below the field. Only rendered when isInvalid is true. */\n errorMessage?: string\n /** Extra classes merged onto the root wrapper. */\n class?: ClassValue\n /** Per-slot class overrides. */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n mainWrapper: ClassValue\n inputWrapper: ClassValue\n startContent: ClassValue\n segmentList: ClassValue\n segment: ClassValue\n endContent: ClassValue\n helperWrapper: ClassValue\n errorMessage: ClassValue\n description: ClassValue\n }>\n\n /* ─── TimeField-specific ──────────────────────────────────────── */\n defaultValue?: TimeValue\n placeholderValue?: TimeValue\n minValue?: TimeValue\n maxValue?: TimeValue\n granularity?: 'hour' | 'minute' | 'second'\n hourCycle?: 12 | 24\n locale?: string\n name?: string\n hideTimeZone?: boolean\n}\n\nconst attrs = useAttrs()\nconst generatedId = useId()\nconst fieldId = computed(() => (attrs.id as string | undefined) ?? `${generatedId}-field`)\nconst labelId = computed(() => `${generatedId}-label`)\nconst descriptionId = computed(() => `${generatedId}-description`)\nconst errorMessageId = computed(() => `${generatedId}-error`)\n\nconst hasLabel = computed(() => !!props.label)\nconst isFilled = computed(() => modelValue.value != null)\n\nconst showError = computed(() => props.isInvalid && !!props.errorMessage)\nconst showDescription = computed(() => !!props.description && !showError.value)\nconst hasHelper = computed(() => showError.value || showDescription.value)\nconst ariaDescribedBy = computed(() => {\n if (showError.value) return errorMessageId.value\n if (showDescription.value) return descriptionId.value\n return undefined\n})\n\nconst fieldRef = ref<HTMLElement | null>(null)\n// Reka components expose their root DOM node via $el — unwrap before using DOM APIs.\nconst fieldEl = computed<HTMLElement | null>(() => {\n const r = fieldRef.value as unknown as { $el?: HTMLElement } | HTMLElement | null\n if (!r) return null\n if (r instanceof HTMLElement) return r\n return r.$el ?? null\n})\n\n// `isFocused` tracks focus on a TIME SEGMENT specifically — not any descendant.\n// This prevents nested interactive children (e.g. a TimePickerTrigger button in\n// endContent) from flipping the field into the focused visual state.\nconst isFocused = ref(false)\nfunction updateSegmentFocus() {\n const root = fieldEl.value\n if (!root) { isFocused.value = false; return }\n const active = (root.ownerDocument ?? document).activeElement as HTMLElement | null\n isFocused.value = !!active\n && root.contains(active)\n && active.hasAttribute('data-reka-time-field-segment')\n}\nfunction onDocFocusIn() { updateSegmentFocus() }\nfunction onDocFocusOut() { queueMicrotask(updateSegmentFocus) }\n\n// Guard against a focus snap-back after an outside click. When the user\n// clicks outside the field, we mark a short-lived \"suppress segment focus\"\n// window. Any focusin landing on a segment inside that window gets blurred\n// immediately — kills the two-click-to-blur UX regardless of which internal\n// mechanism (Reka VisuallyHidden, label-for, contenteditable selection\n// restoration) tried to restore the focus.\nlet suppressSegmentFocusUntil = 0\nfunction onDocPointerDown(e: PointerEvent) {\n const root = fieldEl.value\n if (!root) return\n const target = e.target as Node | null\n if (!target || root.contains(target)) return\n suppressSegmentFocusUntil = performance.now() + 250\n const active = (root.ownerDocument ?? document).activeElement as HTMLElement | null\n if (active && root.contains(active) && active.hasAttribute('data-reka-time-field-segment')) {\n active.blur()\n }\n}\nfunction onDocFocusInGuard(e: FocusEvent) {\n if (performance.now() >= suppressSegmentFocusUntil) return\n const root = fieldEl.value\n if (!root) return\n const t = e.target as HTMLElement | null\n if (t && root.contains(t) && t.hasAttribute?.('data-reka-time-field-segment')) {\n t.blur()\n }\n}\n\nonMounted(() => {\n document.addEventListener('focusin', onDocFocusIn)\n document.addEventListener('focusout', onDocFocusOut)\n document.addEventListener('pointerdown', onDocPointerDown, true)\n document.addEventListener('focusin', onDocFocusInGuard, true)\n})\nonBeforeUnmount(() => {\n document.removeEventListener('focusin', onDocFocusIn)\n document.removeEventListener('focusout', onDocFocusOut)\n document.removeEventListener('pointerdown', onDocPointerDown, true)\n document.removeEventListener('focusin', onDocFocusInGuard, true)\n})\n\n// Track data-filled synchronously from the rendered segments — defaultValue +\n// isFilled from modelValue misses the uncontrolled case and the partially-typed\n// case. After each value/segment render, sniff any non-literal segment that\n// carries data-placeholder=\"false\".\nconst segmentsFilled = ref(false)\nfunction recomputeFilled() {\n const root = fieldEl.value\n if (!root || typeof root.querySelectorAll !== 'function') {\n segmentsFilled.value = false\n return\n }\n const segs = root.querySelectorAll('[data-reka-time-field-segment]:not([data-reka-time-field-segment=\"literal\"])')\n let anyFilled = false\n segs.forEach((el) => {\n if ((el as HTMLElement).dataset.placeholder === 'false') anyFilled = true\n })\n segmentsFilled.value = anyFilled\n}\nwatch([modelValue, () => props.defaultValue, () => props.granularity, () => props.hourCycle], () => {\n queueMicrotask(recomputeFilled)\n}, { immediate: true })\n\nconst effectiveFilled = computed(() => isFilled.value || segmentsFilled.value)\n\n// Only intervene on the INITIAL click that enters the field. Once a segment\n// already holds focus, leave subsequent mousedowns alone so the user can\n// blur naturally (clicking elsewhere) without focus snapping back to a\n// segment and requiring a second click.\nfunction handleFieldMousedown(e: MouseEvent) {\n const target = e.target as HTMLElement | null\n if (!target) return\n if (target.closest('[data-reka-time-field-segment]')) return\n if (target.closest('[data-slot=\"start-content\"]')) return\n if (target.closest('[data-slot=\"end-content\"]')) return\n if (target.closest('button, [role=\"button\"]')) return\n const root = fieldEl.value\n if (!root) return\n const active = (root.ownerDocument ?? document).activeElement as HTMLElement | null\n if (active && root.contains(active) && active.hasAttribute('data-reka-time-field-segment')) {\n return\n }\n const first = root.querySelector<HTMLElement>(\n '[data-reka-time-field-segment]:not([data-reka-time-field-segment=\"literal\"])',\n )\n if (first) {\n e.preventDefault()\n first.focus()\n }\n}\n\nconst slotFns = computed(() =>\n timeFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadOnly,\n hasLabel: hasLabel.value,\n labelPlacement: props.labelPlacement,\n }),\n)\n\nconst showOutsideLabel = computed(\n () => hasLabel.value && props.labelPlacement !== 'inside',\n)\nconst showInsideLabel = computed(\n () => hasLabel.value && props.labelPlacement === 'inside',\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"isInvalid || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-readonly=\"isReadOnly || undefined\"\n :data-required=\"isRequired || undefined\"\n :data-has-label=\"hasLabel || undefined\"\n :data-has-helper=\"hasHelper || undefined\"\n >\n <label\n v-if=\"showOutsideLabel\"\n :id=\"labelId\"\n :for=\"fieldId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n\n <div :class=\"composeClassName(slotFns.mainWrapper(), props.classNames?.mainWrapper)\">\n <TimeFieldRoot\n :id=\"fieldId\"\n ref=\"fieldRef\"\n v-model=\"modelValue\"\n :default-value=\"defaultValue\"\n :placeholder=\"placeholderValue\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :granularity=\"granularity\"\n :hour-cycle=\"hourCycle\"\n :locale=\"locale\"\n :disabled=\"isDisabled\"\n :readonly=\"isReadOnly\"\n :name=\"name\"\n :hide-time-zone=\"hideTimeZone\"\n :aria-labelledby=\"hasLabel ? labelId : undefined\"\n :aria-describedby=\"ariaDescribedBy\"\n :aria-required=\"isRequired || undefined\"\n :aria-invalid=\"isInvalid || undefined\"\n :class=\"composeClassName(slotFns.inputWrapper(), props.classNames?.inputWrapper)\"\n :data-filled=\"hasLabel ? (effectiveFilled || undefined) : undefined\"\n :data-focused=\"isFocused || undefined\"\n :data-invalid=\"isInvalid || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-readonly=\"isReadOnly || undefined\"\n @mousedown=\"handleFieldMousedown\"\n >\n <template #default=\"{ segments }\">\n <label\n v-if=\"showInsideLabel\"\n :id=\"labelId\"\n :for=\"fieldId\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}<span\n v-if=\"isRequired\"\n aria-hidden=\"true\"\n > *</span></label>\n\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n data-slot=\"start-content\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <div\n :class=\"composeClassName(slotFns.segmentList(), props.classNames?.segmentList)\"\n data-slot=\"segment-list\"\n >\n <template\n v-for=\"(segment, _i) in segments\"\n :key=\"_i\"\n >\n <TimeFieldInput\n :part=\"segment.part\"\n :class=\"composeClassName(slotFns.segment(), props.classNames?.segment)\"\n >\n {{ segment.value }}\n </TimeFieldInput>\n </template>\n </div>\n\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n data-slot=\"end-content\"\n >\n <slot name=\"endContent\" />\n </span>\n </template>\n </TimeFieldRoot>\n\n <div\n v-if=\"hasHelper\"\n :class=\"composeClassName(slotFns.helperWrapper(), props.classNames?.helperWrapper)\"\n >\n <div\n v-if=\"showError\"\n :id=\"errorMessageId\"\n :class=\"composeClassName(slotFns.errorMessage(), props.classNames?.errorMessage)\"\n role=\"alert\"\n >\n {{ errorMessage }}\n </div>\n <div\n v-else-if=\"showDescription\"\n :id=\"descriptionId\"\n :class=\"composeClassName(slotFns.description(), props.classNames?.description)\"\n >\n {{ description }}\n </div>\n </div>\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAgBA,MAAM,QAAQ;EAcd,MAAM,aAAa,SAAyC,SAAA,aAAC;EAwD7D,MAAM,QAAQ,UAAS;EACvB,MAAM,cAAc,OAAM;EAC1B,MAAM,UAAU,eAAgB,MAAM,MAA6B,GAAG,YAAY,QAAO;EACzF,MAAM,UAAU,eAAe,GAAG,YAAY,QAAO;EACrD,MAAM,gBAAgB,eAAe,GAAG,YAAY,cAAa;EACjE,MAAM,iBAAiB,eAAe,GAAG,YAAY,QAAO;EAE5D,MAAM,WAAW,eAAe,CAAC,CAAC,MAAM,MAAK;EAC7C,MAAM,WAAW,eAAe,WAAW,SAAS,KAAI;EAExD,MAAM,YAAY,eAAe,MAAM,aAAa,CAAC,CAAC,MAAM,aAAY;EACxE,MAAM,kBAAkB,eAAe,CAAC,CAAC,MAAM,eAAe,CAAC,UAAU,MAAK;EAC9E,MAAM,YAAY,eAAe,UAAU,SAAS,gBAAgB,MAAK;EACzE,MAAM,kBAAkB,eAAe;AACrC,OAAI,UAAU,MAAO,QAAO,eAAe;AAC3C,OAAI,gBAAgB,MAAO,QAAO,cAAc;IAEjD;EAED,MAAM,WAAW,IAAwB,KAAI;EAE7C,MAAM,UAAU,eAAmC;GACjD,MAAM,IAAI,SAAS;AACnB,OAAI,CAAC,EAAG,QAAO;AACf,OAAI,aAAa,YAAa,QAAO;AACrC,UAAO,EAAE,OAAO;IACjB;EAKD,MAAM,YAAY,IAAI,MAAK;EAC3B,SAAS,qBAAqB;GAC5B,MAAM,OAAO,QAAQ;AACrB,OAAI,CAAC,MAAM;AAAE,cAAU,QAAQ;AAAO;;GACtC,MAAM,UAAU,KAAK,iBAAiB,UAAU;AAChD,aAAU,QAAQ,CAAC,CAAC,UACf,KAAK,SAAS,OAAM,IACpB,OAAO,aAAa,+BAA8B;;EAEzD,SAAS,eAAe;AAAE,uBAAoB;;EAC9C,SAAS,gBAAgB;AAAE,kBAAe,mBAAmB;;EAQ7D,IAAI,4BAA4B;EAChC,SAAS,iBAAiB,GAAiB;GACzC,MAAM,OAAO,QAAQ;AACrB,OAAI,CAAC,KAAM;GACX,MAAM,SAAS,EAAE;AACjB,OAAI,CAAC,UAAU,KAAK,SAAS,OAAO,CAAE;AACtC,+BAA4B,YAAY,KAAK,GAAG;GAChD,MAAM,UAAU,KAAK,iBAAiB,UAAU;AAChD,OAAI,UAAU,KAAK,SAAS,OAAO,IAAI,OAAO,aAAa,+BAA+B,CACxF,QAAO,MAAK;;EAGhB,SAAS,kBAAkB,GAAe;AACxC,OAAI,YAAY,KAAK,IAAI,0BAA2B;GACpD,MAAM,OAAO,QAAQ;AACrB,OAAI,CAAC,KAAM;GACX,MAAM,IAAI,EAAE;AACZ,OAAI,KAAK,KAAK,SAAS,EAAE,IAAI,EAAE,eAAe,+BAA+B,CAC3E,GAAE,MAAK;;AAIX,kBAAgB;AACd,YAAS,iBAAiB,WAAW,aAAY;AACjD,YAAS,iBAAiB,YAAY,cAAa;AACnD,YAAS,iBAAiB,eAAe,kBAAkB,KAAI;AAC/D,YAAS,iBAAiB,WAAW,mBAAmB,KAAI;IAC7D;AACD,wBAAsB;AACpB,YAAS,oBAAoB,WAAW,aAAY;AACpD,YAAS,oBAAoB,YAAY,cAAa;AACtD,YAAS,oBAAoB,eAAe,kBAAkB,KAAI;AAClE,YAAS,oBAAoB,WAAW,mBAAmB,KAAI;IAChE;EAMD,MAAM,iBAAiB,IAAI,MAAK;EAChC,SAAS,kBAAkB;GACzB,MAAM,OAAO,QAAQ;AACrB,OAAI,CAAC,QAAQ,OAAO,KAAK,qBAAqB,YAAY;AACxD,mBAAe,QAAQ;AACvB;;GAEF,MAAM,OAAO,KAAK,iBAAiB,iFAA8E;GACjH,IAAI,YAAY;AAChB,QAAK,SAAS,OAAO;AACnB,QAAK,GAAmB,QAAQ,gBAAgB,QAAS,aAAY;KACtE;AACD,kBAAe,QAAQ;;AAEzB,QAAM;GAAC;SAAkB,MAAM;SAAoB,MAAM;SAAmB,MAAM;GAAU,QAAQ;AAClG,kBAAe,gBAAe;KAC7B,EAAE,WAAW,MAAM,CAAA;EAEtB,MAAM,kBAAkB,eAAe,SAAS,SAAS,eAAe,MAAK;EAM7E,SAAS,qBAAqB,GAAe;GAC3C,MAAM,SAAS,EAAE;AACjB,OAAI,CAAC,OAAQ;AACb,OAAI,OAAO,QAAQ,iCAAiC,CAAE;AACtD,OAAI,OAAO,QAAQ,gCAA8B,CAAE;AACnD,OAAI,OAAO,QAAQ,8BAA4B,CAAE;AACjD,OAAI,OAAO,QAAQ,4BAA0B,CAAE;GAC/C,MAAM,OAAO,QAAQ;AACrB,OAAI,CAAC,KAAM;GACX,MAAM,UAAU,KAAK,iBAAiB,UAAU;AAChD,OAAI,UAAU,KAAK,SAAS,OAAO,IAAI,OAAO,aAAa,+BAA+B,CACxF;GAEF,MAAM,QAAQ,KAAK,cACjB,iFACF;AACA,OAAI,OAAO;AACT,MAAE,gBAAe;AACjB,UAAM,OAAM;;;EAIhB,MAAM,UAAU,eACd,kBAAkB;GAChB,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,WAAW,MAAM;GACjB,WAAW,MAAM;GACjB,YAAY,MAAM;GAClB,YAAY,MAAM;GAClB,UAAU,SAAS;GACnB,gBAAgB,MAAM;GACvB,CAAC,CACJ;EAEA,MAAM,mBAAmB,eACjB,SAAS,SAAS,MAAM,mBAAmB,SACnD;EACA,MAAM,kBAAkB,eAChB,SAAS,SAAS,MAAM,mBAAmB,SACnD;;uBAIE,mBAkHM,OAAA;IAjHH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,gBAAc,QAAA,aAAa,KAAA;IAC3B,iBAAe,QAAA,cAAc,KAAA;IAC7B,iBAAe,QAAA,cAAc,KAAA;IAC7B,iBAAe,QAAA,cAAc,KAAA;IAC7B,kBAAgB,SAAA,SAAY,KAAA;IAC5B,mBAAiB,UAAA,SAAa,KAAA;OAGvB,iBAAA,SAAA,WAAA,EADR,mBAQkB,SAAA;;IANf,IAAI,QAAA;IACJ,KAAK,QAAA;IACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;uCAC/D,QAAA,MAAK,EAAA,EAAA,EACD,QAAA,cAAA,WAAA,EADI,mBAGF,QAHE,YAGX,KAAE,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,EAEH,mBA8FM,OAAA,EA9FA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,aAAW,EAAI,MAAM,YAAY,YAAW,CAAA,EAAA,EAAA,CAChF,YAuEgB,MAAA,cAAA,EAAA;IAtEb,IAAI,QAAA;aACD;IAAJ,KAAI;gBACK,WAAA;4EAAU,QAAA;IAClB,iBAAe,QAAA;IACf,aAAa,QAAA;IACb,aAAW,QAAA;IACX,aAAW,QAAA;IACX,aAAa,QAAA;IACb,cAAY,QAAA;IACZ,QAAQ,QAAA;IACR,UAAU,QAAA;IACV,UAAU,QAAA;IACV,MAAM,QAAA;IACN,kBAAgB,QAAA;IAChB,mBAAiB,SAAA,QAAW,QAAA,QAAU,KAAA;IACtC,oBAAkB,gBAAA;IAClB,iBAAe,QAAA,cAAc,KAAA;IAC7B,gBAAc,QAAA,aAAa,KAAA;IAC3B,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;IAC9E,eAAa,SAAA,QAAY,gBAAA,SAAmB,KAAA,IAAa,KAAA;IACzD,gBAAc,UAAA,SAAa,KAAA;IAC3B,gBAAc,QAAA,aAAa,KAAA;IAC3B,iBAAe,QAAA,cAAc,KAAA;IAC7B,iBAAe,QAAA,cAAc,KAAA;IAC7B,aAAW;;IAED,SAAO,SASE,EATE,eAAQ;KAEpB,gBAAA,SAAA,WAAA,EADR,mBAQkB,SAAA;;MANf,IAAI,QAAA;MACJ,KAAK,QAAA;MACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;yCAC/D,QAAA,MAAK,EAAA,EAAA,EACD,QAAA,cAAA,WAAA,EADI,mBAGF,QAHE,YAGX,KAAE,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA;KAGKA,KAAAA,OAAO,gBAAA,WAAA,EADf,mBAMO,QAAA;;MAJJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;MAC/E,aAAU;SAEV,WAA4B,KAAA,QAAA,eAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAG9B,mBAeM,OAAA;MAdH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,aAAW,EAAI,MAAM,YAAY,YAAW,CAAA;MAC7E,aAAU;2BAEV,mBAUW,UAAA,MAAA,WATe,WAAhB,SAAS,OAAE;0BAGnB,YAKiB,MAAA,eAAA,EAAA;YAPX;OAGH,MAAM,QAAQ;OACd,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA;;8BAElD,CAAA,gBAAA,gBAAhB,QAAQ,MAAK,EAAA,EAAA,CAAA,CAAA;;;;KAMdA,KAAAA,OAAO,cAAA,WAAA,EADf,mBAMO,QAAA;;MAJJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA;MAC3E,aAAU;SAEV,WAA0B,KAAA,QAAA,aAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;OAMxB,UAAA,SAAA,WAAA,EADR,mBAmBM,OAAA;;IAjBH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;OAGzE,UAAA,SAAA,WAAA,EADR,mBAOM,OAAA;;IALH,IAAI,eAAA;IACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;IAC/E,MAAK;sBAEF,QAAA,aAAY,EAAA,IAAA,WAAA,IAGJ,gBAAA,SAAA,WAAA,EADb,mBAMM,OAAA;;IAJH,IAAI,cAAA;IACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,aAAW,EAAI,MAAM,YAAY,YAAW,CAAA;sBAE1E,QAAA,YAAW,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,IAAA,WAAA"}
@@ -27,7 +27,16 @@ var Tree_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCom
27
27
  default: false
28
28
  },
29
29
  size: { default: "md" },
30
- class: { default: void 0 },
30
+ class: {
31
+ type: [
32
+ String,
33
+ Boolean,
34
+ null,
35
+ Object,
36
+ Array
37
+ ],
38
+ default: void 0
39
+ },
31
40
  classNames: {}
32
41
  },
33
42
  emits: ["update:modelValue", "update:expanded"],
@@ -1 +1 @@
1
- {"version":3,"file":"Tree.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/tree/Tree.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any>\">\nimport { computed, provide } from 'vue'\nimport { TreeRoot } from 'reka-ui'\nimport { treeVariants, type TreeVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { treeContextKey } from './Tree.context'\n\nconst props = withDefaults(defineProps<{\n items?: T[]\n modelValue?: T | T[]\n defaultValue?: T | T[]\n expanded?: string[]\n defaultExpanded?: string[]\n getKey: (item: T) => string\n getChildren?: (item: T) => T[] | undefined\n multiple?: boolean\n selectionBehavior?: 'toggle' | 'replace'\n propagateSelect?: boolean\n size?: TreeVariants['size']\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n root: ClassValue\n }>\n}>(), {\n items: () => [],\n modelValue: undefined,\n defaultValue: undefined,\n expanded: undefined,\n defaultExpanded: () => [],\n getChildren: (item: T) => item.children as T[] | undefined,\n multiple: false,\n selectionBehavior: 'toggle',\n propagateSelect: false,\n size: 'md',\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: T | T[]]\n 'update:expanded': [value: string[]]\n}>()\n\nconst slotFns = computed(() => treeVariants({ size: props.size }))\n\nprovide(treeContextKey, {\n size: computed(() => props.size ?? 'md'),\n getChildren: (item: unknown) => props.getChildren?.(item as T),\n})\n</script>\n\n<template>\n <TreeRoot\n :items=\"items\"\n :get-key=\"getKey\"\n :get-children=\"getChildren\"\n :model-value=\"(modelValue as any)\"\n :default-value=\"(defaultValue as any)\"\n :expanded=\"expanded\"\n :default-expanded=\"defaultExpanded\"\n :multiple=\"multiple\"\n :selection-behavior=\"selectionBehavior\"\n :propagate-select=\"propagateSelect\"\n :class=\"composeClassName(slotFns.root(), props.class, props.classNames?.root)\"\n data-slot=\"tree\"\n @update:model-value=\"(v: any) => emit('update:modelValue', v)\"\n @update:expanded=\"(v: string[]) => emit('update:expanded', v)\"\n >\n <template #default=\"slotProps\">\n <slot v-bind=\"slotProps\" />\n </template>\n </TreeRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EA+Bd,MAAM,OAAO;EAKb,MAAM,UAAU,eAAe,aAAa,EAAE,MAAM,MAAM,MAAM,CAAC,CAAA;AAEjE,UAAQ,gBAAgB;GACtB,MAAM,eAAe,MAAM,QAAQ,KAAK;GACxC,cAAc,SAAkB,MAAM,cAAc,KAAU;GAC/D,CAAA;;uBAIC,YAmBW,MAAA,SAAA,EAAA;IAlBR,OAAO,QAAA;IACP,WAAS,QAAA;IACT,gBAAc,QAAA;IACd,eAAc,QAAA;IACd,iBAAgB,QAAA;IAChB,UAAU,QAAA;IACV,oBAAkB,QAAA;IAClB,UAAU,QAAA;IACV,sBAAoB,QAAA;IACpB,oBAAkB,QAAA;IAClB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC5E,aAAU;IACT,uBAAkB,OAAA,OAAA,OAAA,MAAG,MAAW,KAAI,qBAAsB,EAAC;IAC3D,qBAAe,OAAA,OAAA,OAAA,MAAG,MAAgB,KAAI,mBAAoB,EAAC;;IAEjD,SAAO,SAAE,cAAS,CAC3B,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAb,UAAS,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"Tree.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/tree/Tree.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any>\">\nimport { computed, provide } from 'vue'\nimport { TreeRoot } from 'reka-ui'\nimport { treeVariants, type TreeVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { treeContextKey } from './Tree.context'\n\nconst props = withDefaults(defineProps<{\n items?: T[]\n modelValue?: T | T[]\n defaultValue?: T | T[]\n expanded?: string[]\n defaultExpanded?: string[]\n getKey: (item: T) => string\n getChildren?: (item: T) => T[] | undefined\n multiple?: boolean\n selectionBehavior?: 'toggle' | 'replace'\n propagateSelect?: boolean\n size?: TreeVariants['size']\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n root: ClassValue\n }>\n}>(), {\n items: () => [],\n modelValue: undefined,\n defaultValue: undefined,\n expanded: undefined,\n defaultExpanded: () => [],\n getChildren: (item: T) => item.children as T[] | undefined,\n multiple: false,\n selectionBehavior: 'toggle',\n propagateSelect: false,\n size: 'md',\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: T | T[]]\n 'update:expanded': [value: string[]]\n}>()\n\nconst slotFns = computed(() => treeVariants({ size: props.size }))\n\nprovide(treeContextKey, {\n size: computed(() => props.size ?? 'md'),\n getChildren: (item: unknown) => props.getChildren?.(item as T),\n})\n</script>\n\n<template>\n <TreeRoot\n :items=\"items\"\n :get-key=\"getKey\"\n :get-children=\"getChildren\"\n :model-value=\"(modelValue as any)\"\n :default-value=\"(defaultValue as any)\"\n :expanded=\"expanded\"\n :default-expanded=\"defaultExpanded\"\n :multiple=\"multiple\"\n :selection-behavior=\"selectionBehavior\"\n :propagate-select=\"propagateSelect\"\n :class=\"composeClassName(slotFns.root(), props.class, props.classNames?.root)\"\n data-slot=\"tree\"\n @update:model-value=\"(v: any) => emit('update:modelValue', v)\"\n @update:expanded=\"(v: string[]) => emit('update:expanded', v)\"\n >\n <template #default=\"slotProps\">\n <slot v-bind=\"slotProps\" />\n </template>\n </TreeRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EA+Bd,MAAM,OAAO;EAKb,MAAM,UAAU,eAAe,aAAa,EAAE,MAAM,MAAM,MAAM,CAAC,CAAA;AAEjE,UAAQ,gBAAgB;GACtB,MAAM,eAAe,MAAM,QAAQ,KAAK;GACxC,cAAc,SAAkB,MAAM,cAAc,KAAU;GAC/D,CAAA;;uBAIC,YAmBW,MAAA,SAAA,EAAA;IAlBR,OAAO,QAAA;IACP,WAAS,QAAA;IACT,gBAAc,QAAA;IACd,eAAc,QAAA;IACd,iBAAgB,QAAA;IAChB,UAAU,QAAA;IACV,oBAAkB,QAAA;IAClB,UAAU,QAAA;IACV,sBAAoB,QAAA;IACpB,oBAAkB,QAAA;IAClB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC5E,aAAU;IACT,uBAAkB,OAAA,OAAA,OAAA,MAAG,MAAW,KAAI,qBAAsB,EAAC;IAC3D,qBAAe,OAAA,OAAA,OAAA,MAAG,MAAgB,KAAI,mBAAoB,EAAC;;IAEjD,SAAO,SAAE,cAAS,CAC3B,WAA2B,KAAA,QAAA,WAAA,eAAA,mBAAb,UAAS,CAAA,CAAA,CAAA,CAAA"}
@@ -10,7 +10,16 @@ var TreeItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
10
10
  props: {
11
11
  value: {},
12
12
  level: {},
13
- class: { default: void 0 },
13
+ class: {
14
+ type: [
15
+ String,
16
+ Boolean,
17
+ null,
18
+ Object,
19
+ Array
20
+ ],
21
+ default: void 0
22
+ },
14
23
  classNames: { default: void 0 }
15
24
  },
16
25
  emits: ["select", "toggle"],
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItem.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/tree/TreeItem.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any>\">\nimport { computed, inject } from 'vue'\nimport { TreeItem } from 'reka-ui'\nimport { treeVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { treeContextKey } from './Tree.context'\n\nconst props = withDefaults(defineProps<{\n value: T\n level: number\n class?: ClassValue\n /** Additional class names to apply to individual slots. */\n classNames?: Partial<{\n item: ClassValue\n itemContent: ClassValue\n }>\n}>(), {\n class: undefined,\n classNames: undefined,\n})\n\ndefineEmits<{\n select: []\n toggle: []\n}>()\n\nconst ctx = inject(treeContextKey, null)\nconst slotFns = computed(() => treeVariants({ size: ctx?.size.value }))\nconst hasChildren = computed(() => {\n const children = ctx?.getChildren(props.value)\n return Array.isArray(children) ? children.length > 0 : !!children\n})\n\nconst indentStyle = computed(() => ({\n '--tree-indent': props.level - 1,\n}))\n</script>\n\n<template>\n <TreeItem\n :value=\"value\"\n :level=\"level\"\n :class=\"composeClassName(slotFns.item(), props.class, props.classNames?.item)\"\n data-slot=\"tree-item\"\n @select=\"$emit('select')\"\n @toggle=\"$emit('toggle')\"\n >\n <template #default=\"s: any\">\n <div\n :class=\"composeClassName(slotFns.itemContent(), props.classNames?.itemContent)\"\n :style=\"indentStyle\"\n :data-selected=\"s.isSelected ? '' : undefined\"\n :data-expanded=\"s.isExpanded ? '' : undefined\"\n >\n <slot\n :is-expanded=\"s.isExpanded\"\n :is-selected=\"s.isSelected\"\n :is-indeterminate=\"s.isIndeterminate\"\n :has-children=\"hasChildren\"\n :handle-select=\"s.handleSelect\"\n :handle-toggle=\"s.handleToggle\"\n :toggle-class=\"slotFns.itemToggle()\"\n :icon-class=\"slotFns.itemIcon()\"\n />\n </div>\n </template>\n </TreeItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAmBd,MAAM,MAAM,OAAO,gBAAgB,KAAI;EACvC,MAAM,UAAU,eAAe,aAAa,EAAE,MAAM,KAAK,KAAK,OAAO,CAAC,CAAA;EACtE,MAAM,cAAc,eAAe;GACjC,MAAM,WAAW,KAAK,YAAY,MAAM,MAAK;AAC7C,UAAO,MAAM,QAAQ,SAAS,GAAG,SAAS,SAAS,IAAI,CAAC,CAAC;IAC1D;EAED,MAAM,cAAc,gBAAgB,EAClC,iBAAiB,MAAM,QAAQ,GAChC,EAAC;;uBAIA,YA2BW,MAAA,SAAA,EAAA;IA1BR,OAAO,QAAA;IACP,OAAO,QAAA;IACP,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC5E,aAAU;IACT,UAAM,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;IACb,UAAM,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;;IAEH,SAAO,SAAE,MAAM,CACxB,mBAgBM,OAAA;KAfH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,aAAW,EAAI,MAAM,YAAY,YAAW,CAAA;KAC5E,OAAK,eAAE,YAAA,MAAW;KAClB,iBAAe,EAAE,aAAU,KAAQ,KAAA;KACnC,iBAAe,EAAE,aAAU,KAAQ,KAAA;QAEpC,WASE,KAAA,QAAA,WAAA;KARC,YAAa,EAAE;KACf,YAAa,EAAE;KACf,iBAAkB,EAAE;KACpB,aAAc,YAAA;KACd,cAAe,EAAE;KACjB,cAAe,EAAE;KACjB,aAAc,QAAA,MAAQ,YAAU;KAChC,WAAY,QAAA,MAAQ,UAAQ"}
1
+ {"version":3,"file":"TreeItem.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/tree/TreeItem.vue"],"sourcesContent":["<script setup lang=\"ts\" generic=\"T extends Record<string, any>\">\nimport { computed, inject } from 'vue'\nimport { TreeItem } from 'reka-ui'\nimport { treeVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { treeContextKey } from './Tree.context'\n\nconst props = withDefaults(defineProps<{\n value: T\n level: number\n class?: ClassValue\n /** Additional class names to apply to individual slots. */\n classNames?: Partial<{\n item: ClassValue\n itemContent: ClassValue\n }>\n}>(), {\n class: undefined,\n classNames: undefined,\n})\n\ndefineEmits<{\n select: []\n toggle: []\n}>()\n\nconst ctx = inject(treeContextKey, null)\nconst slotFns = computed(() => treeVariants({ size: ctx?.size.value }))\nconst hasChildren = computed(() => {\n const children = ctx?.getChildren(props.value)\n return Array.isArray(children) ? children.length > 0 : !!children\n})\n\nconst indentStyle = computed(() => ({\n '--tree-indent': props.level - 1,\n}))\n</script>\n\n<template>\n <TreeItem\n :value=\"value\"\n :level=\"level\"\n :class=\"composeClassName(slotFns.item(), props.class, props.classNames?.item)\"\n data-slot=\"tree-item\"\n @select=\"$emit('select')\"\n @toggle=\"$emit('toggle')\"\n >\n <template #default=\"s: any\">\n <div\n :class=\"composeClassName(slotFns.itemContent(), props.classNames?.itemContent)\"\n :style=\"indentStyle\"\n :data-selected=\"s.isSelected ? '' : undefined\"\n :data-expanded=\"s.isExpanded ? '' : undefined\"\n >\n <slot\n :is-expanded=\"s.isExpanded\"\n :is-selected=\"s.isSelected\"\n :is-indeterminate=\"s.isIndeterminate\"\n :has-children=\"hasChildren\"\n :handle-select=\"s.handleSelect\"\n :handle-toggle=\"s.handleToggle\"\n :toggle-class=\"slotFns.itemToggle()\"\n :icon-class=\"slotFns.itemIcon()\"\n />\n </div>\n </template>\n </TreeItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAmBd,MAAM,MAAM,OAAO,gBAAgB,KAAI;EACvC,MAAM,UAAU,eAAe,aAAa,EAAE,MAAM,KAAK,KAAK,OAAO,CAAC,CAAA;EACtE,MAAM,cAAc,eAAe;GACjC,MAAM,WAAW,KAAK,YAAY,MAAM,MAAK;AAC7C,UAAO,MAAM,QAAQ,SAAS,GAAG,SAAS,SAAS,IAAI,CAAC,CAAC;IAC1D;EAED,MAAM,cAAc,gBAAgB,EAClC,iBAAiB,MAAM,QAAQ,GAChC,EAAC;;uBAIA,YA2BW,MAAA,SAAA,EAAA;IA1BR,OAAO,QAAA;IACP,OAAO,QAAA;IACP,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC5E,aAAU;IACT,UAAM,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;IACb,UAAM,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;;IAEH,SAAO,SAAE,MAAM,CACxB,mBAgBM,OAAA;KAfH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,aAAW,EAAI,MAAM,YAAY,YAAW,CAAA;KAC5E,OAAK,eAAE,YAAA,MAAW;KAClB,iBAAe,EAAE,aAAU,KAAQ,KAAA;KACnC,iBAAe,EAAE,aAAU,KAAQ,KAAA;QAEpC,WASE,KAAA,QAAA,WAAA;KARC,YAAa,EAAE;KACf,YAAa,EAAE;KACf,iBAAkB,EAAE;KACpB,aAAc,YAAA;KACd,cAAe,EAAE;KACjB,cAAe,EAAE;KACjB,aAAc,QAAA,MAAQ,YAAU;KAChC,WAAY,QAAA,MAAQ,UAAQ"}
@@ -14,7 +14,16 @@ var TreeItemToggle_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
14
14
  type: Boolean,
15
15
  default: true
16
16
  },
17
- class: { default: void 0 },
17
+ class: {
18
+ type: [
19
+ String,
20
+ Boolean,
21
+ null,
22
+ Object,
23
+ Array
24
+ ],
25
+ default: void 0
26
+ },
18
27
  classNames: {}
19
28
  },
20
29
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"TreeItemToggle.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/tree/TreeItemToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { treeVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n isExpanded?: boolean\n hasChildren?: boolean\n class?: ClassValue\n /** Override classes for specific slots */\n classNames?: Partial<{\n itemToggle: ClassValue\n }>\n}>(), {\n isExpanded: false,\n hasChildren: true,\n class: undefined,\n})\n\nconst slotFns = treeVariants()\n</script>\n\n<template>\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.itemToggle(), props.class, props.classNames?.itemToggle)\"\n :data-expanded=\"isExpanded ? '' : undefined\"\n :data-no-children=\"!hasChildren ? '' : undefined\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <slot>\n <!-- Default chevron icon -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </slot>\n </button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;EAIA,MAAM,QAAQ;EAcd,MAAM,UAAU,cAAa;;uBAI3B,mBAuBS,UAAA;IAtBP,MAAK;IACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,MAAA,QAAO,CAAC,YAAU,EAAI,MAAM,OAAO,MAAM,YAAY,WAAU,CAAA;IACvF,iBAAe,QAAA,aAAU,KAAQ,KAAA;IACjC,oBAAgB,CAAG,QAAA,cAAW,KAAQ,KAAA;IACvC,UAAS;IACT,eAAY;OAEZ,WAcO,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAZL,mBAWM,OAAA;IAVJ,OAAM;IACN,SAAQ;IACR,MAAK;IACL,QAAO;IACP,gBAAa;IACb,kBAAe;IACf,mBAAgB;IAChB,eAAY;OAEZ,mBAA0B,QAAA,EAApB,GAAE,iBAAe,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,IAAA,WAAA"}
1
+ {"version":3,"file":"TreeItemToggle.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/tree/TreeItemToggle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { treeVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n isExpanded?: boolean\n hasChildren?: boolean\n class?: ClassValue\n /** Override classes for specific slots */\n classNames?: Partial<{\n itemToggle: ClassValue\n }>\n}>(), {\n isExpanded: false,\n hasChildren: true,\n class: undefined,\n})\n\nconst slotFns = treeVariants()\n</script>\n\n<template>\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.itemToggle(), props.class, props.classNames?.itemToggle)\"\n :data-expanded=\"isExpanded ? '' : undefined\"\n :data-no-children=\"!hasChildren ? '' : undefined\"\n tabindex=\"-1\"\n aria-hidden=\"true\"\n >\n <slot>\n <!-- Default chevron icon -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n >\n <path d=\"m9 18 6-6-6-6\" />\n </svg>\n </slot>\n </button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAIA,MAAM,QAAQ;EAcd,MAAM,UAAU,cAAa;;uBAI3B,mBAuBS,UAAA;IAtBP,MAAK;IACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,MAAA,QAAO,CAAC,YAAU,EAAI,MAAM,OAAO,MAAM,YAAY,WAAU,CAAA;IACvF,iBAAe,QAAA,aAAU,KAAQ,KAAA;IACjC,oBAAgB,CAAG,QAAA,cAAW,KAAQ,KAAA;IACvC,UAAS;IACT,eAAY;OAEZ,WAcO,KAAA,QAAA,WAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAZL,mBAWM,OAAA;IAVJ,OAAM;IACN,SAAQ;IACR,MAAK;IACL,QAAO;IACP,gBAAa;IACb,kBAAe;IACf,mBAAgB;IAChB,eAAY;OAEZ,mBAA0B,QAAA,EAApB,GAAE,iBAAe,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,EAAA,IAAA,WAAA"}
package/dist/index.d.ts CHANGED
@@ -337,7 +337,7 @@ declare const __VLS_component_113: DefineComponent<__VLS_Props_122, {}, {}, {},
337
337
  "onUpdate:open"?: ((value: boolean) => any) | undefined;
338
338
  }>, {
339
339
  isDisabled: boolean;
340
- class: string | Record<string, unknown> | ClassValue[] | null;
340
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
341
341
  description: string;
342
342
  label: string;
343
343
  errorMessage: string;
@@ -586,7 +586,7 @@ isGrid: boolean;
586
586
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
587
587
 
588
588
  declare const __VLS_component_139: DefineComponent<__VLS_Props_143, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_143> & Readonly<{}>, {
589
- class: string | Record<string, unknown> | ClassValue[] | null;
589
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
590
590
  ratio: number;
591
591
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, any>;
592
592
 
@@ -596,7 +596,7 @@ divider: boolean;
596
596
 
597
597
  declare const __VLS_component_140: DefineComponent<__VLS_Props_144, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_144> & Readonly<{}>, {
598
598
  id: string;
599
- class: string | Record<string, unknown> | ClassValue[] | null;
599
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
600
600
  direction: "horizontal" | "vertical";
601
601
  classNames: Partial<{
602
602
  group: ClassValue;
@@ -612,7 +612,7 @@ onCollapse?: (() => any) | undefined;
612
612
  onExpand?: (() => any) | undefined;
613
613
  }>, {
614
614
  id: string;
615
- class: string | Record<string, unknown> | ClassValue[] | null;
615
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
616
616
  collapsible: boolean;
617
617
  classNames: Partial<{
618
618
  panel: ClassValue;
@@ -630,7 +630,7 @@ dragging: (isDragging: boolean) => any;
630
630
  onDragging?: ((isDragging: boolean) => any) | undefined;
631
631
  }>, {
632
632
  id: string;
633
- class: string | Record<string, unknown> | ClassValue[] | null;
633
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
634
634
  classNames: Partial<{
635
635
  handle: ClassValue;
636
636
  handleBar: ClassValue;
@@ -644,7 +644,7 @@ declare const __VLS_component_143: DefineComponent<__VLS_Props_147, {}, {}, {},
644
644
  "onUpdate:modelValue"?: ((step: number) => any) | undefined;
645
645
  }>, {
646
646
  size: "md" | "sm" | "lg";
647
- class: string | Record<string, unknown> | ClassValue[] | null;
647
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
648
648
  color: "default" | "accent" | "danger" | "success" | "warning";
649
649
  orientation: "horizontal" | "vertical";
650
650
  modelValue: number;
@@ -653,40 +653,40 @@ totalSteps: number;
653
653
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
654
654
 
655
655
  declare const __VLS_component_144: DefineComponent<__VLS_Props_148, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_148> & Readonly<{}>, {
656
- class: string | Record<string, unknown> | ClassValue[] | null;
656
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
657
657
  classNames: Partial<{
658
658
  item: ClassValue;
659
659
  }>;
660
660
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
661
661
 
662
662
  declare const __VLS_component_145: DefineComponent<__VLS_Props_149, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_149> & Readonly<{}>, {
663
- class: string | Record<string, unknown> | ClassValue[] | null;
663
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
664
664
  classNames: Partial<{
665
665
  indicator: ClassValue;
666
666
  }>;
667
667
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
668
668
 
669
669
  declare const __VLS_component_146: DefineComponent<__VLS_Props_150, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_150> & Readonly<{}>, {
670
- class: string | Record<string, unknown> | ClassValue[] | null;
670
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
671
671
  classNames: Partial<{
672
672
  title: ClassValue;
673
673
  }>;
674
674
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLParagraphElement>;
675
675
 
676
676
  declare const __VLS_component_147: DefineComponent<__VLS_Props_151, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_151> & Readonly<{}>, {
677
- class: string | Record<string, unknown> | ClassValue[] | null;
677
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
678
678
  classNames: Partial<{
679
679
  description: ClassValue;
680
680
  }>;
681
681
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLParagraphElement>;
682
682
 
683
683
  declare const __VLS_component_148: DefineComponent<__VLS_Props_152, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_152> & Readonly<{}>, {
684
- class: string | Record<string, unknown> | ClassValue[] | null;
684
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
685
685
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLDivElement>;
686
686
 
687
687
  declare const __VLS_component_149: DefineComponent<__VLS_Props_154, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_154> & Readonly<{}>, {
688
688
  isExpanded: boolean;
689
- class: string | Record<string, unknown> | ClassValue[] | null;
689
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
690
690
  hasChildren: boolean;
691
691
  }, {}, {}, {}, string, ComponentProvideOptions, false, {}, HTMLButtonElement>;
692
692
 
@@ -1329,7 +1329,7 @@ name: string;
1329
1329
 
1330
1330
  declare const __VLS_component_29: DefineComponent<__VLS_Props_32, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_32> & Readonly<{}>, {
1331
1331
  variant: "primary" | "secondary";
1332
- class: string | Record<string, unknown> | ClassValue[] | null;
1332
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
1333
1333
  classNames: Partial<{
1334
1334
  base: ClassValue;
1335
1335
  control: ClassValue;
@@ -1766,7 +1766,7 @@ declare const __VLS_component_95: DefineComponent<__VLS_Props_106, {}, {}, {}, {
1766
1766
  }>, {
1767
1767
  variant: "default" | "danger";
1768
1768
  isDisabled: boolean;
1769
- class: string | Record<string, unknown> | ClassValue[] | null;
1769
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
1770
1770
  selectionMode: "single" | "multiple";
1771
1771
  modelValue: string | string[];
1772
1772
  defaultValue: string | string[];
@@ -1775,7 +1775,7 @@ defaultValue: string | string[];
1775
1775
  declare const __VLS_component_96: DefineComponent<__VLS_Props_107, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_107> & Readonly<{}>, {
1776
1776
  variant: "default" | "danger";
1777
1777
  isDisabled: boolean;
1778
- class: string | Record<string, unknown> | ClassValue[] | null;
1778
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
1779
1779
  classNames: Partial<{
1780
1780
  item: ClassValue;
1781
1781
  indicator: ClassValue;
@@ -7339,7 +7339,7 @@ export { ChipVariants as TagVariants }
7339
7339
  * Matches what Vue 3 accepts on any :class binding so components can
7340
7340
  * pass the user's value straight through without narrowing it to string.
7341
7341
  */
7342
- declare type ClassValue = string | null | undefined | Record<string, unknown> | ClassValue[];
7342
+ declare type ClassValue = string | false | null | undefined | Record<string, unknown> | ClassValue[];
7343
7343
 
7344
7344
  declare function clearErrors(name?: string): void;
7345
7345
 
@@ -7760,7 +7760,7 @@ export declare function composeSlotClassName<V extends Record<string, unknown>>(
7760
7760
  }>, {
7761
7761
  length: number;
7762
7762
  variant: "primary" | "secondary";
7763
- class: string | Record<string, unknown> | ClassValue[] | null;
7763
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
7764
7764
  type: "text";
7765
7765
  mask: boolean;
7766
7766
  classNames: Partial<{
@@ -8753,7 +8753,7 @@ export declare function composeSlotClassName<V extends Record<string, unknown>>(
8753
8753
  export declare const StepperItem: __VLS_WithTemplateSlots_144<typeof __VLS_component_144, __VLS_TemplateResult_144["slots"]>;
8754
8754
 
8755
8755
  export declare const StepperSeparator: DefineComponent<__VLS_Props_153, {}, {}, {}, {}, ComponentOptionsMixin, ComponentOptionsMixin, {}, string, PublicProps, Readonly<__VLS_Props_153> & Readonly<{}>, {
8756
- class: string | Record<string, unknown> | ClassValue[] | null;
8756
+ class: string | false | Record<string, unknown> | ClassValue[] | null;
8757
8757
  classNames: Partial<{
8758
8758
  separator: ClassValue;
8759
8759
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"composeClassName.js","names":[],"sources":["../../src/utils/composeClassName.ts"],"sourcesContent":["import { cx } from \"tailwind-variants\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport { cx };\n\n/**\n * Mirrors Vue's class binding — string, object, or array (recursive).\n * Matches what Vue 3 accepts on any :class binding so components can\n * pass the user's value straight through without narrowing it to string.\n */\nexport type ClassValue =\n | string\n | null\n | undefined\n | Record<string, unknown>\n | ClassValue[];\n\n/**\n * Merges Tailwind CSS classes, resolving conflicts via tailwind-merge.\n * Accepts strings, objects ({ 'p-4': true }), arrays, and falsy values —\n * matching the full set of values Vue's :class binding accepts.\n *\n * Requires tailwind-merge 3.5.0 (Tailwind 4 compatible).\n *\n * @param classes - Any combination of ClassValue inputs\n * @returns Merged class string with conflicts resolved\n */\nexport function composeClassName(...classes: ClassValue[]): string {\n return twMerge(cx(...(classes as Parameters<typeof cx>)));\n}\n"],"mappings":";;;;;;;;;;;;;AA2BA,SAAgB,iBAAiB,GAAG,SAA+B;AACjE,QAAO,QAAQ,GAAG,GAAI,QAAkC,CAAC"}
1
+ {"version":3,"file":"composeClassName.js","names":[],"sources":["../../src/utils/composeClassName.ts"],"sourcesContent":["import { cx } from \"tailwind-variants\";\nimport { twMerge } from \"tailwind-merge\";\n\nexport { cx };\n\n/**\n * Mirrors Vue's class binding — string, object, or array (recursive).\n * Matches what Vue 3 accepts on any :class binding so components can\n * pass the user's value straight through without narrowing it to string.\n */\nexport type ClassValue =\n | string\n | false\n | null\n | undefined\n | Record<string, unknown>\n | ClassValue[];\n\n/**\n * Merges Tailwind CSS classes, resolving conflicts via tailwind-merge.\n * Accepts strings, objects ({ 'p-4': true }), arrays, and falsy values —\n * matching the full set of values Vue's :class binding accepts.\n *\n * Requires tailwind-merge 3.5.0 (Tailwind 4 compatible).\n *\n * @param classes - Any combination of ClassValue inputs\n * @returns Merged class string with conflicts resolved\n */\nexport function composeClassName(...classes: ClassValue[]): string {\n return twMerge(cx(...(classes as Parameters<typeof cx>)));\n}\n"],"mappings":";;;;;;;;;;;;;AA4BA,SAAgB,iBAAiB,GAAG,SAA+B;AACjE,QAAO,QAAQ,GAAG,GAAI,QAAkC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@auronui/vue",
3
- "version": "1.0.15",
3
+ "version": "1.0.17",
4
4
  "description": "Vue 3 85 components with full visual and functional parity",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -69,7 +69,7 @@
69
69
  "tailwind-merge": "3.5.0",
70
70
  "tailwind-variants": "3.2.2",
71
71
  "vee-validate": "^4.15.1",
72
- "@auronui/styles": "1.0.15"
72
+ "@auronui/styles": "1.0.17"
73
73
  },
74
74
  "devDependencies": {
75
75
  "@chialab/vitest-axe": "0.19.1",
@@ -88,8 +88,8 @@
88
88
  "vitest": "4.1.4",
89
89
  "vue": "^3.5.32",
90
90
  "vue-tsc": "^3.2.6",
91
- "@auronui/standard": "0.0.0",
92
- "@auronui/vitest": "0.0.0"
91
+ "@auronui/vitest": "0.0.0",
92
+ "@auronui/standard": "0.0.0"
93
93
  },
94
94
  "scripts": {
95
95
  "build": "vite build",