@auronui/vue 1.0.14 → 1.0.16

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 (243) hide show
  1. package/dist/cjs/index.cjs +1031 -430
  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 +9 -2
  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 +12 -3
  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 +11 -2
  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 -2
  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 +12 -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 +9 -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 +9 -2
  23. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/components/aspect-ratio/AspectRatio.js.map +1 -1
  25. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js +12 -2
  26. package/dist/components/aspect-ratio/AspectRatio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  27. package/dist/components/autocomplete/Autocomplete.js.map +1 -1
  28. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +14 -7
  29. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  30. package/dist/components/avatar/Avatar.js.map +1 -1
  31. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js +11 -4
  32. package/dist/components/avatar/Avatar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  33. package/dist/components/badge/Badge.js.map +1 -1
  34. package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js +9 -2
  35. package/dist/components/badge/Badge.vue_vue_type_script_setup_true_lang.js.map +1 -1
  36. package/dist/components/breadcrumbs/BreadcrumbItem.js.map +1 -1
  37. package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js +13 -5
  38. package/dist/components/breadcrumbs/BreadcrumbItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  39. package/dist/components/breadcrumbs/Breadcrumbs.js.map +1 -1
  40. package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js +10 -3
  41. package/dist/components/breadcrumbs/Breadcrumbs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  42. package/dist/components/button/Button.js.map +1 -1
  43. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +13 -6
  44. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
  45. package/dist/components/button/ButtonGroup.js.map +1 -1
  46. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js +9 -2
  47. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  48. package/dist/components/button/ToggleButtonGroup.js.map +1 -1
  49. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js +9 -2
  50. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  51. package/dist/components/calendar/Calendar.js.map +1 -1
  52. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js +38 -31
  53. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  54. package/dist/components/calendar-year-picker/CalendarYearPicker.js.map +1 -1
  55. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js +19 -12
  56. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  57. package/dist/components/card/Card.js.map +1 -1
  58. package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js +9 -2
  59. package/dist/components/card/Card.vue_vue_type_script_setup_true_lang.js.map +1 -1
  60. package/dist/components/card/CardBody.js.map +1 -1
  61. package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js +11 -2
  62. package/dist/components/card/CardBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  63. package/dist/components/card/CardFooter.js.map +1 -1
  64. package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js +9 -2
  65. package/dist/components/card/CardFooter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  66. package/dist/components/card/CardHeader.js.map +1 -1
  67. package/dist/components/card/CardHeader.vue_vue_type_script_setup_true_lang.js +9 -2
  68. package/dist/components/card/CardHeader.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 +11 -4
  71. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/chip/Chip.js.map +1 -1
  73. package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js +14 -7
  74. package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  75. package/dist/components/collapsible/Collapsible.js.map +1 -1
  76. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js +9 -2
  77. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js.map +1 -1
  78. package/dist/components/collapsible/CollapsibleContent.js.map +1 -1
  79. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js +13 -3
  80. package/dist/components/collapsible/CollapsibleContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/components/collapsible/CollapsibleGroup.js.map +1 -1
  82. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js +9 -2
  83. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/collapsible/CollapsibleTrigger.js.map +1 -1
  85. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js +12 -3
  86. package/dist/components/collapsible/CollapsibleTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  87. package/dist/components/combo-box/ComboBox.js.map +1 -1
  88. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js +12 -2
  89. package/dist/components/combo-box/ComboBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/components/date-input/DateInput.js.map +1 -1
  91. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js +20 -13
  92. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  93. package/dist/components/date-picker/DatePicker.js.map +1 -1
  94. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js +12 -5
  95. package/dist/components/date-picker/DatePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/components/date-range-field/DateRangeField.js.map +1 -1
  97. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js +23 -16
  98. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  99. package/dist/components/date-range-picker/DateRangePicker.js.map +1 -1
  100. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js +12 -5
  101. package/dist/components/date-range-picker/DateRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  102. package/dist/components/date-time-picker/DateTimePicker.js.map +1 -1
  103. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +18 -11
  104. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  105. package/dist/components/input/Input.js.map +1 -1
  106. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js +21 -14
  107. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  108. package/dist/components/input-otp/InputOTP.js.map +1 -1
  109. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js +14 -4
  110. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  111. package/dist/components/kbd/Kbd.js.map +1 -1
  112. package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js +11 -4
  113. package/dist/components/kbd/Kbd.vue_vue_type_script_setup_true_lang.js.map +1 -1
  114. package/dist/components/link/Link.js.map +1 -1
  115. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js +10 -3
  116. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js.map +1 -1
  117. package/dist/components/list-box/ListBox.js.map +1 -1
  118. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js +12 -2
  119. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  120. package/dist/components/list-box/ListBoxItem.js.map +1 -1
  121. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js +13 -3
  122. package/dist/components/list-box/ListBoxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  123. package/dist/components/meter/Meter.js.map +1 -1
  124. package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js +19 -12
  125. package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  126. package/dist/components/number-field/NumberField.js.map +1 -1
  127. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js +13 -6
  128. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  129. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  130. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js +14 -7
  131. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  132. package/dist/components/progress-circle/ProgressCircle.js.map +1 -1
  133. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js +13 -6
  134. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  135. package/dist/components/radio/Radio.js.map +1 -1
  136. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +13 -3
  137. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  138. package/dist/components/range-calendar/RangeCalendar.js.map +1 -1
  139. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js +48 -41
  140. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  141. package/dist/components/scroll-shadow/ScrollShadow.js.map +1 -1
  142. package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js +9 -2
  143. package/dist/components/scroll-shadow/ScrollShadow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  144. package/dist/components/select/Select.js.map +1 -1
  145. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +14 -7
  146. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  147. package/dist/components/skeleton/Skeleton.js.map +1 -1
  148. package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js +9 -2
  149. package/dist/components/skeleton/Skeleton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  150. package/dist/components/slider/Slider.js.map +1 -1
  151. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +14 -7
  152. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  153. package/dist/components/splitter/SplitterGroup.js.map +1 -1
  154. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js +12 -2
  155. package/dist/components/splitter/SplitterGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  156. package/dist/components/splitter/SplitterPanel.js.map +1 -1
  157. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js +12 -2
  158. package/dist/components/splitter/SplitterPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  159. package/dist/components/splitter/SplitterResizeHandle.js.map +1 -1
  160. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js +13 -3
  161. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  162. package/dist/components/stepper/Stepper.js.map +1 -1
  163. package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js +12 -2
  164. package/dist/components/stepper/Stepper.vue_vue_type_script_setup_true_lang.js.map +1 -1
  165. package/dist/components/stepper/StepperContent.js.map +1 -1
  166. package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js +14 -2
  167. package/dist/components/stepper/StepperContent.vue_vue_type_script_setup_true_lang.js.map +1 -1
  168. package/dist/components/stepper/StepperDescription.js.map +1 -1
  169. package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js +14 -2
  170. package/dist/components/stepper/StepperDescription.vue_vue_type_script_setup_true_lang.js.map +1 -1
  171. package/dist/components/stepper/StepperIndicator.js.map +1 -1
  172. package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js +14 -2
  173. package/dist/components/stepper/StepperIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  174. package/dist/components/stepper/StepperItem.js.map +1 -1
  175. package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js +12 -2
  176. package/dist/components/stepper/StepperItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  177. package/dist/components/stepper/StepperSeparator.js.map +1 -1
  178. package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js +14 -2
  179. package/dist/components/stepper/StepperSeparator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  180. package/dist/components/stepper/StepperTitle.js.map +1 -1
  181. package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js +14 -2
  182. package/dist/components/stepper/StepperTitle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  183. package/dist/components/switch/Switch.js.map +1 -1
  184. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js +11 -4
  185. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  186. package/dist/components/table/Table.js.map +1 -1
  187. package/dist/components/table/Table.vue_vue_type_script_setup_true_lang.js +4 -3
  188. package/dist/components/table/Table.vue_vue_type_script_setup_true_lang.js.map +1 -1
  189. package/dist/components/table/TableBody.js.map +1 -1
  190. package/dist/components/table/TableBody.vue_vue_type_script_setup_true_lang.js +6 -3
  191. package/dist/components/table/TableBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  192. package/dist/components/table/TableCell.js.map +1 -1
  193. package/dist/components/table/TableCell.vue_vue_type_script_setup_true_lang.js +6 -3
  194. package/dist/components/table/TableCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  195. package/dist/components/table/TableFooter.js.map +1 -1
  196. package/dist/components/table/TableFooter.vue_vue_type_script_setup_true_lang.js +5 -2
  197. package/dist/components/table/TableFooter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  198. package/dist/components/table/TableHeader.js.map +1 -1
  199. package/dist/components/table/TableHeader.vue_vue_type_script_setup_true_lang.js +6 -3
  200. package/dist/components/table/TableHeader.vue_vue_type_script_setup_true_lang.js.map +1 -1
  201. package/dist/components/table/TableHeaderCell.js.map +1 -1
  202. package/dist/components/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.js +6 -3
  203. package/dist/components/table/TableHeaderCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  204. package/dist/components/table/TableRow.js.map +1 -1
  205. package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js +14 -2
  206. package/dist/components/table/TableRow.vue_vue_type_script_setup_true_lang.js.map +1 -1
  207. package/dist/components/table/TableVirtualBody.js.map +1 -1
  208. package/dist/components/table/TableVirtualBody.vue_vue_type_script_setup_true_lang.js +6 -4
  209. package/dist/components/table/TableVirtualBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  210. package/dist/components/tabs/Tab.js.map +1 -1
  211. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js +9 -2
  212. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  213. package/dist/components/tabs/TabIndicator.js.map +1 -1
  214. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js +11 -2
  215. package/dist/components/tabs/TabIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -1
  216. package/dist/components/tabs/TabList.js.map +1 -1
  217. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js +11 -4
  218. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  219. package/dist/components/tabs/TabPanel.js.map +1 -1
  220. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js +9 -2
  221. package/dist/components/tabs/TabPanel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  222. package/dist/components/tabs/Tabs.js.map +1 -1
  223. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js +9 -2
  224. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  225. package/dist/components/textarea/Textarea.js.map +1 -1
  226. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +20 -13
  227. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  228. package/dist/components/time-field/TimeField.js.map +1 -1
  229. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js +20 -13
  230. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  231. package/dist/components/tree/Tree.js.map +1 -1
  232. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js +12 -2
  233. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js.map +1 -1
  234. package/dist/components/tree/TreeItem.js.map +1 -1
  235. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js +13 -3
  236. package/dist/components/tree/TreeItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  237. package/dist/components/tree/TreeItemToggle.js.map +1 -1
  238. package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js +12 -2
  239. package/dist/components/tree/TreeItemToggle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  240. package/dist/index.d.ts +797 -173
  241. package/dist/utils/composeClassName.js +3 -3
  242. package/dist/utils/composeClassName.js.map +1 -1
  243. package/package.json +4 -4
