@auronui/vue 1.0.21 → 1.0.23

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 (356) hide show
  1. package/dist/cjs/index.cjs +4046 -745
  2. package/dist/cjs/index.cjs.map +1 -1
  3. package/dist/components/accordion/Accordion.js.map +1 -1
  4. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js +15 -0
  5. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  6. package/dist/components/accordion/AccordionContent.js.map +1 -1
  7. package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js +10 -2
  8. package/dist/components/accordion/AccordionContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  9. package/dist/components/accordion/AccordionHeader.js.map +1 -1
  10. package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js +13 -3
  11. package/dist/components/accordion/AccordionHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  12. package/dist/components/accordion/AccordionItem.js.map +1 -1
  13. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +9 -0
  14. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  15. package/dist/components/accordion/AccordionTrigger.js.map +1 -1
  16. package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js +13 -3
  17. package/dist/components/accordion/AccordionTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  18. package/dist/components/alert-dialog/AlertDialogAction.js.map +1 -1
  19. package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js +8 -2
  20. package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
  21. package/dist/components/alert-dialog/AlertDialogCancel.js.map +1 -1
  22. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js +8 -2
  23. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/components/alert-dialog/AlertDialogContent.js.map +1 -1
  25. package/dist/components/alert-dialog/AlertDialogContent.vue_vue_type_script_setup_true_lang.js +42 -6
  26. package/dist/components/alert-dialog/AlertDialogContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/alert-dialog/AlertDialogDescription.js.map +1 -1
  28. package/dist/components/alert-dialog/AlertDialogDescription.vue_vue_type_script_setup_true_lang.js +11 -2
  29. package/dist/components/alert-dialog/AlertDialogDescription.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/components/alert-dialog/AlertDialogOverlay.js.map +1 -1
  31. package/dist/components/alert-dialog/AlertDialogOverlay.vue_vue_type_script_setup_true_lang.js +23 -2
  32. package/dist/components/alert-dialog/AlertDialogOverlay.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/alert-dialog/AlertDialogTitle.js.map +1 -1
  34. package/dist/components/alert-dialog/AlertDialogTitle.vue_vue_type_script_setup_true_lang.js +10 -1
  35. package/dist/components/alert-dialog/AlertDialogTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/alert-dialog/AlertDialogTrigger.js.map +1 -1
  37. package/dist/components/alert-dialog/AlertDialogTrigger.vue_vue_type_script_setup_true_lang.js +12 -6
  38. package/dist/components/alert-dialog/AlertDialogTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
  40. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js +10 -1
  41. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/autocomplete/Autocomplete.js.map +1 -1
  43. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +29 -4
  44. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/autocomplete/AutocompleteContent.js.map +1 -1
  46. package/dist/components/autocomplete/AutocompleteContent.vue_vue_type_script_setup_true_lang.js +151 -9
  47. package/dist/components/autocomplete/AutocompleteContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/components/autocomplete/AutocompleteCreateItem.js.map +1 -1
  49. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js +24 -4
  50. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/autocomplete/AutocompleteInput.js.map +1 -1
  52. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js +75 -9
  53. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  54. package/dist/components/autocomplete/AutocompleteItem.js.map +1 -1
  55. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js +29 -5
  56. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/avatar/Avatar.js.map +1 -1
  58. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +39 -5
  59. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  60. package/dist/components/button/ToggleButton.js.map +1 -1
  61. package/dist/components/button/ToggleButton.vue_vue_type_script_setup_true_lang.js +16 -2
  62. package/dist/components/button/ToggleButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/components/calendar/Calendar.js.map +1 -1
  64. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js +44 -0
  65. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  66. package/dist/components/calendar-year-picker/CalendarYearPicker.js.map +1 -1
  67. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js +21 -0
  68. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/checkbox/Checkbox.js.map +1 -1
  70. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +60 -3
  71. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/collapsible/Collapsible.js.map +1 -1
  73. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js +9 -0
  74. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js.map +1 -1
  75. package/dist/components/collapsible/CollapsibleContent.js.map +1 -1
  76. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js +15 -4
  77. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  78. package/dist/components/collapsible/CollapsibleTrigger.js.map +1 -1
  79. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js +13 -3
  80. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/components/color-area/ColorArea.js.map +1 -1
  82. package/dist/components/color-area/ColorArea.vue_vue_type_script_setup_true_lang.js +34 -3
  83. package/dist/components/color-area/ColorArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/color-field/ColorField.js.map +1 -1
  85. package/dist/components/color-field/ColorField.vue_vue_type_script_setup_true_lang.js +39 -2
  86. package/dist/components/color-field/ColorField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  87. package/dist/components/color-input-group/ColorInputGroup.js.map +1 -1
  88. package/dist/components/color-input-group/ColorInputGroup.vue_vue_type_script_setup_true_lang.js +39 -2
  89. package/dist/components/color-input-group/ColorInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/components/color-slider/ColorSlider.js.map +1 -1
  91. package/dist/components/color-slider/ColorSlider.vue_vue_type_script_setup_true_lang.js +40 -3
  92. package/dist/components/color-slider/ColorSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  93. package/dist/components/color-swatch/ColorSwatch.js.map +1 -1
  94. package/dist/components/color-swatch/ColorSwatch.vue_vue_type_script_setup_true_lang.js +9 -2
  95. package/dist/components/color-swatch/ColorSwatch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/components/color-swatch-picker/ColorSwatchPicker.js.map +1 -1
  97. package/dist/components/color-swatch-picker/ColorSwatchPicker.vue_vue_type_script_setup_true_lang.js +60 -4
  98. package/dist/components/color-swatch-picker/ColorSwatchPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  99. package/dist/components/combo-box/ComboBox.js.map +1 -1
  100. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js +74 -3
  101. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/combo-box/ComboBoxContent.js.map +1 -1
  103. package/dist/components/combo-box/ComboBoxContent.vue_vue_type_script_setup_true_lang.js +168 -10
  104. package/dist/components/combo-box/ComboBoxContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  105. package/dist/components/combo-box/ComboBoxEmpty.js.map +1 -1
  106. package/dist/components/combo-box/ComboBoxEmpty.vue_vue_type_script_setup_true_lang.js +11 -1
  107. package/dist/components/combo-box/ComboBoxEmpty.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/components/combo-box/ComboBoxInput.js.map +1 -1
  109. package/dist/components/combo-box/ComboBoxInput.vue_vue_type_script_setup_true_lang.js +78 -11
  110. package/dist/components/combo-box/ComboBoxInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  111. package/dist/components/combo-box/ComboBoxItem.js.map +1 -1
  112. package/dist/components/combo-box/ComboBoxItem.vue_vue_type_script_setup_true_lang.js +31 -7
  113. package/dist/components/combo-box/ComboBoxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/date-input/DateInput.js.map +1 -1
  115. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js +30 -3
  116. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  117. package/dist/components/date-picker/DatePicker.js.map +1 -1
  118. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js +140 -10
  119. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  120. package/dist/components/date-range-field/DateRangeField.js.map +1 -1
  121. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js +24 -3
  122. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  123. package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
  124. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +146 -9
  125. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/date-time-picker/DateTimePicker.js.map +1 -1
  127. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +201 -149
  128. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  129. package/dist/components/date-time-picker/DateTimePickerTimeScroller.js.map +1 -1
  130. package/dist/components/date-time-picker/DateTimePickerTimeScroller.vue_vue_type_script_setup_true_lang.js +49 -54
  131. package/dist/components/date-time-picker/DateTimePickerTimeScroller.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/drawer/DrawerClose.js.map +1 -1
  133. package/dist/components/drawer/DrawerClose.vue_vue_type_script_setup_true_lang.js +13 -3
  134. package/dist/components/drawer/DrawerClose.vue_vue_type_script_setup_true_lang.js.map +1 -1
  135. package/dist/components/drawer/DrawerContent.js.map +1 -1
  136. package/dist/components/drawer/DrawerContent.vue_vue_type_script_setup_true_lang.js +68 -8
  137. package/dist/components/drawer/DrawerContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/components/drawer/DrawerOverlay.js.map +1 -1
  139. package/dist/components/drawer/DrawerOverlay.vue_vue_type_script_setup_true_lang.js +25 -1
  140. package/dist/components/drawer/DrawerOverlay.vue_vue_type_script_setup_true_lang.js.map +1 -1
  141. package/dist/components/drawer/DrawerTitle.js.map +1 -1
  142. package/dist/components/drawer/DrawerTitle.vue_vue_type_script_setup_true_lang.js +27 -3
  143. package/dist/components/drawer/DrawerTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/components/drawer/DrawerTrigger.js.map +1 -1
  145. package/dist/components/drawer/DrawerTrigger.vue_vue_type_script_setup_true_lang.js +11 -7
  146. package/dist/components/drawer/DrawerTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  147. package/dist/components/dropdown/Dropdown.js.map +1 -1
  148. package/dist/components/dropdown/Dropdown.vue_vue_type_script_setup_true_lang.js +15 -5
  149. package/dist/components/dropdown/Dropdown.vue_vue_type_script_setup_true_lang.js.map +1 -1
  150. package/dist/components/dropdown/DropdownCheckboxItem.js.map +1 -1
  151. package/dist/components/dropdown/DropdownCheckboxItem.vue_vue_type_script_setup_true_lang.js +29 -7
  152. package/dist/components/dropdown/DropdownCheckboxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  154. package/dist/components/dropdown/DropdownItem.vue_vue_type_script_setup_true_lang.js +15 -2
  155. package/dist/components/dropdown/DropdownItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  156. package/dist/components/dropdown/DropdownMenu.js.map +1 -1
  157. package/dist/components/dropdown/DropdownMenu.vue_vue_type_script_setup_true_lang.js +121 -5
  158. package/dist/components/dropdown/DropdownMenu.vue_vue_type_script_setup_true_lang.js.map +1 -1
  159. package/dist/components/dropdown/DropdownRadioGroup.js.map +1 -1
  160. package/dist/components/dropdown/DropdownRadioGroup.vue_vue_type_script_setup_true_lang.js +17 -4
  161. package/dist/components/dropdown/DropdownRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/dropdown/DropdownRadioItem.js.map +1 -1
  163. package/dist/components/dropdown/DropdownRadioItem.vue_vue_type_script_setup_true_lang.js +21 -5
  164. package/dist/components/dropdown/DropdownRadioItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  165. package/dist/components/dropdown/DropdownSection.js.map +1 -1
  166. package/dist/components/dropdown/DropdownSection.vue_vue_type_script_setup_true_lang.js +16 -3
  167. package/dist/components/dropdown/DropdownSection.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/components/dropdown/DropdownSubContent.js.map +1 -1
  169. package/dist/components/dropdown/DropdownSubContent.vue_vue_type_script_setup_true_lang.js +125 -5
  170. package/dist/components/dropdown/DropdownSubContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  171. package/dist/components/dropdown/DropdownSubTrigger.js.map +1 -1
  172. package/dist/components/dropdown/DropdownSubTrigger.vue_vue_type_script_setup_true_lang.js +15 -2
  173. package/dist/components/dropdown/DropdownSubTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/components/dropdown/DropdownTrigger.js.map +1 -1
  175. package/dist/components/dropdown/DropdownTrigger.vue_vue_type_script_setup_true_lang.js +22 -2
  176. package/dist/components/dropdown/DropdownTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  177. package/dist/components/input-otp/InputOTP.js.map +1 -1
  178. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js +34 -1
  179. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  180. package/dist/components/list-box/ListBox.context.js.map +1 -1
  181. package/dist/components/list-box/ListBox.js.map +1 -1
  182. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js +193 -28
  183. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  184. package/dist/components/list-box/ListBoxItem.js.map +1 -1
  185. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js +45 -9
  186. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  187. package/dist/components/list-box/ListBoxSection.js.map +1 -1
  188. package/dist/components/list-box/ListBoxSection.vue_vue_type_script_setup_true_lang.js +31 -4
  189. package/dist/components/list-box/ListBoxSection.vue_vue_type_script_setup_true_lang.js.map +1 -1
  190. package/dist/components/modal/ModalClose.js.map +1 -1
  191. package/dist/components/modal/ModalClose.vue_vue_type_script_setup_true_lang.js +7 -1
  192. package/dist/components/modal/ModalClose.vue_vue_type_script_setup_true_lang.js.map +1 -1
  193. package/dist/components/modal/ModalContent.js.map +1 -1
  194. package/dist/components/modal/ModalContent.vue_vue_type_script_setup_true_lang.js +49 -5
  195. package/dist/components/modal/ModalContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  196. package/dist/components/modal/ModalDescription.js.map +1 -1
  197. package/dist/components/modal/ModalDescription.vue_vue_type_script_setup_true_lang.js +10 -1
  198. package/dist/components/modal/ModalDescription.vue_vue_type_script_setup_true_lang.js.map +1 -1
  199. package/dist/components/modal/ModalOverlay.js.map +1 -1
  200. package/dist/components/modal/ModalOverlay.vue_vue_type_script_setup_true_lang.js +23 -2
  201. package/dist/components/modal/ModalOverlay.vue_vue_type_script_setup_true_lang.js.map +1 -1
  202. package/dist/components/modal/ModalTitle.js.map +1 -1
  203. package/dist/components/modal/ModalTitle.vue_vue_type_script_setup_true_lang.js +10 -1
  204. package/dist/components/modal/ModalTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  205. package/dist/components/modal/ModalTrigger.js.map +1 -1
  206. package/dist/components/modal/ModalTrigger.vue_vue_type_script_setup_true_lang.js +12 -6
  207. package/dist/components/modal/ModalTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  208. package/dist/components/number-field/NumberField.js.map +1 -1
  209. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js +24 -4
  210. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  211. package/dist/components/pagination/Pagination.js.map +1 -1
  212. package/dist/components/pagination/Pagination.vue_vue_type_script_setup_true_lang.js +7 -1
  213. package/dist/components/pagination/Pagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  214. package/dist/components/pagination/PaginationContent.js.map +1 -1
  215. package/dist/components/pagination/PaginationContent.vue_vue_type_script_setup_true_lang.js +12 -2
  216. package/dist/components/pagination/PaginationContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  217. package/dist/components/pagination/PaginationEllipsis.js.map +1 -1
  218. package/dist/components/pagination/PaginationEllipsis.vue_vue_type_script_setup_true_lang.js +12 -2
  219. package/dist/components/pagination/PaginationEllipsis.vue_vue_type_script_setup_true_lang.js.map +1 -1
  220. package/dist/components/pagination/PaginationFirst.js.map +1 -1
  221. package/dist/components/pagination/PaginationFirst.vue_vue_type_script_setup_true_lang.js +9 -1
  222. package/dist/components/pagination/PaginationFirst.vue_vue_type_script_setup_true_lang.js.map +1 -1
  223. package/dist/components/pagination/PaginationItem.js.map +1 -1
  224. package/dist/components/pagination/PaginationItem.vue_vue_type_script_setup_true_lang.js +11 -2
  225. package/dist/components/pagination/PaginationItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  226. package/dist/components/pagination/PaginationLast.js.map +1 -1
  227. package/dist/components/pagination/PaginationLast.vue_vue_type_script_setup_true_lang.js +9 -1
  228. package/dist/components/pagination/PaginationLast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  229. package/dist/components/pagination/PaginationNext.js.map +1 -1
  230. package/dist/components/pagination/PaginationNext.vue_vue_type_script_setup_true_lang.js +9 -1
  231. package/dist/components/pagination/PaginationNext.vue_vue_type_script_setup_true_lang.js.map +1 -1
  232. package/dist/components/pagination/PaginationPrev.js.map +1 -1
  233. package/dist/components/pagination/PaginationPrev.vue_vue_type_script_setup_true_lang.js +9 -1
  234. package/dist/components/pagination/PaginationPrev.vue_vue_type_script_setup_true_lang.js.map +1 -1
  235. package/dist/components/popover/PopoverContent.js.map +1 -1
  236. package/dist/components/popover/PopoverContent.vue_vue_type_script_setup_true_lang.js +6 -2
  237. package/dist/components/popover/PopoverContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  238. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  239. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js +37 -5
  240. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  241. package/dist/components/progress-circle/ProgressCircle.js.map +1 -1
  242. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js +21 -0
  243. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  244. package/dist/components/radio/Radio.js.map +1 -1
  245. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +46 -3
  246. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  247. package/dist/components/radio/RadioGroup.js.map +1 -1
  248. package/dist/components/radio/RadioGroup.vue_vue_type_script_setup_true_lang.js +24 -0
  249. package/dist/components/radio/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  250. package/dist/components/range-calendar/RangeCalendar.js.map +1 -1
  251. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js +44 -11
  252. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  253. package/dist/components/scroll-area/ScrollArea.js.map +1 -1
  254. package/dist/components/scroll-area/ScrollArea.vue_vue_type_script_setup_true_lang.js +61 -8
  255. package/dist/components/scroll-area/ScrollArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  256. package/dist/components/select/Select.js.map +1 -1
  257. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +12 -0
  258. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  259. package/dist/components/select/SelectContent.js.map +1 -1
  260. package/dist/components/select/SelectContent.vue_vue_type_script_setup_true_lang.js +140 -8
  261. package/dist/components/select/SelectContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  262. package/dist/components/select/SelectItem.js.map +1 -1
  263. package/dist/components/select/SelectItem.vue_vue_type_script_setup_true_lang.js +22 -6
  264. package/dist/components/select/SelectItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  265. package/dist/components/select/SelectTrigger.js.map +1 -1
  266. package/dist/components/select/SelectTrigger.vue_vue_type_script_setup_true_lang.js +23 -2
  267. package/dist/components/select/SelectTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  268. package/dist/components/select/SelectValue.js.map +1 -1
  269. package/dist/components/select/SelectValue.vue_vue_type_script_setup_true_lang.js +14 -2
  270. package/dist/components/select/SelectValue.vue_vue_type_script_setup_true_lang.js.map +1 -1
  271. package/dist/components/slider/Slider.js.map +1 -1
  272. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +69 -6
  273. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  274. package/dist/components/splitter/SplitterGroup.js.map +1 -1
  275. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js +18 -3
  276. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  277. package/dist/components/splitter/SplitterPanel.js.map +1 -1
  278. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js +20 -5
  279. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  280. package/dist/components/splitter/SplitterResizeHandle.js.map +1 -1
  281. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js +16 -1
  282. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  283. package/dist/components/switch/Switch.js.map +1 -1
  284. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js +53 -2
  285. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  286. package/dist/components/tabs/Tab.js.map +1 -1
  287. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js +7 -1
  288. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  289. package/dist/components/tabs/TabIndicator.js.map +1 -1
  290. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js +12 -2
  291. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  292. package/dist/components/tabs/TabList.js.map +1 -1
  293. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js +27 -4
  294. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  295. package/dist/components/tabs/TabPanel.js.map +1 -1
  296. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js +7 -1
  297. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  298. package/dist/components/tabs/Tabs.js.map +1 -1
  299. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js +13 -1
  300. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  301. package/dist/components/time-field/TimeField.js.map +1 -1
  302. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js +22 -1
  303. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  304. package/dist/components/toast/Toast.js.map +1 -1
  305. package/dist/components/toast/Toast.vue_vue_type_script_setup_true_lang.js +39 -4
  306. package/dist/components/toast/Toast.vue_vue_type_script_setup_true_lang.js.map +1 -1
  307. package/dist/components/toast/ToastAction.js.map +1 -1
  308. package/dist/components/toast/ToastAction.vue_vue_type_script_setup_true_lang.js +3 -1
  309. package/dist/components/toast/ToastAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
  310. package/dist/components/toast/ToastClose.js.map +1 -1
  311. package/dist/components/toast/ToastClose.vue_vue_type_script_setup_true_lang.js +3 -1
  312. package/dist/components/toast/ToastClose.vue_vue_type_script_setup_true_lang.js.map +1 -1
  313. package/dist/components/toast/ToastDescription.js.map +1 -1
  314. package/dist/components/toast/ToastDescription.vue_vue_type_script_setup_true_lang.js +15 -3
  315. package/dist/components/toast/ToastDescription.vue_vue_type_script_setup_true_lang.js.map +1 -1
  316. package/dist/components/toast/ToastTitle.js.map +1 -1
  317. package/dist/components/toast/ToastTitle.vue_vue_type_script_setup_true_lang.js +15 -3
  318. package/dist/components/toast/ToastTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  319. package/dist/components/toast/ToastViewport.js.map +1 -1
  320. package/dist/components/toast/ToastViewport.vue_vue_type_script_setup_true_lang.js +22 -3
  321. package/dist/components/toast/ToastViewport.vue_vue_type_script_setup_true_lang.js.map +1 -1
  322. package/dist/components/toolbar/Toolbar.js.map +1 -1
  323. package/dist/components/toolbar/Toolbar.vue_vue_type_script_setup_true_lang.js +10 -1
  324. package/dist/components/toolbar/Toolbar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  325. package/dist/components/toolbar/ToolbarButton.js.map +1 -1
  326. package/dist/components/toolbar/ToolbarButton.vue_vue_type_script_setup_true_lang.js +11 -2
  327. package/dist/components/toolbar/ToolbarButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  328. package/dist/components/toolbar/ToolbarLink.js.map +1 -1
  329. package/dist/components/toolbar/ToolbarLink.vue_vue_type_script_setup_true_lang.js +11 -2
  330. package/dist/components/toolbar/ToolbarLink.vue_vue_type_script_setup_true_lang.js.map +1 -1
  331. package/dist/components/toolbar/ToolbarSeparator.js.map +1 -1
  332. package/dist/components/toolbar/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js +14 -2
  333. package/dist/components/toolbar/ToolbarSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  334. package/dist/components/toolbar/ToolbarToggleGroup.js.map +1 -1
  335. package/dist/components/toolbar/ToolbarToggleGroup.vue_vue_type_script_setup_true_lang.js +22 -1
  336. package/dist/components/toolbar/ToolbarToggleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  337. package/dist/components/toolbar/ToolbarToggleItem.js.map +1 -1
  338. package/dist/components/toolbar/ToolbarToggleItem.vue_vue_type_script_setup_true_lang.js +7 -1
  339. package/dist/components/toolbar/ToolbarToggleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  340. package/dist/components/tooltip/Tooltip.js.map +1 -1
  341. package/dist/components/tooltip/Tooltip.vue_vue_type_script_lang.js +20 -0
  342. package/dist/components/tooltip/Tooltip.vue_vue_type_script_lang.js.map +1 -1
  343. package/dist/components/tooltip/TooltipContent.js.map +1 -1
  344. package/dist/components/tooltip/TooltipContent.vue_vue_type_script_setup_true_lang.js +7 -2
  345. package/dist/components/tooltip/TooltipContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/dist/components/tooltip/TooltipProvider.js.map +1 -1
  347. package/dist/components/tooltip/TooltipProvider.vue_vue_type_script_setup_true_lang.js +24 -3
  348. package/dist/components/tooltip/TooltipProvider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  349. package/dist/components/tree/Tree.js.map +1 -1
  350. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js +16 -1
  351. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js.map +1 -1
  352. package/dist/components/tree/TreeItem.js.map +1 -1
  353. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js +7 -1
  354. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  355. package/dist/index.d.ts +2419 -365
  356. package/package.json +4 -4
