@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":"RangeCalendar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/range-calendar/RangeCalendar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, shallowRef } from 'vue'\nimport {\n RangeCalendarRoot,\n RangeCalendarHeader,\n RangeCalendarHeading,\n RangeCalendarGrid,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarGridBody,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n RangeCalendarNext,\n RangeCalendarPrev,\n MonthPickerRoot,\n MonthPickerHeader,\n MonthPickerHeading,\n MonthPickerPrev,\n MonthPickerNext,\n MonthPickerGrid,\n MonthPickerGridBody,\n MonthPickerGridRow,\n MonthPickerCell,\n MonthPickerCellTrigger,\n YearPickerRoot,\n YearPickerHeader,\n YearPickerHeading,\n YearPickerPrev,\n YearPickerNext,\n YearPickerGrid,\n YearPickerGridBody,\n YearPickerGridRow,\n YearPickerCell,\n YearPickerCellTrigger,\n} from 'reka-ui'\nimport { today, getLocalTimeZone, type DateValue } from '@internationalized/date'\nimport { rangeCalendarVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nexport interface DateRange {\n start: DateValue\n end: DateValue\n}\n\nconst props = withDefaults(defineProps<{\n defaultValue?: DateRange | null\n defaultPlaceholder?: DateValue\n minValue?: DateValue\n maxValue?: DateValue\n isDateDisabled?: (date: DateValue) => boolean\n isDateUnavailable?: (date: DateValue) => boolean\n locale?: string\n weekdayFormat?: 'narrow' | 'short' | 'long'\n fixedWeeks?: boolean\n numberOfMonths?: number\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n pagedNavigation?: boolean\n preventDeselect?: boolean\n allowNonContiguousRanges?: boolean\n readonly?: boolean\n disabled?: boolean\n calendarLabel?: string\n class?: ClassValue\n /** Override classes for named slots */\n classNames?: Partial<{\n base: ClassValue\n header: ClassValue\n navButton: ClassValue\n navButtonIcon: ClassValue\n heading: ClassValue\n headingButton: ClassValue\n grid: ClassValue\n gridHeader: ClassValue\n gridRow: ClassValue\n headerCell: ClassValue\n gridBody: ClassValue\n cell: ClassValue\n cellButton: ClassValue\n monthGrid: ClassValue\n monthGridBody: ClassValue\n monthGridRow: ClassValue\n monthCell: ClassValue\n yearGrid: ClassValue\n yearGridBody: ClassValue\n yearGridRow: ClassValue\n yearCell: ClassValue\n }>\n}>(), {\n weekdayFormat: 'narrow',\n fixedWeeks: false,\n numberOfMonths: 1,\n pagedNavigation: false,\n preventDeselect: false,\n allowNonContiguousRanges: false,\n readonly: false,\n disabled: false,\n})\n\nconst modelValue = defineModel<DateRange | null>()\n\nconst slotFns = computed(() => rangeCalendarVariants())\n\n// View-switcher state: 'date' (default 7-col calendar), 'month' (3x4 months), 'year' (3x4 years)\ntype View = 'date' | 'month' | 'year'\nconst view = ref<View>('date')\n\n// Shared placeholder synced with RangeCalendarRoot/MonthPickerRoot/YearPickerRoot.\n// shallowRef preserves reka-ui's `DateValue` discriminated union.\nconst placeholder = shallowRef<DateValue>(\n (props.defaultValue?.start ?? props.defaultPlaceholder ?? today(getLocalTimeZone())) as DateValue\n)\n\nfunction cycleView(): void {\n view.value = view.value === 'date' ? 'month' : view.value === 'month' ? 'year' : 'date'\n}\n\nfunction onMonthSelect(val: DateValue | DateValue[] | undefined): void {\n if (!val) return\n const next = Array.isArray(val) ? val[val.length - 1] : val\n if (!next) return\n placeholder.value = next\n view.value = 'date'\n}\n\nfunction onYearSelect(val: DateValue | DateValue[] | undefined): void {\n if (!val) return\n const next = Array.isArray(val) ? val[val.length - 1] : val\n if (!next) return\n placeholder.value = next\n view.value = 'month'\n}\n\nconst nextViewLabel = computed(() =>\n view.value === 'date' ? 'month' : view.value === 'month' ? 'year' : 'date'\n)\n</script>\n\n<template>\n <RangeCalendarRoot\n v-model=\"modelValue\"\n v-model:placeholder=\"placeholder\"\n :default-value=\"defaultValue ?? undefined\"\n :default-placeholder=\"defaultPlaceholder\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :is-date-disabled=\"isDateDisabled\"\n :is-date-unavailable=\"isDateUnavailable\"\n :locale=\"locale\"\n :weekday-format=\"weekdayFormat\"\n :fixed-weeks=\"fixedWeeks\"\n :number-of-months=\"numberOfMonths\"\n :week-starts-on=\"weekStartsOn\"\n :paged-navigation=\"pagedNavigation\"\n :prevent-deselect=\"preventDeselect\"\n :allow-non-contiguous-ranges=\"allowNonContiguousRanges\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :calendar-label=\"calendarLabel\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <template #default=\"{ grid, weekDays }\">\n <template v-if=\"view === 'date'\">\n <RangeCalendarHeader :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <RangeCalendarPrev\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Previous month\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </RangeCalendarPrev>\n\n <RangeCalendarHeading\n v-slot=\"{ headingValue }\"\n :class=\"composeClassName(slotFns.heading(), props.classNames?.heading)\"\n >\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.headingButton(), props.classNames?.headingButton)\"\n :aria-label=\"`Switch to ${nextViewLabel} view`\"\n @click=\"cycleView\"\n >\n {{ headingValue }}\n </button>\n </RangeCalendarHeading>\n\n <RangeCalendarNext\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Next month\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </RangeCalendarNext>\n </RangeCalendarHeader>\n\n <RangeCalendarGrid\n v-for=\"month in grid\"\n :key=\"month.value.toString()\"\n :class=\"composeClassName(slotFns.grid(), props.classNames?.grid)\"\n >\n <RangeCalendarGridHead :class=\"composeClassName(slotFns.gridHeader(), props.classNames?.gridHeader)\">\n <RangeCalendarGridRow :class=\"composeClassName(slotFns.gridRow(), props.classNames?.gridRow)\">\n <RangeCalendarHeadCell\n v-for=\"day in weekDays\"\n :key=\"day\"\n :class=\"composeClassName(slotFns.headerCell(), props.classNames?.headerCell)\"\n >\n {{ day }}\n </RangeCalendarHeadCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridHead>\n <RangeCalendarGridBody :class=\"composeClassName(slotFns.gridBody(), props.classNames?.gridBody)\">\n <RangeCalendarGridRow\n v-for=\"(week, weekIndex) in month.rows\"\n :key=\"weekIndex\"\n :class=\"composeClassName(slotFns.gridRow(), props.classNames?.gridRow)\"\n >\n <RangeCalendarCell\n v-for=\"day in week\"\n :key=\"day.toString()\"\n :date=\"day\"\n :class=\"composeClassName(slotFns.cell(), props.classNames?.cell)\"\n >\n <RangeCalendarCellTrigger\n :day=\"day\"\n :month=\"month.value\"\n :class=\"composeClassName(slotFns.cellButton(), props.classNames?.cellButton)\"\n />\n </RangeCalendarCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridBody>\n </RangeCalendarGrid>\n </template>\n </template>\n </RangeCalendarRoot>\n\n <MonthPickerRoot\n v-if=\"view === 'month'\"\n :placeholder=\"placeholder\"\n :locale=\"locale\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"onMonthSelect\"\n @update:placeholder=\"(val: DateValue | undefined) => { if (val) placeholder = val }\"\n >\n <template #default=\"{ grid: monthGrid }\">\n <MonthPickerHeader :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <MonthPickerPrev\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Previous year\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </MonthPickerPrev>\n\n <MonthPickerHeading\n v-slot=\"{ headingValue }\"\n :class=\"composeClassName(slotFns.heading(), props.classNames?.heading)\"\n >\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.headingButton(), props.classNames?.headingButton)\"\n :aria-label=\"`Switch to ${nextViewLabel} view`\"\n @click=\"cycleView\"\n >\n {{ headingValue }}\n </button>\n </MonthPickerHeading>\n\n <MonthPickerNext\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Next year\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </MonthPickerNext>\n </MonthPickerHeader>\n\n <MonthPickerGrid :class=\"composeClassName(slotFns.monthGrid(), props.classNames?.monthGrid)\">\n <MonthPickerGridBody :class=\"composeClassName(slotFns.monthGridBody(), props.classNames?.monthGridBody)\">\n <MonthPickerGridRow\n v-for=\"(row, i) in monthGrid.rows\"\n :key=\"i\"\n :class=\"composeClassName(slotFns.monthGridRow(), props.classNames?.monthGridRow)\"\n >\n <MonthPickerCell\n v-for=\"monthValue in row\"\n :key=\"monthValue.toString()\"\n :date=\"monthValue\"\n >\n <MonthPickerCellTrigger\n :month=\"monthValue\"\n as=\"button\"\n :class=\"composeClassName(slotFns.monthCell(), props.classNames?.monthCell)\"\n />\n </MonthPickerCell>\n </MonthPickerGridRow>\n </MonthPickerGridBody>\n </MonthPickerGrid>\n </template>\n </MonthPickerRoot>\n\n <YearPickerRoot\n v-if=\"view === 'year'\"\n :placeholder=\"placeholder\"\n :locale=\"locale\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"onYearSelect\"\n @update:placeholder=\"(val: DateValue | undefined) => { if (val) placeholder = val }\"\n >\n <template #default=\"{ grid: yearGrid }\">\n <YearPickerHeader :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <YearPickerPrev\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Previous decade\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </YearPickerPrev>\n\n <YearPickerHeading\n v-slot=\"{ headingValue }\"\n :class=\"composeClassName(slotFns.heading(), props.classNames?.heading)\"\n >\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.headingButton(), props.classNames?.headingButton)\"\n :aria-label=\"`Switch to ${nextViewLabel} view`\"\n @click=\"cycleView\"\n >\n {{ headingValue }}\n </button>\n </YearPickerHeading>\n\n <YearPickerNext\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Next decade\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </YearPickerNext>\n </YearPickerHeader>\n\n <YearPickerGrid :class=\"composeClassName(slotFns.yearGrid(), props.classNames?.yearGrid)\">\n <YearPickerGridBody :class=\"composeClassName(slotFns.yearGridBody(), props.classNames?.yearGridBody)\">\n <YearPickerGridRow\n v-for=\"(row, i) in yearGrid.rows\"\n :key=\"i\"\n :class=\"composeClassName(slotFns.yearGridRow(), props.classNames?.yearGridRow)\"\n >\n <YearPickerCell\n v-for=\"yearValue in row\"\n :key=\"yearValue.toString()\"\n :date=\"yearValue\"\n >\n <YearPickerCellTrigger\n :year=\"yearValue\"\n as=\"button\"\n :class=\"composeClassName(slotFns.yearCell(), props.classNames?.yearCell)\"\n />\n </YearPickerCell>\n </YearPickerGridRow>\n </YearPickerGridBody>\n </YearPickerGrid>\n </template>\n </YearPickerRoot>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"RangeCalendar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/range-calendar/RangeCalendar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, shallowRef } from 'vue'\nimport {\n RangeCalendarRoot,\n RangeCalendarHeader,\n RangeCalendarHeading,\n RangeCalendarGrid,\n RangeCalendarGridHead,\n RangeCalendarGridRow,\n RangeCalendarHeadCell,\n RangeCalendarGridBody,\n RangeCalendarCell,\n RangeCalendarCellTrigger,\n RangeCalendarNext,\n RangeCalendarPrev,\n MonthPickerRoot,\n MonthPickerHeader,\n MonthPickerHeading,\n MonthPickerPrev,\n MonthPickerNext,\n MonthPickerGrid,\n MonthPickerGridBody,\n MonthPickerGridRow,\n MonthPickerCell,\n MonthPickerCellTrigger,\n YearPickerRoot,\n YearPickerHeader,\n YearPickerHeading,\n YearPickerPrev,\n YearPickerNext,\n YearPickerGrid,\n YearPickerGridBody,\n YearPickerGridRow,\n YearPickerCell,\n YearPickerCellTrigger,\n} from 'reka-ui'\nimport { today, getLocalTimeZone, type DateValue } from '@internationalized/date'\nimport { rangeCalendarVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nexport interface DateRange {\n start: DateValue\n end: DateValue\n}\n\nconst props = withDefaults(defineProps<{\n defaultValue?: DateRange | null\n defaultPlaceholder?: DateValue\n minValue?: DateValue\n maxValue?: DateValue\n isDateDisabled?: (date: DateValue) => boolean\n isDateUnavailable?: (date: DateValue) => boolean\n locale?: string\n weekdayFormat?: 'narrow' | 'short' | 'long'\n fixedWeeks?: boolean\n numberOfMonths?: number\n weekStartsOn?: 0 | 1 | 2 | 3 | 4 | 5 | 6\n pagedNavigation?: boolean\n preventDeselect?: boolean\n allowNonContiguousRanges?: boolean\n readonly?: boolean\n disabled?: boolean\n calendarLabel?: string\n class?: ClassValue\n /** Override classes for named slots */\n classNames?: Partial<{\n base: ClassValue\n header: ClassValue\n navButton: ClassValue\n navButtonIcon: ClassValue\n heading: ClassValue\n headingButton: ClassValue\n grid: ClassValue\n gridHeader: ClassValue\n gridRow: ClassValue\n headerCell: ClassValue\n gridBody: ClassValue\n cell: ClassValue\n cellButton: ClassValue\n monthGrid: ClassValue\n monthGridBody: ClassValue\n monthGridRow: ClassValue\n monthCell: ClassValue\n yearGrid: ClassValue\n yearGridBody: ClassValue\n yearGridRow: ClassValue\n yearCell: ClassValue\n }>\n}>(), {\n weekdayFormat: 'narrow',\n fixedWeeks: false,\n numberOfMonths: 1,\n pagedNavigation: false,\n preventDeselect: false,\n allowNonContiguousRanges: false,\n readonly: false,\n disabled: false,\n})\n\nconst modelValue = defineModel<DateRange | null>()\n\nconst slotFns = computed(() => rangeCalendarVariants())\n\n// View-switcher state: 'date' (default 7-col calendar), 'month' (3x4 months), 'year' (3x4 years)\ntype View = 'date' | 'month' | 'year'\nconst view = ref<View>('date')\n\n// Shared placeholder synced with RangeCalendarRoot/MonthPickerRoot/YearPickerRoot.\n// shallowRef preserves reka-ui's `DateValue` discriminated union.\nconst placeholder = shallowRef<DateValue>(\n (props.defaultValue?.start ?? props.defaultPlaceholder ?? today(getLocalTimeZone())) as DateValue\n)\n\nfunction cycleView(): void {\n view.value = view.value === 'date' ? 'month' : view.value === 'month' ? 'year' : 'date'\n}\n\nfunction onMonthSelect(val: DateValue | DateValue[] | undefined): void {\n if (!val) return\n const next = Array.isArray(val) ? val[val.length - 1] : val\n if (!next) return\n placeholder.value = next\n view.value = 'date'\n}\n\nfunction onYearSelect(val: DateValue | DateValue[] | undefined): void {\n if (!val) return\n const next = Array.isArray(val) ? val[val.length - 1] : val\n if (!next) return\n placeholder.value = next\n view.value = 'month'\n}\n\nconst nextViewLabel = computed(() =>\n view.value === 'date' ? 'month' : view.value === 'month' ? 'year' : 'date'\n)\n</script>\n\n<template>\n <RangeCalendarRoot\n v-model=\"modelValue\"\n v-model:placeholder=\"placeholder\"\n :default-value=\"defaultValue ?? undefined\"\n :default-placeholder=\"defaultPlaceholder\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :is-date-disabled=\"isDateDisabled\"\n :is-date-unavailable=\"isDateUnavailable\"\n :locale=\"locale\"\n :weekday-format=\"weekdayFormat\"\n :fixed-weeks=\"fixedWeeks\"\n :number-of-months=\"numberOfMonths\"\n :week-starts-on=\"weekStartsOn\"\n :paged-navigation=\"pagedNavigation\"\n :prevent-deselect=\"preventDeselect\"\n :allow-non-contiguous-ranges=\"allowNonContiguousRanges\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :calendar-label=\"calendarLabel\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n >\n <template #default=\"{ grid, weekDays }\">\n <template v-if=\"view === 'date'\">\n <RangeCalendarHeader :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <RangeCalendarPrev\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Previous month\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </RangeCalendarPrev>\n\n <RangeCalendarHeading\n v-slot=\"{ headingValue }\"\n :class=\"composeClassName(slotFns.heading(), props.classNames?.heading)\"\n >\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.headingButton(), props.classNames?.headingButton)\"\n :aria-label=\"`Switch to ${nextViewLabel} view`\"\n @click=\"cycleView\"\n >\n {{ headingValue }}\n </button>\n </RangeCalendarHeading>\n\n <RangeCalendarNext\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Next month\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </RangeCalendarNext>\n </RangeCalendarHeader>\n\n <RangeCalendarGrid\n v-for=\"month in grid\"\n :key=\"month.value.toString()\"\n :class=\"composeClassName(slotFns.grid(), props.classNames?.grid)\"\n >\n <RangeCalendarGridHead :class=\"composeClassName(slotFns.gridHeader(), props.classNames?.gridHeader)\">\n <RangeCalendarGridRow :class=\"composeClassName(slotFns.gridRow(), props.classNames?.gridRow)\">\n <RangeCalendarHeadCell\n v-for=\"day in weekDays\"\n :key=\"day\"\n :class=\"composeClassName(slotFns.headerCell(), props.classNames?.headerCell)\"\n >\n {{ day }}\n </RangeCalendarHeadCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridHead>\n <RangeCalendarGridBody :class=\"composeClassName(slotFns.gridBody(), props.classNames?.gridBody)\">\n <RangeCalendarGridRow\n v-for=\"(week, weekIndex) in month.rows\"\n :key=\"weekIndex\"\n :class=\"composeClassName(slotFns.gridRow(), props.classNames?.gridRow)\"\n >\n <RangeCalendarCell\n v-for=\"day in week\"\n :key=\"day.toString()\"\n :date=\"day\"\n :class=\"composeClassName(slotFns.cell(), props.classNames?.cell)\"\n >\n <RangeCalendarCellTrigger\n :day=\"day\"\n :month=\"month.value\"\n :class=\"composeClassName(slotFns.cellButton(), props.classNames?.cellButton)\"\n />\n </RangeCalendarCell>\n </RangeCalendarGridRow>\n </RangeCalendarGridBody>\n </RangeCalendarGrid>\n </template>\n </template>\n </RangeCalendarRoot>\n\n <MonthPickerRoot\n v-if=\"view === 'month'\"\n :placeholder=\"placeholder\"\n :locale=\"locale\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"onMonthSelect\"\n @update:placeholder=\"(val: DateValue | undefined) => { if (val) placeholder = val }\"\n >\n <template #default=\"{ grid: monthGrid }\">\n <MonthPickerHeader :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <MonthPickerPrev\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Previous year\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </MonthPickerPrev>\n\n <MonthPickerHeading\n v-slot=\"{ headingValue }\"\n :class=\"composeClassName(slotFns.heading(), props.classNames?.heading)\"\n >\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.headingButton(), props.classNames?.headingButton)\"\n :aria-label=\"`Switch to ${nextViewLabel} view`\"\n @click=\"cycleView\"\n >\n {{ headingValue }}\n </button>\n </MonthPickerHeading>\n\n <MonthPickerNext\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Next year\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </MonthPickerNext>\n </MonthPickerHeader>\n\n <MonthPickerGrid :class=\"composeClassName(slotFns.monthGrid(), props.classNames?.monthGrid)\">\n <MonthPickerGridBody :class=\"composeClassName(slotFns.monthGridBody(), props.classNames?.monthGridBody)\">\n <MonthPickerGridRow\n v-for=\"(row, i) in monthGrid.rows\"\n :key=\"i\"\n :class=\"composeClassName(slotFns.monthGridRow(), props.classNames?.monthGridRow)\"\n >\n <MonthPickerCell\n v-for=\"monthValue in row\"\n :key=\"monthValue.toString()\"\n :date=\"monthValue\"\n >\n <MonthPickerCellTrigger\n :month=\"monthValue\"\n as=\"button\"\n :class=\"composeClassName(slotFns.monthCell(), props.classNames?.monthCell)\"\n />\n </MonthPickerCell>\n </MonthPickerGridRow>\n </MonthPickerGridBody>\n </MonthPickerGrid>\n </template>\n </MonthPickerRoot>\n\n <YearPickerRoot\n v-if=\"view === 'year'\"\n :placeholder=\"placeholder\"\n :locale=\"locale\"\n :min-value=\"minValue\"\n :max-value=\"maxValue\"\n :readonly=\"readonly\"\n :disabled=\"disabled\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n @update:model-value=\"onYearSelect\"\n @update:placeholder=\"(val: DateValue | undefined) => { if (val) placeholder = val }\"\n >\n <template #default=\"{ grid: yearGrid }\">\n <YearPickerHeader :class=\"composeClassName(slotFns.header(), props.classNames?.header)\">\n <YearPickerPrev\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Previous decade\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"15 18 9 12 15 6\" />\n </svg>\n </YearPickerPrev>\n\n <YearPickerHeading\n v-slot=\"{ headingValue }\"\n :class=\"composeClassName(slotFns.heading(), props.classNames?.heading)\"\n >\n <button\n type=\"button\"\n :class=\"composeClassName(slotFns.headingButton(), props.classNames?.headingButton)\"\n :aria-label=\"`Switch to ${nextViewLabel} view`\"\n @click=\"cycleView\"\n >\n {{ headingValue }}\n </button>\n </YearPickerHeading>\n\n <YearPickerNext\n :class=\"composeClassName(slotFns.navButton(), props.classNames?.navButton)\"\n aria-label=\"Next decade\"\n >\n <svg\n :class=\"composeClassName(slotFns.navButtonIcon(), props.classNames?.navButtonIcon)\"\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"9 18 15 12 9 6\" />\n </svg>\n </YearPickerNext>\n </YearPickerHeader>\n\n <YearPickerGrid :class=\"composeClassName(slotFns.yearGrid(), props.classNames?.yearGrid)\">\n <YearPickerGridBody :class=\"composeClassName(slotFns.yearGridBody(), props.classNames?.yearGridBody)\">\n <YearPickerGridRow\n v-for=\"(row, i) in yearGrid.rows\"\n :key=\"i\"\n :class=\"composeClassName(slotFns.yearGridRow(), props.classNames?.yearGridRow)\"\n >\n <YearPickerCell\n v-for=\"yearValue in row\"\n :key=\"yearValue.toString()\"\n :date=\"yearValue\"\n >\n <YearPickerCellTrigger\n :year=\"yearValue\"\n as=\"button\"\n :class=\"composeClassName(slotFns.yearCell(), props.classNames?.yearCell)\"\n />\n </YearPickerCell>\n </YearPickerGridRow>\n </YearPickerGridBody>\n </YearPickerGrid>\n </template>\n </YearPickerRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA6CA,MAAM,QAAQ;EAsDd,MAAM,aAAa,SAA6B,SAAA,aAAC;EAEjD,MAAM,UAAU,eAAe,uBAAuB,CAAA;EAItD,MAAM,OAAO,IAAU,OAAM;EAI7B,MAAM,cAAc,WACjB,MAAM,cAAc,SAAS,MAAM,sBAAsB,0CAAM,2CAAkB,CAAC,CACrF;EAEA,SAAS,YAAkB;AACzB,QAAK,QAAQ,KAAK,UAAU,SAAS,UAAU,KAAK,UAAU,UAAU,SAAS;;EAGnF,SAAS,cAAc,KAAgD;AACrE,OAAI,CAAC,IAAK;GACV,MAAM,OAAO,MAAM,QAAQ,IAAI,GAAG,IAAI,IAAI,SAAS,KAAK;AACxD,OAAI,CAAC,KAAM;AACX,eAAY,QAAQ;AACpB,QAAK,QAAQ;;EAGf,SAAS,aAAa,KAAgD;AACpE,OAAI,CAAC,IAAK;GACV,MAAM,OAAO,MAAM,QAAQ,IAAI,GAAG,IAAI,IAAI,SAAS,KAAK;AACxD,OAAI,CAAC,KAAM;AACX,eAAY,QAAQ;AACpB,QAAK,QAAQ;;EAGf,MAAM,gBAAgB,eACpB,KAAK,UAAU,SAAS,UAAU,KAAK,UAAU,UAAU,SAAS,OACtE;;;IAIE,YAyHoB,MAAA,kBAAA,EAAA;iBAxHT,WAAA;6EAAU,QAAA;KACX,aAAa,YAAA;+EAAW,QAAA;KAC/B,iBAAe,QAAA,gBAAgB,KAAA;KAC/B,uBAAqB,QAAA;KACrB,aAAW,QAAA;KACX,aAAW,QAAA;KACX,oBAAkB,QAAA;KAClB,uBAAqB,QAAA;KACrB,QAAQ,QAAA;KACR,kBAAgB,QAAA;KAChB,eAAa,QAAA;KACb,oBAAkB,QAAA;KAClB,kBAAgB,QAAA;KAChB,oBAAkB,QAAA;KAClB,oBAAkB,QAAA;KAClB,+BAA6B,QAAA;KAC7B,UAAU,QAAA;KACV,UAAU,QAAA;KACV,kBAAgB,QAAA;KAChB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;;KAEjE,SAAO,SAiGL,EAjGS,MAAM,eAAQ,CAClB,KAAA,UAAI,UAAA,WAAA,EAApB,mBAgGW,UAAA,EAAA,KAAA,GAAA,EAAA,CA/FT,YAwDsB,MAAA,oBAAA,EAAA,EAxDA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA,EAAA,EAAA;6BAoBlE;OAnBpB,YAmBoB,MAAA,kBAAA,EAAA;QAlBjB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;QACzE,cAAW;;+BAgBL,EAAA,WAAA,EAdN,mBAcM,OAAA;SAbH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SACjF,OAAM;SACN,OAAM;SACN,QAAO;SACP,SAAQ;SACR,MAAK;SACL,QAAO;SACP,gBAAa;SACb,kBAAe;SACf,mBAAgB;SAChB,eAAY;0CAEZ,mBAAqC,YAAA,EAA3B,QAAO,mBAAiB,EAAA,MAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;OAItC,YAYuB,MAAA,qBAAA,EAAA,EAVpB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA;0BAS5D,EAVC,mBAAY,CAGtB,mBAOS,UAAA;SANP,MAAK;SACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SAChF,cAAU,aAAe,cAAA,MAAa;SACtC,SAAO;2BAEL,aAAY,EAAA,IAAA,WAAA,CAAA,CAAA;;;OAInB,YAmBoB,MAAA,kBAAA,EAAA;QAlBjB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;QACzE,cAAW;;+BAgBL,EAAA,WAAA,EAdN,mBAcM,OAAA;SAbH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SACjF,OAAM;SACN,OAAM;SACN,QAAO;SACP,SAAQ;SACR,MAAK;SACL,QAAO;SACP,gBAAa;SACb,kBAAe;SACf,mBAAgB;SAChB,eAAY;0CAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,EAAA,MAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;;;yCAKvC,mBAoCoB,UAAA,MAAA,WAnCF,OAAT,UAAK;0BADd,YAoCoB,MAAA,kBAAA,EAAA;OAlCjB,KAAK,MAAM,MAAM,UAAQ;OACzB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;;8BAYvC,CAVxB,YAUwB,MAAA,sBAAA,EAAA,EAVA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA,EAAA,EAAA;+BASzE,CARvB,YAQuB,MAAA,qBAAA,EAAA,EARA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA;gCAEhE,EAAA,UAAA,KAAA,EADzB,mBAMwB,UAAA,MAAA,WALR,WAAP,QAAG;8BADZ,YAMwB,MAAA,sBAAA,EAAA;WAJrB,KAAK;WACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA;;kCAElE,CAAA,gBAAA,gBAAN,IAAG,EAAA,EAAA,CAAA,CAAA;;;;;;;4BAIZ,YAmBwB,MAAA,sBAAA,EAAA,EAnBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,UAAQ,EAAI,MAAM,YAAY,SAAQ,CAAA,EAAA,EAAA;+BAEnD,EAAA,UAAA,KAAA,EADzC,mBAiBuB,UAAA,MAAA,WAhBO,MAAM,OAA1B,MAAM,cAAS;6BADzB,YAiBuB,MAAA,qBAAA,EAAA;UAfpB,KAAK;UACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA;;iCAGhD,EAAA,UAAA,KAAA,EADrB,mBAWoB,UAAA,MAAA,WAVJ,OAAP,QAAG;+BADZ,YAWoB,MAAA,kBAAA,EAAA;YATjB,KAAK,IAAI,UAAQ;YACjB,MAAM;YACN,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;;mCAM7D,CAJF,YAIE,MAAA,yBAAA,EAAA;aAHM;aACL,OAAO,MAAM;aACb,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAWnF,KAAA,UAAI,WAAA,WAAA,EADZ,YA6FkB,MAAA,gBAAA,EAAA;;KA3Ff,aAAa,YAAA;KACb,QAAQ,QAAA;KACR,aAAW,QAAA;KACX,aAAW,QAAA;KACX,UAAU,QAAA;KACV,UAAU,QAAA;KACV,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;KAC3E,uBAAoB;KACpB,wBAAkB,OAAA,OAAA,OAAA,MAAG,QAA0B;AAAA,UAAW,IAAK,aAAA,QAAc;;;KAEnE,SAAO,SAyDI,EAAA,MAzDM,gBAAS,CACnC,YAwDoB,MAAA,kBAAA,EAAA,EAxDA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA,EAAA,EAAA;6BAoBlE;OAnBlB,YAmBkB,MAAA,gBAAA,EAAA;QAlBf,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;QACzE,cAAW;;+BAgBL,EAAA,WAAA,EAdN,mBAcM,OAAA;SAbH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SACjF,OAAM;SACN,OAAM;SACN,QAAO;SACP,SAAQ;SACR,MAAK;SACL,QAAO;SACP,gBAAa;SACb,kBAAe;SACf,mBAAgB;SAChB,eAAY;0CAEZ,mBAAqC,YAAA,EAA3B,QAAO,mBAAiB,EAAA,MAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;OAItC,YAYqB,MAAA,mBAAA,EAAA,EAVlB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA;0BAS5D,EAVC,mBAAY,CAGtB,mBAOS,UAAA;SANP,MAAK;SACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SAChF,cAAU,aAAe,cAAA,MAAa;SACtC,SAAO;2BAEL,aAAY,EAAA,IAAA,WAAA,CAAA,CAAA;;;OAInB,YAmBkB,MAAA,gBAAA,EAAA;QAlBf,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;QACzE,cAAW;;+BAgBL,EAAA,WAAA,EAdN,mBAcM,OAAA;SAbH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SACjF,OAAM;SACN,OAAM;SACN,QAAO;SACP,SAAQ;SACR,MAAK;SACL,QAAO;SACP,gBAAa;SACb,kBAAe;SACf,mBAAgB;SAChB,eAAY;0CAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,EAAA,MAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;;;uBAKvC,YAoBkB,MAAA,gBAAA,EAAA,EApBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA;6BAmBlE,CAlBtB,YAkBsB,MAAA,oBAAA,EAAA,EAlBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA,EAAA,EAAA;8BAEhE,EAAA,UAAA,KAAA,EADpC,mBAgBqB,UAAA,MAAA,WAfA,UAAU,OAArB,KAAK,MAAC;4BADhB,YAgBqB,MAAA,mBAAA,EAAA;SAdlB,KAAK;SACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;;gCAGpD,EAAA,UAAA,KAAA,EAD3B,mBAUkB,UAAA,MAAA,WATK,MAAd,eAAU;8BADnB,YAUkB,MAAA,gBAAA,EAAA;WARf,KAAK,WAAW,UAAQ;WACxB,MAAM;;kCAML,CAJF,YAIE,MAAA,uBAAA,EAAA;YAHC,OAAO;YACR,IAAG;YACF,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;;;;;;;;;;;;;;;;;;;;;;IAU/E,KAAA,UAAI,UAAA,WAAA,EADZ,YA6FiB,MAAA,eAAA,EAAA;;KA3Fd,aAAa,YAAA;KACb,QAAQ,QAAA;KACR,aAAW,QAAA;KACX,aAAW,QAAA;KACX,UAAU,QAAA;KACV,UAAU,QAAA;KACV,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;KAC3E,uBAAoB;KACpB,wBAAkB,OAAA,OAAA,OAAA,MAAG,QAA0B;AAAA,UAAW,IAAK,aAAA,QAAc;;;KAEnE,SAAO,SAyDG,EAAA,MAzDO,eAAQ,CAClC,YAwDmB,MAAA,iBAAA,EAAA,EAxDA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA,EAAA,EAAA;6BAoBlE;OAnBjB,YAmBiB,MAAA,eAAA,EAAA;QAlBd,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;QACzE,cAAW;;+BAgBL,EAAA,WAAA,EAdN,mBAcM,OAAA;SAbH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SACjF,OAAM;SACN,OAAM;SACN,QAAO;SACP,SAAQ;SACR,MAAK;SACL,QAAO;SACP,gBAAa;SACb,kBAAe;SACf,mBAAgB;SAChB,eAAY;0CAEZ,mBAAqC,YAAA,EAA3B,QAAO,mBAAiB,EAAA,MAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;OAItC,YAYoB,MAAA,kBAAA,EAAA,EAVjB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA,EAAA,EAAA;0BAS5D,EAVC,mBAAY,CAGtB,mBAOS,UAAA;SANP,MAAK;SACJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SAChF,cAAU,aAAe,cAAA,MAAa;SACtC,SAAO;2BAEL,aAAY,EAAA,IAAA,WAAA,CAAA,CAAA;;;OAInB,YAmBiB,MAAA,eAAA,EAAA;QAlBd,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;QACzE,cAAW;;+BAgBL,EAAA,WAAA,EAdN,mBAcM,OAAA;SAbH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,eAAa,EAAI,MAAM,YAAY,cAAa,CAAA;SACjF,OAAM;SACN,OAAM;SACN,QAAO;SACP,SAAQ;SACR,MAAK;SACL,QAAO;SACP,gBAAa;SACb,kBAAe;SACf,mBAAgB;SAChB,eAAY;0CAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,EAAA,MAAA,GAAA,CAAA,EAAA,EAAA,EAAA,EAAA,CAAA;;;;;uBAKvC,YAoBiB,MAAA,eAAA,EAAA,EApBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,UAAQ,EAAI,MAAM,YAAY,SAAQ,CAAA,EAAA,EAAA;6BAmBhE,CAlBrB,YAkBqB,MAAA,mBAAA,EAAA,EAlBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA,EAAA,EAAA;8BAE9D,EAAA,UAAA,KAAA,EADnC,mBAgBoB,UAAA,MAAA,WAfC,SAAS,OAApB,KAAK,MAAC;4BADhB,YAgBoB,MAAA,kBAAA,EAAA;SAdjB,KAAK;SACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,aAAW,EAAI,MAAM,YAAY,YAAW,CAAA;;gCAGnD,EAAA,UAAA,KAAA,EAD1B,mBAUiB,UAAA,MAAA,WATK,MAAb,cAAS;8BADlB,YAUiB,MAAA,eAAA,EAAA;WARd,KAAK,UAAU,UAAQ;WACvB,MAAM;;kCAML,CAJF,YAIE,MAAA,sBAAA,EAAA;YAHC,MAAM;YACP,IAAG;YACF,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,UAAQ,EAAI,MAAM,YAAY,SAAQ,CAAA"}
@@ -21,7 +21,13 @@ var ScrollShadow_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
21
21
  size: { default: 40 },
22
22
  offset: { default: 0 },
23
23
  visibility: { default: "auto" },
24
- class: {},
24
+ class: { type: [
25
+ String,
26
+ Boolean,
27
+ null,
28
+ Object,
29
+ Array
30
+ ] },
25
31
  classNames: {}
26
32
  },