@@ -1 +1 @@
1
- {"version":3,"file":"Link.js","names":[],"sources":["../../../src/components/link/Link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { linkVariants, type LinkVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n as?: string | object\n href?: string\n target?: string\n rel?: string\n isExternal?: boolean\n disabled?: boolean\n color?: LinkVariants['color']\n underline?: LinkVariants['underline']\n class?: string\n}>(), {\n as: 'a',\n isExternal: false,\n disabled: false,\n})\n\nconst slotFns = computed(() => linkVariants({\n color: props.color,\n underline: props.underline,\n}))\n\n// isExternal auto-applies target + rel (D-19, T-02-EXT)\n// Consumer can override by passing explicit target/rel props\nconst resolvedTarget = computed(() => {\n if (props.target) return props.target\n if (props.isExternal) return '_blank'\n return undefined\n})\n\nconst resolvedRel = computed(() => {\n if (props.rel) return props.rel\n if (props.isExternal) return 'noopener noreferrer'\n return undefined\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :href=\"props.href\"\n :target=\"resolvedTarget\"\n :rel=\"resolvedRel\"\n :class=\"composeClassName(slotFns.base(), props.class)\"\n :aria-disabled=\"props.disabled || undefined\"\n v-bind=\"$attrs\"\n >\n <slot />\n <!-- External link indicator (D-19): inline SVG glyph, 12x12, aria-hidden -->\n <span\n v-if=\"props.isExternal\"\n :class=\"slotFns.icon()\"\n aria-hidden=\"true\"\n >\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=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line\n x1=\"10\"\n y1=\"14\"\n x2=\"21\"\n y2=\"3\"\n />\n </svg>\n </span>\n </Primitive>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"Link.js","names":[],"sources":["../../../src/components/link/Link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { linkVariants, type LinkVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n as?: string | object\n href?: string\n target?: string\n rel?: string\n isExternal?: boolean\n disabled?: boolean\n color?: LinkVariants['color']\n underline?: LinkVariants['underline']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n icon: ClassValue\n }>\n}>(), {\n as: 'a',\n isExternal: false,\n disabled: false,\n})\n\nconst slotFns = computed(() => linkVariants({\n color: props.color,\n underline: props.underline,\n}))\n\n// isExternal auto-applies target + rel (D-19, T-02-EXT)\n// Consumer can override by passing explicit target/rel props\nconst resolvedTarget = computed(() => {\n if (props.target) return props.target\n if (props.isExternal) return '_blank'\n return undefined\n})\n\nconst resolvedRel = computed(() => {\n if (props.rel) return props.rel\n if (props.isExternal) return 'noopener noreferrer'\n return undefined\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :href=\"props.href\"\n :target=\"resolvedTarget\"\n :rel=\"resolvedRel\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :aria-disabled=\"props.disabled || undefined\"\n v-bind=\"$attrs\"\n >\n <slot />\n <!-- External link indicator (D-19): inline SVG glyph, 12x12, aria-hidden -->\n <span\n v-if=\"props.isExternal\"\n :class=\"composeClassName(slotFns.icon(), props.classNames?.icon)\"\n aria-hidden=\"true\"\n >\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=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line\n x1=\"10\"\n y1=\"14\"\n x2=\"21\"\n y2=\"3\"\n />\n </svg>\n </span>\n </Primitive>\n</template>\n"],"mappings":""}
@@ -20,7 +20,14 @@ var Link_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCom
20
20
  },
21
21
  color: {},
22
22
  underline: {},
23
- class: {}
23
+ class: { type: [
24
+ String,
25
+ Boolean,
26
+ null,
27
+ Object,
28
+ Array
29
+ ] },
30
+ classNames: {}
24
31
  },
25
32
  setup(__props) {
26
33
  const props = __props;
@@ -42,12 +49,12 @@ var Link_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCom
42
49
  href: props.href,
43
50
  target: resolvedTarget.value,
44
51
  rel: resolvedRel.value,
45
- class: unref(composeClassName)(slotFns.value.base(), props.class),
52
+ class: unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base),
46
53
  "aria-disabled": props.disabled || void 0