@@ -9,10 +9,81 @@ var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
9
9
  props: {
10
10
  position: { default: "popper" },
11
11
  sideOffset: { default: 8 },
12
- class: { default: void 0 }
12
+ class: { default: void 0 },
13
+ forceMount: {
14
+ type: Boolean,
15
+ default: void 0
16
+ },
17
+ bodyLock: {
18
+ type: Boolean,
19
+ default: void 0
20
+ },
21
+ side: { default: void 0 },
22
+ sideFlip: {
23
+ type: Boolean,
24
+ default: void 0
25
+ },
26
+ align: { default: void 0 },
27
+ alignOffset: { default: void 0 },
28
+ alignFlip: {
29
+ type: Boolean,
30
+ default: void 0
31
+ },
32
+ avoidCollisions: {
33
+ type: Boolean,
34
+ default: void 0
35
+ },
36
+ collisionBoundary: { default: void 0 },
37
+ collisionPadding: { default: void 0 },
38
+ arrowPadding: { default: void 0 },
39
+ hideShiftedArrow: {
40
+ type: Boolean,
41
+ default: void 0
42
+ },
43
+ sticky: { default: void 0 },
44
+ hideWhenDetached: {
45
+ type: Boolean,
46
+ default: void 0
47
+ },
48
+ positionStrategy: { default: void 0 },
49
+ updatePositionStrategy: { default: void 0 },
50
+ disableUpdateOnLayoutShift: {
51
+ type: Boolean,
52
+ default: void 0
53
+ },
54
+ prioritizePosition: {
55
+ type: Boolean,
56
+ default: void 0
57
+ },
58
+ reference: { default: void 0 },
59
+ as: { default: void 0 },
60
+ asChild: {
61
+ type: Boolean,
62
+ default: false
63
+ },
64
+ disableOutsidePointerEvents: {
65
+ type: Boolean,
66
+ default: void 0
67
+ },
68
+ nonce: { default: void 0 },
69
+ to: { default: void 0 },
70
+ portalDisabled: {
71
+ type: Boolean,
72
+ default: void 0
73
+ },
74
+ defer: {
75
+ type: Boolean,
76
+ default: void 0
77
+ }
13
78
  },