27
33
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"ScrollShadow.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/scroll-shadow/ScrollShadow.vue"],"sourcesContent":["<!--\n ScrollShadow — An overflow container that shows/hides top/bottom (or left/right)\n shadows based on scroll position.\n\n Implementation: Uses @vueuse/core useScroll to detect arrivedState (top/bottom/left/right).\n Data-attributes drive shadow visibility via CSS mask-image in @auronui/styles.\n\n Data-attribute semantics (matches scroll-shadow.css):\n data-top-scroll=\"true\" → content exists ABOVE current viewport (scrolled down) → top shadow shown\n data-bottom-scroll=\"true\" → content exists BELOW current viewport → bottom shadow shown\n data-left-scroll=\"true\" → content exists to the LEFT (scrolled right) → left shadow shown\n data-right-scroll=\"true\" → content exists to the RIGHT → right shadow shown\n\n Note: CLAUDE.md Reka UI CSS selector pairing rule (pseudo + data-attr) does not apply\n here because ScrollShadow is a custom component with no Reka UI backing.\n-->\n<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from 'vue'\nimport { useScroll } from '@vueuse/core'\nimport { scrollShadowVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n orientation?: 'vertical' | 'horizontal' | 'both'\n hideScrollBar?: boolean\n size?: number\n offset?: number\n visibility?: 'auto' | 'top' | 'bottom' | 'left' | 'right' | 'both' | 'none'\n class?: ClassValue\n /** Per-slot class overrides. */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n orientation: 'vertical',\n hideScrollBar: false,\n size: 40,\n offset: 0,\n visibility: 'auto',\n})\n\nconst container = useTemplateRef<HTMLElement>('container')\nconst { arrivedState } = useScroll(container)\n\n// data-top-scroll=\"true\" when there IS content above (i.e., NOT at top edge)\nconst topScroll = computed(() => !arrivedState.top || undefined)\n// data-bottom-scroll=\"true\" when there IS content below (i.e., NOT at bottom edge)\nconst bottomScroll = computed(() => !arrivedState.bottom || undefined)\n// data-left-scroll=\"true\" when there IS content to the left (i.e., NOT at left edge)\nconst leftScroll = computed(() => !arrivedState.left || undefined)\n// data-right-scroll=\"true\" when there IS content to the right (i.e., NOT at right edge)\nconst rightScroll = computed(() => !arrivedState.right || undefined)\n\nconst slotFns = computed(() =>\n scrollShadowVariants({\n orientation: props.orientation === 'both' ? 'vertical' : props.orientation,\n hideScrollBar: props.hideScrollBar,\n })\n)\n</script>\n\n<template>\n <div\n ref=\"container\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"orientation\"\n :data-top-scroll=\"topScroll ? 'true' : undefined\"\n :data-bottom-scroll=\"bottomScroll ? 'true' : undefined\"\n :data-left-scroll=\"leftScroll ? 'true' : undefined\"\n :data-right-scroll=\"rightScroll ? 'true' : undefined\"\n :style=\"{ '--scroll-shadow-size': size + 'px' }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBA,MAAM,QAAQ;EAmBd,MAAM,YAAY,eAA4B,YAAW;EACzD,MAAM,EAAE,iBAAiB,UAAU,UAAS;EAG5C,MAAM,YAAY,eAAe,CAAC,aAAa,OAAO,KAAA,EAAS;EAE/D,MAAM,eAAe,eAAe,CAAC,aAAa,UAAU,KAAA,EAAS;EAErE,MAAM,aAAa,eAAe,CAAC,aAAa,QAAQ,KAAA,EAAS;EAEjE,MAAM,cAAc,eAAe,CAAC,aAAa,SAAS,KAAA,EAAS;EAEnE,MAAM,UAAU,eACd,qBAAqB;GACnB,aAAa,MAAM,gBAAgB,SAAS,aAAa,MAAM;GAC/D,eAAe,MAAM;GACtB,CAAA,CACH;;uBAIE,mBAWM,OAAA;aAVA;IAAJ,KAAI;IACH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,oBAAkB,QAAA;IAClB,mBAAiB,UAAA,QAAS,SAAY,KAAA;IACtC,sBAAoB,aAAA,QAAY,SAAY,KAAA;IAC5C,oBAAkB,WAAA,QAAU,SAAY,KAAA;IACxC,qBAAmB,YAAA,QAAW,SAAY,KAAA;IAC1C,OAAK,eAAA,EAAA,wBAA4B,QAAA,OAAI,MAAA,CAAA;OAEtC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA"}
1
+ {"version":3,"file":"ScrollShadow.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/scroll-shadow/ScrollShadow.vue"],"sourcesContent":["<!--\n ScrollShadow — An overflow container that shows/hides top/bottom (or left/right)\n shadows based on scroll position.\n\n Implementation: Uses @vueuse/core useScroll to detect arrivedState (top/bottom/left/right).\n Data-attributes drive shadow visibility via CSS mask-image in @auronui/styles.\n\n Data-attribute semantics (matches scroll-shadow.css):\n data-top-scroll=\"true\" → content exists ABOVE current viewport (scrolled down) → top shadow shown\n data-bottom-scroll=\"true\" → content exists BELOW current viewport → bottom shadow shown\n data-left-scroll=\"true\" → content exists to the LEFT (scrolled right) → left shadow shown\n data-right-scroll=\"true\" → content exists to the RIGHT → right shadow shown\n\n Note: CLAUDE.md Reka UI CSS selector pairing rule (pseudo + data-attr) does not apply\n here because ScrollShadow is a custom component with no Reka UI backing.\n-->\n<script setup lang=\"ts\">\nimport { computed, useTemplateRef } from 'vue'\nimport { useScroll } from '@vueuse/core'\nimport { scrollShadowVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n orientation?: 'vertical' | 'horizontal' | 'both'\n hideScrollBar?: boolean\n size?: number\n offset?: number\n visibility?: 'auto' | 'top' | 'bottom' | 'left' | 'right' | 'both' | 'none'\n class?: ClassValue\n /** Per-slot class overrides. */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n orientation: 'vertical',\n hideScrollBar: false,\n size: 40,\n offset: 0,\n visibility: 'auto',\n})\n\nconst container = useTemplateRef<HTMLElement>('container')\nconst { arrivedState } = useScroll(container)\n\n// data-top-scroll=\"true\" when there IS content above (i.e., NOT at top edge)\nconst topScroll = computed(() => !arrivedState.top || undefined)\n// data-bottom-scroll=\"true\" when there IS content below (i.e., NOT at bottom edge)\nconst bottomScroll = computed(() => !arrivedState.bottom || undefined)\n// data-left-scroll=\"true\" when there IS content to the left (i.e., NOT at left edge)\nconst leftScroll = computed(() => !arrivedState.left || undefined)\n// data-right-scroll=\"true\" when there IS content to the right (i.e., NOT at right edge)\nconst rightScroll = computed(() => !arrivedState.right || undefined)\n\nconst slotFns = computed(() =>\n scrollShadowVariants({\n orientation: props.orientation === 'both' ? 'vertical' : props.orientation,\n hideScrollBar: props.hideScrollBar,\n })\n)\n</script>\n\n<template>\n <div\n ref=\"container\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"orientation\"\n :data-top-scroll=\"topScroll ? 'true' : undefined\"\n :data-bottom-scroll=\"bottomScroll ? 'true' : undefined\"\n :data-left-scroll=\"leftScroll ? 'true' : undefined\"\n :data-right-scroll=\"rightScroll ? 'true' : undefined\"\n :style=\"{ '--scroll-shadow-size': size + 'px' }\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAsBA,MAAM,QAAQ;EAmBd,MAAM,YAAY,eAA4B,YAAW;EACzD,MAAM,EAAE,iBAAiB,UAAU,UAAS;EAG5C,MAAM,YAAY,eAAe,CAAC,aAAa,OAAO,KAAA,EAAS;EAE/D,MAAM,eAAe,eAAe,CAAC,aAAa,UAAU,KAAA,EAAS;EAErE,MAAM,aAAa,eAAe,CAAC,aAAa,QAAQ,KAAA,EAAS;EAEjE,MAAM,cAAc,eAAe,CAAC,aAAa,SAAS,KAAA,EAAS;EAEnE,MAAM,UAAU,eACd,qBAAqB;GACnB,aAAa,MAAM,gBAAgB,SAAS,aAAa,MAAM;GAC/D,eAAe,MAAM;GACtB,CAAA,CACH;;uBAIE,mBAWM,OAAA;aAVA;IAAJ,KAAI;IACH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,oBAAkB,QAAA;IAClB,mBAAiB,UAAA,QAAS,SAAY,KAAA;IACtC,sBAAoB,aAAA,QAAY,SAAY,KAAA;IAC5C,oBAAkB,WAAA,QAAU,SAAY,KAAA;IACxC,qBAAmB,YAAA,QAAW,SAAY,KAAA;IAC1C,OAAK,eAAA,EAAA,wBAA4B,QAAA,OAAI,MAAA,CAAA;OAEtC,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA"}
@@ -57,7 +57,13 @@ var Select_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
57
57
  label: {},