47
54
  }, _ctx.$attrs), {
48
55
  default: withCtx(() => [renderSlot(_ctx.$slots, "default"), props.isExternal ? (openBlock(), createElementBlock("span", {
49
56
  key: 0,
50
- class: normalizeClass(slotFns.value.icon()),
57
+ class: normalizeClass(unref(composeClassName)(slotFns.value.icon(), props.classNames?.icon)),
51
58
  "aria-hidden": "true"
52
59
  }, [..._cache[0] || (_cache[0] = [createElementVNode("svg", {
53
60
  xmlns: "http://www.w3.org/2000/svg",
@@ -1 +1 @@
1
- {"version":3,"file":"Link.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../src/components/link/Link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { linkVariants, type LinkVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n as?: string | object\n href?: string\n target?: string\n rel?: string\n isExternal?: boolean\n disabled?: boolean\n color?: LinkVariants['color']\n underline?: LinkVariants['underline']\n class?: string\n}>(), {\n as: 'a',\n isExternal: false,\n disabled: false,\n})\n\nconst slotFns = computed(() => linkVariants({\n color: props.color,\n underline: props.underline,\n}))\n\n// isExternal auto-applies target + rel (D-19, T-02-EXT)\n// Consumer can override by passing explicit target/rel props\nconst resolvedTarget = computed(() => {\n if (props.target) return props.target\n if (props.isExternal) return '_blank'\n return undefined\n})\n\nconst resolvedRel = computed(() => {\n if (props.rel) return props.rel\n if (props.isExternal) return 'noopener noreferrer'\n return undefined\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :href=\"props.href\"\n :target=\"resolvedTarget\"\n :rel=\"resolvedRel\"\n :class=\"composeClassName(slotFns.base(), props.class)\"\n :aria-disabled=\"props.disabled || undefined\"\n v-bind=\"$attrs\"\n >\n <slot />\n <!-- External link indicator (D-19): inline SVG glyph, 12x12, aria-hidden -->\n <span\n v-if=\"props.isExternal\"\n :class=\"slotFns.icon()\"\n aria-hidden=\"true\"\n >\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=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line\n x1=\"10\"\n y1=\"14\"\n x2=\"21\"\n y2=\"3\"\n />\n </svg>\n </span>\n </Primitive>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAgBd,MAAM,UAAU,eAAe,aAAa;GAC1C,OAAO,MAAM;GACb,WAAW,MAAM;GAClB,CAAC,CAAA;EAIF,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,OAAQ,QAAO,MAAM;AAC/B,OAAI,MAAM,WAAY,QAAO;IAE9B;EAED,MAAM,cAAc,eAAe;AACjC,OAAI,MAAM,IAAK,QAAO,MAAM;AAC5B,OAAI,MAAM,WAAY,QAAO;IAE9B;;uBAIC,YAuCY,MAAA,UAAA,EAvCZ,WAuCY;IAtCT,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,QAAQ,eAAA;IACR,KAAK,YAAA;IACL,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,MAAK;IACnD,iBAAe,MAAM,YAAY,KAAA;MAC1BA,KAAAA,OAAM,EAAA;2BAEN,CAAR,WAAQ,KAAA,QAAA,UAAA,EAGA,MAAM,cAAA,WAAA,EADd,mBA2BO,QAAA;;KAzBJ,OAAK,eAAE,QAAA,MAAQ,MAAI,CAAA;KACpB,eAAY;sCAEZ,mBAqBM,OAAA;KApBJ,OAAM;KACN,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;KAChB,eAAY;KACZ,WAAU;;KAEV,mBAAqE,QAAA,EAA/D,GAAE,4DAA0D,CAAA;KAClE,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA;KACjC,mBAKE,QAAA;MAJA,IAAG;MACH,IAAG;MACH,IAAG;MACH,IAAG"}
1
+ {"version":3,"file":"Link.vue_vue_type_script_setup_true_lang.js","names":["$attrs"],"sources":["../../../src/components/link/Link.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { linkVariants, type LinkVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n as?: string | object\n href?: string\n target?: string\n rel?: string\n isExternal?: boolean\n disabled?: boolean\n color?: LinkVariants['color']\n underline?: LinkVariants['underline']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n icon: ClassValue\n }>\n}>(), {\n as: 'a',\n isExternal: false,\n disabled: false,\n})\n\nconst slotFns = computed(() => linkVariants({\n color: props.color,\n underline: props.underline,\n}))\n\n// isExternal auto-applies target + rel (D-19, T-02-EXT)\n// Consumer can override by passing explicit target/rel props\nconst resolvedTarget = computed(() => {\n if (props.target) return props.target\n if (props.isExternal) return '_blank'\n return undefined\n})\n\nconst resolvedRel = computed(() => {\n if (props.rel) return props.rel\n if (props.isExternal) return 'noopener noreferrer'\n return undefined\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :href=\"props.href\"\n :target=\"resolvedTarget\"\n :rel=\"resolvedRel\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :aria-disabled=\"props.disabled || undefined\"\n v-bind=\"$attrs\"\n >\n <slot />\n <!-- External link indicator (D-19): inline SVG glyph, 12x12, aria-hidden -->\n <span\n v-if=\"props.isExternal\"\n :class=\"composeClassName(slotFns.icon(), props.classNames?.icon)\"\n aria-hidden=\"true\"\n >\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=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <path d=\"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\" />\n <polyline points=\"15 3 21 3 21 9\" />\n <line\n x1=\"10\"\n y1=\"14\"\n x2=\"21\"\n y2=\"3\"\n />\n </svg>\n </span>\n </Primitive>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAqBd,MAAM,UAAU,eAAe,aAAa;GAC1C,OAAO,MAAM;GACb,WAAW,MAAM;GAClB,CAAC,CAAA;EAIF,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,OAAQ,QAAO,MAAM;AAC/B,OAAI,MAAM,WAAY,QAAO;IAE9B;EAED,MAAM,cAAc,eAAe;AACjC,OAAI,MAAM,IAAK,QAAO,MAAM;AAC5B,OAAI,MAAM,WAAY,QAAO;IAE9B;;uBAIC,YAuCY,MAAA,UAAA,EAvCZ,WAuCY;IAtCT,IAAI,MAAM;IACV,MAAM,MAAM;IACZ,QAAQ,eAAA;IACR,KAAK,YAAA;IACL,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;IAC3E,iBAAe,MAAM,YAAY,KAAA;MAC1BA,KAAAA,OAAM,EAAA;2BAEN,CAAR,WAAQ,KAAA,QAAA,UAAA,EAGA,MAAM,cAAA,WAAA,EADd,mBA2BO,QAAA;;KAzBJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;KAC/D,eAAY;sCAEZ,mBAqBM,OAAA;KApBJ,OAAM;KACN,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;KAChB,eAAY;KACZ,WAAU;;KAEV,mBAAqE,QAAA,EAA/D,GAAE,4DAA0D,CAAA;KAClE,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA;KACjC,mBAKE,QAAA;MAJA,IAAG;MACH,IAAG;MACH,IAAG;MACH,IAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListBox.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: string\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns, props.class)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ListBox.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns, props.class, props.classNames?.base)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":""}
@@ -16,7 +16,17 @@ var ListBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
16
16
  type: Boolean,
17
17
  default: false
18
18
  },
19
- class: { default: void 0 }
19
+ class: {
20
+ type: [
21
+ String,
22
+ Boolean,
23
+ null,
24
+ Object,
25
+ Array
26
+ ],
27
+ default: void 0
28
+ },
29
+ classNames: {}
20
30
  },
21
31
  emits: ["update:modelValue"],
22
32
  setup(__props, { emit: __emit }) {
@@ -38,7 +48,7 @@ var ListBox_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ define
38
48
  disabled: props.isDisabled,
39
49
  "onUpdate:modelValue": _cache[0] || (_cache[0] = ($event) => emit("update:modelValue", props.selectionMode === "single" ? Array.isArray($event) ? $event[0] : $event : $event))
40
50
  }, {
41
- default: withCtx(() => [createVNode(unref(ListboxContent), mergeProps(unref(attrs), { class: unref(composeClassName)(slotFns.value, props.class) }), {
51
+ default: withCtx(() => [createVNode(unref(ListboxContent), mergeProps(unref(attrs), { class: unref(composeClassName)(slotFns.value, props.class, props.classNames?.base) }), {
42
52
  default: withCtx(() => [renderSlot(_ctx.$slots, "default")]),
43
53
  _: 3
44
54
  }, 16, ["class"])]),
@@ -1 +1 @@
1
- {"version":3,"file":"ListBox.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: string\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns, props.class)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EAgBd,MAAM,OAAO;EAIb,MAAM,QAAQ,UAAS;AAGvB,oBAAkB;GAChB,SAAS,MAAM,OAAO,UAAU;GAChC,aAAa,MAAM,OAAO,UAAU;GACpC,YAAY,MAAM,OAAO,aAAa;GACvC,CAAA;EAED,MAAM,UAAU,eACd,gBAAgB,EAAE,SAAS,MAAM,SAAS,CAAA,CAC5C;;uBAME,YAcc,MAAA,YAAA,EAAA;IAbX,eAAa,MAAM,cAAU,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,WAAU;IAC5F,iBAAe,MAAM,gBAAY,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,aAAY;IAClG,UAAU,MAAM,kBAAa;IAC7B,sBAAoB,MAAM,kBAAa,aAAA,WAAA;IACvC,UAAU,MAAM;IAChB,uBAAkB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,qBAAsB,MAAM,kBAAa,WAAiB,MAAM,QAAQ,OAAM,GAAK,OAAM,KAAmB,SAAoB,OAAM;;2BAO9I,CALjB,YAKiB,MAAA,eAAA,EALjB,WACU,MAIO,MAJF,EAAA,EACZ,OAAO,MAAA,iBAAgB,CAAC,QAAA,OAAS,MAAM,MAAK,EAAA,CAAA,EAAA;4BAErC,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ListBox.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBox.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, useAttrs } from 'vue'\nimport { ListboxRoot, ListboxContent } from 'reka-ui'\nimport { listboxVariants, type ListBoxVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxProvide } from './ListBox.context'\n\n// Disable Vue attribute fallthrough — we manually forward ARIA attrs to ListboxContent\ndefineOptions({ inheritAttrs: false })\n\nconst props = withDefaults(defineProps<{\n modelValue?: string | string[]\n defaultValue?: string | string[]\n selectionMode?: 'single' | 'multiple'\n variant?: ListBoxVariants['variant']\n isDisabled?: boolean\n class?: ClassValue\n /**\n * Per-slot class overrides. Each key maps to a named slot in the anatomy;\n * the value is merged with the generated variant classes via `composeClassName`.\n */\n classNames?: Partial<{\n base: ClassValue\n }>\n}>(), {\n modelValue: undefined,\n defaultValue: undefined,\n selectionMode: 'single',\n variant: 'default',\n isDisabled: false,\n class: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: string | string[] | undefined]\n}>()\n\nconst attrs = useAttrs()\n\n// Provide context for ListBoxItem and ListBoxSection children\nuseListBoxProvide({\n variant: toRef(props, 'variant'),\n itemVariant: toRef(props, 'variant'),\n isDisabled: toRef(props, 'isDisabled'),\n})\n\nconst slotFns = computed(() =>\n listboxVariants({ variant: props.variant })\n)\n</script>\n\n<template>\n <!-- ListboxRoot is an invisible wrapper that manages state; ListboxContent carries role=\"listbox\" -->\n <!-- We forward attrs (aria-label, aria-labelledby, etc.) to ListboxContent, not the root -->\n <ListboxRoot\n :model-value=\"props.modelValue == null ? undefined : ([] as string[]).concat(props.modelValue)\"\n :default-value=\"props.defaultValue == null ? undefined : ([] as string[]).concat(props.defaultValue)\"\n :multiple=\"props.selectionMode === 'multiple'\"\n :selection-behavior=\"props.selectionMode === 'multiple' ? 'toggle' : 'replace'\"\n :disabled=\"props.isDisabled\"\n @update:model-value=\"emit('update:modelValue', props.selectionMode === 'single' ? (Array.isArray($event) ? ($event as string[])[0] : $event as string) : $event as string[])\"\n >\n <ListboxContent\n v-bind=\"attrs\"\n :class=\"composeClassName(slotFns, props.class, props.classNames?.base)\"\n >\n <slot />\n </ListboxContent>\n </ListboxRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EAuBd,MAAM,OAAO;EAIb,MAAM,QAAQ,UAAS;AAGvB,oBAAkB;GAChB,SAAS,MAAM,OAAO,UAAU;GAChC,aAAa,MAAM,OAAO,UAAU;GACpC,YAAY,MAAM,OAAO,aAAa;GACvC,CAAA;EAED,MAAM,UAAU,eACd,gBAAgB,EAAE,SAAS,MAAM,SAAS,CAAA,CAC5C;;uBAME,YAcc,MAAA,YAAA,EAAA;IAbX,eAAa,MAAM,cAAU,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,WAAU;IAC5F,iBAAe,MAAM,gBAAY,OAAW,KAAA,IAAS,EAAA,CAAoB,OAAO,MAAM,aAAY;IAClG,UAAU,MAAM,kBAAa;IAC7B,sBAAoB,MAAM,kBAAa,aAAA,WAAA;IACvC,UAAU,MAAM;IAChB,uBAAkB,OAAA,OAAA,OAAA,MAAA,WAAE,KAAI,qBAAsB,MAAM,kBAAa,WAAiB,MAAM,QAAQ,OAAM,GAAK,OAAM,KAAmB,SAAoB,OAAM;;2BAO9I,CALjB,YAKiB,MAAA,eAAA,EALjB,WACU,MAIO,MAJF,EAAA,EACZ,OAAO,MAAA,iBAAgB,CAAC,QAAA,OAAS,MAAM,OAAO,MAAM,YAAY,KAAI,EAAA,CAAA,EAAA;4BAE7D,CAAR,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ListBoxItem.js","names":[],"sources":["../../../src/components/list-box/ListBoxItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ListboxItem, ListboxItemIndicator } from 'reka-ui'\nimport { listboxItemVariants, type ListBoxItemVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useListBoxInject } from './ListBox.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n textValue?: string\n isDisabled?: boolean\n variant?: ListBoxItemVariants['variant']\n class?: string\n}>(), {\n textValue: undefined,\n isDisabled: false,\n variant: undefined,\n class: undefined,\n})\n\n// Inject context with fallback (standalone usage)\nconst ctx = useListBoxInject({\n variant: ref('default'),\n itemVariant: ref('default'),\n isDisabled: ref(false),\n})\n\nconst finalVariant = computed(() => props.variant ?? ctx.itemVariant.value)\nconst finalDisabled = computed(() => ctx.isDisabled.value || props.isDisabled)\n\nconst slotFns = computed(() =>\n listboxItemVariants({ variant: finalVariant.value as ListBoxItemVariants['variant'] })\n)\n</script>\n\n<template>\n <ListboxItem\n :value=\"props.value\"\n :disabled=\"finalDisabled\"\n :text-value=\"props.textValue ?? props.value\"\n :class=\"composeClassName(slotFns.item(), props.class)\"\n >\n <slot name=\"startContent\" />\n <slot />\n <slot name=\"endContent\" />\n <ListboxItemIndicator :class=\"slotFns.indicator()\">\n <slot name=\"selectedIcon\">\n <!-- Default check icon -->\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 </ListboxItemIndicator>\n </ListboxItem>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ListBoxItem.js","names":[],"sources":["../../../src/components/list-box/ListBoxItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ListboxItem, ListboxItemIndicator } from 'reka-ui'\nimport { listboxItemVariants, type ListBoxItemVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxInject } from './ListBox.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n textValue?: string\n isDisabled?: boolean\n variant?: ListBoxItemVariants['variant']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n item: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n textValue: undefined,\n isDisabled: false,\n variant: undefined,\n class: undefined,\n classNames: undefined,\n})\n\n// Inject context with fallback (standalone usage)\nconst ctx = useListBoxInject({\n variant: ref('default'),\n itemVariant: ref('default'),\n isDisabled: ref(false),\n})\n\nconst finalVariant = computed(() => props.variant ?? ctx.itemVariant.value)\nconst finalDisabled = computed(() => ctx.isDisabled.value || props.isDisabled)\n\nconst slotFns = computed(() =>\n listboxItemVariants({ variant: finalVariant.value as ListBoxItemVariants['variant'] })\n)\n</script>\n\n<template>\n <ListboxItem\n :value=\"props.value\"\n :disabled=\"finalDisabled\"\n :text-value=\"props.textValue ?? props.value\"\n :class=\"composeClassName(slotFns.item(), props.class, props.classNames?.item)\"\n >\n <slot name=\"startContent\" />\n <slot />\n <slot name=\"endContent\" />\n <ListboxItemIndicator :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\">\n <slot name=\"selectedIcon\">\n <!-- Default check icon -->\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 </ListboxItemIndicator>\n </ListboxItem>\n</template>\n"],"mappings":""}
@@ -14,7 +14,17 @@ var ListBoxItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
14
14
  default: false
15
15
  },
16
16
  variant: { default: void 0 },
17
- class: { default: void 0 }
17
+ class: {
18
+ type: [
19
+ String,
20
+ Boolean,
21
+ null,
22
+ Object,
23
+ Array
24
+ ],
25
+ default: void 0
26
+ },
27
+ classNames: { default: void 0 }
18
28
  },
19
29
  setup(__props) {
20
30
  const props = __props;
@@ -31,13 +41,13 @@ var ListBoxItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
31
41
  value: props.value,
32
42
  disabled: finalDisabled.value,
33
43
  "text-value": props.textValue ?? props.value,
34
- class: normalizeClass(unref(composeClassName)(slotFns.value.item(), props.class))
44
+ class: normalizeClass(unref(composeClassName)(slotFns.value.item(), props.class, props.classNames?.item))
35
45
  }, {
36
46
  default: withCtx(() => [
37
47
  renderSlot(_ctx.$slots, "startContent"),
38
48
  renderSlot(_ctx.$slots, "default"),
39
49
  renderSlot(_ctx.$slots, "endContent"),
40
- createVNode(unref(ListboxItemIndicator), { class: normalizeClass(slotFns.value.indicator()) }, {
50
+ createVNode(unref(ListboxItemIndicator), { class: normalizeClass(unref(composeClassName)(slotFns.value.indicator(), props.classNames?.indicator)) }, {
41
51
  default: withCtx(() => [renderSlot(_ctx.$slots, "selectedIcon", {}, () => [_cache[0] || (_cache[0] = createElementVNode("svg", {
42
52
  xmlns: "http://www.w3.org/2000/svg",
43
53
  width: "12",
@@ -1 +1 @@
1
- {"version":3,"file":"ListBoxItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBoxItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ListboxItem, ListboxItemIndicator } from 'reka-ui'\nimport { listboxItemVariants, type ListBoxItemVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useListBoxInject } from './ListBox.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n textValue?: string\n isDisabled?: boolean\n variant?: ListBoxItemVariants['variant']\n class?: string\n}>(), {\n textValue: undefined,\n isDisabled: false,\n variant: undefined,\n class: undefined,\n})\n\n// Inject context with fallback (standalone usage)\nconst ctx = useListBoxInject({\n variant: ref('default'),\n itemVariant: ref('default'),\n isDisabled: ref(false),\n})\n\nconst finalVariant = computed(() => props.variant ?? ctx.itemVariant.value)\nconst finalDisabled = computed(() => ctx.isDisabled.value || props.isDisabled)\n\nconst slotFns = computed(() =>\n listboxItemVariants({ variant: finalVariant.value as ListBoxItemVariants['variant'] })\n)\n</script>\n\n<template>\n <ListboxItem\n :value=\"props.value\"\n :disabled=\"finalDisabled\"\n :text-value=\"props.textValue ?? props.value\"\n :class=\"composeClassName(slotFns.item(), props.class)\"\n >\n <slot name=\"startContent\" />\n <slot />\n <slot name=\"endContent\" />\n <ListboxItemIndicator :class=\"slotFns.indicator()\">\n <slot name=\"selectedIcon\">\n <!-- Default check icon -->\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 </ListboxItemIndicator>\n </ListboxItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAcd,MAAM,MAAM,iBAAiB;GAC3B,SAAS,IAAI,UAAU;GACvB,aAAa,IAAI,UAAU;GAC3B,YAAY,IAAI,MAAM;GACvB,CAAA;EAED,MAAM,eAAe,eAAe,MAAM,WAAW,IAAI,YAAY,MAAK;EAC1E,MAAM,gBAAgB,eAAe,IAAI,WAAW,SAAS,MAAM,WAAU;EAE7E,MAAM,UAAU,eACd,oBAAoB,EAAE,SAAS,aAAa,OAAyC,CAAA,CACvF;;uBAIE,YA6Bc,MAAA,YAAA,EAAA;IA5BX,OAAO,MAAM;IACb,UAAU,cAAA;IACV,cAAY,MAAM,aAAa,MAAM;IACrC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,MAAK,CAAA;;2BAExB;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,WAAQ,KAAA,QAAA,UAAA;KACR,WAA0B,KAAA,QAAA,aAAA;KAC1B,YAmBuB,MAAA,qBAAA,EAAA,EAnBA,OAAK,eAAE,QAAA,MAAQ,WAAS,CAAA,EAAA,EAAA;6BAkBtC,CAjBP,WAiBO,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"}
1
+ {"version":3,"file":"ListBoxItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/list-box/ListBoxItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { ListboxItem, ListboxItemIndicator } from 'reka-ui'\nimport { listboxItemVariants, type ListBoxItemVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useListBoxInject } from './ListBox.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n textValue?: string\n isDisabled?: boolean\n variant?: ListBoxItemVariants['variant']\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n item: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n textValue: undefined,\n isDisabled: false,\n variant: undefined,\n class: undefined,\n classNames: undefined,\n})\n\n// Inject context with fallback (standalone usage)\nconst ctx = useListBoxInject({\n variant: ref('default'),\n itemVariant: ref('default'),\n isDisabled: ref(false),\n})\n\nconst finalVariant = computed(() => props.variant ?? ctx.itemVariant.value)\nconst finalDisabled = computed(() => ctx.isDisabled.value || props.isDisabled)\n\nconst slotFns = computed(() =>\n listboxItemVariants({ variant: finalVariant.value as ListBoxItemVariants['variant'] })\n)\n</script>\n\n<template>\n <ListboxItem\n :value=\"props.value\"\n :disabled=\"finalDisabled\"\n :text-value=\"props.textValue ?? props.value\"\n :class=\"composeClassName(slotFns.item(), props.class, props.classNames?.item)\"\n >\n <slot name=\"startContent\" />\n <slot />\n <slot name=\"endContent\" />\n <ListboxItemIndicator :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\">\n <slot name=\"selectedIcon\">\n <!-- Default check icon -->\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 </ListboxItemIndicator>\n </ListboxItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EAoBd,MAAM,MAAM,iBAAiB;GAC3B,SAAS,IAAI,UAAU;GACvB,aAAa,IAAI,UAAU;GAC3B,YAAY,IAAI,MAAM;GACvB,CAAA;EAED,MAAM,eAAe,eAAe,MAAM,WAAW,IAAI,YAAY,MAAK;EAC1E,MAAM,gBAAgB,eAAe,IAAI,WAAW,SAAS,MAAM,WAAU;EAE7E,MAAM,UAAU,eACd,oBAAoB,EAAE,SAAS,aAAa,OAAyC,CAAA,CACvF;;uBAIE,YA6Bc,MAAA,YAAA,EAAA;IA5BX,OAAO,MAAM;IACb,UAAU,cAAA;IACV,cAAY,MAAM,aAAa,MAAM;IACrC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;;2BAEhD;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,WAAQ,KAAA,QAAA,UAAA;KACR,WAA0B,KAAA,QAAA,aAAA;KAC1B,YAmBuB,MAAA,qBAAA,EAAA,EAnBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA,EAAA,EAAA;6BAkBtF,CAjBP,WAiBO,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"}
@@ -1 +1 @@
1
- {"version":3,"file":"Meter.js","names":[],"sources":["../../../src/components/meter/Meter.vue"],"sourcesContent":["<!--\n Meter — A quantity indicator within a known range.\n\n Implementation note: Although HTML provides a native <meter> element, it is\n notoriously difficult to style cross-browser and does NOT reliably expose the\n ARIA `meter` role to all assistive technologies. This component therefore uses\n a <div role=\"meter\"> with explicit aria-valuenow / aria-valuemin / aria-valuemax\n attributes, matching React's approach (React Aria's useMeter → div-based).\n This is fully compliant with the ARIA 1.1 specification.\n-->\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { meterVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'accent' | 'success' | 'warning' | 'danger'\n class?: string\n}>(), {\n value: 0,\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n})\n\nconst percentage = computed(() => {\n const raw = ((props.value - props.minValue) / (props.maxValue - props.minValue)) * 100\n return Math.min(100, Math.max(0, raw))\n})\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return `${Math.round(percentage.value)}%`\n})\n\nconst slotFns = computed(() =>\n meterVariants({\n size: props.size,\n color: props.color,\n })\n)\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), props.class)\">\n <span\n v-if=\"label\"\n data-slot=\"label\"\n >{{ label }}</span>\n <output\n v-if=\"showValueLabel\"\n :class=\"slotFns.output()\"\n >{{ formattedValue }}</output>\n <div\n role=\"meter\"\n :aria-valuenow=\"value\"\n :aria-valuemin=\"minValue\"\n :aria-valuemax=\"maxValue\"\n :aria-valuetext=\"formattedValue\"\n :aria-label=\"label || 'Meter'\"\n :class=\"slotFns.track()\"\n >\n <div\n :class=\"slotFns.fill()\"\n :style=\"{ width: percentage + '%' }\"\n />\n </div>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"Meter.js","names":[],"sources":["../../../src/components/meter/Meter.vue"],"sourcesContent":["<!--\n Meter — A quantity indicator within a known range.\n\n Implementation note: Although HTML provides a native <meter> element, it is\n notoriously difficult to style cross-browser and does NOT reliably expose the\n ARIA `meter` role to all assistive technologies. This component therefore uses\n a <div role=\"meter\"> with explicit aria-valuenow / aria-valuemin / aria-valuemax\n attributes, matching React's approach (React Aria's useMeter → div-based).\n This is fully compliant with the ARIA 1.1 specification.\n-->\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { meterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'accent' | 'success' | 'warning' | 'danger'\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n output: ClassValue\n track: ClassValue\n fill: ClassValue\n }>\n}>(), {\n value: 0,\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n})\n\nconst percentage = computed(() => {\n const raw = ((props.value - props.minValue) / (props.maxValue - props.minValue)) * 100\n return Math.min(100, Math.max(0, raw))\n})\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return `${Math.round(percentage.value)}%`\n})\n\nconst slotFns = computed(() =>\n meterVariants({\n size: props.size,\n color: props.color,\n })\n)\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <span\n v-if=\"label\"\n data-slot=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <output\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.output(), props.classNames?.output)\"\n >{{ formattedValue }}</output>\n <div\n role=\"meter\"\n :aria-valuenow=\"value\"\n :aria-valuemin=\"minValue\"\n :aria-valuemax=\"maxValue\"\n :aria-valuetext=\"formattedValue\"\n :aria-label=\"label || 'Meter'\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n >\n <div\n :class=\"composeClassName(slotFns.fill(), props.classNames?.fill)\"\n :style=\"{ width: percentage + '%' }\"\n />\n </div>\n </div>\n</template>\n"],"mappings":""}
@@ -2,11 +2,7 @@ import { composeClassName } from "../../utils/composeClassName.js";
2
2
  import { computed, createCommentVNode, createElementBlock, createElementVNode, defineComponent, normalizeClass, normalizeStyle, openBlock, toDisplayString, unref } from "vue";
3
3
  import { meterVariants } from "@auronui/styles";
4
4
  //#region src/components/meter/Meter.vue?vue&type=script&setup=true&lang.ts
5
- var _hoisted_1 = {
6
- key: 0,
7
- "data-slot": "label"
8
- };
9
- var _hoisted_2 = [
5
+ var _hoisted_1 = [
10
6
  "aria-valuenow",
11
7
  "aria-valuemin",
12
8
  "aria-valuemax",
@@ -28,7 +24,14 @@ var Meter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
28
24
  formatOptions: {},
29
25
  size: {},
30
26
  color: {},
31
- class: {}
27
+ class: { type: [
28
+ String,
29
+ Boolean,
30
+ null,
31
+ Object,
32
+ Array
33
+ ] },
34
+ classNames: {}
32
35
  },
33
36
  setup(__props) {
34
37
  const props = __props;
@@ -46,11 +49,15 @@ var Meter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
46
49
  color: props.color
47
50
  }));
48
51
  return (_ctx, _cache) => {
49
- return openBlock(), createElementBlock("div", { class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class)) }, [
50
- __props.label ? (openBlock(), createElementBlock("span", _hoisted_1, toDisplayString(__props.label), 1)) : createCommentVNode("", true),
52
+ return openBlock(), createElementBlock("div", { class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base)) }, [
53
+ __props.label ? (openBlock(), createElementBlock("span", {
54
+ key: 0,
55
+ "data-slot": "label",
56
+ class: normalizeClass(unref(composeClassName)(slotFns.value.label(), props.classNames?.label))
57
+ }, toDisplayString(__props.label), 3)) : createCommentVNode("", true),
51
58
  __props.showValueLabel ? (openBlock(), createElementBlock("output", {
52
59
  key: 1,
53
- class: normalizeClass(slotFns.value.output())
60
+ class: normalizeClass(unref(composeClassName)(slotFns.value.output(), props.classNames?.output))
54
61
  }, toDisplayString(formattedValue.value), 3)) : createCommentVNode("", true),
55
62
  createElementVNode("div", {
56
63
  role: "meter",
@@ -59,11 +66,11 @@ var Meter_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineCo
59
66
  "aria-valuemax": __props.maxValue,
60
67
  "aria-valuetext": formattedValue.value,
61
68
  "aria-label": __props.label || "Meter",
62
- class: normalizeClass(slotFns.value.track())
69
+ class: normalizeClass(unref(composeClassName)(slotFns.value.track(), props.classNames?.track))
63
70
  }, [createElementVNode("div", {
64
- class: normalizeClass(slotFns.value.fill()),
71
+ class: normalizeClass(unref(composeClassName)(slotFns.value.fill(), props.classNames?.fill)),
65
72
  style: normalizeStyle({ width: percentage.value + "%" })
66
- }, null, 6)], 10, _hoisted_2)
73
+ }, null, 6)], 10, _hoisted_1)
67
74
  ], 2);
68
75
  };
69
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"Meter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/meter/Meter.vue"],"sourcesContent":["<!--\n Meter — A quantity indicator within a known range.\n\n Implementation note: Although HTML provides a native <meter> element, it is\n notoriously difficult to style cross-browser and does NOT reliably expose the\n ARIA `meter` role to all assistive technologies. This component therefore uses\n a <div role=\"meter\"> with explicit aria-valuenow / aria-valuemin / aria-valuemax\n attributes, matching React's approach (React Aria's useMeter → div-based).\n This is fully compliant with the ARIA 1.1 specification.\n-->\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { meterVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'accent' | 'success' | 'warning' | 'danger'\n class?: string\n}>(), {\n value: 0,\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n})\n\nconst percentage = computed(() => {\n const raw = ((props.value - props.minValue) / (props.maxValue - props.minValue)) * 100\n return Math.min(100, Math.max(0, raw))\n})\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return `${Math.round(percentage.value)}%`\n})\n\nconst slotFns = computed(() =>\n meterVariants({\n size: props.size,\n color: props.color,\n })\n)\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), props.class)\">\n <span\n v-if=\"label\"\n data-slot=\"label\"\n >{{ label }}</span>\n <output\n v-if=\"showValueLabel\"\n :class=\"slotFns.output()\"\n >{{ formattedValue }}</output>\n <div\n role=\"meter\"\n :aria-valuenow=\"value\"\n :aria-valuemin=\"minValue\"\n :aria-valuemax=\"maxValue\"\n :aria-valuetext=\"formattedValue\"\n :aria-label=\"label || 'Meter'\"\n :class=\"slotFns.track()\"\n >\n <div\n :class=\"slotFns.fill()\"\n :style=\"{ width: percentage + '%' }\"\n />\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EAkBd,MAAM,aAAa,eAAe;GAChC,MAAM,OAAQ,MAAM,QAAQ,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;AACnF,UAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;IACtC;EAED,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,GAAG,KAAK,MAAM,WAAW,MAAM,CAAC;IACxC;EAED,MAAM,UAAU,eACd,cAAc;GACZ,MAAM,MAAM;GACZ,OAAO,MAAM;GACd,CAAA,CACH;;uBAIE,mBAuBM,OAAA,EAvBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,MAAK,CAAA,EAAA,EAAA;IAE/C,QAAA,SAAA,WAAA,EADR,mBAGmB,QAHnB,YAGmB,gBAAf,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAED,QAAA,kBAAA,WAAA,EADR,mBAG8B,UAAA;;KAD3B,OAAK,eAAE,QAAA,MAAQ,QAAM,CAAA;uBACpB,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAClB,mBAaM,OAAA;KAZJ,MAAK;KACJ,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,kBAAgB,eAAA;KAChB,cAAY,QAAA,SAAK;KACjB,OAAK,eAAE,QAAA,MAAQ,OAAK,CAAA;QAErB,mBAGE,OAAA;KAFC,OAAK,eAAE,QAAA,MAAQ,MAAI,CAAA;KACnB,OAAK,eAAA,EAAA,OAAW,WAAA,QAAU,KAAA,CAAA"}
1
+ {"version":3,"file":"Meter.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/meter/Meter.vue"],"sourcesContent":["<!--\n Meter — A quantity indicator within a known range.\n\n Implementation note: Although HTML provides a native <meter> element, it is\n notoriously difficult to style cross-browser and does NOT reliably expose the\n ARIA `meter` role to all assistive technologies. This component therefore uses\n a <div role=\"meter\"> with explicit aria-valuenow / aria-valuemin / aria-valuemax\n attributes, matching React's approach (React Aria's useMeter → div-based).\n This is fully compliant with the ARIA 1.1 specification.\n-->\n<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { meterVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'accent' | 'success' | 'warning' | 'danger'\n class?: ClassValue\n /** Override classes for individual slots */\n classNames?: Partial<{\n base: ClassValue\n label: ClassValue\n output: ClassValue\n track: ClassValue\n fill: ClassValue\n }>\n}>(), {\n value: 0,\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n})\n\nconst percentage = computed(() => {\n const raw = ((props.value - props.minValue) / (props.maxValue - props.minValue)) * 100\n return Math.min(100, Math.max(0, raw))\n})\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return `${Math.round(percentage.value)}%`\n})\n\nconst slotFns = computed(() =>\n meterVariants({\n size: props.size,\n color: props.color,\n })\n)\n</script>\n\n<template>\n <div :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\">\n <span\n v-if=\"label\"\n data-slot=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <output\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.output(), props.classNames?.output)\"\n >{{ formattedValue }}</output>\n <div\n role=\"meter\"\n :aria-valuenow=\"value\"\n :aria-valuemin=\"minValue\"\n :aria-valuemax=\"maxValue\"\n :aria-valuetext=\"formattedValue\"\n :aria-label=\"label || 'Meter'\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n >\n <div\n :class=\"composeClassName(slotFns.fill(), props.classNames?.fill)\"\n :style=\"{ width: percentage + '%' }\"\n />\n </div>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAeA,MAAM,QAAQ;EA0Bd,MAAM,aAAa,eAAe;GAChC,MAAM,OAAQ,MAAM,QAAQ,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;AACnF,UAAO,KAAK,IAAI,KAAK,KAAK,IAAI,GAAG,IAAI,CAAA;IACtC;EAED,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,GAAG,KAAK,MAAM,WAAW,MAAM,CAAC;IACxC;EAED,MAAM,UAAU,eACd,cAAc;GACZ,MAAM,MAAM;GACZ,OAAO,MAAM;GACd,CAAA,CACH;;uBAIE,mBAwBM,OAAA,EAxBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA,EAAA,EAAA;IAEvE,QAAA,SAAA,WAAA,EADR,mBAImB,QAAA;;KAFjB,aAAU;KACT,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;uBAC/D,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAED,QAAA,kBAAA,WAAA,EADR,mBAG8B,UAAA;;KAD3B,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,QAAM,EAAI,MAAM,YAAY,OAAM,CAAA;uBACjE,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;IAClB,mBAaM,OAAA;KAZJ,MAAK;KACJ,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,iBAAe,QAAA;KACf,kBAAgB,eAAA;KAChB,cAAY,QAAA,SAAK;KACjB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;QAEjE,mBAGE,OAAA;KAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,YAAY,KAAI,CAAA;KAC9D,OAAK,eAAA,EAAA,OAAW,WAAA,QAAU,KAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField.js","names":[],"sources":["../../../src/components/number-field/NumberField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useId } from 'vue'\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n} from 'reka-ui'\nimport { numberFieldVariants, type NumberFieldVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n variant?: NumberFieldVariants['variant']\n size?: NumberFieldVariants['size']\n color?: NumberFieldVariants['color']\n fullWidth?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isReadonly?: boolean\n min?: number\n max?: number\n step?: number\n formatOptions?: Intl.NumberFormatOptions\n locale?: string\n name?: string\n id?: string\n placeholder?: string\n label?: string\n // camelCase prop; in templates users write aria-label=\"…\" (Vue auto-converts)\n ariaLabel?: string\n class?: string\n}>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n step: 1,\n min: undefined,\n max: undefined,\n formatOptions: undefined,\n locale: undefined,\n label: undefined,\n ariaLabel: undefined,\n})\n\nconst modelValue = defineModel<number | undefined>()\n\nconst slotFns = computed(() =>\n numberFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n })\n)\n\n// Generate a stable id for the input element.\n// NumberFieldRoot forwards this id to the underlying <input> via context.\n// We use this to wire a <label for=\"inputId\"> which is axe-safe regardless\n// of how Reka UI handles attr forwarding through its Primitive component.\nconst generatedInputId = useId()\n// Use caller-provided id if given, otherwise our generated id.\nconst resolvedInputId = computed(() => props.id ?? generatedInputId)\n\n// Whether to show a label element (visible or sr-only).\nconst hasLabel = computed(() => !!(props.label || props.ariaLabel))\n// When only ariaLabel is given (no visible label), the label is sr-only.\nconst isLabelVisible = computed(() => !!props.label)\n</script>\n\n<template>\n <NumberFieldRoot\n :id=\"resolvedInputId\"\n v-model=\"modelValue\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :disabled=\"props.isDisabled || undefined\"\n :readonly=\"props.isReadonly || undefined\"\n :format-options=\"props.formatOptions\"\n :locale=\"props.locale\"\n :name=\"props.name\"\n :class=\"composeClassName(slotFns.base(), props.class)\"\n :data-invalid=\"props.isInvalid || undefined\"\n :data-disabled=\"props.isDisabled || undefined\"\n :data-readonly=\"props.isReadonly || undefined\"\n >\n <!--\n Label element — always rendered when `label` or `aria-label` is provided.\n When only `aria-label` is given (no visible label) the element is sr-only.\n Uses label[for=resolvedInputId] to wire to the Reka UI input element —\n this is axe-safe because NumberFieldRoot forwards its `id` prop directly\n to the underlying <input> via context, making label[for] reliable even\n though custom attrs passed to NumberFieldInput don't reach the DOM input.\n -->\n <label\n v-if=\"hasLabel\"\n :for=\"resolvedInputId\"\n :class=\"isLabelVisible ? undefined : 'sr-only'\"\n data-slot=\"label\"\n >{{ props.label || props.ariaLabel }}</label>\n\n <!-- Number field control group -->\n <div\n :class=\"slotFns.group()\"\n data-slot=\"group\"\n >\n <NumberFieldDecrement :class=\"slotFns.decrementButton()\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-decrement-button-icon\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n </NumberFieldDecrement>\n\n <NumberFieldInput\n :class=\"slotFns.input()\"\n :placeholder=\"props.placeholder\"\n />\n\n <NumberFieldIncrement :class=\"slotFns.incrementButton()\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-increment-button-icon\"\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n </NumberFieldIncrement>\n </div>\n </NumberFieldRoot>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"NumberField.js","names":[],"sources":["../../../src/components/number-field/NumberField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useId } from 'vue'\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n} from 'reka-ui'\nimport { numberFieldVariants, type NumberFieldVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n variant?: NumberFieldVariants['variant']\n size?: NumberFieldVariants['size']\n color?: NumberFieldVariants['color']\n fullWidth?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isReadonly?: boolean\n min?: number\n max?: number\n step?: number\n formatOptions?: Intl.NumberFormatOptions\n locale?: string\n name?: string\n id?: string\n placeholder?: string\n label?: string\n // camelCase prop; in templates users write aria-label=\"…\" (Vue auto-converts)\n ariaLabel?: string\n class?: ClassValue\n /** Per-slot classNames override object for custom styling */\n classNames?: Partial<{\n base: ClassValue\n group: ClassValue\n decrementButton: ClassValue\n input: ClassValue\n incrementButton: ClassValue\n }>\n}>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n step: 1,\n min: undefined,\n max: undefined,\n formatOptions: undefined,\n locale: undefined,\n label: undefined,\n ariaLabel: undefined,\n})\n\nconst modelValue = defineModel<number | undefined>()\n\nconst slotFns = computed(() =>\n numberFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n })\n)\n\n// Generate a stable id for the input element.\n// NumberFieldRoot forwards this id to the underlying <input> via context.\n// We use this to wire a <label for=\"inputId\"> which is axe-safe regardless\n// of how Reka UI handles attr forwarding through its Primitive component.\nconst generatedInputId = useId()\n// Use caller-provided id if given, otherwise our generated id.\nconst resolvedInputId = computed(() => props.id ?? generatedInputId)\n\n// Whether to show a label element (visible or sr-only).\nconst hasLabel = computed(() => !!(props.label || props.ariaLabel))\n// When only ariaLabel is given (no visible label), the label is sr-only.\nconst isLabelVisible = computed(() => !!props.label)\n</script>\n\n<template>\n <NumberFieldRoot\n :id=\"resolvedInputId\"\n v-model=\"modelValue\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :disabled=\"props.isDisabled || undefined\"\n :readonly=\"props.isReadonly || undefined\"\n :format-options=\"props.formatOptions\"\n :locale=\"props.locale\"\n :name=\"props.name\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"props.isInvalid || undefined\"\n :data-disabled=\"props.isDisabled || undefined\"\n :data-readonly=\"props.isReadonly || undefined\"\n >\n <!--\n Label element — always rendered when `label` or `aria-label` is provided.\n When only `aria-label` is given (no visible label) the element is sr-only.\n Uses label[for=resolvedInputId] to wire to the Reka UI input element —\n this is axe-safe because NumberFieldRoot forwards its `id` prop directly\n to the underlying <input> via context, making label[for] reliable even\n though custom attrs passed to NumberFieldInput don't reach the DOM input.\n -->\n <label\n v-if=\"hasLabel\"\n :for=\"resolvedInputId\"\n :class=\"isLabelVisible ? undefined : 'sr-only'\"\n data-slot=\"label\"\n >{{ props.label || props.ariaLabel }}</label>\n\n <!-- Number field control group -->\n <div\n :class=\"composeClassName(slotFns.group(), props.classNames?.group)\"\n data-slot=\"group\"\n >\n <NumberFieldDecrement :class=\"composeClassName(slotFns.decrementButton(), props.classNames?.decrementButton)\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-decrement-button-icon\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n </NumberFieldDecrement>\n\n <NumberFieldInput\n :class=\"composeClassName(slotFns.input(), props.classNames?.input)\"\n :placeholder=\"props.placeholder\"\n />\n\n <NumberFieldIncrement :class=\"composeClassName(slotFns.incrementButton(), props.classNames?.incrementButton)\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-increment-button-icon\"\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n </NumberFieldIncrement>\n </div>\n </NumberFieldRoot>\n</template>\n"],"mappings":""}
@@ -36,7 +36,14 @@ var NumberField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
36
36
  placeholder: {},
37
37
  label: { default: void 0 },
38
38
  ariaLabel: { default: void 0 },
39
- class: {}
39
+ class: { type: [
40
+ String,
41
+ Boolean,
42
+ null,
43
+ Object,
44
+ Array
45
+ ] },
46
+ classNames: {}
40
47
  }, {
41
48
  "modelValue": {},
42
49
  "modelModifiers": {}
@@ -71,7 +78,7 @@ var NumberField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
71
78
  "format-options": props.formatOptions,
72
79
  locale: props.locale,
73
80
  name: props.name,
74
- class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class)),
81
+ class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base)),
75
82
  "data-invalid": props.isInvalid || void 0,
76
83
  "data-disabled": props.isDisabled || void 0,
77
84
  "data-readonly": props.isReadonly || void 0
@@ -82,10 +89,10 @@ var NumberField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
82
89
  class: normalizeClass(isLabelVisible.value ? void 0 : "sr-only"),
83
90
  "data-slot": "label"
84
91
  }, toDisplayString(props.label || props.ariaLabel), 11, _hoisted_1)) : createCommentVNode("", true), createElementVNode("div", {
85
- class: normalizeClass(slotFns.value.group()),
92
+ class: normalizeClass(unref(composeClassName)(slotFns.value.group(), props.classNames?.group)),
86
93
  "data-slot": "group"
87
94
  }, [
88
- createVNode(unref(NumberFieldDecrement), { class: normalizeClass(slotFns.value.decrementButton()) }, {
95
+ createVNode(unref(NumberFieldDecrement), { class: normalizeClass(unref(composeClassName)(slotFns.value.decrementButton(), props.classNames?.decrementButton)) }, {
89
96
  default: withCtx(() => [..._cache[1] || (_cache[1] = [createElementVNode("svg", {
90
97
  "aria-hidden": "true",
91
98
  xmlns: "http://www.w3.org/2000/svg",
@@ -102,10 +109,10 @@ var NumberField_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
102
109
  _: 1
103
110
  }, 8, ["class"]),
104
111
  createVNode(unref(NumberFieldInput), {
105
- class: normalizeClass(slotFns.value.input()),
112
+ class: normalizeClass(unref(composeClassName)(slotFns.value.input(), props.classNames?.input)),
106
113
  placeholder: props.placeholder
107
114
  }, null, 8, ["class", "placeholder"]),
108
- createVNode(unref(NumberFieldIncrement), { class: normalizeClass(slotFns.value.incrementButton()) }, {
115
+ createVNode(unref(NumberFieldIncrement), { class: normalizeClass(unref(composeClassName)(slotFns.value.incrementButton(), props.classNames?.incrementButton)) }, {
109
116
  default: withCtx(() => [..._cache[2] || (_cache[2] = [createElementVNode("svg", {
110
117
  "aria-hidden": "true",
111
118
  xmlns: "http://www.w3.org/2000/svg",
@@ -1 +1 @@
1
- {"version":3,"file":"NumberField.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/number-field/NumberField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useId } from 'vue'\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n} from 'reka-ui'\nimport { numberFieldVariants, type NumberFieldVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n variant?: NumberFieldVariants['variant']\n size?: NumberFieldVariants['size']\n color?: NumberFieldVariants['color']\n fullWidth?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isReadonly?: boolean\n min?: number\n max?: number\n step?: number\n formatOptions?: Intl.NumberFormatOptions\n locale?: string\n name?: string\n id?: string\n placeholder?: string\n label?: string\n // camelCase prop; in templates users write aria-label=\"…\" (Vue auto-converts)\n ariaLabel?: string\n class?: string\n}>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n step: 1,\n min: undefined,\n max: undefined,\n formatOptions: undefined,\n locale: undefined,\n label: undefined,\n ariaLabel: undefined,\n})\n\nconst modelValue = defineModel<number | undefined>()\n\nconst slotFns = computed(() =>\n numberFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n })\n)\n\n// Generate a stable id for the input element.\n// NumberFieldRoot forwards this id to the underlying <input> via context.\n// We use this to wire a <label for=\"inputId\"> which is axe-safe regardless\n// of how Reka UI handles attr forwarding through its Primitive component.\nconst generatedInputId = useId()\n// Use caller-provided id if given, otherwise our generated id.\nconst resolvedInputId = computed(() => props.id ?? generatedInputId)\n\n// Whether to show a label element (visible or sr-only).\nconst hasLabel = computed(() => !!(props.label || props.ariaLabel))\n// When only ariaLabel is given (no visible label), the label is sr-only.\nconst isLabelVisible = computed(() => !!props.label)\n</script>\n\n<template>\n <NumberFieldRoot\n :id=\"resolvedInputId\"\n v-model=\"modelValue\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :disabled=\"props.isDisabled || undefined\"\n :readonly=\"props.isReadonly || undefined\"\n :format-options=\"props.formatOptions\"\n :locale=\"props.locale\"\n :name=\"props.name\"\n :class=\"composeClassName(slotFns.base(), props.class)\"\n :data-invalid=\"props.isInvalid || undefined\"\n :data-disabled=\"props.isDisabled || undefined\"\n :data-readonly=\"props.isReadonly || undefined\"\n >\n <!--\n Label element — always rendered when `label` or `aria-label` is provided.\n When only `aria-label` is given (no visible label) the element is sr-only.\n Uses label[for=resolvedInputId] to wire to the Reka UI input element —\n this is axe-safe because NumberFieldRoot forwards its `id` prop directly\n to the underlying <input> via context, making label[for] reliable even\n though custom attrs passed to NumberFieldInput don't reach the DOM input.\n -->\n <label\n v-if=\"hasLabel\"\n :for=\"resolvedInputId\"\n :class=\"isLabelVisible ? undefined : 'sr-only'\"\n data-slot=\"label\"\n >{{ props.label || props.ariaLabel }}</label>\n\n <!-- Number field control group -->\n <div\n :class=\"slotFns.group()\"\n data-slot=\"group\"\n >\n <NumberFieldDecrement :class=\"slotFns.decrementButton()\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-decrement-button-icon\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n </NumberFieldDecrement>\n\n <NumberFieldInput\n :class=\"slotFns.input()\"\n :placeholder=\"props.placeholder\"\n />\n\n <NumberFieldIncrement :class=\"slotFns.incrementButton()\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-increment-button-icon\"\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n </NumberFieldIncrement>\n </div>\n </NumberFieldRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EAqCd,MAAM,aAAa,SAA+B,SAAA,aAAC;EAEnD,MAAM,UAAU,eACd,oBAAoB;GAClB,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,WAAW,MAAM;GACjB,WAAW,MAAM;GACjB,YAAY,MAAM;GAClB,YAAY,MAAM;GACnB,CAAA,CACH;EAMA,MAAM,mBAAmB,OAAM;EAE/B,MAAM,kBAAkB,eAAe,MAAM,MAAM,iBAAgB;EAGnE,MAAM,WAAW,eAAe,CAAC,EAAE,MAAM,SAAS,MAAM,WAAU;EAElE,MAAM,iBAAiB,eAAe,CAAC,CAAC,MAAM,MAAK;;uBAIjD,YA8EkB,MAAA,gBAAA,EAAA;IA7Ef,IAAI,gBAAA;gBACI,WAAA;4EAAU,QAAA;IAClB,KAAK,MAAM;IACX,KAAK,MAAM;IACX,MAAM,MAAM;IACZ,UAAU,MAAM,cAAc,KAAA;IAC9B,UAAU,MAAM,cAAc,KAAA;IAC9B,kBAAgB,MAAM;IACtB,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,MAAK,CAAA;IACnD,gBAAc,MAAM,aAAa,KAAA;IACjC,iBAAe,MAAM,cAAc,KAAA;IACnC,iBAAe,MAAM,cAAc,KAAA;;2BAeS,CAJrC,SAAA,SAAA,WAAA,EADR,mBAK6C,SAAA;;KAH1C,KAAK,gBAAA;KACL,OAAK,eAAE,eAAA,QAAiB,KAAA,IAAS,UAAA;KAClC,aAAU;uBACR,MAAM,SAAS,MAAM,UAAS,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,EAGlC,mBA6CM,OAAA;KA5CH,OAAK,eAAE,QAAA,MAAQ,OAAK,CAAA;KACrB,aAAU;;KAEV,YAgBuB,MAAA,qBAAA,EAAA,EAhBA,OAAK,eAAE,QAAA,MAAQ,iBAAe,CAAA,EAAA,EAAA;6BAe7C,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAdN,mBAcM,OAAA;OAbJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA;;;KAItB,YAGE,MAAA,iBAAA,EAAA;MAFC,OAAK,eAAE,QAAA,MAAQ,OAAK,CAAA;MACpB,aAAa,MAAM;;KAGtB,YAiBuB,MAAA,qBAAA,EAAA,EAjBA,OAAK,eAAE,QAAA,MAAQ,iBAAe,CAAA,EAAA,EAAA;6BAgB7C,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAfN,mBAeM,OAAA;OAdJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,EAClB,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA"}
1
+ {"version":3,"file":"NumberField.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/number-field/NumberField.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { useId } from 'vue'\nimport {\n NumberFieldRoot,\n NumberFieldInput,\n NumberFieldIncrement,\n NumberFieldDecrement,\n} from 'reka-ui'\nimport { numberFieldVariants, type NumberFieldVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n variant?: NumberFieldVariants['variant']\n size?: NumberFieldVariants['size']\n color?: NumberFieldVariants['color']\n fullWidth?: boolean\n isInvalid?: boolean\n isDisabled?: boolean\n isReadonly?: boolean\n min?: number\n max?: number\n step?: number\n formatOptions?: Intl.NumberFormatOptions\n locale?: string\n name?: string\n id?: string\n placeholder?: string\n label?: string\n // camelCase prop; in templates users write aria-label=\"…\" (Vue auto-converts)\n ariaLabel?: string\n class?: ClassValue\n /** Per-slot classNames override object for custom styling */\n classNames?: Partial<{\n base: ClassValue\n group: ClassValue\n decrementButton: ClassValue\n input: ClassValue\n incrementButton: ClassValue\n }>\n}>(), {\n variant: 'flat',\n size: 'md',\n color: 'default',\n fullWidth: false,\n isInvalid: false,\n isDisabled: false,\n isReadonly: false,\n step: 1,\n min: undefined,\n max: undefined,\n formatOptions: undefined,\n locale: undefined,\n label: undefined,\n ariaLabel: undefined,\n})\n\nconst modelValue = defineModel<number | undefined>()\n\nconst slotFns = computed(() =>\n numberFieldVariants({\n variant: props.variant,\n size: props.size,\n color: props.color,\n fullWidth: props.fullWidth,\n isInvalid: props.isInvalid,\n isDisabled: props.isDisabled,\n isReadonly: props.isReadonly,\n })\n)\n\n// Generate a stable id for the input element.\n// NumberFieldRoot forwards this id to the underlying <input> via context.\n// We use this to wire a <label for=\"inputId\"> which is axe-safe regardless\n// of how Reka UI handles attr forwarding through its Primitive component.\nconst generatedInputId = useId()\n// Use caller-provided id if given, otherwise our generated id.\nconst resolvedInputId = computed(() => props.id ?? generatedInputId)\n\n// Whether to show a label element (visible or sr-only).\nconst hasLabel = computed(() => !!(props.label || props.ariaLabel))\n// When only ariaLabel is given (no visible label), the label is sr-only.\nconst isLabelVisible = computed(() => !!props.label)\n</script>\n\n<template>\n <NumberFieldRoot\n :id=\"resolvedInputId\"\n v-model=\"modelValue\"\n :min=\"props.min\"\n :max=\"props.max\"\n :step=\"props.step\"\n :disabled=\"props.isDisabled || undefined\"\n :readonly=\"props.isReadonly || undefined\"\n :format-options=\"props.formatOptions\"\n :locale=\"props.locale\"\n :name=\"props.name\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-invalid=\"props.isInvalid || undefined\"\n :data-disabled=\"props.isDisabled || undefined\"\n :data-readonly=\"props.isReadonly || undefined\"\n >\n <!--\n Label element — always rendered when `label` or `aria-label` is provided.\n When only `aria-label` is given (no visible label) the element is sr-only.\n Uses label[for=resolvedInputId] to wire to the Reka UI input element —\n this is axe-safe because NumberFieldRoot forwards its `id` prop directly\n to the underlying <input> via context, making label[for] reliable even\n though custom attrs passed to NumberFieldInput don't reach the DOM input.\n -->\n <label\n v-if=\"hasLabel\"\n :for=\"resolvedInputId\"\n :class=\"isLabelVisible ? undefined : 'sr-only'\"\n data-slot=\"label\"\n >{{ props.label || props.ariaLabel }}</label>\n\n <!-- Number field control group -->\n <div\n :class=\"composeClassName(slotFns.group(), props.classNames?.group)\"\n data-slot=\"group\"\n >\n <NumberFieldDecrement :class=\"composeClassName(slotFns.decrementButton(), props.classNames?.decrementButton)\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-decrement-button-icon\"\n >\n <path d=\"M5 12h14\" />\n </svg>\n </NumberFieldDecrement>\n\n <NumberFieldInput\n :class=\"composeClassName(slotFns.input(), props.classNames?.input)\"\n :placeholder=\"props.placeholder\"\n />\n\n <NumberFieldIncrement :class=\"composeClassName(slotFns.incrementButton(), props.classNames?.incrementButton)\">\n <svg\n aria-hidden=\"true\"\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 data-slot=\"number-field-increment-button-icon\"\n >\n <path d=\"M5 12h14\" />\n <path d=\"M12 5v14\" />\n </svg>\n </NumberFieldIncrement>\n </div>\n </NumberFieldRoot>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAYA,MAAM,QAAQ;EA6Cd,MAAM,aAAa,SAA+B,SAAA,aAAC;EAEnD,MAAM,UAAU,eACd,oBAAoB;GAClB,SAAS,MAAM;GACf,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,WAAW,MAAM;GACjB,WAAW,MAAM;GACjB,YAAY,MAAM;GAClB,YAAY,MAAM;GACnB,CAAA,CACH;EAMA,MAAM,mBAAmB,OAAM;EAE/B,MAAM,kBAAkB,eAAe,MAAM,MAAM,iBAAgB;EAGnE,MAAM,WAAW,eAAe,CAAC,EAAE,MAAM,SAAS,MAAM,WAAU;EAElE,MAAM,iBAAiB,eAAe,CAAC,CAAC,MAAM,MAAK;;uBAIjD,YA8EkB,MAAA,gBAAA,EAAA;IA7Ef,IAAI,gBAAA;gBACI,WAAA;4EAAU,QAAA;IAClB,KAAK,MAAM;IACX,KAAK,MAAM;IACX,MAAM,MAAM;IACZ,UAAU,MAAM,cAAc,KAAA;IAC9B,UAAU,MAAM,cAAc,KAAA;IAC9B,kBAAgB,MAAM;IACtB,QAAQ,MAAM;IACd,MAAM,MAAM;IACZ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,gBAAc,MAAM,aAAa,KAAA;IACjC,iBAAe,MAAM,cAAc,KAAA;IACnC,iBAAe,MAAM,cAAc,KAAA;;2BAeS,CAJrC,SAAA,SAAA,WAAA,EADR,mBAK6C,SAAA;;KAH1C,KAAK,gBAAA;KACL,OAAK,eAAE,eAAA,QAAiB,KAAA,IAAS,UAAA;KAClC,aAAU;uBACR,MAAM,SAAS,MAAM,UAAS,EAAA,IAAA,WAAA,IAAA,mBAAA,IAAA,KAAA,EAGlC,mBA6CM,OAAA;KA5CH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;KACjE,aAAU;;KAEV,YAgBuB,MAAA,qBAAA,EAAA,EAhBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,iBAAe,EAAI,MAAM,YAAY,gBAAe,CAAA,EAAA,EAAA;6BAenG,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAdN,mBAcM,OAAA;OAbJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA;;;KAItB,YAGE,MAAA,iBAAA,EAAA;MAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;MAChE,aAAa,MAAM;;KAGtB,YAiBuB,MAAA,qBAAA,EAAA,EAjBA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,iBAAe,EAAI,MAAM,YAAY,gBAAe,CAAA,EAAA,EAAA;6BAgBnG,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAfN,mBAeM,OAAA;OAdJ,eAAY;OACZ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;UAEV,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,EAClB,mBAAqB,QAAA,EAAf,GAAE,YAAU,CAAA,CAAA,EAAA,GAAA,CAAA,EAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.js","names":[],"sources":["../../../src/components/progress-bar/ProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot, ProgressIndicator } from 'reka-ui'\nimport { progressBarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n isStriped?: boolean\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: string\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n isStriped: false,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\nconst slotFns = computed(() =>\n progressBarVariants({\n size: props.size,\n color: props.color,\n radius: props.radius,\n isStriped: props.isStriped,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(percentage.value)) + '%'\n})\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class)\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <div\n v-if=\"label || showValueLabel\"\n :class=\"slotFns.labelWrapper()\"\n >\n <span\n v-if=\"label\"\n :class=\"slotFns.label()\"\n >{{ label }}</span>\n <span\n v-if=\"showValueLabel\"\n :class=\"slotFns.value()\"\n >{{ formattedValue }}</span>\n </div>\n <ProgressRoot\n :model-value=\"isInd ? null : (props.value as number)\"\n :max=\"maxValue\"\n :class=\"slotFns.track()\"\n :aria-label=\"label || 'Progress'\"\n >\n <ProgressIndicator\n :class=\"slotFns.indicator()\"\n :style=\"isInd ? {} : { transform: `translateX(-${100 - percentage}%)` }\"\n />\n </ProgressRoot>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ProgressBar.js","names":[],"sources":["../../../src/components/progress-bar/ProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot, ProgressIndicator } from 'reka-ui'\nimport { progressBarVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n isStriped?: boolean\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n labelWrapper: ClassValue\n label: ClassValue\n value: ClassValue\n track: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n isStriped: false,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\nconst slotFns = computed(() =>\n progressBarVariants({\n size: props.size,\n color: props.color,\n radius: props.radius,\n isStriped: props.isStriped,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(percentage.value)) + '%'\n})\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <div\n v-if=\"label || showValueLabel\"\n :class=\"composeClassName(slotFns.labelWrapper(), props.classNames?.labelWrapper)\"\n >\n <span\n v-if=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <span\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.value(), props.classNames?.value)\"\n >{{ formattedValue }}</span>\n </div>\n <ProgressRoot\n :model-value=\"isInd ? null : (props.value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n :aria-label=\"label || 'Progress'\"\n >\n <ProgressIndicator\n :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\"\n :style=\"isInd ? {} : { transform: `translateX(-${100 - percentage}%)` }\"\n />\n </ProgressRoot>\n </div>\n</template>\n"],"mappings":""}
@@ -32,7 +32,14 @@ var ProgressBar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
32
32
  type: Boolean,
33
33
  default: false
34
34
  },
35
- class: {}
35
+ class: { type: [
36
+ String,
37
+ Boolean,
38
+ null,
39
+ Object,
40
+ Array
41
+ ] },
42
+ classNames: {}
36
43
  },
37
44
  setup(__props) {
38
45
  const props = __props;
@@ -57,25 +64,25 @@ var ProgressBar_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
57
64
  });
58
65
  return (_ctx, _cache) => {
59
66
  return openBlock(), createElementBlock("div", {
60
- class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class)),
67
+ class: normalizeClass(unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base)),
61
68
  "data-disabled": __props.isDisabled ? "" : void 0
62
69
  }, [__props.label || __props.showValueLabel ? (openBlock(), createElementBlock("div", {
63
70
  key: 0,
64
- class: normalizeClass(slotFns.value.labelWrapper())
71
+ class: normalizeClass(unref(composeClassName)(slotFns.value.labelWrapper(), props.classNames?.labelWrapper))
65
72
  }, [__props.label ? (openBlock(), createElementBlock("span", {
66
73
  key: 0,
67
- class: normalizeClass(slotFns.value.label())
74
+ class: normalizeClass(unref(composeClassName)(slotFns.value.label(), props.classNames?.label))
68
75
  }, toDisplayString(__props.label), 3)) : createCommentVNode("", true), __props.showValueLabel ? (openBlock(), createElementBlock("span", {
69
76
  key: 1,
70
- class: normalizeClass(slotFns.value.value())
77
+ class: normalizeClass(unref(composeClassName)(slotFns.value.value(), props.classNames?.value))
71
78
  }, toDisplayString(formattedValue.value), 3)) : createCommentVNode("", true)], 2)) : createCommentVNode("", true), createVNode(unref(ProgressRoot), {
72
79
  "model-value": isInd.value ? null : props.value,
73
80
  max: __props.maxValue,
74
- class: normalizeClass(slotFns.value.track()),
81
+ class: normalizeClass(unref(composeClassName)(slotFns.value.track(), props.classNames?.track)),
75
82
  "aria-label": __props.label || "Progress"
76
83
  }, {
77
84
  default: withCtx(() => [createVNode(unref(ProgressIndicator), {
78
- class: normalizeClass(slotFns.value.indicator()),
85
+ class: normalizeClass(unref(composeClassName)(slotFns.value.indicator(), props.classNames?.indicator)),
79
86
  style: normalizeStyle(isInd.value ? {} : { transform: `translateX(-${100 - percentage.value}%)` })
80
87
  }, null, 8, ["class", "style"])]),
81
88
  _: 1
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressBar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress-bar/ProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot, ProgressIndicator } from 'reka-ui'\nimport { progressBarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n isStriped?: boolean\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: string\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n isStriped: false,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\nconst slotFns = computed(() =>\n progressBarVariants({\n size: props.size,\n color: props.color,\n radius: props.radius,\n isStriped: props.isStriped,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(percentage.value)) + '%'\n})\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class)\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <div\n v-if=\"label || showValueLabel\"\n :class=\"slotFns.labelWrapper()\"\n >\n <span\n v-if=\"label\"\n :class=\"slotFns.label()\"\n >{{ label }}</span>\n <span\n v-if=\"showValueLabel\"\n :class=\"slotFns.value()\"\n >{{ formattedValue }}</span>\n </div>\n <ProgressRoot\n :model-value=\"isInd ? null : (props.value as number)\"\n :max=\"maxValue\"\n :class=\"slotFns.track()\"\n :aria-label=\"label || 'Progress'\"\n >\n <ProgressIndicator\n :class=\"slotFns.indicator()\"\n :style=\"isInd ? {} : { transform: `translateX(-${100 - percentage}%)` }\"\n />\n </ProgressRoot>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAwBd,MAAM,QAAQ,eACN,MAAM,mBAAmB,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EACzE;EAEA,MAAM,aAAa,eAAe;AAChC,OAAI,MAAM,MAAO,QAAO;AAExB,WADY,MAAM,QACH,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;IACvE;EAED,MAAM,UAAU,eACd,oBAAoB;GAClB,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,WAAW,MAAM;GACjB,iBAAiB,MAAM;GACvB,YAAY,MAAM;GACnB,CAAA,CACH;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EAAW,QAAO;AAC9D,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,OAAO,KAAK,MAAM,WAAW,MAAM,CAAC,GAAG;IAC/C;;uBAIC,mBA4BM,OAAA;IA3BH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,MAAK,CAAA;IACnD,iBAAe,QAAA,aAAU,KAAQ,KAAA;OAG1B,QAAA,SAAS,QAAA,kBAAA,WAAA,EADjB,mBAYM,OAAA;;IAVH,OAAK,eAAE,QAAA,MAAQ,cAAY,CAAA;OAGpB,QAAA,SAAA,WAAA,EADR,mBAGmB,QAAA;;IADhB,OAAK,eAAE,QAAA,MAAQ,OAAK,CAAA;sBACnB,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAED,QAAA,kBAAA,WAAA,EADR,mBAG4B,QAAA;;IADzB,OAAK,eAAE,QAAA,MAAQ,OAAK,CAAA;sBACnB,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAEpB,YAUe,MAAA,aAAA,EAAA;IATZ,eAAa,MAAA,QAAK,OAAW,MAAM;IACnC,KAAK,QAAA;IACL,OAAK,eAAE,QAAA,MAAQ,OAAK,CAAA;IACpB,cAAY,QAAA,SAAK;;2BAKhB,CAHF,YAGE,MAAA,kBAAA,EAAA;KAFC,OAAK,eAAE,QAAA,MAAQ,WAAS,CAAA;KACxB,OAAK,eAAE,MAAA,QAAK,EAAA,GAAA,EAAA,WAAA,eAAA,MAA0C,WAAA,MAAU,KAAA,CAAA"}
1
+ {"version":3,"file":"ProgressBar.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/progress-bar/ProgressBar.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot, ProgressIndicator } from 'reka-ui'\nimport { progressBarVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n radius?: 'none' | 'sm' | 'md' | 'lg' | 'full'\n isStriped?: boolean\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n labelWrapper: ClassValue\n label: ClassValue\n value: ClassValue\n track: ClassValue\n indicator: ClassValue\n }>\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n isStriped: false,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\nconst slotFns = computed(() =>\n progressBarVariants({\n size: props.size,\n color: props.color,\n radius: props.radius,\n isStriped: props.isStriped,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(percentage.value)) + '%'\n})\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <div\n v-if=\"label || showValueLabel\"\n :class=\"composeClassName(slotFns.labelWrapper(), props.classNames?.labelWrapper)\"\n >\n <span\n v-if=\"label\"\n :class=\"composeClassName(slotFns.label(), props.classNames?.label)\"\n >{{ label }}</span>\n <span\n v-if=\"showValueLabel\"\n :class=\"composeClassName(slotFns.value(), props.classNames?.value)\"\n >{{ formattedValue }}</span>\n </div>\n <ProgressRoot\n :model-value=\"isInd ? null : (props.value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n :aria-label=\"label || 'Progress'\"\n >\n <ProgressIndicator\n :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\"\n :style=\"isInd ? {} : { transform: `translateX(-${100 - percentage}%)` }\"\n />\n </ProgressRoot>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EAiCd,MAAM,QAAQ,eACN,MAAM,mBAAmB,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EACzE;EAEA,MAAM,aAAa,eAAe;AAChC,OAAI,MAAM,MAAO,QAAO;AAExB,WADY,MAAM,QACH,MAAM,aAAa,MAAM,WAAW,MAAM,YAAa;IACvE;EAED,MAAM,UAAU,eACd,oBAAoB;GAClB,MAAM,MAAM;GACZ,OAAO,MAAM;GACb,QAAQ,MAAM;GACd,WAAW,MAAM;GACjB,iBAAiB,MAAM;GACvB,YAAY,MAAM;GACnB,CAAA,CACH;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,MAAM,WAAY,QAAO,MAAM;AACnC,OAAI,MAAM,UAAU,QAAQ,MAAM,UAAU,KAAA,EAAW,QAAO;AAC9D,OAAI,MAAM,cACR,QAAO,IAAI,KAAK,aAAa,KAAA,GAAW,MAAM,cAAc,CAAC,OAAO,MAAM,MAAK;AAEjF,UAAO,OAAO,KAAK,MAAM,WAAW,MAAM,CAAC,GAAG;IAC/C;;uBAIC,mBA4BM,OAAA;IA3BH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,iBAAe,QAAA,aAAU,KAAQ,KAAA;OAG1B,QAAA,SAAS,QAAA,kBAAA,WAAA,EADjB,mBAYM,OAAA;;IAVH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;OAGvE,QAAA,SAAA,WAAA,EADR,mBAGmB,QAAA;;IADhB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;sBAC/D,QAAA,MAAK,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAED,QAAA,kBAAA,WAAA,EADR,mBAG4B,QAAA;;IADzB,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;sBAC/D,eAAA,MAAc,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA,EAEpB,YAUe,MAAA,aAAA,EAAA;IATZ,eAAa,MAAA,QAAK,OAAW,MAAM;IACnC,KAAK,QAAA;IACL,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA;IAChE,cAAY,QAAA,SAAK;;2BAKhB,CAHF,YAGE,MAAA,kBAAA,EAAA;KAFC,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,WAAS,EAAI,MAAM,YAAY,UAAS,CAAA;KACxE,OAAK,eAAE,MAAA,QAAK,EAAA,GAAA,EAAA,WAAA,eAAA,MAA0C,WAAA,MAAU,KAAA,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"ProgressCircle.js","names":[],"sources":["../../../src/components/progress-circle/ProgressCircle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot } from 'reka-ui'\nimport { progressCircleVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n strokeWidth?: number\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: string\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n strokeWidth: 3,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\n// SVG geometry\nconst radius = computed(() => 16 - props.strokeWidth)\nconst circumference = computed(() => 2 * Math.PI * radius.value)\nconst offset = computed(() =>\n isInd.value ? circumference.value * 0.25 : circumference.value * (1 - percentage.value / 100)\n)\n\nconst slotFns = computed(() =>\n progressCircleVariants({\n size: props.size,\n color: props.color,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(props.value as number))\n})\n</script>\n\n<template>\n <ProgressRoot\n :model-value=\"isInd ? null : (value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.base(), props.class)\"\n :aria-label=\"label || 'Progress'\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <svg\n :class=\"slotFns.svg()\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <!-- Track circle -->\n <circle\n :class=\"slotFns.track()\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n />\n <!-- Indicator (progress) circle -->\n <circle\n :class=\"slotFns.indicator()\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n stroke-linecap=\"round\"\n :stroke-dasharray=\"circumference\"\n :stroke-dashoffset=\"offset\"\n transform=\"rotate(-90 16 16)\"\n style=\"transition: stroke-dashoffset 300ms ease-out\"\n />\n </svg>\n <span\n v-if=\"showValueLabel || label\"\n :class=\"slotFns.value()\"\n >\n <slot>{{ formattedValue }}</slot>\n </span>\n </ProgressRoot>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ProgressCircle.js","names":[],"sources":["../../../src/components/progress-circle/ProgressCircle.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed } from 'vue'\nimport { ProgressRoot } from 'reka-ui'\nimport { progressCircleVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\n\nconst props = withDefaults(defineProps<{\n value?: number | null\n minValue?: number\n maxValue?: number\n label?: string\n valueLabel?: string\n showValueLabel?: boolean\n formatOptions?: Intl.NumberFormatOptions\n size?: 'sm' | 'md' | 'lg'\n color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger'\n strokeWidth?: number\n isIndeterminate?: boolean\n isDisabled?: boolean\n class?: ClassValue\n /** Override classNames for individual slots */\n classNames?: Partial<{\n base: ClassValue\n svg: ClassValue\n track: ClassValue\n indicator: ClassValue\n value: ClassValue\n }>\n}>(), {\n minValue: 0,\n maxValue: 100,\n showValueLabel: false,\n strokeWidth: 3,\n isIndeterminate: false,\n isDisabled: false,\n})\n\nconst isInd = computed(\n () => props.isIndeterminate || props.value === null || props.value === undefined\n)\n\nconst percentage = computed(() => {\n if (isInd.value) return 0\n const val = props.value as number\n return ((val - props.minValue) / (props.maxValue - props.minValue)) * 100\n})\n\n// SVG geometry\nconst radius = computed(() => 16 - props.strokeWidth)\nconst circumference = computed(() => 2 * Math.PI * radius.value)\nconst offset = computed(() =>\n isInd.value ? circumference.value * 0.25 : circumference.value * (1 - percentage.value / 100)\n)\n\nconst slotFns = computed(() =>\n progressCircleVariants({\n size: props.size,\n color: props.color,\n isIndeterminate: isInd.value,\n isDisabled: props.isDisabled,\n })\n)\n\nconst formattedValue = computed(() => {\n if (props.valueLabel) return props.valueLabel\n if (props.value === null || props.value === undefined) return ''\n if (props.formatOptions) {\n return new Intl.NumberFormat(undefined, props.formatOptions).format(props.value)\n }\n return String(Math.round(props.value as number))\n})\n</script>\n\n<template>\n <ProgressRoot\n :model-value=\"isInd ? null : (value as number)\"\n :max=\"maxValue\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :aria-label=\"label || 'Progress'\"\n :data-disabled=\"isDisabled ? '' : undefined\"\n >\n <svg\n :class=\"composeClassName(slotFns.svg(), props.classNames?.svg)\"\n viewBox=\"0 0 32 32\"\n fill=\"none\"\n aria-hidden=\"true\"\n >\n <!-- Track circle -->\n <circle\n :class=\"composeClassName(slotFns.track(), props.classNames?.track)\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n />\n <!-- Indicator (progress) circle -->\n <circle\n :class=\"composeClassName(slotFns.indicator(), props.classNames?.indicator)\"\n cx=\"16\"\n cy=\"16\"\n :r=\"radius\"\n :stroke-width=\"strokeWidth\"\n fill=\"none\"\n stroke-linecap=\"round\"\n :stroke-dasharray=\"circumference\"\n :stroke-dashoffset=\"offset\"\n transform=\"rotate(-90 16 16)\"\n style=\"transition: stroke-dashoffset 300ms ease-out\"\n />\n </svg>\n <span\n v-if=\"showValueLabel || label\"\n :class=\"composeClassName(slotFns.value(), props.classNames?.value)\"\n >\n <slot>{{ formattedValue }}</slot>\n </span>\n </ProgressRoot>\n</template>\n"],"mappings":""}