14
- setup(__props) {
79
+ emits: [
80
+ "close-auto-focus",
81
+ "escape-key-down",
82
+ "pointer-down-outside"
83
+ ],
84
+ setup(__props, { emit: __emit }) {
15
85
  const props = __props;
86
+ const emit = __emit;
16
87
  const ctx = useSelectInject();
17
88
  const rootContext = injectSelectRootContext();
18
89
  const justOpened = ref(false);
@@ -28,12 +99,41 @@ var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
28
99
  if (e.key === "Tab") rootContext.onOpenChange(false);
29
100
  }
30
101
  return (_ctx, _cache) => {
31
- return openBlock(), createBlock(unref(SelectPortal), null, {
102
+ return openBlock(), createBlock(unref(SelectPortal), {
103
+ to: props.to,
104
+ disabled: props.portalDisabled,
105
+ defer: props.defer,
106
+ "force-mount": props.forceMount
107
+ }, {
32
108
  default: withCtx(() => [createVNode(unref(AnimatePresence_default), null, {
33
109
  default: withCtx(() => [createVNode(unref(SelectContent), {
34
110
  position: props.position,
35
111
  "side-offset": props.sideOffset,
36
- "data-slot": "popover"
112
+ "body-lock": props.bodyLock,
113
+ side: props.side,
114
+ "side-flip": props.sideFlip,
115
+ align: props.align,
116
+ "align-offset": props.alignOffset,
117
+ "align-flip": props.alignFlip,
118
+ "avoid-collisions": props.avoidCollisions,
119
+ "collision-boundary": props.collisionBoundary,
120
+ "collision-padding": props.collisionPadding,
121
+ "arrow-padding": props.arrowPadding,
122
+ "hide-shifted-arrow": props.hideShiftedArrow,
123
+ sticky: props.sticky,
124
+ "hide-when-detached": props.hideWhenDetached,
125
+ "position-strategy": props.positionStrategy,
126
+ "update-position-strategy": props.updatePositionStrategy,
127
+ "disable-update-on-layout-shift": props.disableUpdateOnLayoutShift,
128
+ "prioritize-position": props.prioritizePosition,
129
+ reference: props.reference,
130
+ as: props.as,
131
+ "as-child": props.asChild,
132
+ "disable-outside-pointer-events": props.disableOutsidePointerEvents,
133
+ "data-slot": "popover",
134
+ onCloseAutoFocus: _cache[0] || (_cache[0] = ($event) => emit("close-auto-focus", $event)),
135
+ onEscapeKeyDown: _cache[1] || (_cache[1] = ($event) => emit("escape-key-down", $event)),
136
+ onPointerDownOutside: _cache[2] || (_cache[2] = ($event) => emit("pointer-down-outside", $event))
37
137
  }, {
38
138
  default: withCtx(() => [withDirectives(createVNode(unref(motion).div, {
39
139
  class: normalizeClass([unref(ctx).slots.value.popover(), { "select__popover--opening": justOpened.value }]),
@@ -47,18 +147,50 @@ var SelectContent_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
47
147
  transition: { duration: .15 },
48
148
  onKeydown: handleKeydown
49
149
  }, {
50
- default: withCtx(() => [createVNode(unref(SelectViewport), { "data-slot": "list-box" }, {
150
+ default: withCtx(() => [createVNode(unref(SelectViewport), {
151
+ nonce: props.nonce,
152
+ "data-slot": "list-box"
153
+ }, {
51
154
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
52
155
  _: 3
53
- })]),
156
+ }, 8, ["nonce"])]),
54
157
  _: 3
55
158
  }, 8, ["class", "animate"]), [[vShow, unref(rootContext).open.value]])]),
56
159
  _: 3
57
- }, 8, ["position", "side-offset"])]),
160
+ }, 8, [
161
+ "position",
162
+ "side-offset",
163
+ "body-lock",
164
+ "side",
165
+ "side-flip",
166
+ "align",
167
+ "align-offset",
168
+ "align-flip",
169
+ "avoid-collisions",
170
+ "collision-boundary",
171
+ "collision-padding",
172
+ "arrow-padding",
173
+ "hide-shifted-arrow",
174
+ "sticky",
175
+ "hide-when-detached",
176
+ "position-strategy",
177
+ "update-position-strategy",
178
+ "disable-update-on-layout-shift",
179
+ "prioritize-position",
180
+ "reference",
181
+ "as",
182
+ "as-child",
183
+ "disable-outside-pointer-events"
184
+ ])]),
58
185
  _: 3
59
186
  })]),
60
187
  _: 3
61
- });
188
+ }, 8, [
189
+ "to",
190
+ "disabled",
191
+ "defer",
192
+ "force-mount"
193
+ ]);
62
194
  };