58
58
  description: {},
59
59
  errorMessage: {},
60
- class: {},
60
+ class: { type: [
61
+ String,
62
+ Boolean,
63
+ null,
64
+ Object,
65
+ Array
66
+ ] },
61
67
  classNames: {},
62
68
  modelValue: { default: void 0 },
63
69
  defaultValue: { default: void 0 },
@@ -1 +1 @@
1
- {"version":3,"file":"Select.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/Select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, reactive, toRef, useAttrs, useId, useSlots } from 'vue'\nimport { SelectRoot } from 'reka-ui'\nimport { selectVariants, type SelectVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useSelectProvide, type SelectItemValue, type SelectItemData } from './Select.context'\nimport { hasSlotComponent } from '../../utils/hasSlotComponent'\nimport SelectTrigger from './SelectTrigger.vue'\nimport SelectValue from './SelectValue.vue'\nimport SelectContent from './SelectContent.vue'\nimport SelectItem from './SelectItem.vue'\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 multiple: false,\n modelValue: undefined,\n defaultValue: undefined,\n open: undefined,\n defaultOpen: undefined,\n items: () => [],\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: SelectItemValue | SelectItemValue[]]\n 'update:open': [value: boolean]\n}>()\n\ntype Props = {\n /** Visual style of the field. @default 'flat' */\n variant?: SelectVariants['variant']\n /** Field height. @default 'md' */\n size?: SelectVariants['size']\n /** Accent color applied to focus ring + floating label. @default 'default' */\n color?: SelectVariants['color']\n /**\n * Where the `label` is rendered relative to the field.\n * - `inside`: floats above the trigger (shrinks when focused/filled)\n * - `outside`: sits above the field, static\n * - `outside-left`: sits to the left, horizontal layout\n * @default 'inside'\n */\n labelPlacement?: SelectVariants['labelPlacement']\n /** Stretches root wrapper to 100% width. @default false */\n fullWidth?: boolean\n /** Marks the field as invalid. Triggers danger styling and enables `errorMessage`. @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 /** Placeholder shown when no value is selected. */\n placeholder?: string\n /** Form field name, for native form submission. */\n name?: string\n /** Field label. When omitted, the floating-label behavior is skipped. */\n label?: string\n /** Helper text displayed below the field. Suppressed when `isInvalid && errorMessage` is shown. */\n description?: string\n /** Error text displayed below the field. Only rendered when `isInvalid` is also true. */\n errorMessage?: string\n /** Extra classes merged onto the root wrapper via `composeClassName`. */\n class?: ClassValue\n /** Per-slot class name overrides via `composeClassName`. */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n mainWrapper: ClassValue\n helperWrapper: ClassValue\n errorMessage: ClassValue\n description: ClassValue\n }>\n\n /* ─── Select-specific ─────────────────────────────────────── */\n /** Two-way bound selected value. Accepts string or numeric keys. */\n modelValue?: SelectItemValue | SelectItemValue[]\n /** Initial selected value (uncontrolled). Accepts string or numeric keys. */\n defaultValue?: SelectItemValue | SelectItemValue[]\n /** Allow selecting multiple values. modelValue becomes string[]. @default false */\n multiple?: boolean\n /** Controls open state of the dropdown. */\n open?: boolean\n /** Initial open state of the dropdown (uncontrolled). */\n defaultOpen?: boolean\n /**\n * Data-driven items for the terse API. When provided (and no SelectTrigger /\n * SelectContent is passed as a child), the trigger, value, and popover are\n * rendered internally. Use the `#item` slot to customize per-item rendering.\n */\n items?: SelectItemData[]\n}\n\nconst attrs = useAttrs()\nconst generatedId = useId()\nconst triggerId = computed(() => (attrs.id as string | undefined) ?? generatedId)\n\nconst hasLabel = computed(() => !!props.label)\n\nconst slots = useSlots()\n// Tier 3 (advanced): consumer supplied explicit compound chrome → pass through.\n// Tier 1/2 (terse): render trigger/value/content internally.\nconst usesCustomChrome = computed(() =>\n hasSlotComponent(slots.default?.(), [SelectTrigger, SelectContent]),\n)\n\n// Helper IDs / aria wiring\nconst descriptionId = computed(() => `${triggerId.value}-description`)\nconst errorMessageId = computed(() => `${triggerId.value}-error`)\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 slotFns = computed(() =>\n selectVariants({\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)\n\n// Persistent item registry. SelectItem populates on first mount; entries\n// survive SelectContent unmount so SelectValue can render the label while\n// the popover is closed.\nconst itemRegistry = reactive(new Map<SelectItemValue, string>())\nconst registerItem = (value: SelectItemValue, label: string) => {\n itemRegistry.set(value, label)\n}\nconst itemLabel = (value: SelectItemValue | SelectItemValue[] | undefined | null): string => {\n if (value == null) return ''\n if (Array.isArray(value)) {\n // Fall back to the stringified value (handles numeric keys) when no label is\n // registered. Filter empty strings only — never use filter(Boolean), which\n // would drop a registered label for the numeric key 0.\n return value\n .map(v => String(itemRegistry.get(v) ?? v))\n .filter(s => s.length > 0)\n .join(', ')\n }\n return itemRegistry.get(value) ?? String(value)\n}\n\nfunction removeValue(value: SelectItemValue) {\n const current = Array.isArray(props.modelValue) ? props.modelValue : []\n emit('update:modelValue', current.filter(v => v !== value))\n}\n\nuseSelectProvide({\n isDisabled: toRef(props, 'isDisabled'),\n isInvalid: toRef(props, 'isInvalid'),\n isReadonly: toRef(props, 'isReadonly'),\n isRequired: toRef(props, 'isRequired'),\n fullWidth: toRef(props, 'fullWidth'),\n hasLabel,\n labelPlacement: toRef(props, 'labelPlacement'),\n triggerId,\n label: toRef(props, 'label'),\n ariaDescribedBy,\n slots: slotFns,\n multiple: toRef(props, 'multiple'),\n registerItem,\n itemLabel,\n removeValue,\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 :for=\"triggerId\"\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 <SelectRoot\n :model-value=\"props.modelValue\"\n :default-value=\"props.defaultValue\"\n :multiple=\"props.multiple\"\n :open=\"props.open\"\n :default-open=\"props.defaultOpen\"\n :disabled=\"props.isDisabled\"\n :required=\"props.isRequired\"\n :name=\"props.name\"\n @update:model-value=\"emit('update:modelValue', $event as SelectItemValue | SelectItemValue[])\"\n @update:open=\"emit('update:open', $event)\"\n >\n <!-- Tier 3: consumer-provided compound chrome -->\n <slot v-if=\"usesCustomChrome\" />\n <!-- Tier 1/2: internally rendered chrome -->\n <template v-else>\n <SelectTrigger>\n <SelectValue :placeholder=\"props.placeholder\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem\n v-for=\"item in props.items\"\n :key=\"item.value\"\n :value=\"item.value\"\n :text-value=\"item.textValue ?? item.label\"\n :is-disabled=\"item.isDisabled\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n >{{ item.label ?? String(item.value) }}</slot>\n </SelectItem>\n <slot />\n </SelectContent>\n </template>\n </SelectRoot>\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 >\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":"Select.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/Select.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, reactive, toRef, useAttrs, useId, useSlots } from 'vue'\nimport { SelectRoot } from 'reka-ui'\nimport { selectVariants, type SelectVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useSelectProvide, type SelectItemValue, type SelectItemData } from './Select.context'\nimport { hasSlotComponent } from '../../utils/hasSlotComponent'\nimport SelectTrigger from './SelectTrigger.vue'\nimport SelectValue from './SelectValue.vue'\nimport SelectContent from './SelectContent.vue'\nimport SelectItem from './SelectItem.vue'\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 multiple: false,\n modelValue: undefined,\n defaultValue: undefined,\n open: undefined,\n defaultOpen: undefined,\n items: () => [],\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: SelectItemValue | SelectItemValue[]]\n 'update:open': [value: boolean]\n}>()\n\ntype Props = {\n /** Visual style of the field. @default 'flat' */\n variant?: SelectVariants['variant']\n /** Field height. @default 'md' */\n size?: SelectVariants['size']\n /** Accent color applied to focus ring + floating label. @default 'default' */\n color?: SelectVariants['color']\n /**\n * Where the `label` is rendered relative to the field.\n * - `inside`: floats above the trigger (shrinks when focused/filled)\n * - `outside`: sits above the field, static\n * - `outside-left`: sits to the left, horizontal layout\n * @default 'inside'\n */\n labelPlacement?: SelectVariants['labelPlacement']\n /** Stretches root wrapper to 100% width. @default false */\n fullWidth?: boolean\n /** Marks the field as invalid. Triggers danger styling and enables `errorMessage`. @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 /** Placeholder shown when no value is selected. */\n placeholder?: string\n /** Form field name, for native form submission. */\n name?: string\n /** Field label. When omitted, the floating-label behavior is skipped. */\n label?: string\n /** Helper text displayed below the field. Suppressed when `isInvalid && errorMessage` is shown. */\n description?: string\n /** Error text displayed below the field. Only rendered when `isInvalid` is also true. */\n errorMessage?: string\n /** Extra classes merged onto the root wrapper via `composeClassName`. */\n class?: ClassValue\n /** Per-slot class name overrides via `composeClassName`. */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n mainWrapper: ClassValue\n helperWrapper: ClassValue\n errorMessage: ClassValue\n description: ClassValue\n }>\n\n /* ─── Select-specific ─────────────────────────────────────── */\n /** Two-way bound selected value. Accepts string or numeric keys. */\n modelValue?: SelectItemValue | SelectItemValue[]\n /** Initial selected value (uncontrolled). Accepts string or numeric keys. */\n defaultValue?: SelectItemValue | SelectItemValue[]\n /** Allow selecting multiple values. modelValue becomes string[]. @default false */\n multiple?: boolean\n /** Controls open state of the dropdown. */\n open?: boolean\n /** Initial open state of the dropdown (uncontrolled). */\n defaultOpen?: boolean\n /**\n * Data-driven items for the terse API. When provided (and no SelectTrigger /\n * SelectContent is passed as a child), the trigger, value, and popover are\n * rendered internally. Use the `#item` slot to customize per-item rendering.\n */\n items?: SelectItemData[]\n}\n\nconst attrs = useAttrs()\nconst generatedId = useId()\nconst triggerId = computed(() => (attrs.id as string | undefined) ?? generatedId)\n\nconst hasLabel = computed(() => !!props.label)\n\nconst slots = useSlots()\n// Tier 3 (advanced): consumer supplied explicit compound chrome → pass through.\n// Tier 1/2 (terse): render trigger/value/content internally.\nconst usesCustomChrome = computed(() =>\n hasSlotComponent(slots.default?.(), [SelectTrigger, SelectContent]),\n)\n\n// Helper IDs / aria wiring\nconst descriptionId = computed(() => `${triggerId.value}-description`)\nconst errorMessageId = computed(() => `${triggerId.value}-error`)\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 slotFns = computed(() =>\n selectVariants({\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)\n\n// Persistent item registry. SelectItem populates on first mount; entries\n// survive SelectContent unmount so SelectValue can render the label while\n// the popover is closed.\nconst itemRegistry = reactive(new Map<SelectItemValue, string>())\nconst registerItem = (value: SelectItemValue, label: string) => {\n itemRegistry.set(value, label)\n}\nconst itemLabel = (value: SelectItemValue | SelectItemValue[] | undefined | null): string => {\n if (value == null) return ''\n if (Array.isArray(value)) {\n // Fall back to the stringified value (handles numeric keys) when no label is\n // registered. Filter empty strings only — never use filter(Boolean), which\n // would drop a registered label for the numeric key 0.\n return value\n .map(v => String(itemRegistry.get(v) ?? v))\n .filter(s => s.length > 0)\n .join(', ')\n }\n return itemRegistry.get(value) ?? String(value)\n}\n\nfunction removeValue(value: SelectItemValue) {\n const current = Array.isArray(props.modelValue) ? props.modelValue : []\n emit('update:modelValue', current.filter(v => v !== value))\n}\n\nuseSelectProvide({\n isDisabled: toRef(props, 'isDisabled'),\n isInvalid: toRef(props, 'isInvalid'),\n isReadonly: toRef(props, 'isReadonly'),\n isRequired: toRef(props, 'isRequired'),\n fullWidth: toRef(props, 'fullWidth'),\n hasLabel,\n labelPlacement: toRef(props, 'labelPlacement'),\n triggerId,\n label: toRef(props, 'label'),\n ariaDescribedBy,\n slots: slotFns,\n multiple: toRef(props, 'multiple'),\n registerItem,\n itemLabel,\n removeValue,\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 :for=\"triggerId\"\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 <SelectRoot\n :model-value=\"props.modelValue\"\n :default-value=\"props.defaultValue\"\n :multiple=\"props.multiple\"\n :open=\"props.open\"\n :default-open=\"props.defaultOpen\"\n :disabled=\"props.isDisabled\"\n :required=\"props.isRequired\"\n :name=\"props.name\"\n @update:model-value=\"emit('update:modelValue', $event as SelectItemValue | SelectItemValue[])\"\n @update:open=\"emit('update:open', $event)\"\n >\n <!-- Tier 3: consumer-provided compound chrome -->\n <slot v-if=\"usesCustomChrome\" />\n <!-- Tier 1/2: internally rendered chrome -->\n <template v-else>\n <SelectTrigger>\n <SelectValue :placeholder=\"props.placeholder\" />\n </SelectTrigger>\n <SelectContent>\n <SelectItem\n v-for=\"item in props.items\"\n :key=\"item.value\"\n :value=\"item.value\"\n :text-value=\"item.textValue ?? item.label\"\n :is-disabled=\"item.isDisabled\"\n >\n <slot\n name=\"item\"\n :item=\"item\"\n >{{ item.label ?? String(item.value) }}</slot>\n </SelectItem>\n <slot />\n </SelectContent>\n </template>\n </SelectRoot>\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 >\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 +1 @@
1
- {"version":3,"file":"SelectContent.js","names":[],"sources":["../../../src/components/select/SelectContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n SelectContent,\n SelectViewport,\n SelectPortal,\n injectSelectRootContext,\n} from 'reka-ui'\nimport { motion, AnimatePresence } from 'motion-v'\nimport { ref, watch } from 'vue'\nimport { useSelectInject } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n position?: 'item-aligned' | 'popper'\n sideOffset?: number\n class?: string\n}>(), {\n position: 'popper',\n sideOffset: 8,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\n// Suppress scroll-behavior:smooth for the first frame after open so Reka's\n// programmatic scrollTop jump to the selected item is instant.\nconst justOpened = ref(false)\nwatch(() => rootContext.open.value, (open) => {\n if (open) {\n justOpened.value = true\n setTimeout(() => { justOpened.value = false }, 100)\n }\n})\n</script>\n\n<template>\n <SelectPortal>\n <AnimatePresence>\n <!--\n No force-mount on SelectContent. With force-mount=true, Reka's\n SelectContentImpl (which contains DismissableLayer with\n disableOutsidePointerEvents=true) would mount immediately on page load and\n block all pointer events — including clicks on the trigger button.\n\n Without force-mount, when open=false, Reka teleports slot content into a\n DocumentFragment (after SelectContent's own onMounted). Components inside\n the slot (SelectItem) still get created and their setup() runs, so\n textValue-based registrations fire at setup time.\n\n v-show (not v-if) on the visual wrapper ensures SelectItem components are\n always instantiated when inside the DocumentFragment — their setup() fires\n and populates itemRegistry. The animated chrome is visually hidden via\n v-show when closed; enter/exit animation runs via motion.div bindings.\n -->\n <SelectContent\n :position=\"props.position\"\n :side-offset=\"props.sideOffset\"\n data-slot=\"popover\"\n >\n <motion.div\n v-show=\"rootContext.open.value\"\n :class=\"[ctx.slots.value.popover(), { 'select__popover--opening': justOpened }]\"\n :animate=\"rootContext.open.value ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0.95 }\"\n :transition=\"{ duration: 0.15 }\"\n >\n <SelectViewport data-slot=\"list-box\">\n <slot />\n </SelectViewport>\n </motion.div>\n </SelectContent>\n </AnimatePresence>\n </SelectPortal>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"SelectContent.js","names":[],"sources":["../../../src/components/select/SelectContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n SelectContent,\n SelectViewport,\n SelectPortal,\n injectSelectRootContext,\n} from 'reka-ui'\nimport { motion, AnimatePresence } from 'motion-v'\nimport { ref, watch } from 'vue'\nimport { useSelectInject } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n position?: 'item-aligned' | 'popper'\n sideOffset?: number\n class?: string\n}>(), {\n position: 'popper',\n sideOffset: 8,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\n// Suppress scroll-behavior:smooth for the first frame after open so Reka's\n// programmatic scrollTop jump to the selected item is instant.\nconst justOpened = ref(false)\nwatch(() => rootContext.open.value, (open) => {\n if (open) {\n justOpened.value = true\n setTimeout(() => { justOpened.value = false }, 100)\n }\n})\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (e.key === 'Tab') {\n rootContext.onOpenChange(false)\n }\n}\n</script>\n\n<template>\n <SelectPortal>\n <AnimatePresence>\n <!--\n No force-mount on SelectContent. With force-mount=true, Reka's\n SelectContentImpl (which contains DismissableLayer with\n disableOutsidePointerEvents=true) would mount immediately on page load and\n block all pointer events — including clicks on the trigger button.\n\n Without force-mount, when open=false, Reka teleports slot content into a\n DocumentFragment (after SelectContent's own onMounted). Components inside\n the slot (SelectItem) still get created and their setup() runs, so\n textValue-based registrations fire at setup time.\n\n v-show (not v-if) on the visual wrapper ensures SelectItem components are\n always instantiated when inside the DocumentFragment — their setup() fires\n and populates itemRegistry. The animated chrome is visually hidden via\n v-show when closed; enter/exit animation runs via motion.div bindings.\n -->\n <SelectContent\n :position=\"props.position\"\n :side-offset=\"props.sideOffset\"\n data-slot=\"popover\"\n >\n <motion.div\n v-show=\"rootContext.open.value\"\n :class=\"[ctx.slots.value.popover(), { 'select__popover--opening': justOpened }]\"\n :animate=\"rootContext.open.value ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0.95 }\"\n :transition=\"{ duration: 0.15 }\"\n @keydown=\"handleKeydown\"\n >\n <SelectViewport data-slot=\"list-box\">\n <slot />\n </SelectViewport>\n </motion.div>\n </SelectContent>\n </AnimatePresence>\n </SelectPortal>\n</template>\n"],"mappings":""}
@@ -24,6 +24,9 @@ var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
24
24
  }, 100);