63
195
  }
64
196
  });
@@ -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\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
+ {"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 /** Keep content mounted even when closed. */\n forceMount?: boolean\n /** Lock body scroll when content is open. */\n bodyLock?: boolean\n /** Side of the trigger to render the content. */\n side?: 'top' | 'right' | 'bottom' | 'left'\n /** Flip to opposite side when not enough space. */\n sideFlip?: boolean\n /** Alignment relative to the trigger. */\n align?: 'start' | 'center' | 'end'\n /** Offset from the alignment edge. */\n alignOffset?: number\n /** Flip alignment when not enough space. */\n alignFlip?: boolean\n /** Avoid collisions with viewport edges. */\n avoidCollisions?: boolean\n /** Boundary element(s) for collision detection. */\n collisionBoundary?: Element | null | Array<Element | null>\n /** Padding around collision boundary. */\n collisionPadding?: number | Partial<Record<'top' | 'right' | 'bottom' | 'left', number>>\n /** Padding between content and arrow. */\n arrowPadding?: number\n /** Hide the arrow when the content is shifted. */\n hideShiftedArrow?: boolean\n /** Sticky behavior when scrolling. */\n sticky?: 'partial' | 'always'\n /** Hide content when fully detached from trigger. */\n hideWhenDetached?: boolean\n /** CSS position strategy for the floating element. */\n positionStrategy?: 'fixed' | 'absolute'\n /** When to recalculate position. */\n updatePositionStrategy?: 'always' | 'optimized'\n /** Disable position update on layout shift. */\n disableUpdateOnLayoutShift?: boolean\n /** Prioritize keeping content in view over alignment. */\n prioritizePosition?: boolean\n /** Virtual or DOM reference element to position against. */\n reference?: object | null\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n /** Disable pointer events outside the content while open. */\n disableOutsidePointerEvents?: boolean\n /** Nonce for the viewport element. */\n nonce?: string\n /** Portal target element or selector. */\n to?: string | HTMLElement\n /** Disable the portal. */\n portalDisabled?: boolean\n /** Defer portal rendering. */\n defer?: boolean\n}>(), {\n position: 'popper',\n sideOffset: 8,\n class: undefined,\n forceMount: undefined,\n bodyLock: undefined,\n side: undefined,\n sideFlip: undefined,\n align: undefined,\n alignOffset: undefined,\n alignFlip: undefined,\n avoidCollisions: undefined,\n collisionBoundary: undefined,\n collisionPadding: undefined,\n arrowPadding: undefined,\n hideShiftedArrow: undefined,\n sticky: undefined,\n hideWhenDetached: undefined,\n positionStrategy: undefined,\n updatePositionStrategy: undefined,\n disableUpdateOnLayoutShift: undefined,\n prioritizePosition: undefined,\n reference: undefined,\n as: undefined,\n asChild: false,\n disableOutsidePointerEvents: undefined,\n nonce: undefined,\n to: undefined,\n portalDisabled: undefined,\n defer: undefined,\n})\n\nconst emit = defineEmits<{\n 'close-auto-focus': [event: Event]\n 'escape-key-down': [event: KeyboardEvent]\n 'pointer-down-outside': [event: Event]\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 :to=\"props.to\"\n :disabled=\"props.portalDisabled\"\n :defer=\"props.defer\"\n :force-mount=\"props.forceMount\"\n >\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 :body-lock=\"props.bodyLock\"\n :side=\"props.side\"\n :side-flip=\"props.sideFlip\"\n :align=\"props.align\"\n :align-offset=\"props.alignOffset\"\n :align-flip=\"props.alignFlip\"\n :avoid-collisions=\"props.avoidCollisions\"\n :collision-boundary=\"props.collisionBoundary\"\n :collision-padding=\"props.collisionPadding\"\n :arrow-padding=\"props.arrowPadding\"\n :hide-shifted-arrow=\"props.hideShiftedArrow\"\n :sticky=\"props.sticky\"\n :hide-when-detached=\"props.hideWhenDetached\"\n :position-strategy=\"props.positionStrategy\"\n :update-position-strategy=\"props.updatePositionStrategy\"\n :disable-update-on-layout-shift=\"props.disableUpdateOnLayoutShift\"\n :prioritize-position=\"props.prioritizePosition\"\n :reference=\"(props.reference as any)\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :disable-outside-pointer-events=\"props.disableOutsidePointerEvents\"\n data-slot=\"popover\"\n @close-auto-focus=\"emit('close-auto-focus', $event)\"\n @escape-key-down=\"emit('escape-key-down', $event)\"\n @pointer-down-outside=\"emit('pointer-down-outside', $event)\"\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\n :nonce=\"props.nonce\"\n data-slot=\"list-box\"\n >\n <slot />\n </SelectViewport>\n </motion.div>\n </SelectContent>\n </AnimatePresence>\n </SelectPortal>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWA,MAAM,QAAQ;EAwFd,MAAM,OAAO;EAMb,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,YAoEe,MAAA,aAAA,EAAA;IAnEZ,IAAI,MAAM;IACV,UAAU,MAAM;IAChB,OAAO,MAAM;IACb,eAAa,MAAM;;2BA+DF,CA7DlB,YA6DkB,MAAA,wBAAA,EAAA,MAAA;4BADA,CA3ChB,YA2CgB,MAAA,cAAA,EAAA;MA1Cb,UAAU,MAAM;MAChB,eAAa,MAAM;MACnB,aAAW,MAAM;MACjB,MAAM,MAAM;MACZ,aAAW,MAAM;MACjB,OAAO,MAAM;MACb,gBAAc,MAAM;MACpB,cAAY,MAAM;MAClB,oBAAkB,MAAM;MACxB,sBAAoB,MAAM;MAC1B,qBAAmB,MAAM;MACzB,iBAAe,MAAM;MACrB,sBAAoB,MAAM;MAC1B,QAAQ,MAAM;MACd,sBAAoB,MAAM;MAC1B,qBAAmB,MAAM;MACzB,4BAA0B,MAAM;MAChC,kCAAgC,MAAM;MACtC,uBAAqB,MAAM;MAC3B,WAAY,MAAM;MAClB,IAAI,MAAM;MACV,YAAU,MAAM;MAChB,kCAAgC,MAAM;MACvC,aAAU;MACT,kBAAgB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,oBAAqB,OAAM;MACjD,iBAAe,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,mBAAoB,OAAM;MAC/C,sBAAoB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,wBAAyB,OAAM;;6BAe7C,CAAA,eAbb,YAaa,MAAA,OAAA,CAAA,KAAA;OAXV,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;;8BAOO,CALjB,YAKiB,MAAA,eAAA,EAAA;QAJd,OAAO,MAAM;QACd,aAAU;;+BAEF,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;;4CAVF,MAAA,YAAW,CAAC,KAAK,MAAK,CAAA,CAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectItem.js","names":[],"sources":["../../../src/components/select/SelectItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, useTemplateRef } from 'vue'\nimport { SelectItem, SelectItemText, SelectItemIndicator } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n value: SelectItemValue\n /**\n * Explicit human-readable label for this item. When provided, the registry is\n * populated immediately at setup time (before the dropdown is ever opened),\n * so SelectValue can display the correct label for a pre-set modelValue.\n * When omitted, the label is read from slot DOM text on first mount.\n */\n textValue?: string\n isDisabled?: boolean\n class?: string\n}>(), {\n textValue: undefined,\n isDisabled: false,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst textRef = useTemplateRef<HTMLElement>('textRef')\n\n// Register immediately with textValue if provided — this runs at setup time,\n// before mount, so SelectValue shows the correct label for a pre-set modelValue\n// even before the dropdown has ever been opened.\nif (props.textValue !== undefined) {\n ctx.registerItem(props.value, props.textValue)\n}\n\nonMounted(() => {\n // textRef points to the SelectItemText component instance (not a DOM element).\n // Access $el to get the underlying span element and read its text content.\n // This refines the registry entry with actual DOM text (handles slot-text items\n // that don't have an explicit textValue prop).\n const el = (textRef.value as { $el?: HTMLElement } | null)?.$el\n const label = props.textValue ?? el?.textContent?.trim() ?? String(props.value)\n ctx.registerItem(props.value, label)\n})\n</script>\n\n<template>\n <SelectItem\n :value=\"props.value\"\n :disabled=\"props.isDisabled\"\n :text-value=\"props.textValue ?? String(props.value)\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n >\n <slot name=\"startContent\" />\n <SelectItemText ref=\"textRef\">\n <slot />\n </SelectItemText>\n <SelectItemIndicator\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </SelectItemIndicator>\n <slot name=\"endContent\" />\n </SelectItem>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"SelectItem.js","names":[],"sources":["../../../src/components/select/SelectItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, useTemplateRef } from 'vue'\nimport { SelectItem, SelectItemText, SelectItemIndicator } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n value: SelectItemValue\n /**\n * Explicit human-readable label for this item. When provided, the registry is\n * populated immediately at setup time (before the dropdown is ever opened),\n * so SelectValue can display the correct label for a pre-set modelValue.\n * When omitted, the label is read from slot DOM text on first mount.\n */\n textValue?: string\n isDisabled?: boolean\n class?: string\n /** Whether this item is disabled. */\n disabled?: boolean\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n}>(), {\n textValue: undefined,\n isDisabled: false,\n class: undefined,\n disabled: undefined,\n as: undefined,\n asChild: false,\n})\n\nconst emit = defineEmits<{\n select: [event: Event]\n}>()\n\nconst ctx = useSelectInject()\nconst textRef = useTemplateRef<HTMLElement>('textRef')\n\n// Register immediately with textValue if provided — this runs at setup time,\n// before mount, so SelectValue shows the correct label for a pre-set modelValue\n// even before the dropdown has ever been opened.\nif (props.textValue !== undefined) {\n ctx.registerItem(props.value, props.textValue)\n}\n\nonMounted(() => {\n // textRef points to the SelectItemText component instance (not a DOM element).\n // Access $el to get the underlying span element and read its text content.\n // This refines the registry entry with actual DOM text (handles slot-text items\n // that don't have an explicit textValue prop).\n const el = (textRef.value as { $el?: HTMLElement } | null)?.$el\n const label = props.textValue ?? el?.textContent?.trim() ?? String(props.value)\n ctx.registerItem(props.value, label)\n})\n</script>\n\n<template>\n <SelectItem\n :value=\"props.value\"\n :disabled=\"props.disabled ?? props.isDisabled\"\n :text-value=\"props.textValue ?? String(props.value)\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n @select=\"emit('select', $event)\"\n >\n <slot name=\"startContent\" />\n <SelectItemText ref=\"textRef\">\n <slot />\n </SelectItemText>\n <SelectItemIndicator\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </SelectItemIndicator>\n <slot name=\"endContent\" />\n </SelectItem>\n</template>\n"],"mappings":""}
@@ -11,10 +11,21 @@ var SelectItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
11
11
  type: Boolean,
12
12
  default: false
13
13
  },
14
- class: { default: void 0 }
14
+ class: { default: void 0 },
15
+ disabled: {
16
+ type: Boolean,
17
+ default: void 0
18
+ },
19
+ as: { default: void 0 },
20
+ asChild: {
21
+ type: Boolean,
22
+ default: false
23
+ }
15
24
  },
16
- setup(__props) {
25
+ emits: ["select"],
26
+ setup(__props, { emit: __emit }) {
17
27
  const props = __props;
28
+ const emit = __emit;
18
29
  const ctx = useSelectInject();
19
30
  const textRef = useTemplateRef("textRef");
20
31
  if (props.textValue !== void 0) ctx.registerItem(props.value, props.textValue);
@@ -26,10 +37,13 @@ var SelectItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
26
37
  return (_ctx, _cache) => {
27
38
  return openBlock(), createBlock(unref(SelectItem), {
28
39
  value: props.value,
29
- disabled: props.isDisabled,
40
+ disabled: props.disabled ?? props.isDisabled,
30
41
  "text-value": props.textValue ?? String(props.value),
42
+ as: props.as,
43
+ "as-child": props.asChild,
31
44
  class: "list-box-item list-box-item--default",
32
- "data-slot": "list-box-item"
45
+ "data-slot": "list-box-item",
46
+ onSelect: _cache[0] || (_cache[0] = ($event) => emit("select", $event))
33
47
  }, {
34
48
  default: withCtx(() => [
35
49
  renderSlot(_ctx.$slots, "startContent"),
@@ -44,7 +58,7 @@ var SelectItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
44
58
  class: "list-box-item__indicator",
45
59
  "data-slot": "list-box-item-indicator"
46
60
  }, {
47
- default: withCtx(() => [renderSlot(_ctx.$slots, "selectedIcon", {}, () => [_cache[0] || (_cache[0] = createElementVNode("svg", {
61
+ default: withCtx(() => [renderSlot(_ctx.$slots, "selectedIcon", {}, () => [_cache[1] || (_cache[1] = createElementVNode("svg", {
48
62
  xmlns: "http://www.w3.org/2000/svg",
49
63
  width: "12",
50
64
  height: "12",
@@ -65,7 +79,9 @@ var SelectItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ def
65
79
  }, 8, [
66
80
  "value",
67
81
  "disabled",
68
- "text-value"
82
+ "text-value",
83
+ "as",
84
+ "as-child"
69
85
  ]);
70
86
  };
71
87
  }
@@ -1 +1 @@
1
- {"version":3,"file":"SelectItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, useTemplateRef } from 'vue'\nimport { SelectItem, SelectItemText, SelectItemIndicator } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n value: SelectItemValue\n /**\n * Explicit human-readable label for this item. When provided, the registry is\n * populated immediately at setup time (before the dropdown is ever opened),\n * so SelectValue can display the correct label for a pre-set modelValue.\n * When omitted, the label is read from slot DOM text on first mount.\n */\n textValue?: string\n isDisabled?: boolean\n class?: string\n}>(), {\n textValue: undefined,\n isDisabled: false,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\nconst textRef = useTemplateRef<HTMLElement>('textRef')\n\n// Register immediately with textValue if provided — this runs at setup time,\n// before mount, so SelectValue shows the correct label for a pre-set modelValue\n// even before the dropdown has ever been opened.\nif (props.textValue !== undefined) {\n ctx.registerItem(props.value, props.textValue)\n}\n\nonMounted(() => {\n // textRef points to the SelectItemText component instance (not a DOM element).\n // Access $el to get the underlying span element and read its text content.\n // This refines the registry entry with actual DOM text (handles slot-text items\n // that don't have an explicit textValue prop).\n const el = (textRef.value as { $el?: HTMLElement } | null)?.$el\n const label = props.textValue ?? el?.textContent?.trim() ?? String(props.value)\n ctx.registerItem(props.value, label)\n})\n</script>\n\n<template>\n <SelectItem\n :value=\"props.value\"\n :disabled=\"props.isDisabled\"\n :text-value=\"props.textValue ?? String(props.value)\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n >\n <slot name=\"startContent\" />\n <SelectItemText ref=\"textRef\">\n <slot />\n </SelectItemText>\n <SelectItemIndicator\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </SelectItemIndicator>\n <slot name=\"endContent\" />\n </SelectItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAiBd,MAAM,MAAM,iBAAgB;EAC5B,MAAM,UAAU,eAA4B,UAAS;AAKrD,MAAI,MAAM,cAAc,KAAA,EACtB,KAAI,aAAa,MAAM,OAAO,MAAM,UAAS;AAG/C,kBAAgB;GAKd,MAAM,KAAM,QAAQ,OAAwC;GAC5D,MAAM,QAAQ,MAAM,aAAa,IAAI,aAAa,MAAM,IAAI,OAAO,MAAM,MAAK;AAC9E,OAAI,aAAa,MAAM,OAAO,MAAK;IACpC;;uBAIC,YAkCa,MAAA,WAAA,EAAA;IAjCV,OAAO,MAAM;IACb,UAAU,MAAM;IAChB,cAAY,MAAM,aAAa,OAAO,MAAM,MAAK;IAClD,OAAM;IACN,aAAU;;2BAEkB;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,YAEiB,MAAA,eAAA,EAAA;eAFG;MAAJ,KAAI;;6BACV,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;KAEV,YAqBsB,MAAA,oBAAA,EAAA;MApBpB,OAAM;MACN,aAAU;;6BAkBH,CAhBP,WAgBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;OAbJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;OACV,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;;;KAIvC,WAA0B,KAAA,QAAA,aAAA"}
1
+ {"version":3,"file":"SelectItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { onMounted, useTemplateRef } from 'vue'\nimport { SelectItem, SelectItemText, SelectItemIndicator } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\n\nconst props = withDefaults(defineProps<{\n value: SelectItemValue\n /**\n * Explicit human-readable label for this item. When provided, the registry is\n * populated immediately at setup time (before the dropdown is ever opened),\n * so SelectValue can display the correct label for a pre-set modelValue.\n * When omitted, the label is read from slot DOM text on first mount.\n */\n textValue?: string\n isDisabled?: boolean\n class?: string\n /** Whether this item is disabled. */\n disabled?: boolean\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n}>(), {\n textValue: undefined,\n isDisabled: false,\n class: undefined,\n disabled: undefined,\n as: undefined,\n asChild: false,\n})\n\nconst emit = defineEmits<{\n select: [event: Event]\n}>()\n\nconst ctx = useSelectInject()\nconst textRef = useTemplateRef<HTMLElement>('textRef')\n\n// Register immediately with textValue if provided — this runs at setup time,\n// before mount, so SelectValue shows the correct label for a pre-set modelValue\n// even before the dropdown has ever been opened.\nif (props.textValue !== undefined) {\n ctx.registerItem(props.value, props.textValue)\n}\n\nonMounted(() => {\n // textRef points to the SelectItemText component instance (not a DOM element).\n // Access $el to get the underlying span element and read its text content.\n // This refines the registry entry with actual DOM text (handles slot-text items\n // that don't have an explicit textValue prop).\n const el = (textRef.value as { $el?: HTMLElement } | null)?.$el\n const label = props.textValue ?? el?.textContent?.trim() ?? String(props.value)\n ctx.registerItem(props.value, label)\n})\n</script>\n\n<template>\n <SelectItem\n :value=\"props.value\"\n :disabled=\"props.disabled ?? props.isDisabled\"\n :text-value=\"props.textValue ?? String(props.value)\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n @select=\"emit('select', $event)\"\n >\n <slot name=\"startContent\" />\n <SelectItemText ref=\"textRef\">\n <slot />\n </SelectItemText>\n <SelectItemIndicator\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </SelectItemIndicator>\n <slot name=\"endContent\" />\n </SelectItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EA0Bd,MAAM,OAAO;EAIb,MAAM,MAAM,iBAAgB;EAC5B,MAAM,UAAU,eAA4B,UAAS;AAKrD,MAAI,MAAM,cAAc,KAAA,EACtB,KAAI,aAAa,MAAM,OAAO,MAAM,UAAS;AAG/C,kBAAgB;GAKd,MAAM,KAAM,QAAQ,OAAwC;GAC5D,MAAM,QAAQ,MAAM,aAAa,IAAI,aAAa,MAAM,IAAI,OAAO,MAAM,MAAK;AAC9E,OAAI,aAAa,MAAM,OAAO,MAAK;IACpC;;uBAIC,YAqCa,MAAA,WAAA,EAAA;IApCV,OAAO,MAAM;IACb,UAAU,MAAM,YAAY,MAAM;IAClC,cAAY,MAAM,aAAa,OAAO,MAAM,MAAK;IACjD,IAAI,MAAM;IACV,YAAU,MAAM;IACjB,OAAM;IACN,aAAU;IACT,UAAM,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,UAAW,OAAM;;2BAEF;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,YAEiB,MAAA,eAAA,EAAA;eAFG;MAAJ,KAAI;;6BACV,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;;;KAEV,YAqBsB,MAAA,oBAAA,EAAA;MApBpB,OAAM;MACN,aAAU;;6BAkBH,CAhBP,WAgBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;OAbJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;OACV,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;;;KAIvC,WAA0B,KAAA,QAAA,aAAA"}
@@ -1 +1 @@
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
+ {"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\nconst props = withDefaults(defineProps<{\n class?: string\n /** Whether the trigger is disabled. */\n disabled?: boolean\n /** Virtual or DOM reference element to position against. */\n reference?: object | null\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n}>(), {\n class: undefined,\n disabled: undefined,\n reference: undefined,\n as: undefined,\n asChild: false,\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 :disabled=\"props.disabled\"\n :reference=\"(props.reference as any)\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\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":""}
@@ -9,8 +9,21 @@ var _hoisted_2 = {
9
9
  };
10
10
  var SelectTrigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
11
11
  __name: "SelectTrigger",
12
- props: { class: { default: void 0 } },
12
+ props: {
13
+ class: { default: void 0 },
14
+ disabled: {
15
+ type: Boolean,
16
+ default: void 0
17
+ },
18
+ reference: { default: void 0 },
19
+ as: { default: void 0 },
20
+ asChild: {
21
+ type: Boolean,
22
+ default: false
23
+ }
24
+ },
13
25
  setup(__props) {
26
+ const props = __props;
14
27
  const ctx = useSelectInject();
15
28
  const rootContext = injectSelectRootContext();
16
29
  const isFilled = computed(() => {
@@ -42,6 +55,10 @@ var SelectTrigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
42
55
  "data-readonly": unref(ctx).isReadonly.value || void 0,
43
56
  "aria-invalid": unref(ctx).isInvalid.value || void 0,
44
57
  "aria-describedby": unref(ctx).ariaDescribedBy.value,
58
+ disabled: props.disabled,
59
+ reference: props.reference,
60
+ as: props.as,
61
+ "as-child": props.asChild,
45
62
  "data-slot": "trigger",
46
63
  onFocus: handleFocus
47
64
  }, {
@@ -84,7 +101,11 @@ var SelectTrigger_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */
84
101
  "data-invalid",
85
102
  "data-readonly",
86
103
  "aria-invalid",
87
- "aria-describedby"
104
+ "aria-describedby",
105
+ "disabled",
106
+ "reference",
107
+ "as",
108
+ "as-child"
88
109
  ]);
89
110
  };
90
111
  }
@@ -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, 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"}
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\nconst props = withDefaults(defineProps<{\n class?: string\n /** Whether the trigger is disabled. */\n disabled?: boolean\n /** Virtual or DOM reference element to position against. */\n reference?: object | null\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n}>(), {\n class: undefined,\n disabled: undefined,\n reference: undefined,\n as: undefined,\n asChild: false,\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 :disabled=\"props.disabled\"\n :reference=\"(props.reference as any)\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\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":";;;;;;;;;;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAkBd,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,YAoDgB,MAAA,cAAA,EAAA;IAnDb,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;IACtC,UAAU,MAAM;IAChB,WAAY,MAAM;IAClB,IAAI,MAAM;IACV,YAAU,MAAM;IACjB,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"SelectValue.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\nimport SelectOverflowChips from './SelectOverflowChips.vue'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n}>(), {\n placeholder: undefined,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!-- Multiple mode: chips with overflow truncation -->\n <template v-if=\"ctx.multiple.value && Array.isArray(modelValue) && modelValue.length > 0\">\n <SelectOverflowChips\n :values=\"(modelValue as SelectItemValue[])\"\n :get-label=\"ctx.itemLabel\"\n />\n </template>\n <!-- Multiple mode: nothing selected yet -->\n <template v-else-if=\"ctx.multiple.value\">\n {{ props.placeholder }}\n </template>\n <!--\n Single mode label resolution:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n 2. itemRegistry label — populated at setup time for items with explicit textValue\n 3. Placeholder when no value is selected\n -->\n <template v-else-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(modelValue as SelectItemValue | SelectItemValue[]) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"SelectValue.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\nimport SelectOverflowChips from './SelectOverflowChips.vue'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n}>(), {\n placeholder: undefined,\n class: undefined,\n as: undefined,\n asChild: false,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!-- Multiple mode: chips with overflow truncation -->\n <template v-if=\"ctx.multiple.value && Array.isArray(modelValue) && modelValue.length > 0\">\n <SelectOverflowChips\n :values=\"(modelValue as SelectItemValue[])\"\n :get-label=\"ctx.itemLabel\"\n />\n </template>\n <!-- Multiple mode: nothing selected yet -->\n <template v-else-if=\"ctx.multiple.value\">\n {{ props.placeholder }}\n </template>\n <!--\n Single mode label resolution:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n 2. itemRegistry label — populated at setup time for items with explicit textValue\n 3. Placeholder when no value is selected\n -->\n <template v-else-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(modelValue as SelectItemValue | SelectItemValue[]) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":""}
@@ -7,7 +7,12 @@ var SelectValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
7
7
  __name: "SelectValue",
8
8
  props: {
9
9
  placeholder: { default: void 0 },
10
- class: { default: void 0 }
10
+ class: { default: void 0 },
11
+ as: { default: void 0 },
12
+ asChild: {
13
+ type: Boolean,
14
+ default: false
15
+ }
11
16
  },
12
17
  setup(__props) {
13
18
  const props = __props;
@@ -16,6 +21,8 @@ var SelectValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
16
21
  return openBlock(), createBlock(unref(SelectValue), {
17
22
  class: normalizeClass(unref(ctx).slots.value.value()),
18
23
  placeholder: props.placeholder,
24
+ as: props.as,
25
+ "as-child": props.asChild,
19
26
  "data-slot": "value"
20
27
  }, {
21
28
  default: withCtx(({ selectedLabel, modelValue }) => [unref(ctx).multiple.value && Array.isArray(modelValue) && modelValue.length > 0 ? (openBlock(), createBlock(SelectOverflowChips_default, {
@@ -24,7 +31,12 @@ var SelectValue_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
24
31
  "get-label": unref(ctx).itemLabel
25
32
  }, null, 8, ["values", "get-label"])) : unref(ctx).multiple.value ? (openBlock(), createElementBlock(Fragment, { key: 1 }, [createTextVNode(toDisplayString(props.placeholder), 1)], 64)) : selectedLabel && selectedLabel.length > 0 ? (openBlock(), createElementBlock(Fragment, { key: 2 }, [createTextVNode(toDisplayString(selectedLabel.join(", ")), 1)], 64)) : modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== "") ? (openBlock(), createElementBlock(Fragment, { key: 3 }, [createTextVNode(toDisplayString(unref(ctx).itemLabel(modelValue)), 1)], 64)) : (openBlock(), createElementBlock(Fragment, { key: 4 }, [createTextVNode(toDisplayString(props.placeholder), 1)], 64))]),
26
33
  _: 1
27
- }, 8, ["class", "placeholder"]);
34
+ }, 8, [
35
+ "class",
36
+ "placeholder",
37
+ "as",
38
+ "as-child"
39
+ ]);
28
40
  };
29
41
  }
30
42
  });
@@ -1 +1 @@
1
- {"version":3,"file":"SelectValue.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\nimport SelectOverflowChips from './SelectOverflowChips.vue'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n}>(), {\n placeholder: undefined,\n class: undefined,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!-- Multiple mode: chips with overflow truncation -->\n <template v-if=\"ctx.multiple.value && Array.isArray(modelValue) && modelValue.length > 0\">\n <SelectOverflowChips\n :values=\"(modelValue as SelectItemValue[])\"\n :get-label=\"ctx.itemLabel\"\n />\n </template>\n <!-- Multiple mode: nothing selected yet -->\n <template v-else-if=\"ctx.multiple.value\">\n {{ props.placeholder }}\n </template>\n <!--\n Single mode label resolution:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n 2. itemRegistry label — populated at setup time for items with explicit textValue\n 3. Placeholder when no value is selected\n -->\n <template v-else-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(modelValue as SelectItemValue | SelectItemValue[]) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":";;;;;;;;;;;;EAKA,MAAM,QAAQ;EAQd,MAAM,MAAM,iBAAgB;;uBAI1B,YAiCc,MAAA,YAAA,EAAA;IAhCX,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,OAAK,CAAA;IAC5B,aAAa,MAAM;IACpB,aAAU;;IAEC,SAAO,SAOL,EAPS,eAAe,iBAAU,CAE7B,MAAA,IAAG,CAAC,SAAS,SAAS,MAAM,QAAQ,WAAU,IAAK,WAAW,SAAM,KAAA,WAAA,EAClF,YAGE,6BAAA;;KAFC,QAAS;KACT,aAAW,MAAA,IAAG,CAAC;4CAIC,MAAA,IAAG,CAAC,SAAS,SAAA,WAAA,EAAlC,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAM,YAAW,EAAA,EAAA,CAAA,EAAA,GAAA,IAQD,iBAAiB,cAAc,SAAM,KAAA,WAAA,EAA1D,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,cAAc,KAAI,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,IAEF,cAAU,SAAa,MAAM,QAAQ,WAAU,GAAI,WAAW,SAAM,IAAO,eAAU,OAAA,WAAA,EAA1G,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,IAAG,CAAC,UAAU,WAAU,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,KAAA,WAAA,EAE7B,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAM,YAAW,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"SelectValue.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/select/SelectValue.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { SelectValue } from 'reka-ui'\nimport { useSelectInject, type SelectItemValue } from './Select.context'\nimport SelectOverflowChips from './SelectOverflowChips.vue'\n\nconst props = withDefaults(defineProps<{\n placeholder?: string\n class?: string\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n}>(), {\n placeholder: undefined,\n class: undefined,\n as: undefined,\n asChild: false,\n})\n\nconst ctx = useSelectInject()\n</script>\n\n<template>\n <SelectValue\n :class=\"ctx.slots.value.value()\"\n :placeholder=\"props.placeholder\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n data-slot=\"value\"\n >\n <template #default=\"{ selectedLabel, modelValue }\">\n <!-- Multiple mode: chips with overflow truncation -->\n <template v-if=\"ctx.multiple.value && Array.isArray(modelValue) && modelValue.length > 0\">\n <SelectOverflowChips\n :values=\"(modelValue as SelectItemValue[])\"\n :get-label=\"ctx.itemLabel\"\n />\n </template>\n <!-- Multiple mode: nothing selected yet -->\n <template v-else-if=\"ctx.multiple.value\">\n {{ props.placeholder }}\n </template>\n <!--\n Single mode label resolution:\n 1. Reka's native selectedLabel — populated via optionsSet once items mount\n 2. itemRegistry label — populated at setup time for items with explicit textValue\n 3. Placeholder when no value is selected\n -->\n <template v-else-if=\"selectedLabel && selectedLabel.length > 0\">\n {{ selectedLabel.join(', ') }}\n </template>\n <template v-else-if=\"modelValue != null && (Array.isArray(modelValue) ? modelValue.length > 0 : modelValue !== '')\">\n {{ ctx.itemLabel(modelValue as SelectItemValue | SelectItemValue[]) }}\n </template>\n <template v-else>\n {{ props.placeholder }}\n </template>\n </template>\n </SelectValue>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAcd,MAAM,MAAM,iBAAgB;;uBAI1B,YAmCc,MAAA,YAAA,EAAA;IAlCX,OAAK,eAAE,MAAA,IAAG,CAAC,MAAM,MAAM,OAAK,CAAA;IAC5B,aAAa,MAAM;IACnB,IAAI,MAAM;IACV,YAAU,MAAM;IACjB,aAAU;;IAEC,SAAO,SAOL,EAPS,eAAe,iBAAU,CAE7B,MAAA,IAAG,CAAC,SAAS,SAAS,MAAM,QAAQ,WAAU,IAAK,WAAW,SAAM,KAAA,WAAA,EAClF,YAGE,6BAAA;;KAFC,QAAS;KACT,aAAW,MAAA,IAAG,CAAC;4CAIC,MAAA,IAAG,CAAC,SAAS,SAAA,WAAA,EAAlC,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAM,YAAW,EAAA,EAAA,CAAA,EAAA,GAAA,IAQD,iBAAiB,cAAc,SAAM,KAAA,WAAA,EAA1D,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,cAAc,KAAI,KAAA,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,IAEF,cAAU,SAAa,MAAM,QAAQ,WAAU,GAAI,WAAW,SAAM,IAAO,eAAU,OAAA,WAAA,EAA1G,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAA,IAAG,CAAC,UAAU,WAAU,CAAA,EAAA,EAAA,CAAA,EAAA,GAAA,KAAA,WAAA,EAE7B,mBAEW,UAAA,EAAA,KAAA,GAAA,EAAA,CAAA,gBAAA,gBADN,MAAM,YAAW,EAAA,EAAA,CAAA,EAAA,GAAA,EAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Slider.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":""}
1
+ {"version":3,"file":"Slider.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 /** Text direction forwarded to SliderRoot. */\n dir?: 'ltr' | 'rtl'\n /** How the thumbs align relative to the track ends. */\n thumbAlignment?: 'contain' | 'overflow'\n /** Whether SliderRoot renders as a child element. */\n asChild?: boolean\n /** Element or component to render SliderRoot as. */\n as?: string\n /** HTML name attribute forwarded to SliderRoot. */\n name?: string\n /** Whether the slider is required. */\n required?: boolean\n /** Whether SliderTrack renders as a child element. */\n trackAsChild?: boolean\n /** Element or component to render SliderTrack as. */\n trackAs?: string\n /** Whether SliderRange renders as a child element. */\n rangeAsChild?: boolean\n /** Element or component to render SliderRange as. */\n rangeAs?: string\n /** Whether SliderThumb renders as a child element. */\n thumbAsChild?: boolean\n /** Element or component to render SliderThumb as. */\n thumbAs?: string\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 dir: undefined,\n thumbAlignment: 'overflow',\n asChild: false,\n as: undefined,\n name: undefined,\n required: false,\n trackAsChild: false,\n trackAs: undefined,\n rangeAsChild: false,\n rangeAs: undefined,\n thumbAsChild: false,\n thumbAs: undefined,\n})\n\nconst emit = defineEmits<{\n (e: 'update:modelValue', value: number | number[]): void\n (e: 'value-commit', 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 :dir=\"props.dir\"\n :thumb-alignment=\"props.thumbAlignment\"\n :as-child=\"props.asChild\"\n :as=\"props.as\"\n :name=\"props.name\"\n :required=\"props.required\"\n class=\"relative flex items-center select-none touch-none w-full\"\n :data-orientation=\"orientation\"\n @value-commit=\"emit('value-commit', isRange ? $event : $event[0])\"\n >\n <SliderTrack\n :as-child=\"props.trackAsChild\"\n :as=\"props.trackAs\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n >\n <SliderRange\n :as-child=\"props.rangeAsChild\"\n :as=\"props.rangeAs\"\n :class=\"composeClassName(slotFns.fill(), props.classNames?.fill)\"\n />\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 :as-child=\"props.thumbAsChild\"\n :as=\"props.thumbAs\"\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":""}