25
25
  }
26
26
  });
27
+ function handleKeydown(e) {
28
+ if (e.key === "Tab") rootContext.onOpenChange(false);
29
+ }
27
30
  return (_ctx, _cache) => {
28
31
  return openBlock(), createBlock(unref(SelectPortal), null, {
29
32
  default: withCtx(() => [createVNode(unref(AnimatePresence_default), null, {
@@ -41,7 +44,8 @@ var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
41
44
  opacity: 0,
42
45
  scale: .95
43
46
  },
44
- transition: { duration: .15 }
47
+ transition: { duration: .15 },
48
+ onKeydown: handleKeydown
45
49
  }, {
46
50
  default: withCtx(() => [createVNode(unref(SelectViewport), { "data-slot": "list-box" }, {
47
51
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
@@ -1 +1 @@
1
- {"version":3,"file":"SelectContent.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n SelectContent,\n SelectViewport,\n SelectPortal,\n injectSelectRootContext,\n} from 'reka-ui'\nimport { motion, AnimatePresence } from 'motion-v'\nimport { ref, watch } from 'vue'\nimport { useSelectInject } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n position?: 'item-aligned' | 'popper'\n sideOffset?: number\n class?: string\n}>(), {\n position: 'popper',\n sideOffset: 8,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\n// Suppress scroll-behavior:smooth for the first frame after open so Reka's\n// programmatic scrollTop jump to the selected item is instant.\nconst justOpened = ref(false)\nwatch(() => rootContext.open.value, (open) => {\n if (open) {\n justOpened.value = true\n setTimeout(() => { justOpened.value = false }, 100)\n }\n})\n</script>\n\n<template>\n <SelectPortal>\n <AnimatePresence>\n <!--\n No force-mount on SelectContent. With force-mount=true, Reka's\n SelectContentImpl (which contains DismissableLayer with\n disableOutsidePointerEvents=true) would mount immediately on page load and\n block all pointer events — including clicks on the trigger button.\n\n Without force-mount, when open=false, Reka teleports slot content into a\n DocumentFragment (after SelectContent's own onMounted). Components inside\n the slot (SelectItem) still get created and their setup() runs, so\n textValue-based registrations fire at setup time.\n\n v-show (not v-if) on the visual wrapper ensures SelectItem components are\n always instantiated when inside the DocumentFragment — their setup() fires\n and populates itemRegistry. The animated chrome is visually hidden via\n v-show when closed; enter/exit animation runs via motion.div bindings.\n -->\n <SelectContent\n :position=\"props.position\"\n :side-offset=\"props.sideOffset\"\n data-slot=\"popover\"\n >\n <motion.div\n v-show=\"rootContext.open.value\"\n :class=\"[ctx.slots.value.popover(), { 'select__popover--opening': justOpened }]\"\n :animate=\"rootContext.open.value ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0.95 }\"\n :transition=\"{ duration: 0.15 }\"\n >\n <SelectViewport data-slot=\"list-box\">\n <slot />\n </SelectViewport>\n </motion.div>\n </SelectContent>\n </AnimatePresence>\n </SelectPortal>\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAWA,MAAM,QAAQ;EAUd,MAAM,MAAM,iBAAgB;EAC5B,MAAM,cAAc,yBAAwB;EAI5C,MAAM,aAAa,IAAI,MAAK;AAC5B,cAAY,YAAY,KAAK,QAAQ,SAAS;AAC5C,OAAI,MAAM;AACR,eAAW,QAAQ;AACnB,qBAAiB;AAAE,gBAAW,QAAQ;OAAS,IAAG;;IAErD;;uBAIC,YAmCe,MAAA,aAAA,EAAA,MAAA;2BADK,CAjClB,YAiCkB,MAAA,wBAAA,EAAA,MAAA;4BADA,CAfhB,YAegB,MAAA,cAAA,EAAA;MAdb,UAAU,MAAM;MAChB,eAAa,MAAM;MACpB,aAAU;;6BAWG,CAAA,eATb,YASa,MAAA,OAAA,CAAA,KAAA;OAPV,OAAK,eAAA,CAAG,MAAA,IAAG,CAAC,MAAM,MAAM,SAAO,EAAA,EAAA,4BAAkC,WAAA,OAAU,CAAA,CAAA;OAC3E,SAAS,MAAA,YAAW,CAAC,KAAK,QAAK;QAAA,SAAA;QAAA,OAAA;QAAA,GAAA;QAAA,SAAA;QAAA,OAAA;QAAA;OAC/B,YAAY,EAAA,UAAA,KAAkB;;8BAId,CAFjB,YAEiB,MAAA,eAAA,EAAA,EAFD,aAAU,YAAU,EAAA;+BAC1B,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;4CANF,MAAA,YAAW,CAAC,KAAK,MAAK,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SelectContent.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectContent.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport {\n SelectContent,\n SelectViewport,\n SelectPortal,\n injectSelectRootContext,\n} from 'reka-ui'\nimport { motion, AnimatePresence } from 'motion-v'\nimport { ref, watch } from 'vue'\nimport { useSelectInject } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n position?: 'item-aligned' | 'popper'\n sideOffset?: number\n class?: string\n}>(), {\n position: 'popper',\n sideOffset: 8,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\n// Suppress scroll-behavior:smooth for the first frame after open so Reka's\n// programmatic scrollTop jump to the selected item is instant.\nconst justOpened = ref(false)\nwatch(() => rootContext.open.value, (open) => {\n if (open) {\n justOpened.value = true\n setTimeout(() => { justOpened.value = false }, 100)\n }\n})\n\nfunction handleKeydown(e: KeyboardEvent) {\n if (e.key === 'Tab') {\n rootContext.onOpenChange(false)\n }\n}\n</script>\n\n<template>\n <SelectPortal>\n <AnimatePresence>\n <!--\n No force-mount on SelectContent. With force-mount=true, Reka's\n SelectContentImpl (which contains DismissableLayer with\n disableOutsidePointerEvents=true) would mount immediately on page load and\n block all pointer events — including clicks on the trigger button.\n\n Without force-mount, when open=false, Reka teleports slot content into a\n DocumentFragment (after SelectContent's own onMounted). Components inside\n the slot (SelectItem) still get created and their setup() runs, so\n textValue-based registrations fire at setup time.\n\n v-show (not v-if) on the visual wrapper ensures SelectItem components are\n always instantiated when inside the DocumentFragment — their setup() fires\n and populates itemRegistry. The animated chrome is visually hidden via\n v-show when closed; enter/exit animation runs via motion.div bindings.\n -->\n <SelectContent\n :position=\"props.position\"\n :side-offset=\"props.sideOffset\"\n data-slot=\"popover\"\n >\n <motion.div\n v-show=\"rootContext.open.value\"\n :class=\"[ctx.slots.value.popover(), { 'select__popover--opening': justOpened }]\"\n :animate=\"rootContext.open.value ? { opacity: 1, scale: 1 } : { opacity: 0, scale: 0.95 }\"\n :transition=\"{ duration: 0.15 }\"\n @keydown=\"handleKeydown\"\n >\n <SelectViewport data-slot=\"list-box\">\n <slot />\n </SelectViewport>\n </motion.div>\n </SelectContent>\n </AnimatePresence>\n </SelectPortal>\n</template>\n"],"mappings":";;;;;;;;;;;;;;EAWA,MAAM,QAAQ;EAUd,MAAM,MAAM,iBAAgB;EAC5B,MAAM,cAAc,yBAAwB;EAI5C,MAAM,aAAa,IAAI,MAAK;AAC5B,cAAY,YAAY,KAAK,QAAQ,SAAS;AAC5C,OAAI,MAAM;AACR,eAAW,QAAQ;AACnB,qBAAiB;AAAE,gBAAW,QAAQ;OAAS,IAAG;;IAErD;EAED,SAAS,cAAc,GAAkB;AACvC,OAAI,EAAE,QAAQ,MACZ,aAAY,aAAa,MAAK;;;uBAMhC,YAoCe,MAAA,aAAA,EAAA,MAAA;2BADK,CAlClB,YAkCkB,MAAA,wBAAA,EAAA,MAAA;4BADA,CAhBhB,YAgBgB,MAAA,cAAA,EAAA;MAfb,UAAU,MAAM;MAChB,eAAa,MAAM;MACpB,aAAU;;6BAYG,CAAA,eAVb,YAUa,MAAA,OAAA,CAAA,KAAA;OARV,OAAK,eAAA,CAAG,MAAA,IAAG,CAAC,MAAM,MAAM,SAAO,EAAA,EAAA,4BAAkC,WAAA,OAAU,CAAA,CAAA;OAC3E,SAAS,MAAA,YAAW,CAAC,KAAK,QAAK;QAAA,SAAA;QAAA,OAAA;QAAA,GAAA;QAAA,SAAA;QAAA,OAAA;QAAA;OAC/B,YAAY,EAAA,UAAA,KAAkB;OAC9B,WAAS;;8BAIO,CAFjB,YAEiB,MAAA,eAAA,EAAA,EAFD,aAAU,YAAU,EAAA;+BAC1B,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;4CAPF,MAAA,YAAW,CAAC,KAAK,MAAK,CAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTrigger.js","names":[],"sources":["../../../src/components/select/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { SelectTrigger, SelectIcon, injectSelectRootContext } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\n\nwithDefaults(defineProps<{\n class?: string\n}>(), {\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\nconst isFilled = computed(() => {\n const v = rootContext?.modelValue?.value\n if (v == null) return false\n if (Array.isArray(v)) return v.length > 0\n return v !== ''\n})\n\nconst showInsideLabel = computed(\n () => ctx.hasLabel.value && ctx.labelPlacement.value === 'inside',\n)\n</script>\n\n<template>\n <SelectTrigger\n :id=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.trigger()\"\n :data-filled=\"isFilled || undefined\"\n :data-invalid=\"ctx.isInvalid.value || undefined\"\n :data-readonly=\"ctx.isReadonly.value || undefined\"\n :aria-invalid=\"ctx.isInvalid.value || undefined\"\n :aria-describedby=\"ctx.ariaDescribedBy.value\"\n data-slot=\"trigger\"\n >\n <label\n v-if=\"showInsideLabel\"\n :for=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.label()\"\n >{{ ctx.label.value }}<span\n v-if=\"ctx.isRequired.value\"\n aria-hidden=\"true\"\n > *</span></label>\n <span\n v-if=\"$slots.startContent\"\n :class=\"ctx.slots.value.startContent()\"\n data-slot=\"start-content\"\n >\n <slot name=\"startContent\" />\n </span>\n <slot />\n <SelectIcon\n :class=\"ctx.slots.value.indicator()\"\n data-slot=\"select-default-indicator\"\n >\n <slot name=\"selectorIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </slot>\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"SelectTrigger.js","names":[],"sources":["../../../src/components/select/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { SelectTrigger, SelectIcon, injectSelectRootContext } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\n\nwithDefaults(defineProps<{\n class?: string\n}>(), {\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\nconst isFilled = computed(() => {\n const v = rootContext?.modelValue?.value\n if (v == null) return false\n if (Array.isArray(v)) return v.length > 0\n return v !== ''\n})\n\nconst showInsideLabel = computed(\n () => ctx.hasLabel.value && ctx.labelPlacement.value === 'inside',\n)\n\n// Guard re-open when Reka returns focus to the trigger after close (value\n// selection, Escape, Tab). Set to true whenever open transitions true→false,\n// reset after a microtask once the focus-return event has been processed.\nconst skipNextFocus = ref(false)\n\n// flush:'sync' fires the moment open.value changes (synchronously, before any\n// Vue scheduling), so skipNextFocus is true before Reka's FocusScope can call\n// trigger.focus(). setTimeout defers the reset until after all pending\n// microtasks (render + focus-return) have flushed.\nwatch(() => rootContext.open.value, (open, wasOpen) => {\n if (!open && wasOpen) {\n skipNextFocus.value = true\n setTimeout(() => { skipNextFocus.value = false }, 0)\n }\n}, { flush: 'sync' })\n\nfunction handleFocus() {\n if (ctx.isDisabled.value || ctx.isReadonly.value || skipNextFocus.value || rootContext.open.value) return\n rootContext.onOpenChange(true)\n}\n</script>\n\n<template>\n <SelectTrigger\n :id=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.trigger()\"\n :data-filled=\"isFilled || undefined\"\n :data-invalid=\"ctx.isInvalid.value || undefined\"\n :data-readonly=\"ctx.isReadonly.value || undefined\"\n :aria-invalid=\"ctx.isInvalid.value || undefined\"\n :aria-describedby=\"ctx.ariaDescribedBy.value\"\n data-slot=\"trigger\"\n @focus=\"handleFocus\"\n >\n <label\n v-if=\"showInsideLabel\"\n :for=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.label()\"\n >{{ ctx.label.value }}<span\n v-if=\"ctx.isRequired.value\"\n aria-hidden=\"true\"\n > *</span></label>\n <span\n v-if=\"$slots.startContent\"\n :class=\"ctx.slots.value.startContent()\"\n data-slot=\"start-content\"\n >\n <slot name=\"startContent\" />\n </span>\n <slot />\n <SelectIcon\n :class=\"ctx.slots.value.indicator()\"\n data-slot=\"select-default-indicator\"\n >\n <slot name=\"selectorIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </slot>\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"mappings":""}
@@ -1,5 +1,5 @@
1
1
  import { useSelectInject } from "./Select.context.js";
2
- import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, renderSlot, toDisplayString, unref, withCtx } from "vue";
2
+ import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createTextVNode, createVNode, defineComponent, normalizeClass, openBlock, ref, renderSlot, toDisplayString, unref, watch, withCtx } from "vue";
3
3
  import { SelectIcon, SelectTrigger, injectSelectRootContext } from "reka-ui";
4
4
  //#region src/components/select/SelectTrigger.vue?vue&type=script&setup=true&lang.ts
5
5
  var _hoisted_1 = ["for"];
@@ -20,6 +20,19 @@ var SelectTrigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
20
20
  return v !== "";
21
21
  });
22
22
  const showInsideLabel = computed(() => ctx.hasLabel.value && ctx.labelPlacement.value === "inside");
23
+ const skipNextFocus = ref(false);
24
+ watch(() => rootContext.open.value, (open, wasOpen) => {
25
+ if (!open && wasOpen) {
26
+ skipNextFocus.value = true;
27
+ setTimeout(() => {
28
+ skipNextFocus.value = false;
29
+ }, 0);
30
+ }
31
+ }, { flush: "sync" });
32
+ function handleFocus() {
33
+ if (ctx.isDisabled.value || ctx.isReadonly.value || skipNextFocus.value || rootContext.open.value) return;
34
+ rootContext.onOpenChange(true);
35
+ }
23
36
  return (_ctx, _cache) => {
24
37
  return openBlock(), createBlock(unref(SelectTrigger), {
25
38
  id: unref(ctx).triggerId.value,
@@ -29,7 +42,8 @@ var SelectTrigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
29
42
  "data-readonly": unref(ctx).isReadonly.value || void 0,
30
43
  "aria-invalid": unref(ctx).isInvalid.value || void 0,
31
44
  "aria-describedby": unref(ctx).ariaDescribedBy.value,
32
- "data-slot": "trigger"
45
+ "data-slot": "trigger",
46
+ onFocus: handleFocus
33
47
  }, {
34
48
  default: withCtx(() => [
35
49
  showInsideLabel.value ? (openBlock(), createElementBlock("label", {
@@ -1 +1 @@
1
- {"version":3,"file":"SelectTrigger.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/select/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { SelectTrigger, SelectIcon, injectSelectRootContext } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\n\nwithDefaults(defineProps<{\n class?: string\n}>(), {\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\nconst isFilled = computed(() => {\n const v = rootContext?.modelValue?.value\n if (v == null) return false\n if (Array.isArray(v)) return v.length > 0\n return v !== ''\n})\n\nconst showInsideLabel = computed(\n () => ctx.hasLabel.value && ctx.labelPlacement.value === 'inside',\n)\n</script>\n\n<template>\n <SelectTrigger\n :id=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.trigger()\"\n :data-filled=\"isFilled || undefined\"\n :data-invalid=\"ctx.isInvalid.value || undefined\"\n :data-readonly=\"ctx.isReadonly.value || undefined\"\n :aria-invalid=\"ctx.isInvalid.value || undefined\"\n :aria-describedby=\"ctx.ariaDescribedBy.value\"\n data-slot=\"trigger\"\n >\n <label\n v-if=\"showInsideLabel\"\n :for=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.label()\"\n >{{ ctx.label.value }}<span\n v-if=\"ctx.isRequired.value\"\n aria-hidden=\"true\"\n > *</span></label>\n <span\n v-if=\"$slots.startContent\"\n :class=\"ctx.slots.value.startContent()\"\n data-slot=\"start-content\"\n >\n <slot name=\"startContent\" />\n </span>\n <slot />\n <SelectIcon\n :class=\"ctx.slots.value.indicator()\"\n data-slot=\"select-default-indicator\"\n >\n <slot name=\"selectorIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </slot>\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"mappings":";;;;;;;;;;;;;EAWA,MAAM,MAAM,iBAAgB;EAC5B,MAAM,cAAc,yBAAwB;EAE5C,MAAM,WAAW,eAAe;GAC9B,MAAM,IAAI,aAAa,YAAY;AACnC,OAAI,KAAK,KAAM,QAAO;AACtB,OAAI,MAAM,QAAQ,EAAE,CAAE,QAAO,EAAE,SAAS;AACxC,UAAO,MAAM;IACd;EAED,MAAM,kBAAkB,eAChB,IAAI,SAAS,SAAS,IAAI,eAAe,UAAU,SAC3D;;uBAIE,YA+CgB,MAAA,cAAA,EAAA;IA9Cb,IAAI,MAAA,IAAG,CAAC,UAAU;IAClB,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,SAAO,CAAA;IAC9B,eAAa,SAAA,SAAY,KAAA;IACzB,gBAAc,MAAA,IAAG,CAAC,UAAU,SAAS,KAAA;IACrC,iBAAe,MAAA,IAAG,CAAC,WAAW,SAAS,KAAA;IACvC,gBAAc,MAAA,IAAG,CAAC,UAAU,SAAS,KAAA;IACrC,oBAAkB,MAAA,IAAG,CAAC,gBAAgB;IACvC,aAAU;;2BASQ;KANV,gBAAA,SAAA,WAAA,EADR,mBAOkB,SAAA;;MALf,KAAK,MAAA,IAAG,CAAC,UAAU;MACnB,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,OAAK,CAAA;yCAC3B,MAAA,IAAG,CAAC,MAAM,MAAK,EAAA,EAAA,EACX,MAAA,IAAG,CAAC,WAAW,SAAA,WAAA,EADD,mBAGZ,QAHY,YAGrB,KAAE,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA;KAEKA,KAAAA,OAAO,gBAAA,WAAA,EADf,mBAMO,QAAA;;MAJJ,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,cAAY,CAAA;MACpC,aAAU;SAEV,WAA4B,KAAA,QAAA,eAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAE9B,WAAQ,KAAA,QAAA,UAAA;KACR,YAoBa,MAAA,WAAA,EAAA;MAnBV,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,WAAS,CAAA;MACjC,aAAU;;6BAiBH,CAfP,WAeO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAdL,mBAaM,OAAA;OAZJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SelectTrigger.vue_vue_type_script_setup_true_lang.js","names":["$slots"],"sources":["../../../src/components/select/SelectTrigger.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, watch } from 'vue'\nimport { SelectTrigger, SelectIcon, injectSelectRootContext } from 'reka-ui'\nimport { useSelectInject } from './Select.context'\n\nwithDefaults(defineProps<{\n class?: string\n}>(), {\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst rootContext = injectSelectRootContext()\n\nconst isFilled = computed(() => {\n const v = rootContext?.modelValue?.value\n if (v == null) return false\n if (Array.isArray(v)) return v.length > 0\n return v !== ''\n})\n\nconst showInsideLabel = computed(\n () => ctx.hasLabel.value && ctx.labelPlacement.value === 'inside',\n)\n\n// Guard re-open when Reka returns focus to the trigger after close (value\n// selection, Escape, Tab). Set to true whenever open transitions true→false,\n// reset after a microtask once the focus-return event has been processed.\nconst skipNextFocus = ref(false)\n\n// flush:'sync' fires the moment open.value changes (synchronously, before any\n// Vue scheduling), so skipNextFocus is true before Reka's FocusScope can call\n// trigger.focus(). setTimeout defers the reset until after all pending\n// microtasks (render + focus-return) have flushed.\nwatch(() => rootContext.open.value, (open, wasOpen) => {\n if (!open && wasOpen) {\n skipNextFocus.value = true\n setTimeout(() => { skipNextFocus.value = false }, 0)\n }\n}, { flush: 'sync' })\n\nfunction handleFocus() {\n if (ctx.isDisabled.value || ctx.isReadonly.value || skipNextFocus.value || rootContext.open.value) return\n rootContext.onOpenChange(true)\n}\n</script>\n\n<template>\n <SelectTrigger\n :id=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.trigger()\"\n :data-filled=\"isFilled || undefined\"\n :data-invalid=\"ctx.isInvalid.value || undefined\"\n :data-readonly=\"ctx.isReadonly.value || undefined\"\n :aria-invalid=\"ctx.isInvalid.value || undefined\"\n :aria-describedby=\"ctx.ariaDescribedBy.value\"\n data-slot=\"trigger\"\n @focus=\"handleFocus\"\n >\n <label\n v-if=\"showInsideLabel\"\n :for=\"ctx.triggerId.value\"\n :class=\"ctx.slots.value.label()\"\n >{{ ctx.label.value }}<span\n v-if=\"ctx.isRequired.value\"\n aria-hidden=\"true\"\n > *</span></label>\n <span\n v-if=\"$slots.startContent\"\n :class=\"ctx.slots.value.startContent()\"\n data-slot=\"start-content\"\n >\n <slot name=\"startContent\" />\n </span>\n <slot />\n <SelectIcon\n :class=\"ctx.slots.value.indicator()\"\n data-slot=\"select-default-indicator\"\n >\n <slot name=\"selectorIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\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 <polyline points=\"6 9 12 15 18 9\" />\n </svg>\n </slot>\n </SelectIcon>\n </SelectTrigger>\n</template>\n"],"mappings":";;;;;;;;;;;;;EAWA,MAAM,MAAM,iBAAgB;EAC5B,MAAM,cAAc,yBAAwB;EAE5C,MAAM,WAAW,eAAe;GAC9B,MAAM,IAAI,aAAa,YAAY;AACnC,OAAI,KAAK,KAAM,QAAO;AACtB,OAAI,MAAM,QAAQ,EAAE,CAAE,QAAO,EAAE,SAAS;AACxC,UAAO,MAAM;IACd;EAED,MAAM,kBAAkB,eAChB,IAAI,SAAS,SAAS,IAAI,eAAe,UAAU,SAC3D;EAKA,MAAM,gBAAgB,IAAI,MAAK;AAM/B,cAAY,YAAY,KAAK,QAAQ,MAAM,YAAY;AACrD,OAAI,CAAC,QAAQ,SAAS;AACpB,kBAAc,QAAQ;AACtB,qBAAiB;AAAE,mBAAc,QAAQ;OAAS,EAAC;;KAEpD,EAAE,OAAO,QAAQ,CAAA;EAEpB,SAAS,cAAc;AACrB,OAAI,IAAI,WAAW,SAAS,IAAI,WAAW,SAAS,cAAc,SAAS,YAAY,KAAK,MAAO;AACnG,eAAY,aAAa,KAAI;;;uBAK7B,YAgDgB,MAAA,cAAA,EAAA;IA/Cb,IAAI,MAAA,IAAG,CAAC,UAAU;IAClB,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,SAAO,CAAA;IAC9B,eAAa,SAAA,SAAY,KAAA;IACzB,gBAAc,MAAA,IAAG,CAAC,UAAU,SAAS,KAAA;IACrC,iBAAe,MAAA,IAAG,CAAC,WAAW,SAAS,KAAA;IACvC,gBAAc,MAAA,IAAG,CAAC,UAAU,SAAS,KAAA;IACrC,oBAAkB,MAAA,IAAG,CAAC,gBAAgB;IACvC,aAAU;IACT,SAAO;;2BASU;KANV,gBAAA,SAAA,WAAA,EADR,mBAOkB,SAAA;;MALf,KAAK,MAAA,IAAG,CAAC,UAAU;MACnB,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,OAAK,CAAA;yCAC3B,MAAA,IAAG,CAAC,MAAM,MAAK,EAAA,EAAA,EACX,MAAA,IAAG,CAAC,WAAW,SAAA,WAAA,EADD,mBAGZ,QAHY,YAGrB,KAAE,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA;KAEKA,KAAAA,OAAO,gBAAA,WAAA,EADf,mBAMO,QAAA;;MAJJ,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,cAAY,CAAA;MACpC,aAAU;SAEV,WAA4B,KAAA,QAAA,eAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAE9B,WAAQ,KAAA,QAAA,UAAA;KACR,YAoBa,MAAA,WAAA,EAAA;MAnBV,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,WAAS,CAAA;MACjC,aAAU;;6BAiBH,CAfP,WAeO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAdL,mBAaM,OAAA;OAZJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA"}
@@ -6,7 +6,13 @@ var Skeleton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defin
6
6
  __name: "Skeleton",
7
7
  props: {
8
8
  animationType: { default: "shimmer" },
9
- class: {},
9
+ class: { type: [
10
+ String,
11
+ Boolean,
12
+ null,
13
+ Object,
14
+ Array
15
+ ] },
10
16
  classNames: {}
11
17
  },
12
18
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"Skeleton.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/skeleton/Skeleton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { skeletonVariants, type SkeletonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n animationType?: SkeletonVariants['animationType']\n class?: ClassValue\n /** Custom class overrides for named slots. */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n animationType: 'shimmer',\n})\n\nconst slotFns = computed(() => skeletonVariants({ animationType: props.animationType }))\nconst classes = computed(() => composeClassName(slotFns.value.base(), props.class, props.classNames?.base))\n</script>\n\n<template>\n <div\n :class=\"classes\"\n aria-hidden=\"true\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;EAKA,MAAM,QAAQ;EAWd,MAAM,UAAU,eAAe,iBAAiB,EAAE,eAAe,MAAM,eAAe,CAAC,CAAA;EACvF,MAAM,UAAU,eAAe,iBAAiB,QAAQ,MAAM,MAAM,EAAE,MAAM,OAAO,MAAM,YAAY,KAAK,CAAA;;uBAIxG,mBAKM,OAAA;IAJH,OAAK,eAAE,QAAA,MAAO;IACf,eAAY;OAEZ,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"Skeleton.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/skeleton/Skeleton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { skeletonVariants, type SkeletonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n animationType?: SkeletonVariants['animationType']\n class?: ClassValue\n /** Custom class overrides for named slots. */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n animationType: 'shimmer',\n})\n\nconst slotFns = computed(() => skeletonVariants({ animationType: props.animationType }))\nconst classes = computed(() => composeClassName(slotFns.value.base(), props.class, props.classNames?.base))\n</script>\n\n<template>\n <div\n :class=\"classes\"\n aria-hidden=\"true\"\n >\n <slot />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAWd,MAAM,UAAU,eAAe,iBAAiB,EAAE,eAAe,MAAM,eAAe,CAAC,CAAA;EACvF,MAAM,UAAU,eAAe,iBAAiB,QAAQ,MAAM,MAAM,EAAE,MAAM,OAAO,MAAM,YAAY,KAAK,CAAA;;uBAIxG,mBAKM,OAAA;IAJH,OAAK,eAAE,QAAA,MAAO;IACf,eAAY;OAEZ,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA"}
@@ -45,7 +45,13 @@ var Slider_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
45
45
  type: Boolean,
46
46
  default: false
47
47
  },
48
- class: {},
48
+ class: { type: [
49
+ String,
50
+ Boolean,
51
+ null,
52
+ Object,
53
+ Array
54
+ ] },
49
55
  classNames: {}
50
56
  },
51
57
  emits: ["update:modelValue"],
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/slider/Slider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { SliderRoot, SliderTrack, SliderRange, SliderThumb } from 'reka-ui'\nimport { sliderVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n modelValue?: number | number[]\n defaultValue?: number | number[]\n min?: number\n max?: number\n step?: number\n minStepsBetweenThumbs?: number\n orientation?: 'horizontal' | 'vertical'\n size?: 'sm' | 'md' | 'lg'\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n label?: string\n showSteps?: boolean\n marks?: Array<{ value: number; label?: string }>\n formatOptions?: Intl.NumberFormatOptions\n hideValue?: boolean\n hideThumb?: boolean\n disabled?: boolean\n inverted?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Keys map to internal slot names (base, output, track, fill, marks, thumb).\n */\n classNames?: Partial<{\n base: ClassValue\n output: ClassValue\n track: ClassValue\n fill: ClassValue\n marks: ClassValue\n thumb: ClassValue\n }>\n}>(), {\n min: 0,\n max: 100,\n step: 1,\n minStepsBetweenThumbs: 0,\n orientation: 'horizontal',\n showSteps: false,\n hideValue: false,\n hideThumb: false,\n disabled: false,\n inverted: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: number | number[]): void\n}>()\n\n// FIX: Also check defaultValue so uncontrolled range mode is detected correctly.\nconst isRange = computed(() =>\n Array.isArray(props.modelValue) || Array.isArray(props.defaultValue)\n)\n\n// Reka UI SliderRoot always uses number[]. Wrap scalar -> [v] for Reka.\nconst internalValue = computed({\n get(): number[] {\n if (props.modelValue === undefined) {\n return props.defaultValue !== undefined\n ? Array.isArray(props.defaultValue)\n ? props.defaultValue\n : [props.defaultValue]\n : [Math.round((props.min + props.max) / 2)]\n }\n return Array.isArray(props.modelValue) ? props.modelValue : [props.modelValue]\n },\n set(val: number[]) {\n // Unwrap: if original prop was scalar, emit scalar; otherwise emit array\n if (isRange.value) {\n emit('update:modelValue', val)\n } else {\n emit('update:modelValue', val[0])\n }\n },\n})\n\n// FIX: Pass size, color, radius so variants are applied.\nconst slotFns = computed(() =>\n sliderVariants({ size: props.size, color: props.color, radius: props.radius })\n)\n\n// Show the label/output wrapper if label prop is provided or hideValue is false\nconst showLabelWrapper = computed(() =>\n !!props.label || !props.hideValue\n)\n\n// Format a single value\nfunction formatValue(v: number): string {\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(v)\n }\n return String(v)\n}\n\n// Formatted output string: joined with \" - \" for ranges\nconst formatted = computed(() => {\n return internalValue.value.map(formatValue).join(' \\u2013 ')\n})\n\n// Compute % position for a value within [min, max]\nfunction toPercent(v: number): number {\n const range = props.max - props.min\n if (range === 0) return 0\n return ((v - props.min) / range) * 100\n}\n\n// Tick positions (percentages) for showSteps\nconst tickPositions = computed<number[]>(() => {\n if (!props.showSteps) return []\n const positions: number[] = []\n let v = props.min\n while (v <= props.max) {\n positions.push(toPercent(v))\n v = Math.round((v + props.step) * 1e10) / 1e10 // avoid floating-point drift\n }\n return positions\n})\n\n// Determine which axis to use for positioning (left/bottom)\nconst positionAxis = computed(() =>\n props.orientation === 'vertical' ? 'bottom' : 'left'\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"orientation\"\n :data-disabled=\"disabled || undefined\"\n >\n <!-- Label + output row -->\n <template v-if=\"showLabelWrapper\">\n <!--\n FIX: label does NOT get a class from slotFns.\n The CSS rule `.slider [data-slot=\"label\"]` targets it via data-slot attribute.\n Previously used :class=\"slotFns.base()\" which returned \"slider\" (root class) — wrong.\n -->\n <label\n v-if=\"label\"\n data-slot=\"label\"\n >{{ label }}</label>\n <output\n v-if=\"!hideValue\"\n :class=\"composeClassName(slotFns.output(), props.classNames?.output)\"\n >{{ formatted }}</output>\n </template>\n\n <!-- Slider body -->\n <div class=\"relative flex items-center gap-2\">\n <!-- Start content slot -->\n <slot name=\"startContent\" />\n\n <SliderRoot\n v-model=\"internalValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :min-steps-between-thumbs=\"minStepsBetweenThumbs\"\n :orientation=\"orientation\"\n :disabled=\"disabled\"\n :inverted=\"inverted\"\n class=\"relative flex items-center select-none touch-none w-full\"\n :data-orientation=\"orientation\"\n >\n <SliderTrack :class=\"composeClassName(slotFns.track(), props.classNames?.track)\">\n <SliderRange :class=\"composeClassName(slotFns.fill(), props.classNames?.fill)\" />\n\n <!--\n FIX: tick spans have NO class from slotFns (was :class=\"slotFns.base()\" = \"slider\" — wrong).\n Ticks are purely positional; identified by data-slider-tick attribute only.\n -->\n <span\n v-for=\"(pct, i) in tickPositions\"\n :key=\"`tick-${i}`\"\n :style=\"{ [positionAxis]: pct + '%' }\"\n aria-hidden=\"true\"\n data-slider-tick\n class=\"absolute pointer-events-none\"\n />\n\n <!-- Labeled marks -->\n <span\n v-for=\"mark in (marks || [])\"\n :key=\"`mark-${mark.value}`\"\n :class=\"composeClassName(slotFns.marks(), props.classNames?.marks)\"\n :style=\"{ [positionAxis]: toPercent(mark.value) + '%' }\"\n data-slider-mark\n class=\"absolute\"\n >{{ mark.label }}</span>\n </SliderTrack>\n\n <!-- Thumbs -->\n <SliderThumb\n v-for=\"(_, idx) in internalValue\"\n :key=\"idx\"\n :class=\"composeClassName(slotFns.thumb(), props.classNames?.thumb)\"\n :aria-label=\"label || 'Value'\"\n />\n </SliderRoot>\n\n <!-- End content slot -->\n <slot name=\"endContent\" />\n </div>\n </div>\n</template>\n"],"mappings":"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"}
1
+ {"version":3,"file":"Slider.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/slider/Slider.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { SliderRoot, SliderTrack, SliderRange, SliderThumb } from 'reka-ui'\nimport { sliderVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n modelValue?: number | number[]\n defaultValue?: number | number[]\n min?: number\n max?: number\n step?: number\n minStepsBetweenThumbs?: number\n orientation?: 'horizontal' | 'vertical'\n size?: 'sm' | 'md' | 'lg'\n color?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n label?: string\n showSteps?: boolean\n marks?: Array<{ value: number; label?: string }>\n formatOptions?: Intl.NumberFormatOptions\n hideValue?: boolean\n hideThumb?: boolean\n disabled?: boolean\n inverted?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Keys map to internal slot names (base, output, track, fill, marks, thumb).\n */\n classNames?: Partial<{\n base: ClassValue\n output: ClassValue\n track: ClassValue\n fill: ClassValue\n marks: ClassValue\n thumb: ClassValue\n }>\n}>(), {\n min: 0,\n max: 100,\n step: 1,\n minStepsBetweenThumbs: 0,\n orientation: 'horizontal',\n showSteps: false,\n hideValue: false,\n hideThumb: false,\n disabled: false,\n inverted: false,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: number | number[]): void\n}>()\n\n// FIX: Also check defaultValue so uncontrolled range mode is detected correctly.\nconst isRange = computed(() =>\n Array.isArray(props.modelValue) || Array.isArray(props.defaultValue)\n)\n\n// Reka UI SliderRoot always uses number[]. Wrap scalar -> [v] for Reka.\nconst internalValue = computed({\n get(): number[] {\n if (props.modelValue === undefined) {\n return props.defaultValue !== undefined\n ? Array.isArray(props.defaultValue)\n ? props.defaultValue\n : [props.defaultValue]\n : [Math.round((props.min + props.max) / 2)]\n }\n return Array.isArray(props.modelValue) ? props.modelValue : [props.modelValue]\n },\n set(val: number[]) {\n // Unwrap: if original prop was scalar, emit scalar; otherwise emit array\n if (isRange.value) {\n emit('update:modelValue', val)\n } else {\n emit('update:modelValue', val[0])\n }\n },\n})\n\n// FIX: Pass size, color, radius so variants are applied.\nconst slotFns = computed(() =>\n sliderVariants({ size: props.size, color: props.color, radius: props.radius })\n)\n\n// Show the label/output wrapper if label prop is provided or hideValue is false\nconst showLabelWrapper = computed(() =>\n !!props.label || !props.hideValue\n)\n\n// Format a single value\nfunction formatValue(v: number): string {\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(v)\n }\n return String(v)\n}\n\n// Formatted output string: joined with \" - \" for ranges\nconst formatted = computed(() => {\n return internalValue.value.map(formatValue).join(' \\u2013 ')\n})\n\n// Compute % position for a value within [min, max]\nfunction toPercent(v: number): number {\n const range = props.max - props.min\n if (range === 0) return 0\n return ((v - props.min) / range) * 100\n}\n\n// Tick positions (percentages) for showSteps\nconst tickPositions = computed<number[]>(() => {\n if (!props.showSteps) return []\n const positions: number[] = []\n let v = props.min\n while (v <= props.max) {\n positions.push(toPercent(v))\n v = Math.round((v + props.step) * 1e10) / 1e10 // avoid floating-point drift\n }\n return positions\n})\n\n// Determine which axis to use for positioning (left/bottom)\nconst positionAxis = computed(() =>\n props.orientation === 'vertical' ? 'bottom' : 'left'\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"orientation\"\n :data-disabled=\"disabled || undefined\"\n >\n <!-- Label + output row -->\n <template v-if=\"showLabelWrapper\">\n <!--\n FIX: label does NOT get a class from slotFns.\n The CSS rule `.slider [data-slot=\"label\"]` targets it via data-slot attribute.\n Previously used :class=\"slotFns.base()\" which returned \"slider\" (root class) — wrong.\n -->\n <label\n v-if=\"label\"\n data-slot=\"label\"\n >{{ label }}</label>\n <output\n v-if=\"!hideValue\"\n :class=\"composeClassName(slotFns.output(), props.classNames?.output)\"\n >{{ formatted }}</output>\n </template>\n\n <!-- Slider body -->\n <div class=\"relative flex items-center gap-2\">\n <!-- Start content slot -->\n <slot name=\"startContent\" />\n\n <SliderRoot\n v-model=\"internalValue\"\n :min=\"min\"\n :max=\"max\"\n :step=\"step\"\n :min-steps-between-thumbs=\"minStepsBetweenThumbs\"\n :orientation=\"orientation\"\n :disabled=\"disabled\"\n :inverted=\"inverted\"\n class=\"relative flex items-center select-none touch-none w-full\"\n :data-orientation=\"orientation\"\n >\n <SliderTrack :class=\"composeClassName(slotFns.track(), props.classNames?.track)\">\n <SliderRange :class=\"composeClassName(slotFns.fill(), props.classNames?.fill)\" />\n\n <!--\n FIX: tick spans have NO class from slotFns (was :class=\"slotFns.base()\" = \"slider\" — wrong).\n Ticks are purely positional; identified by data-slider-tick attribute only.\n -->\n <span\n v-for=\"(pct, i) in tickPositions\"\n :key=\"`tick-${i}`\"\n :style=\"{ [positionAxis]: pct + '%' }\"\n aria-hidden=\"true\"\n data-slider-tick\n class=\"absolute pointer-events-none\"\n />\n\n <!-- Labeled marks -->\n <span\n v-for=\"mark in (marks || [])\"\n :key=\"`mark-${mark.value}`\"\n :class=\"composeClassName(slotFns.marks(), props.classNames?.marks)\"\n :style=\"{ [positionAxis]: toPercent(mark.value) + '%' }\"\n data-slider-mark\n class=\"absolute\"\n >{{ mark.label }}</span>\n </SliderTrack>\n\n <!-- Thumbs -->\n <SliderThumb\n v-for=\"(_, idx) in internalValue\"\n :key=\"idx\"\n :class=\"composeClassName(slotFns.thumb(), props.classNames?.thumb)\"\n :aria-label=\"label || 'Value'\"\n />\n </SliderRoot>\n\n <!-- End content slot -->\n <slot name=\"endContent\" />\n </div>\n </div>\n</template>\n"],"mappings":"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"}
@@ -10,7 +10,16 @@ var SplitterGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
10
10
  id: { default: void 0 },
11
11
  direction: { default: "horizontal" },
12
12
  autoSaveId: { default: void 0 },
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
  setup(__props) {
@@ -1 +1 @@
1
- {"version":3,"file":"SplitterGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/splitter/SplitterGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\nimport { SplitterGroup } from 'reka-ui'\nimport { splitterVariants, type SplitterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { splitterContextKey } from './Splitter.context'\n\nconst props = withDefaults(defineProps<{\n id?: string\n direction?: SplitterVariants['direction']\n autoSaveId?: string\n class?: ClassValue\n /** Per-slot class name overrides. */\n classNames?: Partial<{\n group: ClassValue\n }>\n}>(), {\n id: undefined,\n direction: 'horizontal',\n autoSaveId: undefined,\n class: undefined,\n classNames: undefined,\n})\n\nconst slotFns = computed(() => splitterVariants({ direction: props.direction }))\n\nprovide(splitterContextKey, { direction: computed(() => props.direction ?? 'horizontal') })\n</script>\n\n<template>\n <SplitterGroup\n :id=\"id\"\n :direction=\"direction ?? 'horizontal'\"\n :auto-save-id=\"autoSaveId\"\n :class=\"composeClassName(slotFns.group(), props.class, props.classNames?.group)\"\n data-slot=\"splitter-group\"\n >\n <slot />\n </SplitterGroup>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAiBd,MAAM,UAAU,eAAe,iBAAiB,EAAE,WAAW,MAAM,WAAW,CAAC,CAAA;AAE/E,UAAQ,oBAAoB,EAAE,WAAW,eAAe,MAAM,aAAa,aAAa,EAAE,CAAA;;uBAIxF,YAQgB,MAAA,cAAA,EAAA;IAPb,IAAI,QAAA;IACJ,WAAW,QAAA,aAAS;IACpB,gBAAc,QAAA;IACd,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,OAAO,MAAM,YAAY,MAAK,CAAA;IAC9E,aAAU;;2BAEF,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SplitterGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/splitter/SplitterGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, provide } from 'vue'\nimport { SplitterGroup } from 'reka-ui'\nimport { splitterVariants, type SplitterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { splitterContextKey } from './Splitter.context'\n\nconst props = withDefaults(defineProps<{\n id?: string\n direction?: SplitterVariants['direction']\n autoSaveId?: string\n class?: ClassValue\n /** Per-slot class name overrides. */\n classNames?: Partial<{\n group: ClassValue\n }>\n}>(), {\n id: undefined,\n direction: 'horizontal',\n autoSaveId: undefined,\n class: undefined,\n classNames: undefined,\n})\n\nconst slotFns = computed(() => splitterVariants({ direction: props.direction }))\n\nprovide(splitterContextKey, { direction: computed(() => props.direction ?? 'horizontal') })\n</script>\n\n<template>\n <SplitterGroup\n :id=\"id\"\n :direction=\"direction ?? 'horizontal'\"\n :auto-save-id=\"autoSaveId\"\n :class=\"composeClassName(slotFns.group(), props.class, props.classNames?.group)\"\n data-slot=\"splitter-group\"\n >\n <slot />\n </SplitterGroup>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAiBd,MAAM,UAAU,eAAe,iBAAiB,EAAE,WAAW,MAAM,WAAW,CAAC,CAAA;AAE/E,UAAQ,oBAAoB,EAAE,WAAW,eAAe,MAAM,aAAa,aAAa,EAAE,CAAA;;uBAIxF,YAQgB,MAAA,cAAA,EAAA;IAPb,IAAI,QAAA;IACJ,WAAW,QAAA,aAAS;IACpB,gBAAc,QAAA;IACd,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,OAAO,MAAM,YAAY,MAAK,CAAA;IAC9E,aAAU;;2BAEF,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
@@ -16,7 +16,16 @@ var SplitterPanel_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
16
16
  },
17
17
  collapsedSize: { default: void 0 },
18
18
  order: { default: void 0 },
19
- class: { default: void 0 },
19
+ class: {
20
+ type: [
21
+ String,
22
+ Boolean,
23
+ null,
24
+ Object,
25
+ Array
26
+ ],
27
+ default: void 0
28
+ },
20
29
  classNames: { default: void 0 }
21
30
  },
22
31
  emits: ["collapse", "expand"],
@@ -1 +1 @@
1
- {"version":3,"file":"SplitterPanel.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/splitter/SplitterPanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { SplitterPanel } from 'reka-ui'\nimport { splitterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n id?: string\n defaultSize?: number\n minSize?: number\n maxSize?: number\n collapsible?: boolean\n collapsedSize?: number\n order?: number\n class?: ClassValue\n /** Override classes for individual slots. */\n classNames?: Partial<{\n panel: ClassValue\n }>\n}>(), {\n id: undefined,\n defaultSize: undefined,\n minSize: undefined,\n maxSize: undefined,\n collapsible: false,\n collapsedSize: undefined,\n order: undefined,\n class: undefined,\n classNames: undefined,\n})\n\ndefineEmits<{\n collapse: []\n expand: []\n}>()\n\nconst slotFns = computed(() => splitterVariants())\n</script>\n\n<template>\n <SplitterPanel\n :id=\"id\"\n :default-size=\"defaultSize\"\n :min-size=\"minSize\"\n :max-size=\"maxSize\"\n :collapsible=\"collapsible\"\n :collapsed-size=\"collapsedSize\"\n :order=\"order\"\n :class=\"composeClassName(slotFns.panel(), props.class, props.classNames?.panel)\"\n data-slot=\"splitter-panel\"\n @collapse=\"$emit('collapse')\"\n @expand=\"$emit('expand')\"\n >\n <slot />\n </SplitterPanel>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EA8Bd,MAAM,UAAU,eAAe,kBAAkB,CAAA;;uBAI/C,YAcgB,MAAA,cAAA,EAAA;IAbb,IAAI,QAAA;IACJ,gBAAc,QAAA;IACd,YAAU,QAAA;IACV,YAAU,QAAA;IACV,aAAa,QAAA;IACb,kBAAgB,QAAA;IAChB,OAAO,QAAA;IACP,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,OAAO,MAAM,YAAY,MAAK,CAAA;IAC9E,aAAU;IACT,YAAQ,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,WAAA;IACf,UAAM,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;;2BAEN,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SplitterPanel.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/splitter/SplitterPanel.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { SplitterPanel } from 'reka-ui'\nimport { splitterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n id?: string\n defaultSize?: number\n minSize?: number\n maxSize?: number\n collapsible?: boolean\n collapsedSize?: number\n order?: number\n class?: ClassValue\n /** Override classes for individual slots. */\n classNames?: Partial<{\n panel: ClassValue\n }>\n}>(), {\n id: undefined,\n defaultSize: undefined,\n minSize: undefined,\n maxSize: undefined,\n collapsible: false,\n collapsedSize: undefined,\n order: undefined,\n class: undefined,\n classNames: undefined,\n})\n\ndefineEmits<{\n collapse: []\n expand: []\n}>()\n\nconst slotFns = computed(() => splitterVariants())\n</script>\n\n<template>\n <SplitterPanel\n :id=\"id\"\n :default-size=\"defaultSize\"\n :min-size=\"minSize\"\n :max-size=\"maxSize\"\n :collapsible=\"collapsible\"\n :collapsed-size=\"collapsedSize\"\n :order=\"order\"\n :class=\"composeClassName(slotFns.panel(), props.class, props.classNames?.panel)\"\n data-slot=\"splitter-panel\"\n @collapse=\"$emit('collapse')\"\n @expand=\"$emit('expand')\"\n >\n <slot />\n </SplitterPanel>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EA8Bd,MAAM,UAAU,eAAe,kBAAkB,CAAA;;uBAI/C,YAcgB,MAAA,cAAA,EAAA;IAbb,IAAI,QAAA;IACJ,gBAAc,QAAA;IACd,YAAU,QAAA;IACV,YAAU,QAAA;IACV,aAAa,QAAA;IACb,kBAAgB,QAAA;IAChB,OAAO,QAAA;IACP,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,OAAO,MAAM,YAAY,MAAK,CAAA;IAC9E,aAAU;IACT,YAAQ,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,WAAA;IACf,UAAM,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,SAAA;;2BAEN,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
@@ -12,7 +12,16 @@ var SplitterResizeHandle_vue_vue_type_script_setup_true_lang_default = /* @__PUR
12
12
  type: Boolean,
13
13
  default: false
14
14
  },
15
- class: { default: void 0 },
15
+ class: {
16
+ type: [
17
+ String,
18
+ Boolean,
19
+ null,
20
+ Object,
21
+ Array
22
+ ],
23
+ default: void 0
24
+ },
16
25
  classNames: { default: void 0 }
17
26
  },
18
27
  emits: ["dragging"],
@@ -1 +1 @@
1
- {"version":3,"file":"SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/splitter/SplitterResizeHandle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { SplitterResizeHandle } from 'reka-ui'\nimport { splitterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { splitterContextKey } from './Splitter.context'\n\nconst props = withDefaults(defineProps<{\n id?: string\n disabled?: boolean\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n handle: ClassValue\n handleBar: ClassValue\n }>\n}>(), {\n id: undefined,\n disabled: false,\n class: undefined,\n classNames: undefined,\n})\n\ndefineEmits<{\n dragging: [isDragging: boolean]\n}>()\n\nconst groupCtx = inject(splitterContextKey, null)\nconst slotFns = computed(() =>\n splitterVariants({ direction: groupCtx?.direction.value ?? 'horizontal' }),\n)\n</script>\n\n<template>\n <SplitterResizeHandle\n :id=\"id\"\n :disabled=\"disabled\"\n :class=\"composeClassName(slotFns.handle(), props.class, props.classNames?.handle)\"\n data-slot=\"splitter-handle\"\n @dragging=\"$emit('dragging', $event)\"\n >\n <slot>\n <div :class=\"composeClassName(slotFns.handleBar(), props.classNames?.handleBar)\" />\n </slot>\n </SplitterResizeHandle>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAoBd,MAAM,WAAW,OAAO,oBAAoB,KAAI;EAChD,MAAM,UAAU,eACd,iBAAiB,EAAE,WAAW,UAAU,UAAU,SAAS,cAAc,CAAC,CAC5E;;uBAIE,YAUuB,MAAA,qBAAA,EAAA;IATpB,IAAI,QAAA;IACJ,UAAU,QAAA;IACV,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,OAAO,MAAM,YAAY,OAAM,CAAA;IAChF,aAAU;IACT,YAAQ,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,YAAa,OAAM;;2BAI5B,CAFP,WAEO,KAAA,QAAA,WAAA,EAAA,QAAA,CADL,mBAAmF,OAAA,EAA7E,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js","names":["$emit"],"sources":["../../../src/components/splitter/SplitterResizeHandle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, inject } from 'vue'\nimport { SplitterResizeHandle } from 'reka-ui'\nimport { splitterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { splitterContextKey } from './Splitter.context'\n\nconst props = withDefaults(defineProps<{\n id?: string\n disabled?: boolean\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n handle: ClassValue\n handleBar: ClassValue\n }>\n}>(), {\n id: undefined,\n disabled: false,\n class: undefined,\n classNames: undefined,\n})\n\ndefineEmits<{\n dragging: [isDragging: boolean]\n}>()\n\nconst groupCtx = inject(splitterContextKey, null)\nconst slotFns = computed(() =>\n splitterVariants({ direction: groupCtx?.direction.value ?? 'horizontal' }),\n)\n</script>\n\n<template>\n <SplitterResizeHandle\n :id=\"id\"\n :disabled=\"disabled\"\n :class=\"composeClassName(slotFns.handle(), props.class, props.classNames?.handle)\"\n data-slot=\"splitter-handle\"\n @dragging=\"$emit('dragging', $event)\"\n >\n <slot>\n <div :class=\"composeClassName(slotFns.handleBar(), props.classNames?.handleBar)\" />\n </slot>\n </SplitterResizeHandle>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAoBd,MAAM,WAAW,OAAO,oBAAoB,KAAI;EAChD,MAAM,UAAU,eACd,iBAAiB,EAAE,WAAW,UAAU,UAAU,SAAS,cAAc,CAAC,CAC5E;;uBAIE,YAUuB,MAAA,qBAAA,EAAA;IATpB,IAAI,QAAA;IACJ,UAAU,QAAA;IACV,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,OAAO,MAAM,YAAY,OAAM,CAAA;IAChF,aAAU;IACT,YAAQ,OAAA,OAAA,OAAA,MAAA,WAAEA,KAAAA,MAAK,YAAa,OAAM;;2BAI5B,CAFP,WAEO,KAAA,QAAA,WAAA,EAAA,QAAA,CADL,mBAAmF,OAAA,EAA7E,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA,MAAA,EAAA,CAAA,CAAA,CAAA,CAAA"}