@auronui/vue 1.2.2 → 1.4.0

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 (440) hide show
  1. package/ai-rules.md +165 -1
  2. package/dist/cjs/index.cjs +18335 -13786
  3. package/dist/cjs/index.cjs.map +1 -1
  4. package/dist/components/_shared/FieldLabel.js +7 -0
  5. package/dist/components/_shared/FieldLabel.js.map +1 -0
  6. package/dist/components/_shared/FieldLabel.vue_vue_type_script_setup_true_lang.js +38 -0
  7. package/dist/components/_shared/FieldLabel.vue_vue_type_script_setup_true_lang.js.map +1 -0
  8. package/dist/components/_shared/FormFieldHelper.js +7 -0
  9. package/dist/components/_shared/FormFieldHelper.js.map +1 -0
  10. package/dist/components/_shared/FormFieldHelper.vue_vue_type_script_setup_true_lang.js +59 -0
  11. package/dist/components/_shared/FormFieldHelper.vue_vue_type_script_setup_true_lang.js.map +1 -0
  12. package/dist/components/_shared/TimeScroller.js +7 -0
  13. package/dist/components/_shared/TimeScroller.js.map +1 -0
  14. package/dist/components/{date-time-picker/DateTimePickerTimeScroller.vue_vue_type_script_setup_true_lang.js → _shared/TimeScroller.vue_vue_type_script_setup_true_lang.js} +5 -6
  15. package/dist/components/_shared/TimeScroller.vue_vue_type_script_setup_true_lang.js.map +1 -0
  16. package/dist/components/accordion/Accordion.js.map +1 -1
  17. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js +10 -4
  18. package/dist/components/accordion/Accordion.vue_vue_type_script_setup_true_lang.js.map +1 -1
  19. package/dist/components/accordion/AccordionItem.js.map +1 -1
  20. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js +11 -2
  21. package/dist/components/accordion/AccordionItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  22. package/dist/components/alert-dialog/AlertDialogAction.js.map +1 -1
  23. package/dist/components/alert-dialog/AlertDialogAction.vue_vue_type_script_setup_true_lang.js.map +1 -1
  24. package/dist/components/alert-dialog/AlertDialogCancel.js.map +1 -1
  25. package/dist/components/alert-dialog/AlertDialogCancel.vue_vue_type_script_setup_true_lang.js.map +1 -1
  26. package/dist/components/autocomplete/Autocomplete.js.map +1 -1
  27. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js +60 -53
  28. package/dist/components/autocomplete/Autocomplete.vue_vue_type_script_setup_true_lang.js.map +1 -1
  29. package/dist/components/autocomplete/AutocompleteCreateItem.js.map +1 -1
  30. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js +8 -2
  31. package/dist/components/autocomplete/AutocompleteCreateItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  32. package/dist/components/autocomplete/AutocompleteInput.js.map +1 -1
  33. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js +17 -8
  34. package/dist/components/autocomplete/AutocompleteInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  35. package/dist/components/autocomplete/AutocompleteItem.js.map +1 -1
  36. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js +4 -2
  37. package/dist/components/autocomplete/AutocompleteItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  38. package/dist/components/avatar/AvatarGroup.js.map +1 -1
  39. package/dist/components/avatar/AvatarGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  40. package/dist/components/button/Button.js.map +1 -1
  41. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js +10 -4
  42. package/dist/components/button/Button.vue_vue_type_script_setup_true_lang.js.map +1 -1
  43. package/dist/components/button/ButtonGroup.js.map +1 -1
  44. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js +10 -4
  45. package/dist/components/button/ButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  46. package/dist/components/button/CloseButton.js.map +1 -1
  47. package/dist/components/button/CloseButton.vue_vue_type_script_setup_true_lang.js +10 -4
  48. package/dist/components/button/CloseButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  49. package/dist/components/button/ToggleButton.js.map +1 -1
  50. package/dist/components/button/ToggleButton.vue_vue_type_script_setup_true_lang.js +17 -6
  51. package/dist/components/button/ToggleButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  52. package/dist/components/button/ToggleButtonGroup.js.map +1 -1
  53. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js +10 -4
  54. package/dist/components/button/ToggleButtonGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  55. package/dist/components/calendar/Calendar.js.map +1 -1
  56. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js +21 -10
  57. package/dist/components/calendar/Calendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  58. package/dist/components/calendar-year-picker/CalendarYearPicker.js.map +1 -1
  59. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js +15 -4
  60. package/dist/components/calendar-year-picker/CalendarYearPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  61. package/dist/components/checkbox/Checkbox.js.map +1 -1
  62. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js +16 -5
  63. package/dist/components/checkbox/Checkbox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  64. package/dist/components/checkbox/CheckboxGroup.js.map +1 -1
  65. package/dist/components/checkbox/CheckboxGroup.vue_vue_type_script_setup_true_lang.js +10 -4
  66. package/dist/components/checkbox/CheckboxGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  67. package/dist/components/chip/Chip.js.map +1 -1
  68. package/dist/components/chip/Chip.vue_vue_type_script_setup_true_lang.js.map +1 -1
  69. package/dist/components/collapsible/Collapsible.js.map +1 -1
  70. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js +8 -2
  71. package/dist/components/collapsible/Collapsible.vue_vue_type_script_setup_true_lang.js.map +1 -1
  72. package/dist/components/collapsible/CollapsibleGroup.js.map +1 -1
  73. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js +2 -2
  74. package/dist/components/collapsible/CollapsibleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  75. package/dist/components/color-area/ColorArea.js.map +1 -1
  76. package/dist/components/color-area/ColorArea.vue_vue_type_script_setup_true_lang.js +15 -4
  77. package/dist/components/color-area/ColorArea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  78. package/dist/components/color-field/ColorField.js.map +1 -1
  79. package/dist/components/color-field/ColorField.vue_vue_type_script_setup_true_lang.js +22 -6
  80. package/dist/components/color-field/ColorField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  81. package/dist/components/color-input-group/ColorInputGroup.js.map +1 -1
  82. package/dist/components/color-input-group/ColorInputGroup.vue_vue_type_script_setup_true_lang.js +22 -6
  83. package/dist/components/color-input-group/ColorInputGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  84. package/dist/components/color-picker/ColorPicker.js.map +1 -1
  85. package/dist/components/color-picker/ColorPicker.vue_vue_type_script_setup_true_lang.js +15 -9
  86. package/dist/components/color-picker/ColorPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  87. package/dist/components/color-slider/ColorSlider.js.map +1 -1
  88. package/dist/components/color-slider/ColorSlider.vue_vue_type_script_setup_true_lang.js +15 -4
  89. package/dist/components/color-slider/ColorSlider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  90. package/dist/components/color-swatch-picker/ColorSwatchPicker.js.map +1 -1
  91. package/dist/components/color-swatch-picker/ColorSwatchPicker.vue_vue_type_script_setup_true_lang.js +15 -4
  92. package/dist/components/color-swatch-picker/ColorSwatchPicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  93. package/dist/components/combo-box/ComboBoxInput.js.map +1 -1
  94. package/dist/components/combo-box/ComboBoxInput.vue_vue_type_script_setup_true_lang.js +7 -1
  95. package/dist/components/combo-box/ComboBoxInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  96. package/dist/components/combo-box/ComboBoxItem.js.map +1 -1
  97. package/dist/components/combo-box/ComboBoxItem.vue_vue_type_script_setup_true_lang.js +4 -2
  98. package/dist/components/combo-box/ComboBoxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  99. package/dist/components/context-menu/ContextMenu.js +7 -0
  100. package/dist/components/context-menu/ContextMenu.js.map +1 -0
  101. package/dist/components/context-menu/ContextMenu.vue_vue_type_script_setup_true_lang.js +38 -0
  102. package/dist/components/context-menu/ContextMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  103. package/dist/components/context-menu/ContextMenuCheckboxItem.js +7 -0
  104. package/dist/components/context-menu/ContextMenuCheckboxItem.js.map +1 -0
  105. package/dist/components/context-menu/ContextMenuCheckboxItem.vue_vue_type_script_setup_true_lang.js +91 -0
  106. package/dist/components/context-menu/ContextMenuCheckboxItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  107. package/dist/components/context-menu/ContextMenuContent.js +7 -0
  108. package/dist/components/context-menu/ContextMenuContent.js.map +1 -0
  109. package/dist/components/context-menu/ContextMenuContent.vue_vue_type_script_setup_true_lang.js +135 -0
  110. package/dist/components/context-menu/ContextMenuContent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  111. package/dist/components/context-menu/ContextMenuItem.js +7 -0
  112. package/dist/components/context-menu/ContextMenuItem.js.map +1 -0
  113. package/dist/components/context-menu/ContextMenuItem.vue_vue_type_script_setup_true_lang.js +74 -0
  114. package/dist/components/context-menu/ContextMenuItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  115. package/dist/components/context-menu/ContextMenuRadioGroup.js +7 -0
  116. package/dist/components/context-menu/ContextMenuRadioGroup.js.map +1 -0
  117. package/dist/components/context-menu/ContextMenuRadioGroup.vue_vue_type_script_setup_true_lang.js +40 -0
  118. package/dist/components/context-menu/ContextMenuRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  119. package/dist/components/context-menu/ContextMenuRadioItem.js +7 -0
  120. package/dist/components/context-menu/ContextMenuRadioItem.js.map +1 -0
  121. package/dist/components/context-menu/ContextMenuRadioItem.vue_vue_type_script_setup_true_lang.js +77 -0
  122. package/dist/components/context-menu/ContextMenuRadioItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  123. package/dist/components/context-menu/ContextMenuSection.js +7 -0
  124. package/dist/components/context-menu/ContextMenuSection.js.map +1 -0
  125. package/dist/components/context-menu/ContextMenuSection.vue_vue_type_script_setup_true_lang.js +55 -0
  126. package/dist/components/context-menu/ContextMenuSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
  127. package/dist/components/context-menu/ContextMenuSub.js +7 -0
  128. package/dist/components/context-menu/ContextMenuSub.js.map +1 -0
  129. package/dist/components/context-menu/ContextMenuSub.vue_vue_type_script_setup_true_lang.js +35 -0
  130. package/dist/components/context-menu/ContextMenuSub.vue_vue_type_script_setup_true_lang.js.map +1 -0
  131. package/dist/components/context-menu/ContextMenuSubContent.js +7 -0
  132. package/dist/components/context-menu/ContextMenuSubContent.js.map +1 -0
  133. package/dist/components/context-menu/ContextMenuSubContent.vue_vue_type_script_setup_true_lang.js +155 -0
  134. package/dist/components/context-menu/ContextMenuSubContent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  135. package/dist/components/context-menu/ContextMenuSubTrigger.js +7 -0
  136. package/dist/components/context-menu/ContextMenuSubTrigger.js.map +1 -0
  137. package/dist/components/context-menu/ContextMenuSubTrigger.vue_vue_type_script_setup_true_lang.js +66 -0
  138. package/dist/components/context-menu/ContextMenuSubTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  139. package/dist/components/context-menu/ContextMenuTrigger.js +7 -0
  140. package/dist/components/context-menu/ContextMenuTrigger.js.map +1 -0
  141. package/dist/components/context-menu/ContextMenuTrigger.vue_vue_type_script_setup_true_lang.js +44 -0
  142. package/dist/components/context-menu/ContextMenuTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  143. package/dist/components/date-input/DateInput.js.map +1 -1
  144. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js +61 -60
  145. package/dist/components/date-input/DateInput.vue_vue_type_script_setup_true_lang.js.map +1 -1
  146. package/dist/components/date-range-field/DateRangeField.js.map +1 -1
  147. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js +61 -61
  148. package/dist/components/date-range-field/DateRangeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  149. package/dist/components/date-time-picker/DateTimePicker.js.map +1 -1
  150. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js +13 -13
  151. package/dist/components/date-time-picker/DateTimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -1
  152. package/dist/components/dropdown/DropdownCheckboxItem.js.map +1 -1
  153. package/dist/components/dropdown/DropdownCheckboxItem.vue_vue_type_script_setup_true_lang.js +4 -2
  154. package/dist/components/dropdown/DropdownCheckboxItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  155. package/dist/components/dropdown/DropdownItem.js.map +1 -1
  156. package/dist/components/dropdown/DropdownItem.vue_vue_type_script_setup_true_lang.js +4 -2
  157. package/dist/components/dropdown/DropdownItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  158. package/dist/components/dropdown/DropdownRadioItem.js.map +1 -1
  159. package/dist/components/dropdown/DropdownRadioItem.vue_vue_type_script_setup_true_lang.js +4 -2
  160. package/dist/components/dropdown/DropdownRadioItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  161. package/dist/components/dropdown/DropdownSubTrigger.js.map +1 -1
  162. package/dist/components/dropdown/DropdownSubTrigger.vue_vue_type_script_setup_true_lang.js +4 -2
  163. package/dist/components/dropdown/DropdownSubTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  164. package/dist/components/dropdown/DropdownTrigger.js.map +1 -1
  165. package/dist/components/dropdown/DropdownTrigger.vue_vue_type_script_setup_true_lang.js +7 -1
  166. package/dist/components/dropdown/DropdownTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  167. package/dist/components/editable/Editable.js +7 -0
  168. package/dist/components/editable/Editable.js.map +1 -0
  169. package/dist/components/editable/Editable.vue_vue_type_script_setup_true_lang.js +128 -0
  170. package/dist/components/editable/Editable.vue_vue_type_script_setup_true_lang.js.map +1 -0
  171. package/dist/components/editable/EditableArea.js +7 -0
  172. package/dist/components/editable/EditableArea.js.map +1 -0
  173. package/dist/components/editable/EditableArea.vue_vue_type_script_setup_true_lang.js +41 -0
  174. package/dist/components/editable/EditableArea.vue_vue_type_script_setup_true_lang.js.map +1 -0
  175. package/dist/components/editable/EditableCancelTrigger.js +7 -0
  176. package/dist/components/editable/EditableCancelTrigger.js.map +1 -0
  177. package/dist/components/editable/EditableCancelTrigger.vue_vue_type_script_setup_true_lang.js +63 -0
  178. package/dist/components/editable/EditableCancelTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  179. package/dist/components/editable/EditableEditTrigger.js +7 -0
  180. package/dist/components/editable/EditableEditTrigger.js.map +1 -0
  181. package/dist/components/editable/EditableEditTrigger.vue_vue_type_script_setup_true_lang.js +53 -0
  182. package/dist/components/editable/EditableEditTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  183. package/dist/components/editable/EditableInput.js +7 -0
  184. package/dist/components/editable/EditableInput.js.map +1 -0
  185. package/dist/components/editable/EditableInput.vue_vue_type_script_setup_true_lang.js +38 -0
  186. package/dist/components/editable/EditableInput.vue_vue_type_script_setup_true_lang.js.map +1 -0
  187. package/dist/components/editable/EditablePreview.js +7 -0
  188. package/dist/components/editable/EditablePreview.js.map +1 -0
  189. package/dist/components/editable/EditablePreview.vue_vue_type_script_setup_true_lang.js +38 -0
  190. package/dist/components/editable/EditablePreview.vue_vue_type_script_setup_true_lang.js.map +1 -0
  191. package/dist/components/editable/EditableSubmitTrigger.js +7 -0
  192. package/dist/components/editable/EditableSubmitTrigger.js.map +1 -0
  193. package/dist/components/editable/EditableSubmitTrigger.vue_vue_type_script_setup_true_lang.js +53 -0
  194. package/dist/components/editable/EditableSubmitTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  195. package/dist/components/fieldset/Fieldset.js.map +1 -1
  196. package/dist/components/fieldset/Fieldset.vue_vue_type_script_setup_true_lang.js +8 -2
  197. package/dist/components/fieldset/Fieldset.vue_vue_type_script_setup_true_lang.js.map +1 -1
  198. package/dist/components/form/Form.js.map +1 -1
  199. package/dist/components/form/Form.vue_vue_type_script_setup_true_lang.js +32 -156
  200. package/dist/components/form/Form.vue_vue_type_script_setup_true_lang.js.map +1 -1
  201. package/dist/components/form/FormField.js.map +1 -1
  202. package/dist/components/form/FormField.vue_vue_type_script_setup_true_lang.js +44 -23
  203. package/dist/components/form/FormField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  204. package/dist/components/form/form.context.js.map +1 -1
  205. package/dist/components/form/form.state.js +166 -0
  206. package/dist/components/form/form.state.js.map +1 -0
  207. package/dist/components/form/useField.js +112 -0
  208. package/dist/components/form/useField.js.map +1 -0
  209. package/dist/components/form/useForm.js +17 -0
  210. package/dist/components/form/useForm.js.map +1 -0
  211. package/dist/components/hover-card/HoverCard.js +7 -0
  212. package/dist/components/hover-card/HoverCard.js.map +1 -0
  213. package/dist/components/hover-card/HoverCard.vue_vue_type_script_lang.js +52 -0
  214. package/dist/components/hover-card/HoverCard.vue_vue_type_script_lang.js.map +1 -0
  215. package/dist/components/hover-card/HoverCardArrow.js +7 -0
  216. package/dist/components/hover-card/HoverCardArrow.js.map +1 -0
  217. package/dist/components/hover-card/HoverCardArrow.vue_vue_type_script_setup_true_lang.js +35 -0
  218. package/dist/components/hover-card/HoverCardArrow.vue_vue_type_script_setup_true_lang.js.map +1 -0
  219. package/dist/components/hover-card/HoverCardContent.js +7 -0
  220. package/dist/components/hover-card/HoverCardContent.js.map +1 -0
  221. package/dist/components/hover-card/HoverCardContent.vue_vue_type_script_setup_true_lang.js +104 -0
  222. package/dist/components/hover-card/HoverCardContent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  223. package/dist/components/hover-card/HoverCardTrigger.js +7 -0
  224. package/dist/components/hover-card/HoverCardTrigger.js.map +1 -0
  225. package/dist/components/hover-card/HoverCardTrigger.vue_vue_type_script_setup_true_lang.js +26 -0
  226. package/dist/components/hover-card/HoverCardTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  227. package/dist/components/input/Input.js.map +1 -1
  228. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js +76 -71
  229. package/dist/components/input/Input.vue_vue_type_script_setup_true_lang.js.map +1 -1
  230. package/dist/components/input-otp/InputOTP.js.map +1 -1
  231. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js +15 -4
  232. package/dist/components/input-otp/InputOTP.vue_vue_type_script_setup_true_lang.js.map +1 -1
  233. package/dist/components/link/Link.js.map +1 -1
  234. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js +8 -2
  235. package/dist/components/link/Link.vue_vue_type_script_setup_true_lang.js.map +1 -1
  236. package/dist/components/list-box/ListBox.js.map +1 -1
  237. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js +7 -1
  238. package/dist/components/list-box/ListBox.vue_vue_type_script_setup_true_lang.js.map +1 -1
  239. package/dist/components/menubar/Menubar.js +7 -0
  240. package/dist/components/menubar/Menubar.js.map +1 -0
  241. package/dist/components/menubar/Menubar.vue_vue_type_script_setup_true_lang.js +58 -0
  242. package/dist/components/menubar/Menubar.vue_vue_type_script_setup_true_lang.js.map +1 -0
  243. package/dist/components/menubar/MenubarCheckboxItem.js +7 -0
  244. package/dist/components/menubar/MenubarCheckboxItem.js.map +1 -0
  245. package/dist/components/menubar/MenubarCheckboxItem.vue_vue_type_script_setup_true_lang.js +91 -0
  246. package/dist/components/menubar/MenubarCheckboxItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  247. package/dist/components/menubar/MenubarContent.js +7 -0
  248. package/dist/components/menubar/MenubarContent.js.map +1 -0
  249. package/dist/components/menubar/MenubarContent.vue_vue_type_script_setup_true_lang.js +162 -0
  250. package/dist/components/menubar/MenubarContent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  251. package/dist/components/menubar/MenubarItem.js +7 -0
  252. package/dist/components/menubar/MenubarItem.js.map +1 -0
  253. package/dist/components/menubar/MenubarItem.vue_vue_type_script_setup_true_lang.js +74 -0
  254. package/dist/components/menubar/MenubarItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  255. package/dist/components/menubar/MenubarMenu.js +7 -0
  256. package/dist/components/menubar/MenubarMenu.js.map +1 -0
  257. package/dist/components/menubar/MenubarMenu.vue_vue_type_script_setup_true_lang.js +20 -0
  258. package/dist/components/menubar/MenubarMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  259. package/dist/components/menubar/MenubarRadioGroup.js +7 -0
  260. package/dist/components/menubar/MenubarRadioGroup.js.map +1 -0
  261. package/dist/components/menubar/MenubarRadioGroup.vue_vue_type_script_setup_true_lang.js +40 -0
  262. package/dist/components/menubar/MenubarRadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -0
  263. package/dist/components/menubar/MenubarRadioItem.js +7 -0
  264. package/dist/components/menubar/MenubarRadioItem.js.map +1 -0
  265. package/dist/components/menubar/MenubarRadioItem.vue_vue_type_script_setup_true_lang.js +77 -0
  266. package/dist/components/menubar/MenubarRadioItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  267. package/dist/components/menubar/MenubarSection.js +7 -0
  268. package/dist/components/menubar/MenubarSection.js.map +1 -0
  269. package/dist/components/menubar/MenubarSection.vue_vue_type_script_setup_true_lang.js +55 -0
  270. package/dist/components/menubar/MenubarSection.vue_vue_type_script_setup_true_lang.js.map +1 -0
  271. package/dist/components/menubar/MenubarSub.js +7 -0
  272. package/dist/components/menubar/MenubarSub.js.map +1 -0
  273. package/dist/components/menubar/MenubarSub.vue_vue_type_script_setup_true_lang.js +35 -0
  274. package/dist/components/menubar/MenubarSub.vue_vue_type_script_setup_true_lang.js.map +1 -0
  275. package/dist/components/menubar/MenubarSubContent.js +7 -0
  276. package/dist/components/menubar/MenubarSubContent.js.map +1 -0
  277. package/dist/components/menubar/MenubarSubContent.vue_vue_type_script_setup_true_lang.js +155 -0
  278. package/dist/components/menubar/MenubarSubContent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  279. package/dist/components/menubar/MenubarSubTrigger.js +7 -0
  280. package/dist/components/menubar/MenubarSubTrigger.js.map +1 -0
  281. package/dist/components/menubar/MenubarSubTrigger.vue_vue_type_script_setup_true_lang.js +66 -0
  282. package/dist/components/menubar/MenubarSubTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  283. package/dist/components/menubar/MenubarTrigger.js +7 -0
  284. package/dist/components/menubar/MenubarTrigger.js.map +1 -0
  285. package/dist/components/menubar/MenubarTrigger.vue_vue_type_script_setup_true_lang.js +59 -0
  286. package/dist/components/menubar/MenubarTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  287. package/dist/components/meter/Meter.js.map +1 -1
  288. package/dist/components/meter/Meter.vue_vue_type_script_setup_true_lang.js.map +1 -1
  289. package/dist/components/month-picker/MonthPicker.js +7 -0
  290. package/dist/components/month-picker/MonthPicker.js.map +1 -0
  291. package/dist/components/month-picker/MonthPicker.vue_vue_type_script_setup_true_lang.js +196 -0
  292. package/dist/components/month-picker/MonthPicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  293. package/dist/components/month-range-picker/MonthRangePicker.js +7 -0
  294. package/dist/components/month-range-picker/MonthRangePicker.js.map +1 -0
  295. package/dist/components/month-range-picker/MonthRangePicker.vue_vue_type_script_setup_true_lang.js +207 -0
  296. package/dist/components/month-range-picker/MonthRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  297. package/dist/components/navigation-menu/NavigationMenu.js +7 -0
  298. package/dist/components/navigation-menu/NavigationMenu.js.map +1 -0
  299. package/dist/components/navigation-menu/NavigationMenu.vue_vue_type_script_setup_true_lang.js +85 -0
  300. package/dist/components/navigation-menu/NavigationMenu.vue_vue_type_script_setup_true_lang.js.map +1 -0
  301. package/dist/components/navigation-menu/NavigationMenuContent.js +7 -0
  302. package/dist/components/navigation-menu/NavigationMenuContent.js.map +1 -0
  303. package/dist/components/navigation-menu/NavigationMenuContent.vue_vue_type_script_setup_true_lang.js +70 -0
  304. package/dist/components/navigation-menu/NavigationMenuContent.vue_vue_type_script_setup_true_lang.js.map +1 -0
  305. package/dist/components/navigation-menu/NavigationMenuIndicator.js +7 -0
  306. package/dist/components/navigation-menu/NavigationMenuIndicator.js.map +1 -0
  307. package/dist/components/navigation-menu/NavigationMenuIndicator.vue_vue_type_script_setup_true_lang.js +53 -0
  308. package/dist/components/navigation-menu/NavigationMenuIndicator.vue_vue_type_script_setup_true_lang.js.map +1 -0
  309. package/dist/components/navigation-menu/NavigationMenuItem.js +7 -0
  310. package/dist/components/navigation-menu/NavigationMenuItem.js.map +1 -0
  311. package/dist/components/navigation-menu/NavigationMenuItem.vue_vue_type_script_setup_true_lang.js +20 -0
  312. package/dist/components/navigation-menu/NavigationMenuItem.vue_vue_type_script_setup_true_lang.js.map +1 -0
  313. package/dist/components/navigation-menu/NavigationMenuLink.js +7 -0
  314. package/dist/components/navigation-menu/NavigationMenuLink.js.map +1 -0
  315. package/dist/components/navigation-menu/NavigationMenuLink.vue_vue_type_script_setup_true_lang.js +70 -0
  316. package/dist/components/navigation-menu/NavigationMenuLink.vue_vue_type_script_setup_true_lang.js.map +1 -0
  317. package/dist/components/navigation-menu/NavigationMenuList.js +7 -0
  318. package/dist/components/navigation-menu/NavigationMenuList.js.map +1 -0
  319. package/dist/components/navigation-menu/NavigationMenuList.vue_vue_type_script_setup_true_lang.js +47 -0
  320. package/dist/components/navigation-menu/NavigationMenuList.vue_vue_type_script_setup_true_lang.js.map +1 -0
  321. package/dist/components/navigation-menu/NavigationMenuSub.js +7 -0
  322. package/dist/components/navigation-menu/NavigationMenuSub.js.map +1 -0
  323. package/dist/components/navigation-menu/NavigationMenuSub.vue_vue_type_script_setup_true_lang.js +37 -0
  324. package/dist/components/navigation-menu/NavigationMenuSub.vue_vue_type_script_setup_true_lang.js.map +1 -0
  325. package/dist/components/navigation-menu/NavigationMenuTrigger.js +7 -0
  326. package/dist/components/navigation-menu/NavigationMenuTrigger.js.map +1 -0
  327. package/dist/components/navigation-menu/NavigationMenuTrigger.vue_vue_type_script_setup_true_lang.js +72 -0
  328. package/dist/components/navigation-menu/NavigationMenuTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -0
  329. package/dist/components/navigation-menu/NavigationMenuViewport.js +7 -0
  330. package/dist/components/navigation-menu/NavigationMenuViewport.js.map +1 -0
  331. package/dist/components/navigation-menu/NavigationMenuViewport.vue_vue_type_script_setup_true_lang.js +53 -0
  332. package/dist/components/navigation-menu/NavigationMenuViewport.vue_vue_type_script_setup_true_lang.js.map +1 -0
  333. package/dist/components/number-field/NumberField.js.map +1 -1
  334. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js +19 -5
  335. package/dist/components/number-field/NumberField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  336. package/dist/components/pagination/Pagination.js.map +1 -1
  337. package/dist/components/pagination/Pagination.vue_vue_type_script_setup_true_lang.js +9 -3
  338. package/dist/components/pagination/Pagination.vue_vue_type_script_setup_true_lang.js.map +1 -1
  339. package/dist/components/popover/PopoverClose.js.map +1 -1
  340. package/dist/components/popover/PopoverClose.vue_vue_type_script_setup_true_lang.js +11 -2
  341. package/dist/components/popover/PopoverClose.vue_vue_type_script_setup_true_lang.js.map +1 -1
  342. package/dist/components/progress-bar/ProgressBar.js.map +1 -1
  343. package/dist/components/progress-bar/ProgressBar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  344. package/dist/components/progress-circle/ProgressCircle.js.map +1 -1
  345. package/dist/components/progress-circle/ProgressCircle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  346. package/dist/components/radio/Radio.js.map +1 -1
  347. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js +16 -5
  348. package/dist/components/radio/Radio.vue_vue_type_script_setup_true_lang.js.map +1 -1
  349. package/dist/components/radio/RadioGroup.js.map +1 -1
  350. package/dist/components/radio/RadioGroup.vue_vue_type_script_setup_true_lang.js +18 -7
  351. package/dist/components/radio/RadioGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  352. package/dist/components/range-calendar/RangeCalendar.js.map +1 -1
  353. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js +19 -8
  354. package/dist/components/range-calendar/RangeCalendar.vue_vue_type_script_setup_true_lang.js.map +1 -1
  355. package/dist/components/select/Select.js.map +1 -1
  356. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js +55 -51
  357. package/dist/components/select/Select.vue_vue_type_script_setup_true_lang.js.map +1 -1
  358. package/dist/components/select/SelectItem.js.map +1 -1
  359. package/dist/components/select/SelectItem.vue_vue_type_script_setup_true_lang.js +4 -2
  360. package/dist/components/select/SelectItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  361. package/dist/components/select/SelectTrigger.js.map +1 -1
  362. package/dist/components/select/SelectTrigger.vue_vue_type_script_setup_true_lang.js +18 -9
  363. package/dist/components/select/SelectTrigger.vue_vue_type_script_setup_true_lang.js.map +1 -1
  364. package/dist/components/slider/Slider.js.map +1 -1
  365. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js +16 -5
  366. package/dist/components/slider/Slider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  367. package/dist/components/splitter/SplitterResizeHandle.js.map +1 -1
  368. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js +8 -2
  369. package/dist/components/splitter/SplitterResizeHandle.vue_vue_type_script_setup_true_lang.js.map +1 -1
  370. package/dist/components/switch/Switch.js.map +1 -1
  371. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js +16 -5
  372. package/dist/components/switch/Switch.vue_vue_type_script_setup_true_lang.js.map +1 -1
  373. package/dist/components/switch/SwitchGroup.js.map +1 -1
  374. package/dist/components/switch/SwitchGroup.vue_vue_type_script_setup_true_lang.js +10 -4
  375. package/dist/components/switch/SwitchGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  376. package/dist/components/table/Table.js.map +1 -1
  377. package/dist/components/table/Table.vue_vue_type_script_setup_true_lang.js.map +1 -1
  378. package/dist/components/table/TableBody.js.map +1 -1
  379. package/dist/components/table/TableBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  380. package/dist/components/table/TableCheckboxCell.js.map +1 -1
  381. package/dist/components/table/TableCheckboxCell.vue_vue_type_script_setup_true_lang.js.map +1 -1
  382. package/dist/components/table/TableVirtualBody.js.map +1 -1
  383. package/dist/components/table/TableVirtualBody.vue_vue_type_script_setup_true_lang.js.map +1 -1
  384. package/dist/components/table/table.context.js.map +1 -1
  385. package/dist/components/tabs/Tab.js.map +1 -1
  386. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js +11 -2
  387. package/dist/components/tabs/Tab.vue_vue_type_script_setup_true_lang.js.map +1 -1
  388. package/dist/components/tabs/TabList.js.map +1 -1
  389. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js +2 -2
  390. package/dist/components/tabs/TabList.vue_vue_type_script_setup_true_lang.js.map +1 -1
  391. package/dist/components/tabs/Tabs.js.map +1 -1
  392. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js +2 -2
  393. package/dist/components/tabs/Tabs.vue_vue_type_script_setup_true_lang.js.map +1 -1
  394. package/dist/components/textarea/Textarea.js.map +1 -1
  395. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js +70 -65
  396. package/dist/components/textarea/Textarea.vue_vue_type_script_setup_true_lang.js.map +1 -1
  397. package/dist/components/time-field/TimeField.js.map +1 -1
  398. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js +61 -60
  399. package/dist/components/time-field/TimeField.vue_vue_type_script_setup_true_lang.js.map +1 -1
  400. package/dist/components/time-picker/TimePicker.js +7 -0
  401. package/dist/components/time-picker/TimePicker.js.map +1 -0
  402. package/dist/components/time-picker/TimePicker.vue_vue_type_script_setup_true_lang.js +320 -0
  403. package/dist/components/time-picker/TimePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  404. package/dist/components/time-range-field/TimeRangeField.js +7 -0
  405. package/dist/components/time-range-field/TimeRangeField.js.map +1 -0
  406. package/dist/components/time-range-field/TimeRangeField.vue_vue_type_script_setup_true_lang.js +364 -0
  407. package/dist/components/time-range-field/TimeRangeField.vue_vue_type_script_setup_true_lang.js.map +1 -0
  408. package/dist/components/toolbar/ToolbarButton.js.map +1 -1
  409. package/dist/components/toolbar/ToolbarButton.vue_vue_type_script_setup_true_lang.js +11 -2
  410. package/dist/components/toolbar/ToolbarButton.vue_vue_type_script_setup_true_lang.js.map +1 -1
  411. package/dist/components/toolbar/ToolbarToggleGroup.js.map +1 -1
  412. package/dist/components/toolbar/ToolbarToggleGroup.vue_vue_type_script_setup_true_lang.js +23 -6
  413. package/dist/components/toolbar/ToolbarToggleGroup.vue_vue_type_script_setup_true_lang.js.map +1 -1
  414. package/dist/components/toolbar/ToolbarToggleItem.js.map +1 -1
  415. package/dist/components/toolbar/ToolbarToggleItem.vue_vue_type_script_setup_true_lang.js +11 -2
  416. package/dist/components/toolbar/ToolbarToggleItem.vue_vue_type_script_setup_true_lang.js.map +1 -1
  417. package/dist/components/tooltip/TooltipProvider.js.map +1 -1
  418. package/dist/components/tooltip/TooltipProvider.vue_vue_type_script_setup_true_lang.js +8 -2
  419. package/dist/components/tooltip/TooltipProvider.vue_vue_type_script_setup_true_lang.js.map +1 -1
  420. package/dist/components/tree/Tree.js.map +1 -1
  421. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js +11 -2
  422. package/dist/components/tree/Tree.vue_vue_type_script_setup_true_lang.js.map +1 -1
  423. package/dist/components/year-range-picker/YearRangePicker.js +7 -0
  424. package/dist/components/year-range-picker/YearRangePicker.js.map +1 -0
  425. package/dist/components/year-range-picker/YearRangePicker.vue_vue_type_script_setup_true_lang.js +210 -0
  426. package/dist/components/year-range-picker/YearRangePicker.vue_vue_type_script_setup_true_lang.js.map +1 -0
  427. package/dist/composables/useDeprecatedBooleanProp.js +43 -0
  428. package/dist/composables/useDeprecatedBooleanProp.js.map +1 -0
  429. package/dist/composables/useFormField.js +50 -0
  430. package/dist/composables/useFormField.js.map +1 -0
  431. package/dist/index.d.ts +5855 -3093
  432. package/dist/index.js +51 -1
  433. package/dist/packages/styles/dist/components/hover-card/hover-card.styles.js +10 -0
  434. package/dist/packages/styles/dist/components/hover-card/hover-card.styles.js.map +1 -0
  435. package/dist/utils/warnDeprecated.js +2 -1
  436. package/dist/utils/warnDeprecated.js.map +1 -1
  437. package/package.json +4 -4
  438. package/dist/components/date-time-picker/DateTimePickerTimeScroller.js +0 -7
  439. package/dist/components/date-time-picker/DateTimePickerTimeScroller.js.map +0 -1
  440. package/dist/components/date-time-picker/DateTimePickerTimeScroller.vue_vue_type_script_setup_true_lang.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteItem.js","names":[],"sources":["../../../src/components/autocomplete/AutocompleteItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, useSlots, type Slots, type VNode } from 'vue'\nimport { AutocompleteItem, ComboboxItemIndicator } from 'reka-ui'\nimport { useAutocompleteInject } from './Autocomplete.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n isDisabled?: boolean\n class?: string\n /** A string value for typeahead matching. Defaults to display text. */\n textValue?: string\n /** Whether the item is disabled. Alias for isDisabled. */\n disabled?: boolean\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n /** Render the ComboboxItemIndicator as a different element. */\n indicatorAs?: string\n /** Merge indicator props onto child element. */\n indicatorAsChild?: boolean\n}>(), {\n isDisabled: false,\n class: undefined,\n textValue: undefined,\n disabled: undefined,\n as: undefined,\n asChild: false,\n indicatorAs: undefined,\n indicatorAsChild: false,\n})\n\nconst emit = defineEmits<{\n 'select': [event: Event]\n}>()\n\nconst slots: Slots = useSlots()\nconst ctx = useAutocompleteInject()\n\nfunction extractText(nodes: VNode[]): string {\n return nodes.map(n => {\n if (typeof n.children === 'string') return n.children\n if (Array.isArray(n.children)) return extractText(n.children as VNode[])\n return ''\n }).join('')\n}\n\nconst displayText = computed((): string => {\n const vnodes: VNode[] | undefined = (slots.default as (() => VNode[]) | undefined)?.()\n if (!vnodes) return props.value\n return extractText(vnodes).trim() || props.value\n})\n\n// In multiple mode, track whether this item is in the selected array\nconst isChecked = computed(() => ctx.multiple.value && ctx.isSelected(props.value))\n\nonMounted(() => {\n ctx.registerItem(props.value, displayText.value)\n})\n\nonUnmounted(() => {\n ctx.unregisterItem(props.value)\n})\n\nfunction handleSelect(event: Event) {\n emit('select', event)\n if (ctx.multiple.value) {\n // Prevent Reka from overwriting the combobox value with the selected item's text.\n // Without this, Reka's internal handler fires after ours and sets searchTerm = displayText.\n event.preventDefault()\n ctx.onMultipleSelect(props.value)\n }\n}\n</script>\n\n<template>\n <AutocompleteItem\n :value=\"displayText\"\n :text-value=\"props.textValue ?? displayText\"\n :disabled=\"props.disabled ?? props.isDisabled\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :data-item-value=\"props.value\"\n :data-selected=\"isChecked || undefined\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n @select=\"handleSelect\"\n >\n <slot name=\"startContent\" />\n <span\n class=\"autocomplete-item__text\"\n data-slot=\"item-text\"\n ><slot /></span>\n <!-- Single mode: Reka's ComboboxItemIndicator handles the checkmark natively -->\n <ComboboxItemIndicator\n v-if=\"!ctx.multiple.value\"\n :as=\"props.indicatorAs\"\n :as-child=\"props.indicatorAsChild\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </ComboboxItemIndicator>\n <!-- Multiple mode: check against our selectedValues array instead -->\n <span\n v-else-if=\"isChecked\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </span>\n <slot name=\"endContent\" />\n </AutocompleteItem>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AutocompleteItem.js","names":[],"sources":["../../../src/components/autocomplete/AutocompleteItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, useSlots, type Slots, type VNode } from 'vue'\nimport { AutocompleteItem, ComboboxItemIndicator } from 'reka-ui'\nimport { useAutocompleteInject } from './Autocomplete.context'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n value: string\n isDisabled?: boolean\n class?: string\n /** A string value for typeahead matching. Defaults to display text. */\n textValue?: string\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n /** Render the ComboboxItemIndicator as a different element. */\n indicatorAs?: string\n /** Merge indicator props onto child element. */\n indicatorAsChild?: boolean\n}>(), {\n isDisabled: undefined,\n class: undefined,\n textValue: undefined,\n disabled: undefined,\n as: undefined,\n asChild: false,\n indicatorAs: undefined,\n indicatorAsChild: false,\n})\n\nconst emit = defineEmits<{\n 'select': [event: Event]\n}>()\n\nconst isDisabled = useDeprecatedBooleanProp(\n 'AutocompleteItem', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\nconst slots: Slots = useSlots()\nconst ctx = useAutocompleteInject()\n\nfunction extractText(nodes: VNode[]): string {\n return nodes.map(n => {\n if (typeof n.children === 'string') return n.children\n if (Array.isArray(n.children)) return extractText(n.children as VNode[])\n return ''\n }).join('')\n}\n\nconst displayText = computed((): string => {\n const vnodes: VNode[] | undefined = (slots.default as (() => VNode[]) | undefined)?.()\n if (!vnodes) return props.value\n return extractText(vnodes).trim() || props.value\n})\n\n// In multiple mode, track whether this item is in the selected array\nconst isChecked = computed(() => ctx.multiple.value && ctx.isSelected(props.value))\n\nonMounted(() => {\n ctx.registerItem(props.value, displayText.value)\n})\n\nonUnmounted(() => {\n ctx.unregisterItem(props.value)\n})\n\nfunction handleSelect(event: Event) {\n emit('select', event)\n if (ctx.multiple.value) {\n // Prevent Reka from overwriting the combobox value with the selected item's text.\n // Without this, Reka's internal handler fires after ours and sets searchTerm = displayText.\n event.preventDefault()\n ctx.onMultipleSelect(props.value)\n }\n}\n</script>\n\n<template>\n <AutocompleteItem\n :value=\"displayText\"\n :text-value=\"props.textValue ?? displayText\"\n :disabled=\"isDisabled\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :data-item-value=\"props.value\"\n :data-selected=\"isChecked || undefined\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n @select=\"handleSelect\"\n >\n <slot name=\"startContent\" />\n <span\n class=\"autocomplete-item__text\"\n data-slot=\"item-text\"\n ><slot /></span>\n <!-- Single mode: Reka's ComboboxItemIndicator handles the checkmark natively -->\n <ComboboxItemIndicator\n v-if=\"!ctx.multiple.value\"\n :as=\"props.indicatorAs\"\n :as-child=\"props.indicatorAsChild\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </ComboboxItemIndicator>\n <!-- Multiple mode: check against our selectedValues array instead -->\n <span\n v-else-if=\"isChecked\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </span>\n <slot name=\"endContent\" />\n </AutocompleteItem>\n</template>\n"],"mappings":""}
@@ -1,3 +1,4 @@
1
+ import { useDeprecatedBooleanProp } from "../../composables/useDeprecatedBooleanProp.js";
1
2
  import { useAutocompleteInject } from "./Autocomplete.context.js";
2
3
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, defineComponent, onMounted, onUnmounted, openBlock, renderSlot, unref, useSlots, withCtx } from "vue";
3
4
  import { AutocompleteItem, ComboboxItemIndicator } from "reka-ui";
@@ -17,7 +18,7 @@ var AutocompleteItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
17
18
  value: {},
18
19
  isDisabled: {
19
20
  type: Boolean,
20
- default: false
21
+ default: void 0
21
22
  },
22
23
  class: { default: void 0 },
23
24
  textValue: { default: void 0 },
@@ -40,6 +41,7 @@ var AutocompleteItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
40
41
  setup(__props, { emit: __emit }) {
41
42
  const props = __props;
42
43
  const emit = __emit;
44
+ const isDisabled = useDeprecatedBooleanProp("AutocompleteItem", "isDisabled", () => props.isDisabled, "disabled", () => props.disabled);
43
45
  const slots = useSlots();
44
46
  const ctx = useAutocompleteInject();
45
47
  function extractText(nodes) {
@@ -72,7 +74,7 @@ var AutocompleteItem_vue_vue_type_script_setup_true_lang_default = /* @__PURE__
72
74
  return openBlock(), createBlock(unref(AutocompleteItem), {
73
75
  value: displayText.value,
74
76
  "text-value": props.textValue ?? displayText.value,
75
- disabled: props.disabled ?? props.isDisabled,
77
+ disabled: unref(isDisabled),
76
78
  as: props.as,
77
79
  "as-child": props.asChild,
78
80
  "data-item-value": props.value,
@@ -1 +1 @@
1
- {"version":3,"file":"AutocompleteItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/autocomplete/AutocompleteItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, useSlots, type Slots, type VNode } from 'vue'\nimport { AutocompleteItem, ComboboxItemIndicator } from 'reka-ui'\nimport { useAutocompleteInject } from './Autocomplete.context'\n\nconst props = withDefaults(defineProps<{\n value: string\n isDisabled?: boolean\n class?: string\n /** A string value for typeahead matching. Defaults to display text. */\n textValue?: string\n /** Whether the item is disabled. Alias for isDisabled. */\n disabled?: boolean\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n /** Render the ComboboxItemIndicator as a different element. */\n indicatorAs?: string\n /** Merge indicator props onto child element. */\n indicatorAsChild?: boolean\n}>(), {\n isDisabled: false,\n class: undefined,\n textValue: undefined,\n disabled: undefined,\n as: undefined,\n asChild: false,\n indicatorAs: undefined,\n indicatorAsChild: false,\n})\n\nconst emit = defineEmits<{\n 'select': [event: Event]\n}>()\n\nconst slots: Slots = useSlots()\nconst ctx = useAutocompleteInject()\n\nfunction extractText(nodes: VNode[]): string {\n return nodes.map(n => {\n if (typeof n.children === 'string') return n.children\n if (Array.isArray(n.children)) return extractText(n.children as VNode[])\n return ''\n }).join('')\n}\n\nconst displayText = computed((): string => {\n const vnodes: VNode[] | undefined = (slots.default as (() => VNode[]) | undefined)?.()\n if (!vnodes) return props.value\n return extractText(vnodes).trim() || props.value\n})\n\n// In multiple mode, track whether this item is in the selected array\nconst isChecked = computed(() => ctx.multiple.value && ctx.isSelected(props.value))\n\nonMounted(() => {\n ctx.registerItem(props.value, displayText.value)\n})\n\nonUnmounted(() => {\n ctx.unregisterItem(props.value)\n})\n\nfunction handleSelect(event: Event) {\n emit('select', event)\n if (ctx.multiple.value) {\n // Prevent Reka from overwriting the combobox value with the selected item's text.\n // Without this, Reka's internal handler fires after ours and sets searchTerm = displayText.\n event.preventDefault()\n ctx.onMultipleSelect(props.value)\n }\n}\n</script>\n\n<template>\n <AutocompleteItem\n :value=\"displayText\"\n :text-value=\"props.textValue ?? displayText\"\n :disabled=\"props.disabled ?? props.isDisabled\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :data-item-value=\"props.value\"\n :data-selected=\"isChecked || undefined\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n @select=\"handleSelect\"\n >\n <slot name=\"startContent\" />\n <span\n class=\"autocomplete-item__text\"\n data-slot=\"item-text\"\n ><slot /></span>\n <!-- Single mode: Reka's ComboboxItemIndicator handles the checkmark natively -->\n <ComboboxItemIndicator\n v-if=\"!ctx.multiple.value\"\n :as=\"props.indicatorAs\"\n :as-child=\"props.indicatorAsChild\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </ComboboxItemIndicator>\n <!-- Multiple mode: check against our selectedValues array instead -->\n <span\n v-else-if=\"isChecked\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </span>\n <slot name=\"endContent\" />\n </AutocompleteItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EA2Bd,MAAM,OAAO;EAIb,MAAM,QAAe,UAAS;EAC9B,MAAM,MAAM,uBAAsB;EAElC,SAAS,YAAY,OAAwB;AAC3C,UAAO,MAAM,KAAI,MAAK;AACpB,QAAI,OAAO,EAAE,aAAa,SAAU,QAAO,EAAE;AAC7C,QAAI,MAAM,QAAQ,EAAE,SAAS,CAAE,QAAO,YAAY,EAAE,SAAmB;AACvE,WAAO;KACP,CAAC,KAAK,GAAE;;EAGZ,MAAM,cAAc,eAAuB;GACzC,MAAM,SAA+B,MAAM,WAA0C;AACrF,OAAI,CAAC,OAAQ,QAAO,MAAM;AAC1B,UAAO,YAAY,OAAO,CAAC,MAAM,IAAI,MAAM;IAC5C;EAGD,MAAM,YAAY,eAAe,IAAI,SAAS,SAAS,IAAI,WAAW,MAAM,MAAM,CAAA;AAElF,kBAAgB;AACd,OAAI,aAAa,MAAM,OAAO,YAAY,MAAK;IAChD;AAED,oBAAkB;AAChB,OAAI,eAAe,MAAM,MAAK;IAC/B;EAED,SAAS,aAAa,OAAc;AAClC,QAAK,UAAU,MAAK;AACpB,OAAI,IAAI,SAAS,OAAO;AAGtB,UAAM,gBAAe;AACrB,QAAI,iBAAiB,MAAM,MAAK;;;;uBAMlC,YAoEmB,MAAA,iBAAA,EAAA;IAnEhB,OAAO,YAAA;IACP,cAAY,MAAM,aAAa,YAAA;IAC/B,UAAU,MAAM,YAAY,MAAM;IAClC,IAAI,MAAM;IACV,YAAU,MAAM;IAChB,mBAAiB,MAAM;IACvB,iBAAe,UAAA,SAAa,KAAA;IAC7B,OAAM;IACN,aAAU;IACT,UAAQ;;2BAEmB;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,mBAGgB,QAHhB,YAGgB,CAAf,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;MAGA,MAAA,IAAG,CAAC,SAAS,SAAA,WAAA,EADtB,YAwBwB,MAAA,sBAAA,EAAA;;MAtBrB,IAAI,MAAM;MACV,YAAU,MAAM;MACjB,OAAM;MACN,aAAU;;6BAkBH,CAhBP,WAgBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;OAbJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;OACV,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;;kCAM1B,UAAA,SAAA,WAAA,EADb,mBAsBO,QAtBP,YAsBO,CAjBL,WAgBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;MAbJ,OAAM;MACN,OAAM;MACN,QAAO;MACP,SAAQ;MACR,MAAK;MACL,QAAO;MACP,gBAAa;MACb,kBAAe;MACf,mBAAgB;MAChB,aAAU;MACV,eAAY;SAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA;KAIvC,WAA0B,KAAA,QAAA,aAAA"}
1
+ {"version":3,"file":"AutocompleteItem.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/autocomplete/AutocompleteItem.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, onMounted, onUnmounted, useSlots, type Slots, type VNode } from 'vue'\nimport { AutocompleteItem, ComboboxItemIndicator } from 'reka-ui'\nimport { useAutocompleteInject } from './Autocomplete.context'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n value: string\n isDisabled?: boolean\n class?: string\n /** A string value for typeahead matching. Defaults to display text. */\n textValue?: string\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n /** Render as a different element or component. */\n as?: string\n /** Merge props onto child element instead of rendering a wrapper. */\n asChild?: boolean\n /** Render the ComboboxItemIndicator as a different element. */\n indicatorAs?: string\n /** Merge indicator props onto child element. */\n indicatorAsChild?: boolean\n}>(), {\n isDisabled: undefined,\n class: undefined,\n textValue: undefined,\n disabled: undefined,\n as: undefined,\n asChild: false,\n indicatorAs: undefined,\n indicatorAsChild: false,\n})\n\nconst emit = defineEmits<{\n 'select': [event: Event]\n}>()\n\nconst isDisabled = useDeprecatedBooleanProp(\n 'AutocompleteItem', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\nconst slots: Slots = useSlots()\nconst ctx = useAutocompleteInject()\n\nfunction extractText(nodes: VNode[]): string {\n return nodes.map(n => {\n if (typeof n.children === 'string') return n.children\n if (Array.isArray(n.children)) return extractText(n.children as VNode[])\n return ''\n }).join('')\n}\n\nconst displayText = computed((): string => {\n const vnodes: VNode[] | undefined = (slots.default as (() => VNode[]) | undefined)?.()\n if (!vnodes) return props.value\n return extractText(vnodes).trim() || props.value\n})\n\n// In multiple mode, track whether this item is in the selected array\nconst isChecked = computed(() => ctx.multiple.value && ctx.isSelected(props.value))\n\nonMounted(() => {\n ctx.registerItem(props.value, displayText.value)\n})\n\nonUnmounted(() => {\n ctx.unregisterItem(props.value)\n})\n\nfunction handleSelect(event: Event) {\n emit('select', event)\n if (ctx.multiple.value) {\n // Prevent Reka from overwriting the combobox value with the selected item's text.\n // Without this, Reka's internal handler fires after ours and sets searchTerm = displayText.\n event.preventDefault()\n ctx.onMultipleSelect(props.value)\n }\n}\n</script>\n\n<template>\n <AutocompleteItem\n :value=\"displayText\"\n :text-value=\"props.textValue ?? displayText\"\n :disabled=\"isDisabled\"\n :as=\"props.as\"\n :as-child=\"props.asChild\"\n :data-item-value=\"props.value\"\n :data-selected=\"isChecked || undefined\"\n class=\"list-box-item list-box-item--default\"\n data-slot=\"list-box-item\"\n @select=\"handleSelect\"\n >\n <slot name=\"startContent\" />\n <span\n class=\"autocomplete-item__text\"\n data-slot=\"item-text\"\n ><slot /></span>\n <!-- Single mode: Reka's ComboboxItemIndicator handles the checkmark natively -->\n <ComboboxItemIndicator\n v-if=\"!ctx.multiple.value\"\n :as=\"props.indicatorAs\"\n :as-child=\"props.indicatorAsChild\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </ComboboxItemIndicator>\n <!-- Multiple mode: check against our selectedValues array instead -->\n <span\n v-else-if=\"isChecked\"\n class=\"list-box-item__indicator\"\n data-slot=\"list-box-item-indicator\"\n >\n <slot name=\"selectedIcon\">\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"12\"\n height=\"12\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"3\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n data-slot=\"list-box-item-indicator--checkmark\"\n aria-hidden=\"true\"\n >\n <polyline points=\"20 6 9 17 4 12\" />\n </svg>\n </slot>\n </span>\n <slot name=\"endContent\" />\n </AutocompleteItem>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAMA,MAAM,QAAQ;EA2Bd,MAAM,OAAO;EAIb,MAAM,aAAa,yBACjB,oBAAoB,oBAAoB,MAAM,YAAY,kBAAkB,MAAM,SACpF;EAEA,MAAM,QAAe,UAAS;EAC9B,MAAM,MAAM,uBAAsB;EAElC,SAAS,YAAY,OAAwB;AAC3C,UAAO,MAAM,KAAI,MAAK;AACpB,QAAI,OAAO,EAAE,aAAa,SAAU,QAAO,EAAE;AAC7C,QAAI,MAAM,QAAQ,EAAE,SAAS,CAAE,QAAO,YAAY,EAAE,SAAmB;AACvE,WAAO;KACP,CAAC,KAAK,GAAE;;EAGZ,MAAM,cAAc,eAAuB;GACzC,MAAM,SAA+B,MAAM,WAA0C;AACrF,OAAI,CAAC,OAAQ,QAAO,MAAM;AAC1B,UAAO,YAAY,OAAO,CAAC,MAAM,IAAI,MAAM;IAC5C;EAGD,MAAM,YAAY,eAAe,IAAI,SAAS,SAAS,IAAI,WAAW,MAAM,MAAM,CAAA;AAElF,kBAAgB;AACd,OAAI,aAAa,MAAM,OAAO,YAAY,MAAK;IAChD;AAED,oBAAkB;AAChB,OAAI,eAAe,MAAM,MAAK;IAC/B;EAED,SAAS,aAAa,OAAc;AAClC,QAAK,UAAU,MAAK;AACpB,OAAI,IAAI,SAAS,OAAO;AAGtB,UAAM,gBAAe;AACrB,QAAI,iBAAiB,MAAM,MAAK;;;;uBAMlC,YAoEmB,MAAA,iBAAA,EAAA;IAnEhB,OAAO,YAAA;IACP,cAAY,MAAM,aAAa,YAAA;IAC/B,UAAU,MAAA,WAAU;IACpB,IAAI,MAAM;IACV,YAAU,MAAM;IAChB,mBAAiB,MAAM;IACvB,iBAAe,UAAA,SAAa,KAAA;IAC7B,OAAM;IACN,aAAU;IACT,UAAQ;;2BAEmB;KAA5B,WAA4B,KAAA,QAAA,eAAA;KAC5B,mBAGgB,QAHhB,YAGgB,CAAf,WAAQ,KAAA,QAAA,UAAA,CAAA,CAAA;MAGA,MAAA,IAAG,CAAC,SAAS,SAAA,WAAA,EADtB,YAwBwB,MAAA,sBAAA,EAAA;;MAtBrB,IAAI,MAAM;MACV,YAAU,MAAM;MACjB,OAAM;MACN,aAAU;;6BAkBH,CAhBP,WAgBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;OAbJ,OAAM;OACN,OAAM;OACN,QAAO;OACP,SAAQ;OACR,MAAK;OACL,QAAO;OACP,gBAAa;OACb,kBAAe;OACf,mBAAgB;OAChB,aAAU;OACV,eAAY;UAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA;;kCAM1B,UAAA,SAAA,WAAA,EADb,mBAsBO,QAtBP,YAsBO,CAjBL,WAgBO,KAAA,QAAA,gBAAA,EAAA,QAAA,CAAA,OAAA,OAAA,OAAA,KAfL,mBAcM,OAAA;MAbJ,OAAM;MACN,OAAM;MACN,QAAO;MACP,SAAQ;MACR,MAAK;MACL,QAAO;MACP,gBAAa;MACb,kBAAe;MACf,mBAAgB;MAChB,aAAU;MACV,eAAY;SAEZ,mBAAoC,YAAA,EAA1B,QAAO,kBAAgB,CAAA,CAAA,EAAA,GAAA,EAAA,CAAA,CAAA,CAAA,IAAA,mBAAA,IAAA,KAAA;KAIvC,WAA0B,KAAA,QAAA,aAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { type AvatarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\ntype AvatarShorthandItem = {\n src?: string\n alt?: string\n name?: string\n color?: AvatarVariants['color']\n variant?: AvatarVariants['variant']\n isBordered?: boolean\n isDisabled?: boolean\n showFallback?: boolean\n}\n\nconst props = withDefaults(defineProps<{\n size?: 'sm' | 'md' | 'lg'\n isBordered?: boolean\n isDisabled?: boolean\n isGrid?: boolean\n max?: number\n total?: number\n renderCount?: (count: number) => string\n class?: string\n /** Shorthand API: render avatars from an array instead of the compound slot API */\n avatars?: AvatarShorthandItem[]\n}>(), {\n size: 'md',\n\n isBordered: false,\n isDisabled: false,\n isGrid: false,\n})\n\nconst slots = defineSlots<{\n default?(): VNode[];\n}>()\n\n// Provide context using toRef() for reactivity (canonical pattern from ButtonGroup)\nuseAvatarGroupProvide({\n size: toRef(props, 'size'),\n isBordered: toRef(props, 'isBordered'),\n isDisabled: toRef(props, 'isDisabled'),\n isGrid: toRef(props, 'isGrid'),\n isInGroup: ref(true),\n})\n\nconst containerClass = computed(() =>\n composeClassName('flex items-center flex-row', props.class)\n)\n\nconst visibleAvatars = computed(() => {\n if (!props.avatars) return []\n return props.max !== undefined ? props.avatars.slice(0, props.max) : props.avatars\n})\nconst avatarOverflowCount = computed(() => {\n if (!props.avatars || props.max === undefined) return 0\n const total = props.total ?? props.avatars.length\n return total - props.max\n})\nconst avatarOverflowLabel = computed(() => {\n if (avatarOverflowCount.value <= 0) return ''\n return props.renderCount ? props.renderCount(avatarOverflowCount.value) : `+${avatarOverflowCount.value}`\n})\n\n// Flatten slot vnodes (handles Fragments from v-for etc.)\nfunction flattenVNodes(vnodes: VNode[]): VNode[] {\n const result: VNode[] = []\n for (const vnode of vnodes) {\n if (vnode.type === Fragment && Array.isArray(vnode.children)) {\n result.push(...flattenVNodes(vnode.children as VNode[]))\n } else {\n result.push(vnode)\n }\n }\n return result\n}\n\n// Determine which vnodes to render when max is set\nfunction getSlicedNodes(): VNode[] {\n const defaultSlot = slots.default?.()\n if (!defaultSlot) return []\n\n const allNodes = flattenVNodes(defaultSlot)\n\n if (props.max === undefined) {\n return allNodes\n }\n\n const visibleNodes = allNodes.slice(0, props.max)\n const totalCount = props.total ?? allNodes.length\n const overflowCount = totalCount - props.max\n\n if (overflowCount <= 0) {\n return visibleNodes\n }\n\n const counterLabel = props.renderCount\n ? props.renderCount(overflowCount)\n : `+${overflowCount}`\n\n // Render counter avatar with a fallback slot so the full label string is shown\n const counterNode = h(Avatar, {}, {\n fallback: () => h('span', { class: 'avatar__name text-xs font-medium leading-none' }, counterLabel),\n })\n\n return [...visibleNodes, counterNode]\n}\n</script>\n\n<template>\n <div\n role=\"group\"\n :class=\"containerClass\"\n >\n <template v-if=\"props.avatars\">\n <Avatar\n v-for=\"(avatar, idx) in visibleAvatars\"\n :key=\"idx\"\n v-bind=\"avatar\"\n />\n <Avatar v-if=\"avatarOverflowCount > 0\">\n <template #fallback>\n <span class=\"avatar__name text-xs font-medium leading-none\">{{ avatarOverflowLabel }}</span>\n </template>\n </Avatar>\n </template>\n <template v-else-if=\"props.max !== undefined\">\n <!-- Use render function output for sliced vnodes -->\n <template\n v-for=\"(node, _i) in getSlicedNodes()\"\n :key=\"_i\"\n >\n <component :is=\"node\" />\n </template>\n </template>\n <template v-else>\n <slot />\n </template>\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"AvatarGroup.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { type AvatarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\ntype AvatarShorthandItem = {\n src?: string\n alt?: string\n name?: string\n color?: AvatarVariants['color']\n variant?: AvatarVariants['variant']\n isBordered?: boolean\n isDisabled?: boolean\n showFallback?: boolean\n}\n\nconst props = withDefaults(defineProps<{\n size?: AvatarVariants['size']\n isBordered?: boolean\n isDisabled?: boolean\n isGrid?: boolean\n max?: number\n total?: number\n renderCount?: (count: number) => string\n class?: string\n /** Shorthand API: render avatars from an array instead of the compound slot API */\n avatars?: AvatarShorthandItem[]\n}>(), {\n size: 'md',\n\n isBordered: false,\n isDisabled: false,\n isGrid: false,\n})\n\nconst slots = defineSlots<{\n default?(): VNode[];\n}>()\n\n// Provide context using toRef() for reactivity (canonical pattern from ButtonGroup)\nuseAvatarGroupProvide({\n size: toRef(props, 'size'),\n isBordered: toRef(props, 'isBordered'),\n isDisabled: toRef(props, 'isDisabled'),\n isGrid: toRef(props, 'isGrid'),\n isInGroup: ref(true),\n})\n\nconst containerClass = computed(() =>\n composeClassName('flex items-center flex-row', props.class)\n)\n\nconst visibleAvatars = computed(() => {\n if (!props.avatars) return []\n return props.max !== undefined ? props.avatars.slice(0, props.max) : props.avatars\n})\nconst avatarOverflowCount = computed(() => {\n if (!props.avatars || props.max === undefined) return 0\n const total = props.total ?? props.avatars.length\n return total - props.max\n})\nconst avatarOverflowLabel = computed(() => {\n if (avatarOverflowCount.value <= 0) return ''\n return props.renderCount ? props.renderCount(avatarOverflowCount.value) : `+${avatarOverflowCount.value}`\n})\n\n// Flatten slot vnodes (handles Fragments from v-for etc.)\nfunction flattenVNodes(vnodes: VNode[]): VNode[] {\n const result: VNode[] = []\n for (const vnode of vnodes) {\n if (vnode.type === Fragment && Array.isArray(vnode.children)) {\n result.push(...flattenVNodes(vnode.children as VNode[]))\n } else {\n result.push(vnode)\n }\n }\n return result\n}\n\n// Determine which vnodes to render when max is set\nfunction getSlicedNodes(): VNode[] {\n const defaultSlot = slots.default?.()\n if (!defaultSlot) return []\n\n const allNodes = flattenVNodes(defaultSlot)\n\n if (props.max === undefined) {\n return allNodes\n }\n\n const visibleNodes = allNodes.slice(0, props.max)\n const totalCount = props.total ?? allNodes.length\n const overflowCount = totalCount - props.max\n\n if (overflowCount <= 0) {\n return visibleNodes\n }\n\n const counterLabel = props.renderCount\n ? props.renderCount(overflowCount)\n : `+${overflowCount}`\n\n // Render counter avatar with a fallback slot so the full label string is shown\n const counterNode = h(Avatar, {}, {\n fallback: () => h('span', { class: 'avatar__name text-xs font-medium leading-none' }, counterLabel),\n })\n\n return [...visibleNodes, counterNode]\n}\n</script>\n\n<template>\n <div\n role=\"group\"\n :class=\"containerClass\"\n >\n <template v-if=\"props.avatars\">\n <Avatar\n v-for=\"(avatar, idx) in visibleAvatars\"\n :key=\"idx\"\n v-bind=\"avatar\"\n />\n <Avatar v-if=\"avatarOverflowCount > 0\">\n <template #fallback>\n <span class=\"avatar__name text-xs font-medium leading-none\">{{ avatarOverflowLabel }}</span>\n </template>\n </Avatar>\n </template>\n <template v-else-if=\"props.max !== undefined\">\n <!-- Use render function output for sliced vnodes -->\n <template\n v-for=\"(node, _i) in getSlicedNodes()\"\n :key=\"_i\"\n >\n <component :is=\"node\" />\n </template>\n </template>\n <template v-else>\n <slot />\n </template>\n </div>\n</template>\n"],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"AvatarGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { type AvatarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\ntype AvatarShorthandItem = {\n src?: string\n alt?: string\n name?: string\n color?: AvatarVariants['color']\n variant?: AvatarVariants['variant']\n isBordered?: boolean\n isDisabled?: boolean\n showFallback?: boolean\n}\n\nconst props = withDefaults(defineProps<{\n size?: 'sm' | 'md' | 'lg'\n isBordered?: boolean\n isDisabled?: boolean\n isGrid?: boolean\n max?: number\n total?: number\n renderCount?: (count: number) => string\n class?: string\n /** Shorthand API: render avatars from an array instead of the compound slot API */\n avatars?: AvatarShorthandItem[]\n}>(), {\n size: 'md',\n\n isBordered: false,\n isDisabled: false,\n isGrid: false,\n})\n\nconst slots = defineSlots<{\n default?(): VNode[];\n}>()\n\n// Provide context using toRef() for reactivity (canonical pattern from ButtonGroup)\nuseAvatarGroupProvide({\n size: toRef(props, 'size'),\n isBordered: toRef(props, 'isBordered'),\n isDisabled: toRef(props, 'isDisabled'),\n isGrid: toRef(props, 'isGrid'),\n isInGroup: ref(true),\n})\n\nconst containerClass = computed(() =>\n composeClassName('flex items-center flex-row', props.class)\n)\n\nconst visibleAvatars = computed(() => {\n if (!props.avatars) return []\n return props.max !== undefined ? props.avatars.slice(0, props.max) : props.avatars\n})\nconst avatarOverflowCount = computed(() => {\n if (!props.avatars || props.max === undefined) return 0\n const total = props.total ?? props.avatars.length\n return total - props.max\n})\nconst avatarOverflowLabel = computed(() => {\n if (avatarOverflowCount.value <= 0) return ''\n return props.renderCount ? props.renderCount(avatarOverflowCount.value) : `+${avatarOverflowCount.value}`\n})\n\n// Flatten slot vnodes (handles Fragments from v-for etc.)\nfunction flattenVNodes(vnodes: VNode[]): VNode[] {\n const result: VNode[] = []\n for (const vnode of vnodes) {\n if (vnode.type === Fragment && Array.isArray(vnode.children)) {\n result.push(...flattenVNodes(vnode.children as VNode[]))\n } else {\n result.push(vnode)\n }\n }\n return result\n}\n\n// Determine which vnodes to render when max is set\nfunction getSlicedNodes(): VNode[] {\n const defaultSlot = slots.default?.()\n if (!defaultSlot) return []\n\n const allNodes = flattenVNodes(defaultSlot)\n\n if (props.max === undefined) {\n return allNodes\n }\n\n const visibleNodes = allNodes.slice(0, props.max)\n const totalCount = props.total ?? allNodes.length\n const overflowCount = totalCount - props.max\n\n if (overflowCount <= 0) {\n return visibleNodes\n }\n\n const counterLabel = props.renderCount\n ? props.renderCount(overflowCount)\n : `+${overflowCount}`\n\n // Render counter avatar with a fallback slot so the full label string is shown\n const counterNode = h(Avatar, {}, {\n fallback: () => h('span', { class: 'avatar__name text-xs font-medium leading-none' }, counterLabel),\n })\n\n return [...visibleNodes, counterNode]\n}\n</script>\n\n<template>\n <div\n role=\"group\"\n :class=\"containerClass\"\n >\n <template v-if=\"props.avatars\">\n <Avatar\n v-for=\"(avatar, idx) in visibleAvatars\"\n :key=\"idx\"\n v-bind=\"avatar\"\n />\n <Avatar v-if=\"avatarOverflowCount > 0\">\n <template #fallback>\n <span class=\"avatar__name text-xs font-medium leading-none\">{{ avatarOverflowLabel }}</span>\n </template>\n </Avatar>\n </template>\n <template v-else-if=\"props.max !== undefined\">\n <!-- Use render function output for sliced vnodes -->\n <template\n v-for=\"(node, _i) in getSlicedNodes()\"\n :key=\"_i\"\n >\n <component :is=\"node\" />\n </template>\n </template>\n <template v-else>\n <slot />\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBA,MAAM,QAAQ;EAmBd,MAAM,QAAQ,UAAA;AAKd,wBAAsB;GACpB,MAAM,MAAM,OAAO,OAAO;GAC1B,YAAY,MAAM,OAAO,aAAa;GACtC,YAAY,MAAM,OAAO,aAAa;GACtC,QAAQ,MAAM,OAAO,SAAS;GAC9B,WAAW,IAAI,KAAK;GACrB,CAAA;EAED,MAAM,iBAAiB,eACrB,iBAAiB,8BAA8B,MAAM,MAAK,CAC5D;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,CAAC,MAAM,QAAS,QAAO,EAAC;AAC5B,UAAO,MAAM,QAAQ,KAAA,IAAY,MAAM,QAAQ,MAAM,GAAG,MAAM,IAAI,GAAG,MAAM;IAC5E;EACD,MAAM,sBAAsB,eAAe;AACzC,OAAI,CAAC,MAAM,WAAW,MAAM,QAAQ,KAAA,EAAW,QAAO;AAEtD,WADc,MAAM,SAAS,MAAM,QAAQ,UAC5B,MAAM;IACtB;EACD,MAAM,sBAAsB,eAAe;AACzC,OAAI,oBAAoB,SAAS,EAAG,QAAO;AAC3C,UAAO,MAAM,cAAc,MAAM,YAAY,oBAAoB,MAAM,GAAG,IAAI,oBAAoB;IACnG;EAGD,SAAS,cAAc,QAA0B;GAC/C,MAAM,SAAkB,EAAC;AACzB,QAAK,MAAM,SAAS,OAClB,KAAI,MAAM,SAAS,YAAY,MAAM,QAAQ,MAAM,SAAS,CAC1D,QAAO,KAAK,GAAG,cAAc,MAAM,SAAoB,CAAA;OAEvD,QAAO,KAAK,MAAK;AAGrB,UAAO;;EAIT,SAAS,iBAA0B;GACjC,MAAM,cAAc,MAAM,WAAU;AACpC,OAAI,CAAC,YAAa,QAAO,EAAC;GAE1B,MAAM,WAAW,cAAc,YAAW;AAE1C,OAAI,MAAM,QAAQ,KAAA,EAChB,QAAO;GAGT,MAAM,eAAe,SAAS,MAAM,GAAG,MAAM,IAAG;GAEhD,MAAM,iBADa,MAAM,SAAS,SAAS,UACR,MAAM;AAEzC,OAAI,iBAAiB,EACnB,QAAO;GAGT,MAAM,eAAe,MAAM,cACvB,MAAM,YAAY,cAAa,GAC/B,IAAI;GAGR,MAAM,cAAc,EAAE,gBAAQ,EAAE,EAAE,EAChC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,iDAAiD,EAAE,aAAa,EACpG,CAAA;AAED,UAAO,CAAC,GAAG,cAAc,YAAW;;;uBAKpC,mBA4BM,OAAA;IA3BJ,MAAK;IACJ,OAAK,eAAE,eAAA,MAAc;OAEN,MAAM,WAAA,WAAA,EAAtB,mBAWW,UAAA,EAAA,KAAA,GAAA,EAAA,EAAA,UAAA,KAAA,EAVT,mBAIE,UAAA,MAAA,WAHwB,eAAA,QAAhB,QAAQ,QAAG;wBADrB,YAIE,gBAJF,WAIE,EAFC,KAAK,KAAG,EAAA,EAAA,SAAA,MAAA,EACD,OAAM,EAAA,MAAA,GAAA;cAEF,oBAAA,QAAmB,KAAA,WAAA,EAAjC,YAIS,gBAAA,EAAA,KAAA,GAAA,EAAA;IAHI,UAAQ,cAC2E,CAA5F,mBAA4F,QAA5F,YAA4F,gBAA7B,oBAAA,MAAmB,EAAA,EAAA,CAAA,CAAA;;+CAInE,MAAM,QAAQ,KAAA,KAAA,UAAA,KAAA,EAEjC,mBAKW,UAAA,EAAA,KAAA,GAAA,EAAA,WAJY,gBAAc,GAA3B,MAAM,OAAE;wBAGhB,YAAwB,wBAAR,KAAI,EAAA,EAAA,KAFd,IAAE,CAAA;eAMV,WAAQ,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,CAAA,EAAA,EAAA"}
1
+ {"version":3,"file":"AvatarGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/avatar/AvatarGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, toRef, ref, h, Fragment, type VNode } from 'vue'\nimport { type AvatarVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useAvatarGroupProvide } from './avatar-group.context'\nimport Avatar from './Avatar.vue'\n\ntype AvatarShorthandItem = {\n src?: string\n alt?: string\n name?: string\n color?: AvatarVariants['color']\n variant?: AvatarVariants['variant']\n isBordered?: boolean\n isDisabled?: boolean\n showFallback?: boolean\n}\n\nconst props = withDefaults(defineProps<{\n size?: AvatarVariants['size']\n isBordered?: boolean\n isDisabled?: boolean\n isGrid?: boolean\n max?: number\n total?: number\n renderCount?: (count: number) => string\n class?: string\n /** Shorthand API: render avatars from an array instead of the compound slot API */\n avatars?: AvatarShorthandItem[]\n}>(), {\n size: 'md',\n\n isBordered: false,\n isDisabled: false,\n isGrid: false,\n})\n\nconst slots = defineSlots<{\n default?(): VNode[];\n}>()\n\n// Provide context using toRef() for reactivity (canonical pattern from ButtonGroup)\nuseAvatarGroupProvide({\n size: toRef(props, 'size'),\n isBordered: toRef(props, 'isBordered'),\n isDisabled: toRef(props, 'isDisabled'),\n isGrid: toRef(props, 'isGrid'),\n isInGroup: ref(true),\n})\n\nconst containerClass = computed(() =>\n composeClassName('flex items-center flex-row', props.class)\n)\n\nconst visibleAvatars = computed(() => {\n if (!props.avatars) return []\n return props.max !== undefined ? props.avatars.slice(0, props.max) : props.avatars\n})\nconst avatarOverflowCount = computed(() => {\n if (!props.avatars || props.max === undefined) return 0\n const total = props.total ?? props.avatars.length\n return total - props.max\n})\nconst avatarOverflowLabel = computed(() => {\n if (avatarOverflowCount.value <= 0) return ''\n return props.renderCount ? props.renderCount(avatarOverflowCount.value) : `+${avatarOverflowCount.value}`\n})\n\n// Flatten slot vnodes (handles Fragments from v-for etc.)\nfunction flattenVNodes(vnodes: VNode[]): VNode[] {\n const result: VNode[] = []\n for (const vnode of vnodes) {\n if (vnode.type === Fragment && Array.isArray(vnode.children)) {\n result.push(...flattenVNodes(vnode.children as VNode[]))\n } else {\n result.push(vnode)\n }\n }\n return result\n}\n\n// Determine which vnodes to render when max is set\nfunction getSlicedNodes(): VNode[] {\n const defaultSlot = slots.default?.()\n if (!defaultSlot) return []\n\n const allNodes = flattenVNodes(defaultSlot)\n\n if (props.max === undefined) {\n return allNodes\n }\n\n const visibleNodes = allNodes.slice(0, props.max)\n const totalCount = props.total ?? allNodes.length\n const overflowCount = totalCount - props.max\n\n if (overflowCount <= 0) {\n return visibleNodes\n }\n\n const counterLabel = props.renderCount\n ? props.renderCount(overflowCount)\n : `+${overflowCount}`\n\n // Render counter avatar with a fallback slot so the full label string is shown\n const counterNode = h(Avatar, {}, {\n fallback: () => h('span', { class: 'avatar__name text-xs font-medium leading-none' }, counterLabel),\n })\n\n return [...visibleNodes, counterNode]\n}\n</script>\n\n<template>\n <div\n role=\"group\"\n :class=\"containerClass\"\n >\n <template v-if=\"props.avatars\">\n <Avatar\n v-for=\"(avatar, idx) in visibleAvatars\"\n :key=\"idx\"\n v-bind=\"avatar\"\n />\n <Avatar v-if=\"avatarOverflowCount > 0\">\n <template #fallback>\n <span class=\"avatar__name text-xs font-medium leading-none\">{{ avatarOverflowLabel }}</span>\n </template>\n </Avatar>\n </template>\n <template v-else-if=\"props.max !== undefined\">\n <!-- Use render function output for sliced vnodes -->\n <template\n v-for=\"(node, _i) in getSlicedNodes()\"\n :key=\"_i\"\n >\n <component :is=\"node\" />\n </template>\n </template>\n <template v-else>\n <slot />\n </template>\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAkBA,MAAM,QAAQ;EAmBd,MAAM,QAAQ,UAAA;AAKd,wBAAsB;GACpB,MAAM,MAAM,OAAO,OAAO;GAC1B,YAAY,MAAM,OAAO,aAAa;GACtC,YAAY,MAAM,OAAO,aAAa;GACtC,QAAQ,MAAM,OAAO,SAAS;GAC9B,WAAW,IAAI,KAAK;GACrB,CAAA;EAED,MAAM,iBAAiB,eACrB,iBAAiB,8BAA8B,MAAM,MAAK,CAC5D;EAEA,MAAM,iBAAiB,eAAe;AACpC,OAAI,CAAC,MAAM,QAAS,QAAO,EAAC;AAC5B,UAAO,MAAM,QAAQ,KAAA,IAAY,MAAM,QAAQ,MAAM,GAAG,MAAM,IAAI,GAAG,MAAM;IAC5E;EACD,MAAM,sBAAsB,eAAe;AACzC,OAAI,CAAC,MAAM,WAAW,MAAM,QAAQ,KAAA,EAAW,QAAO;AAEtD,WADc,MAAM,SAAS,MAAM,QAAQ,UAC5B,MAAM;IACtB;EACD,MAAM,sBAAsB,eAAe;AACzC,OAAI,oBAAoB,SAAS,EAAG,QAAO;AAC3C,UAAO,MAAM,cAAc,MAAM,YAAY,oBAAoB,MAAM,GAAG,IAAI,oBAAoB;IACnG;EAGD,SAAS,cAAc,QAA0B;GAC/C,MAAM,SAAkB,EAAC;AACzB,QAAK,MAAM,SAAS,OAClB,KAAI,MAAM,SAAS,YAAY,MAAM,QAAQ,MAAM,SAAS,CAC1D,QAAO,KAAK,GAAG,cAAc,MAAM,SAAoB,CAAA;OAEvD,QAAO,KAAK,MAAK;AAGrB,UAAO;;EAIT,SAAS,iBAA0B;GACjC,MAAM,cAAc,MAAM,WAAU;AACpC,OAAI,CAAC,YAAa,QAAO,EAAC;GAE1B,MAAM,WAAW,cAAc,YAAW;AAE1C,OAAI,MAAM,QAAQ,KAAA,EAChB,QAAO;GAGT,MAAM,eAAe,SAAS,MAAM,GAAG,MAAM,IAAG;GAEhD,MAAM,iBADa,MAAM,SAAS,SAAS,UACR,MAAM;AAEzC,OAAI,iBAAiB,EACnB,QAAO;GAGT,MAAM,eAAe,MAAM,cACvB,MAAM,YAAY,cAAa,GAC/B,IAAI;GAGR,MAAM,cAAc,EAAE,gBAAQ,EAAE,EAAE,EAChC,gBAAgB,EAAE,QAAQ,EAAE,OAAO,iDAAiD,EAAE,aAAa,EACpG,CAAA;AAED,UAAO,CAAC,GAAG,cAAc,YAAW;;;uBAKpC,mBA4BM,OAAA;IA3BJ,MAAK;IACJ,OAAK,eAAE,eAAA,MAAc;OAEN,MAAM,WAAA,WAAA,EAAtB,mBAWW,UAAA,EAAA,KAAA,GAAA,EAAA,EAAA,UAAA,KAAA,EAVT,mBAIE,UAAA,MAAA,WAHwB,eAAA,QAAhB,QAAQ,QAAG;wBADrB,YAIE,gBAJF,WAIE,EAFC,KAAK,KAAG,EAAA,EAAA,SAAA,MAAA,EACD,OAAM,EAAA,MAAA,GAAA;cAEF,oBAAA,QAAmB,KAAA,WAAA,EAAjC,YAIS,gBAAA,EAAA,KAAA,GAAA,EAAA;IAHI,UAAQ,cAC2E,CAA5F,mBAA4F,QAA5F,YAA4F,gBAA7B,oBAAA,MAAmB,EAAA,EAAA,CAAA,CAAA;;+CAInE,MAAM,QAAQ,KAAA,KAAA,UAAA,KAAA,EAEjC,mBAKW,UAAA,EAAA,KAAA,GAAA,EAAA,WAJY,gBAAc,GAA3B,MAAM,OAAE;wBAGhB,YAAwB,wBAAR,KAAI,EAAA,EAAA,KAFd,IAAE,CAAA;eAMV,WAAQ,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,CAAA,EAAA,EAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"Button.js","names":[],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\n\nconst props = withDefaults(defineProps<{\n /**\n * Visual style of the button.\n * @deprecated 'outline' — use 'bordered' instead.\n */\n variant?: ButtonVariants['variant'] | 'outline'\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n disabled: false,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('Button', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && v && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"isDisabled || props.isLoading || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"Button.js","names":[],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n /**\n * Visual style of the button.\n * @deprecated 'outline' — use 'bordered' instead.\n */\n variant?: ButtonVariants['variant'] | 'outline'\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n isDisabled: undefined,\n disabled: undefined,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Resolve this button's own isDisabled/disabled prop pair before combining with group state.\nconst resolvedDisabled = useDeprecatedBooleanProp(\n 'Button', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst effectiveDisabled = computed(() => groupCtx.disabled.value || resolvedDisabled.value)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('Button', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && v && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"effectiveDisabled || props.isLoading || undefined\"\n :data-disabled=\"effectiveDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":""}
@@ -2,6 +2,7 @@ import { composeClassName } from "../../utils/composeClassName.js";
2
2
  import Spinner_default from "../spinner/Spinner.js";
3
3
  import "../../utils/warnDeprecated.js";
4
4
  import { useButtonGroupInject } from "./button-group.context.js";
5
+ import { useDeprecatedBooleanProp } from "../../composables/useDeprecatedBooleanProp.js";
5
6
  import { computed, createBlock, createCommentVNode, createElementBlock, createElementVNode, createVNode, defineComponent, mergeProps, normalizeClass, openBlock, ref, renderSlot, unref, withCtx } from "vue";
6
7
  import { buttonVariants } from "@auronui/styles";
7
8
  import { Primitive } from "reka-ui";
@@ -21,9 +22,13 @@ var Button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
21
22
  type: Boolean,
22
23
  default: false
23
24
  },
25
+ isDisabled: {
26
+ type: Boolean,
27
+ default: void 0
28
+ },
24
29
  disabled: {
25
30
  type: Boolean,
26
- default: false
31
+ default: void 0
27
32
  },
28
33
  isLoading: {
29
34
  type: Boolean,
@@ -58,7 +63,8 @@ var Button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
58
63
  function handleClick() {
59
64
  if (props.value !== void 0) groupCtx.selectValue(props.value);
60
65
  }
61
- const isDisabled = computed(() => groupCtx.disabled.value || props.disabled);
66
+ const resolvedDisabled = useDeprecatedBooleanProp("Button", "isDisabled", () => props.isDisabled, "disabled", () => props.disabled);
67
+ const effectiveDisabled = computed(() => groupCtx.disabled.value || resolvedDisabled.value);
62
68
  const finalVariant = computed(() => props.variant ?? groupCtx.variant.value);
63
69
  const finalColor = computed(() => props.color ?? groupCtx.color.value);
64
70
  const finalSize = computed(() => props.size ?? groupCtx.size.value);
@@ -130,8 +136,8 @@ var Button_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineC
130
136
  return openBlock(), createBlock(unref(Primitive), mergeProps({
131
137
  as: props.as,
132
138
  class: unref(composeClassName)(slotFns.value.base(), props.class, props.classNames?.base),
133
- disabled: isDisabled.value || props.isLoading || void 0,
134
- "data-disabled": isDisabled.value || void 0,
139
+ disabled: effectiveDisabled.value || props.isLoading || void 0,
140
+ "data-disabled": effectiveDisabled.value || void 0,
135
141
  "data-loading": props.isLoading || void 0,
136
142
  "data-orientation": unref(groupCtx).orientation.value,
137
143
  "data-selected": isSelected.value || void 0
@@ -1 +1 @@
1
- {"version":3,"file":"Button.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\n\nconst props = withDefaults(defineProps<{\n /**\n * Visual style of the button.\n * @deprecated 'outline' — use 'bordered' instead.\n */\n variant?: ButtonVariants['variant'] | 'outline'\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n disabled: false,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('Button', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && v && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"isDisabled || props.isLoading || undefined\"\n :data-disabled=\"isDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASA,MAAM,QAAQ;EAuCd,MAAM,WAAW,qBAAqB;GACpC,SAAS,IAAI,QAAQ;GACrB,OAAO,IAAI,UAAU;GACrB,MAAM,IAAI,KAAK;GACf,UAAU,IAAI,MAAM;GACpB,WAAW,IAAI,MAAM;GACrB,aAAa,IAAI,aAAa;GAC9B,eAAe,IAAI,SAAS;GAC5B,eAAe,IAAI,KAAK;GACxB,uBAAuB;GACvB,mBAAmB;GACpB,CAAA;EAED,MAAM,aAAa,eAAe,SAAS,gBAAgB,MAAM,MAAM,CAAA;EAEvE,SAAS,cAAc;AACrB,OAAI,MAAM,UAAU,KAAA,EAAW,UAAS,YAAY,MAAM,MAAK;;EAMjE,MAAM,aAAa,eAAe,SAAS,SAAS,SAAS,MAAM,SAAQ;EAC3E,MAAM,eAAe,eAAe,MAAM,WAAW,SAAS,QAAQ,MAAK;EAC3E,MAAM,aAAa,eAAe,MAAM,SAAS,SAAS,MAAM,MAAK;EACrE,MAAM,YAAY,eAAe,MAAM,QAAQ,SAAS,KAAK,MAAK;EAClE,MAAM,iBAAiB,eAAe,MAAM,aAAa,SAAS,UAAU,MAAK;EAGjF,MAAM,kBAAsE;GAC1E,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,WAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,UAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,QAAe;IAAE,SAAS;IAAW,OAAO;IAAU;GACtD,eAAe;IAAE,SAAS;IAAW,OAAO;IAAU;GACtD,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,gBAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,gBAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACzD;EAEA,MAAM,kBAAkB,eAAe;GACrC,MAAM,IAAI,aAAa;AACvB,OAAI,CAAC,EAAG,QAAO;AACf,OAAI,MAAM,UAER,QAAO;AAET,UAAQ,gBAAgB,IAAI,WAAW;IACxC;EAED,MAAM,gBAAgB,eAAe;GACnC,MAAM,IAAI,aAAa;AAEvB,OAAI,MAAM,UAAU,KAAA,KAAa,KAAK,gBAAgB,GAAI,QAAO,gBAAgB,GAAG;AACpF,UAAO,WAAW;IACnB;EAED,MAAM,UAAU,eACd,eAAe;GACb,SAAS,gBAAgB;GACzB,OAAO,cAAc;GACrB,MAAM,UAAU;GAChB,QAAQ,MAAM;GACd,YAAY,MAAM;GAClB,WAAW,eAAe;GAC1B,WAAW,MAAM;GAClB,CAAA,CACH;EAGA,MAAM,cAAc,eAAe;AACjC,OAAI,UAAU,UAAU,QAAQ,UAAU,UAAU,KAAM,QAAO;AACjE,OAAI,UAAU,UAAU,QAAQ,UAAU,UAAU,KAAM,QAAO;AACjE,UAAO;IACR;;uBAIC,YA6CY,MAAA,UAAA,EA7CZ,WA6CY;IA5CT,IAAI,MAAM;IACV,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;IAC3E,UAAU,WAAA,SAAc,MAAM,aAAa,KAAA;IAC3C,iBAAe,WAAA,SAAc,KAAA;IAC7B,gBAAc,MAAM,aAAa,KAAA;IACjC,oBAAkB,MAAA,SAAQ,CAAC,YAAY;IACvC,iBAAe,WAAA,SAAc,KAAA;MACtBA,KAAAA,QAAM,EACb,SAAO,aAAW,CAAA,EAAA;2BAQZ;KAJCC,KAAAA,OAAO,gBAAA,WAAA,EADf,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;SAE/E,WAA4B,KAAA,QAAA,eAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAI9B,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA,EAAA,EAAA,CACrE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA;KAKFA,KAAAA,OAAO,cAAA,WAAA,EADf,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA;SAE3E,WAA0B,KAAA,QAAA,aAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAMpB,MAAM,aAAA,WAAA,EADd,mBAUO,QAAA;;MARJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA;MACrE,eAAY;MACZ,aAAU;SAEV,YAGE,iBAAA;MAFC,MAAM,YAAA;MACP,OAAM"}
1
+ {"version":3,"file":"Button.vue_vue_type_script_setup_true_lang.js","names":["$attrs","$slots"],"sources":["../../../src/components/button/Button.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Primitive } from 'reka-ui'\nimport { buttonVariants, type ButtonVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupInject } from './button-group.context'\nimport Spinner from '../spinner/Spinner.vue'\nimport { warnDeprecatedVariant } from '../../utils/warnDeprecated'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n /**\n * Visual style of the button.\n * @deprecated 'outline' — use 'bordered' instead.\n */\n variant?: ButtonVariants['variant'] | 'outline'\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n radius?: ButtonVariants['radius']\n isIconOnly?: boolean\n fullWidth?: boolean\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n isLoading?: boolean\n as?: string | object\n class?: ClassValue\n /** Override classes for individual slots (base, startContent, label, endContent, spinner) */\n classNames?: Partial<{\n base: ClassValue\n startContent: ClassValue\n label: ClassValue\n endContent: ClassValue\n spinner: ClassValue\n }>\n value?: string | number\n}>(), {\n variant: undefined,\n color: undefined,\n size: undefined,\n radius: undefined,\n isIconOnly: false,\n fullWidth: false,\n isDisabled: undefined,\n disabled: undefined,\n isLoading: false,\n as: 'button',\n value: undefined,\n})\n\n// Inject ButtonGroup context unconditionally with fallback defaults (D-12)\n// When no ButtonGroup is present, inject returns these fallback values (no-op)\nconst groupCtx = useButtonGroupInject({\n variant: ref('solid'),\n color: ref('primary'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('single'),\n selectedValue: ref(null),\n isValueSelected: () => false,\n selectValue: () => {},\n})\n\nconst isSelected = computed(() => groupCtx.isValueSelected(props.value))\n\nfunction handleClick() {\n if (props.value !== undefined) groupCtx.selectValue(props.value)\n}\n\n// Resolve this button's own isDisabled/disabled prop pair before combining with group state.\nconst resolvedDisabled = useDeprecatedBooleanProp(\n 'Button', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\n// Prop precedence rules (D-13):\n// - group disabled ALWAYS wins over child prop\n// - all other props: child prop wins over group value (child ?? group)\nconst effectiveDisabled = computed(() => groupCtx.disabled.value || resolvedDisabled.value)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalColor = computed(() => props.color ?? groupCtx.color.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\nconst finalFullWidth = computed(() => props.fullWidth || groupCtx.fullWidth.value)\n\n// Map legacy variant names to new variant+color so old usage keeps working\nconst LEGACY_VARIANTS: Record<string, { variant: string; color: string }> = {\n primary: { variant: 'solid', color: 'primary' },\n secondary: { variant: 'default', color: 'default' },\n tertiary: { variant: 'default', color: 'default' },\n danger: { variant: 'solid', color: 'danger' },\n 'danger-soft': { variant: 'soft', color: 'danger' },\n success: { variant: 'solid', color: 'success' },\n 'success-soft':{ variant: 'soft', color: 'success' },\n warning: { variant: 'solid', color: 'warning' },\n 'warning-soft':{ variant: 'soft', color: 'warning' },\n}\n\nconst resolvedVariant = computed(() => {\n const v = finalVariant.value\n if (!v) return v\n if (v === 'outline') {\n warnDeprecatedVariant('Button', 'outline', 'bordered')\n return 'bordered' as ButtonVariants['variant']\n }\n return (LEGACY_VARIANTS[v]?.variant ?? v) as ButtonVariants['variant']\n})\n\nconst resolvedColor = computed(() => {\n const v = finalVariant.value\n // If caller explicitly set color, respect it; otherwise infer from legacy variant\n if (props.color === undefined && v && LEGACY_VARIANTS[v]) return LEGACY_VARIANTS[v].color as ButtonVariants['color']\n return finalColor.value\n})\n\nconst slotFns = computed(() =>\n buttonVariants({\n variant: resolvedVariant.value,\n color: resolvedColor.value,\n size: finalSize.value,\n radius: props.radius,\n isIconOnly: props.isIconOnly,\n fullWidth: finalFullWidth.value,\n isLoading: props.isLoading,\n })\n)\n\n// Spinner size scales with button size\nconst spinnerSize = computed(() => {\n if (finalSize.value === 'xs' || finalSize.value === 'sm') return 'sm' as const\n if (finalSize.value === 'lg' || finalSize.value === 'xl') return 'lg' as const\n return 'md' as const\n})\n</script>\n\n<template>\n <Primitive\n :as=\"props.as\"\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :disabled=\"effectiveDisabled || props.isLoading || undefined\"\n :data-disabled=\"effectiveDisabled || undefined\"\n :data-loading=\"props.isLoading || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :data-selected=\"isSelected || undefined\"\n v-bind=\"$attrs\"\n @click=\"handleClick\"\n >\n <!-- startContent named slot -->\n <span\n v-if=\"$slots.startContent\"\n :class=\"composeClassName(slotFns.startContent(), props.classNames?.startContent)\"\n >\n <slot name=\"startContent\" />\n </span>\n\n <!-- default (label) slot -->\n <span :class=\"composeClassName(slotFns.label(), props.classNames?.label)\">\n <slot />\n </span>\n\n <!-- endContent named slot -->\n <span\n v-if=\"$slots.endContent\"\n :class=\"composeClassName(slotFns.endContent(), props.classNames?.endContent)\"\n >\n <slot name=\"endContent\" />\n </span>\n\n <!-- Loading spinner: absolute-centered, only rendered when isLoading=true (D-08, D-09) -->\n <!-- color=\"current\" inherits --button-fg so spinner contrasts with the button background -->\n <span\n v-if=\"props.isLoading\"\n :class=\"composeClassName(slotFns.spinner(), props.classNames?.spinner)\"\n aria-hidden=\"true\"\n data-slot=\"spinner\"\n >\n <Spinner\n :size=\"spinnerSize\"\n color=\"current\"\n />\n </span>\n </Primitive>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAUA,MAAM,QAAQ;EA0Cd,MAAM,WAAW,qBAAqB;GACpC,SAAS,IAAI,QAAQ;GACrB,OAAO,IAAI,UAAU;GACrB,MAAM,IAAI,KAAK;GACf,UAAU,IAAI,MAAM;GACpB,WAAW,IAAI,MAAM;GACrB,aAAa,IAAI,aAAa;GAC9B,eAAe,IAAI,SAAS;GAC5B,eAAe,IAAI,KAAK;GACxB,uBAAuB;GACvB,mBAAmB;GACpB,CAAA;EAED,MAAM,aAAa,eAAe,SAAS,gBAAgB,MAAM,MAAM,CAAA;EAEvE,SAAS,cAAc;AACrB,OAAI,MAAM,UAAU,KAAA,EAAW,UAAS,YAAY,MAAM,MAAK;;EAIjE,MAAM,mBAAmB,yBACvB,UAAU,oBAAoB,MAAM,YAAY,kBAAkB,MAAM,SAC1E;EAKA,MAAM,oBAAoB,eAAe,SAAS,SAAS,SAAS,iBAAiB,MAAK;EAC1F,MAAM,eAAe,eAAe,MAAM,WAAW,SAAS,QAAQ,MAAK;EAC3E,MAAM,aAAa,eAAe,MAAM,SAAS,SAAS,MAAM,MAAK;EACrE,MAAM,YAAY,eAAe,MAAM,QAAQ,SAAS,KAAK,MAAK;EAClE,MAAM,iBAAiB,eAAe,MAAM,aAAa,SAAS,UAAU,MAAK;EAGjF,MAAM,kBAAsE;GAC1E,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,WAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,UAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,QAAe;IAAE,SAAS;IAAW,OAAO;IAAU;GACtD,eAAe;IAAE,SAAS;IAAW,OAAO;IAAU;GACtD,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,gBAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,SAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACvD,gBAAe;IAAE,SAAS;IAAW,OAAO;IAAW;GACzD;EAEA,MAAM,kBAAkB,eAAe;GACrC,MAAM,IAAI,aAAa;AACvB,OAAI,CAAC,EAAG,QAAO;AACf,OAAI,MAAM,UAER,QAAO;AAET,UAAQ,gBAAgB,IAAI,WAAW;IACxC;EAED,MAAM,gBAAgB,eAAe;GACnC,MAAM,IAAI,aAAa;AAEvB,OAAI,MAAM,UAAU,KAAA,KAAa,KAAK,gBAAgB,GAAI,QAAO,gBAAgB,GAAG;AACpF,UAAO,WAAW;IACnB;EAED,MAAM,UAAU,eACd,eAAe;GACb,SAAS,gBAAgB;GACzB,OAAO,cAAc;GACrB,MAAM,UAAU;GAChB,QAAQ,MAAM;GACd,YAAY,MAAM;GAClB,WAAW,eAAe;GAC1B,WAAW,MAAM;GAClB,CAAA,CACH;EAGA,MAAM,cAAc,eAAe;AACjC,OAAI,UAAU,UAAU,QAAQ,UAAU,UAAU,KAAM,QAAO;AACjE,OAAI,UAAU,UAAU,QAAQ,UAAU,UAAU,KAAM,QAAO;AACjE,UAAO;IACR;;uBAIC,YA6CY,MAAA,UAAA,EA7CZ,WA6CY;IA5CT,IAAI,MAAM;IACV,OAAO,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI;IAC3E,UAAU,kBAAA,SAAqB,MAAM,aAAa,KAAA;IAClD,iBAAe,kBAAA,SAAqB,KAAA;IACpC,gBAAc,MAAM,aAAa,KAAA;IACjC,oBAAkB,MAAA,SAAQ,CAAC,YAAY;IACvC,iBAAe,WAAA,SAAc,KAAA;MACtBA,KAAAA,QAAM,EACb,SAAO,aAAW,CAAA,EAAA;2BAQZ;KAJCC,KAAAA,OAAO,gBAAA,WAAA,EADf,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,cAAY,EAAI,MAAM,YAAY,aAAY,CAAA;SAE/E,WAA4B,KAAA,QAAA,eAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAI9B,mBAEO,QAAA,EAFA,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,OAAK,EAAI,MAAM,YAAY,MAAK,CAAA,EAAA,EAAA,CACrE,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,EAAA;KAKFA,KAAAA,OAAO,cAAA,WAAA,EADf,mBAKO,QAAA;;MAHJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,YAAU,EAAI,MAAM,YAAY,WAAU,CAAA;SAE3E,WAA0B,KAAA,QAAA,aAAA,CAAA,EAAA,EAAA,IAAA,mBAAA,IAAA,KAAA;KAMpB,MAAM,aAAA,WAAA,EADd,mBAUO,QAAA;;MARJ,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,SAAO,EAAI,MAAM,YAAY,QAAO,CAAA;MACrE,eAAY;MACZ,aAAU;SAEV,YAGE,iBAAA;MAFC,MAAM,YAAA;MACP,OAAM"}
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.js","names":[],"sources":["../../../src/components/button/ButtonGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, toRef } from 'vue'\nimport { buttonGroupVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupProvide } from './button-group.context'\nimport type { ButtonGroupSelectionMode, ButtonGroupValue } from './button-group.context'\nimport type { ButtonVariants } from '@auronui/styles'\nimport Button from './Button.vue'\n\ntype ButtonShorthandItem = {\n label: string\n value?: string | number\n disabled?: boolean\n isLoading?: boolean\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n class?: string\n}\n\nconst props = withDefaults(defineProps<{\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n disabled?: boolean\n fullWidth?: boolean\n orientation?: 'horizontal' | 'vertical'\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n }>\n selectionMode?: ButtonGroupSelectionMode\n modelValue?: ButtonGroupValue\n /** Shorthand API: render buttons from an array instead of the compound slot API */\n buttons?: ButtonShorthandItem[]\n}>(), {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n disabled: false,\n fullWidth: false,\n orientation: 'horizontal',\n selectionMode: 'single',\n modelValue: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: ButtonGroupValue]\n}>()\n\n// Selected value: controlled if modelValue prop is provided, otherwise uncontrolled.\n// Single mode: scalar (string|number|null). Multiple mode: array of scalars.\nconst internalSelected = ref<ButtonGroupValue>(props.selectionMode === 'multiple' ? [] : null)\nconst selectedValue = computed<ButtonGroupValue>({\n get: () => (props.modelValue !== undefined ? props.modelValue : internalSelected.value),\n set: (v) => {\n if (props.modelValue === undefined) internalSelected.value = v\n emit('update:modelValue', v)\n },\n})\n\nfunction isValueSelected(value: string | number | undefined): boolean {\n if (value === undefined) return false\n const current = selectedValue.value\n if (Array.isArray(current)) return current.includes(value)\n return current === value\n}\n\nfunction selectValue(value: string | number) {\n if (props.selectionMode === 'multiple') {\n const current = Array.isArray(selectedValue.value) ? selectedValue.value : []\n selectedValue.value = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n } else {\n // Single mode: clicking the already-selected button deselects it\n selectedValue.value = selectedValue.value === value ? null : value\n }\n}\n\n// Provide context using toRef() for reactivity (D-11)\nuseButtonGroupProvide({\n variant: toRef(props, 'variant'),\n color: toRef(props, 'color'),\n size: toRef(props, 'size'),\n disabled: toRef(props, 'disabled'),\n fullWidth: toRef(props, 'fullWidth'),\n orientation: toRef(props, 'orientation'),\n selectionMode: toRef(props, 'selectionMode'),\n selectedValue,\n isValueSelected,\n selectValue,\n})\n\nconst slotFns = computed(() =>\n buttonGroupVariants({\n fullWidth: props.fullWidth,\n orientation: props.orientation,\n })\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"props.orientation\"\n role=\"group\"\n >\n <template v-if=\"props.buttons\">\n <Button\n v-for=\"(btn, idx) in props.buttons\"\n :key=\"idx\"\n :value=\"btn.value\"\n :disabled=\"btn.disabled\"\n :is-loading=\"btn.isLoading\"\n :variant=\"btn.variant\"\n :color=\"btn.color\"\n :class=\"btn.class\"\n >{{ btn.label }}</Button>\n </template>\n <slot v-else />\n </div>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ButtonGroup.js","names":[],"sources":["../../../src/components/button/ButtonGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, toRef } from 'vue'\nimport { buttonGroupVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupProvide } from './button-group.context'\nimport type { ButtonGroupSelectionMode, ButtonGroupValue } from './button-group.context'\nimport type { ButtonVariants } from '@auronui/styles'\nimport Button from './Button.vue'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\ntype ButtonShorthandItem = {\n label: string\n value?: string | number\n disabled?: boolean\n isLoading?: boolean\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n class?: string\n}\n\nconst props = withDefaults(defineProps<{\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n fullWidth?: boolean\n orientation?: 'horizontal' | 'vertical'\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n }>\n selectionMode?: ButtonGroupSelectionMode\n modelValue?: ButtonGroupValue\n /** Shorthand API: render buttons from an array instead of the compound slot API */\n buttons?: ButtonShorthandItem[]\n}>(), {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n isDisabled: undefined,\n disabled: undefined,\n fullWidth: false,\n orientation: 'horizontal',\n selectionMode: 'single',\n modelValue: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: ButtonGroupValue]\n}>()\n\n// Selected value: controlled if modelValue prop is provided, otherwise uncontrolled.\n// Single mode: scalar (string|number|null). Multiple mode: array of scalars.\nconst internalSelected = ref<ButtonGroupValue>(props.selectionMode === 'multiple' ? [] : null)\nconst selectedValue = computed<ButtonGroupValue>({\n get: () => (props.modelValue !== undefined ? props.modelValue : internalSelected.value),\n set: (v) => {\n if (props.modelValue === undefined) internalSelected.value = v\n emit('update:modelValue', v)\n },\n})\n\nfunction isValueSelected(value: string | number | undefined): boolean {\n if (value === undefined) return false\n const current = selectedValue.value\n if (Array.isArray(current)) return current.includes(value)\n return current === value\n}\n\nfunction selectValue(value: string | number) {\n if (props.selectionMode === 'multiple') {\n const current = Array.isArray(selectedValue.value) ? selectedValue.value : []\n selectedValue.value = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n } else {\n // Single mode: clicking the already-selected button deselects it\n selectedValue.value = selectedValue.value === value ? null : value\n }\n}\n\nconst isDisabled = useDeprecatedBooleanProp(\n 'ButtonGroup', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\n// Provide context using toRef() for reactivity (D-11)\nuseButtonGroupProvide({\n variant: toRef(props, 'variant'),\n color: toRef(props, 'color'),\n size: toRef(props, 'size'),\n disabled: isDisabled,\n fullWidth: toRef(props, 'fullWidth'),\n orientation: toRef(props, 'orientation'),\n selectionMode: toRef(props, 'selectionMode'),\n selectedValue,\n isValueSelected,\n selectValue,\n})\n\nconst slotFns = computed(() =>\n buttonGroupVariants({\n fullWidth: props.fullWidth,\n orientation: props.orientation,\n })\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"props.orientation\"\n role=\"group\"\n >\n <template v-if=\"props.buttons\">\n <Button\n v-for=\"(btn, idx) in props.buttons\"\n :key=\"idx\"\n :value=\"btn.value\"\n :is-disabled=\"btn.disabled\"\n :is-loading=\"btn.isLoading\"\n :variant=\"btn.variant\"\n :color=\"btn.color\"\n :class=\"btn.class\"\n >{{ btn.label }}</Button>\n </template>\n <slot v-else />\n </div>\n</template>\n"],"mappings":""}
@@ -1,5 +1,6 @@
1
1
  import { composeClassName } from "../../utils/composeClassName.js";
2
2
  import { useButtonGroupProvide } from "./button-group.context.js";
3
+ import { useDeprecatedBooleanProp } from "../../composables/useDeprecatedBooleanProp.js";
3
4
  import Button_default from "./Button.js";
4
5
  import { Fragment, computed, createBlock, createElementBlock, createTextVNode, defineComponent, normalizeClass, openBlock, ref, renderList, renderSlot, toDisplayString, toRef, unref, withCtx } from "vue";
5
6
  import { buttonGroupVariants } from "@auronui/styles";
@@ -11,9 +12,13 @@ var ButtonGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
11
12
  variant: { default: "solid" },
12
13
  color: { default: "primary" },
13
14
  size: { default: "md" },
15
+ isDisabled: {
16
+ type: Boolean,
17
+ default: void 0
18
+ },
14
19
  disabled: {
15
20
  type: Boolean,
16
- default: false
21
+ default: void 0
17
22
  },
18
23
  fullWidth: {
19
24
  type: Boolean,
@@ -56,11 +61,12 @@ var ButtonGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
56
61
  selectedValue.value = current.includes(value) ? current.filter((v) => v !== value) : [...current, value];
57
62
  } else selectedValue.value = selectedValue.value === value ? null : value;
58
63
  }
64
+ const isDisabled = useDeprecatedBooleanProp("ButtonGroup", "isDisabled", () => props.isDisabled, "disabled", () => props.disabled);
59
65
  useButtonGroupProvide({
60
66
  variant: toRef(props, "variant"),
61
67
  color: toRef(props, "color"),
62
68
  size: toRef(props, "size"),
63
- disabled: toRef(props, "disabled"),
69
+ disabled: isDisabled,
64
70
  fullWidth: toRef(props, "fullWidth"),
65
71
  orientation: toRef(props, "orientation"),
66
72
  selectionMode: toRef(props, "selectionMode"),
@@ -81,7 +87,7 @@ var ButtonGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
81
87
  return openBlock(), createBlock(Button_default, {
82
88
  key: idx,
83
89
  value: btn.value,
84
- disabled: btn.disabled,
90
+ "is-disabled": btn.disabled,
85
91
  "is-loading": btn.isLoading,
86
92
  variant: btn.variant,
87
93
  color: btn.color,
@@ -91,7 +97,7 @@ var ButtonGroup_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
91
97
  _: 2
92
98
  }, 1032, [
93
99
  "value",
94
- "disabled",
100
+ "is-disabled",
95
101
  "is-loading",
96
102
  "variant",
97
103
  "color",
@@ -1 +1 @@
1
- {"version":3,"file":"ButtonGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/button/ButtonGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, toRef } from 'vue'\nimport { buttonGroupVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupProvide } from './button-group.context'\nimport type { ButtonGroupSelectionMode, ButtonGroupValue } from './button-group.context'\nimport type { ButtonVariants } from '@auronui/styles'\nimport Button from './Button.vue'\n\ntype ButtonShorthandItem = {\n label: string\n value?: string | number\n disabled?: boolean\n isLoading?: boolean\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n class?: string\n}\n\nconst props = withDefaults(defineProps<{\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n disabled?: boolean\n fullWidth?: boolean\n orientation?: 'horizontal' | 'vertical'\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n }>\n selectionMode?: ButtonGroupSelectionMode\n modelValue?: ButtonGroupValue\n /** Shorthand API: render buttons from an array instead of the compound slot API */\n buttons?: ButtonShorthandItem[]\n}>(), {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n disabled: false,\n fullWidth: false,\n orientation: 'horizontal',\n selectionMode: 'single',\n modelValue: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: ButtonGroupValue]\n}>()\n\n// Selected value: controlled if modelValue prop is provided, otherwise uncontrolled.\n// Single mode: scalar (string|number|null). Multiple mode: array of scalars.\nconst internalSelected = ref<ButtonGroupValue>(props.selectionMode === 'multiple' ? [] : null)\nconst selectedValue = computed<ButtonGroupValue>({\n get: () => (props.modelValue !== undefined ? props.modelValue : internalSelected.value),\n set: (v) => {\n if (props.modelValue === undefined) internalSelected.value = v\n emit('update:modelValue', v)\n },\n})\n\nfunction isValueSelected(value: string | number | undefined): boolean {\n if (value === undefined) return false\n const current = selectedValue.value\n if (Array.isArray(current)) return current.includes(value)\n return current === value\n}\n\nfunction selectValue(value: string | number) {\n if (props.selectionMode === 'multiple') {\n const current = Array.isArray(selectedValue.value) ? selectedValue.value : []\n selectedValue.value = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n } else {\n // Single mode: clicking the already-selected button deselects it\n selectedValue.value = selectedValue.value === value ? null : value\n }\n}\n\n// Provide context using toRef() for reactivity (D-11)\nuseButtonGroupProvide({\n variant: toRef(props, 'variant'),\n color: toRef(props, 'color'),\n size: toRef(props, 'size'),\n disabled: toRef(props, 'disabled'),\n fullWidth: toRef(props, 'fullWidth'),\n orientation: toRef(props, 'orientation'),\n selectionMode: toRef(props, 'selectionMode'),\n selectedValue,\n isValueSelected,\n selectValue,\n})\n\nconst slotFns = computed(() =>\n buttonGroupVariants({\n fullWidth: props.fullWidth,\n orientation: props.orientation,\n })\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"props.orientation\"\n role=\"group\"\n >\n <template v-if=\"props.buttons\">\n <Button\n v-for=\"(btn, idx) in props.buttons\"\n :key=\"idx\"\n :value=\"btn.value\"\n :disabled=\"btn.disabled\"\n :is-loading=\"btn.isLoading\"\n :variant=\"btn.variant\"\n :color=\"btn.color\"\n :class=\"btn.class\"\n >{{ btn.label }}</Button>\n </template>\n <slot v-else />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAmBA,MAAM,QAAQ;EA2Bd,MAAM,OAAO;EAMb,MAAM,mBAAmB,IAAsB,MAAM,kBAAkB,aAAa,EAAE,GAAG,KAAI;EAC7F,MAAM,gBAAgB,SAA2B;GAC/C,WAAY,MAAM,eAAe,KAAA,IAAY,MAAM,aAAa,iBAAiB;GACjF,MAAM,MAAM;AACV,QAAI,MAAM,eAAe,KAAA,EAAW,kBAAiB,QAAQ;AAC7D,SAAK,qBAAqB,EAAC;;GAE9B,CAAA;EAED,SAAS,gBAAgB,OAA6C;AACpE,OAAI,UAAU,KAAA,EAAW,QAAO;GAChC,MAAM,UAAU,cAAc;AAC9B,OAAI,MAAM,QAAQ,QAAQ,CAAE,QAAO,QAAQ,SAAS,MAAK;AACzD,UAAO,YAAY;;EAGrB,SAAS,YAAY,OAAwB;AAC3C,OAAI,MAAM,kBAAkB,YAAY;IACtC,MAAM,UAAU,MAAM,QAAQ,cAAc,MAAM,GAAG,cAAc,QAAQ,EAAC;AAC5E,kBAAc,QAAQ,QAAQ,SAAS,MAAK,GACxC,QAAQ,QAAQ,MAAM,MAAM,MAAK,GACjC,CAAC,GAAG,SAAS,MAAK;SAGtB,eAAc,QAAQ,cAAc,UAAU,QAAQ,OAAO;;AAKjE,wBAAsB;GACpB,SAAS,MAAM,OAAO,UAAU;GAChC,OAAO,MAAM,OAAO,QAAQ;GAC5B,MAAM,MAAM,OAAO,OAAO;GAC1B,UAAU,MAAM,OAAO,WAAW;GAClC,WAAW,MAAM,OAAO,YAAY;GACpC,aAAa,MAAM,OAAO,cAAc;GACxC,eAAe,MAAM,OAAO,gBAAgB;GAC5C;GACA;GACA;GACD,CAAA;EAED,MAAM,UAAU,eACd,oBAAoB;GAClB,WAAW,MAAM;GACjB,aAAa,MAAM;GACpB,CAAA,CACH;;uBAIE,mBAkBM,OAAA;IAjBH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,oBAAkB,MAAM;IACzB,MAAK;OAEW,MAAM,WAAA,UAAA,KAAA,EACpB,mBASyB,UAAA,EAAA,KAAA,GAAA,EAAA,WARF,MAAM,UAAnB,KAAK,QAAG;wBADlB,YASyB,gBAAA;KAPtB,KAAK;KACL,OAAO,IAAI;KACX,UAAU,IAAI;KACd,cAAY,IAAI;KAChB,SAAS,IAAI;KACb,OAAO,IAAI;KACX,OAAK,eAAE,IAAI,MAAK;;4BACH,CAAA,gBAAA,gBAAZ,IAAI,MAAK,EAAA,EAAA,CAAA,CAAA;;;;;;;;;;eAEf,WAAe,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,CAAA,EAAA,IAAA,WAAA"}
1
+ {"version":3,"file":"ButtonGroup.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/button/ButtonGroup.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref, toRef } from 'vue'\nimport { buttonGroupVariants } from '@auronui/styles'\nimport { composeClassName , type ClassValue} from '../../utils/composeClassName'\nimport { useButtonGroupProvide } from './button-group.context'\nimport type { ButtonGroupSelectionMode, ButtonGroupValue } from './button-group.context'\nimport type { ButtonVariants } from '@auronui/styles'\nimport Button from './Button.vue'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\ntype ButtonShorthandItem = {\n label: string\n value?: string | number\n disabled?: boolean\n isLoading?: boolean\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n class?: string\n}\n\nconst props = withDefaults(defineProps<{\n variant?: ButtonVariants['variant']\n color?: ButtonVariants['color']\n size?: ButtonVariants['size']\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n fullWidth?: boolean\n orientation?: 'horizontal' | 'vertical'\n class?: ClassValue\n /** Per-slot class overrides */\n classNames?: Partial<{\n base: ClassValue\n }>\n selectionMode?: ButtonGroupSelectionMode\n modelValue?: ButtonGroupValue\n /** Shorthand API: render buttons from an array instead of the compound slot API */\n buttons?: ButtonShorthandItem[]\n}>(), {\n variant: 'solid',\n color: 'primary',\n size: 'md',\n isDisabled: undefined,\n disabled: undefined,\n fullWidth: false,\n orientation: 'horizontal',\n selectionMode: 'single',\n modelValue: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: ButtonGroupValue]\n}>()\n\n// Selected value: controlled if modelValue prop is provided, otherwise uncontrolled.\n// Single mode: scalar (string|number|null). Multiple mode: array of scalars.\nconst internalSelected = ref<ButtonGroupValue>(props.selectionMode === 'multiple' ? [] : null)\nconst selectedValue = computed<ButtonGroupValue>({\n get: () => (props.modelValue !== undefined ? props.modelValue : internalSelected.value),\n set: (v) => {\n if (props.modelValue === undefined) internalSelected.value = v\n emit('update:modelValue', v)\n },\n})\n\nfunction isValueSelected(value: string | number | undefined): boolean {\n if (value === undefined) return false\n const current = selectedValue.value\n if (Array.isArray(current)) return current.includes(value)\n return current === value\n}\n\nfunction selectValue(value: string | number) {\n if (props.selectionMode === 'multiple') {\n const current = Array.isArray(selectedValue.value) ? selectedValue.value : []\n selectedValue.value = current.includes(value)\n ? current.filter((v) => v !== value)\n : [...current, value]\n } else {\n // Single mode: clicking the already-selected button deselects it\n selectedValue.value = selectedValue.value === value ? null : value\n }\n}\n\nconst isDisabled = useDeprecatedBooleanProp(\n 'ButtonGroup', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\n// Provide context using toRef() for reactivity (D-11)\nuseButtonGroupProvide({\n variant: toRef(props, 'variant'),\n color: toRef(props, 'color'),\n size: toRef(props, 'size'),\n disabled: isDisabled,\n fullWidth: toRef(props, 'fullWidth'),\n orientation: toRef(props, 'orientation'),\n selectionMode: toRef(props, 'selectionMode'),\n selectedValue,\n isValueSelected,\n selectValue,\n})\n\nconst slotFns = computed(() =>\n buttonGroupVariants({\n fullWidth: props.fullWidth,\n orientation: props.orientation,\n })\n)\n</script>\n\n<template>\n <div\n :class=\"composeClassName(slotFns.base(), props.class, props.classNames?.base)\"\n :data-orientation=\"props.orientation\"\n role=\"group\"\n >\n <template v-if=\"props.buttons\">\n <Button\n v-for=\"(btn, idx) in props.buttons\"\n :key=\"idx\"\n :value=\"btn.value\"\n :is-disabled=\"btn.disabled\"\n :is-loading=\"btn.isLoading\"\n :variant=\"btn.variant\"\n :color=\"btn.color\"\n :class=\"btn.class\"\n >{{ btn.label }}</Button>\n </template>\n <slot v-else />\n </div>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAoBA,MAAM,QAAQ;EA8Bd,MAAM,OAAO;EAMb,MAAM,mBAAmB,IAAsB,MAAM,kBAAkB,aAAa,EAAE,GAAG,KAAI;EAC7F,MAAM,gBAAgB,SAA2B;GAC/C,WAAY,MAAM,eAAe,KAAA,IAAY,MAAM,aAAa,iBAAiB;GACjF,MAAM,MAAM;AACV,QAAI,MAAM,eAAe,KAAA,EAAW,kBAAiB,QAAQ;AAC7D,SAAK,qBAAqB,EAAC;;GAE9B,CAAA;EAED,SAAS,gBAAgB,OAA6C;AACpE,OAAI,UAAU,KAAA,EAAW,QAAO;GAChC,MAAM,UAAU,cAAc;AAC9B,OAAI,MAAM,QAAQ,QAAQ,CAAE,QAAO,QAAQ,SAAS,MAAK;AACzD,UAAO,YAAY;;EAGrB,SAAS,YAAY,OAAwB;AAC3C,OAAI,MAAM,kBAAkB,YAAY;IACtC,MAAM,UAAU,MAAM,QAAQ,cAAc,MAAM,GAAG,cAAc,QAAQ,EAAC;AAC5E,kBAAc,QAAQ,QAAQ,SAAS,MAAK,GACxC,QAAQ,QAAQ,MAAM,MAAM,MAAK,GACjC,CAAC,GAAG,SAAS,MAAK;SAGtB,eAAc,QAAQ,cAAc,UAAU,QAAQ,OAAO;;EAIjE,MAAM,aAAa,yBACjB,eAAe,oBAAoB,MAAM,YAAY,kBAAkB,MAAM,SAC/E;AAGA,wBAAsB;GACpB,SAAS,MAAM,OAAO,UAAU;GAChC,OAAO,MAAM,OAAO,QAAQ;GAC5B,MAAM,MAAM,OAAO,OAAO;GAC1B,UAAU;GACV,WAAW,MAAM,OAAO,YAAY;GACpC,aAAa,MAAM,OAAO,cAAc;GACxC,eAAe,MAAM,OAAO,gBAAgB;GAC5C;GACA;GACA;GACD,CAAA;EAED,MAAM,UAAU,eACd,oBAAoB;GAClB,WAAW,MAAM;GACjB,aAAa,MAAM;GACpB,CAAA,CACH;;uBAIE,mBAkBM,OAAA;IAjBH,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,MAAQ,MAAI,EAAI,MAAM,OAAO,MAAM,YAAY,KAAI,CAAA;IAC3E,oBAAkB,MAAM;IACzB,MAAK;OAEW,MAAM,WAAA,UAAA,KAAA,EACpB,mBASyB,UAAA,EAAA,KAAA,GAAA,EAAA,WARF,MAAM,UAAnB,KAAK,QAAG;wBADlB,YASyB,gBAAA;KAPtB,KAAK;KACL,OAAO,IAAI;KACX,eAAa,IAAI;KACjB,cAAY,IAAI;KAChB,SAAS,IAAI;KACb,OAAO,IAAI;KACX,OAAK,eAAE,IAAI,MAAK;;4BACH,CAAA,gBAAA,gBAAZ,IAAI,MAAK,EAAA,EAAA,CAAA,CAAA;;;;;;;;;;eAEf,WAAe,KAAA,QAAA,WAAA,EAAA,KAAA,GAAA,CAAA,CAAA,EAAA,IAAA,WAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"CloseButton.js","names":[],"sources":["../../../src/components/button/CloseButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport Button from './Button.vue'\nimport type { ButtonVariants } from '@auronui/styles'\n\nconst props = withDefaults(defineProps<{\n size?: ButtonVariants['size']\n disabled?: boolean\n isLoading?: boolean\n ariaLabel?: string\n class?: string\n}>(), {\n size: 'md',\n disabled: false,\n isLoading: false,\n ariaLabel: 'Close',\n})\n</script>\n\n<template>\n <Button\n variant=\"ghost\"\n :is-icon-only=\"true\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :is-loading=\"props.isLoading\"\n :aria-label=\"props.ariaLabel\"\n :class=\"props.class\"\n >\n <!-- D-16: Inline SVG X glyph — 16×16 viewBox, 2px stroke, currentColor -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n x1=\"18\"\n y1=\"6\"\n x2=\"6\"\n y2=\"18\"\n />\n <line\n x1=\"6\"\n y1=\"6\"\n x2=\"18\"\n y2=\"18\"\n />\n </svg>\n </Button>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"CloseButton.js","names":[],"sources":["../../../src/components/button/CloseButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport Button from './Button.vue'\nimport type { ButtonVariants } from '@auronui/styles'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n size?: ButtonVariants['size']\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n isLoading?: boolean\n ariaLabel?: string\n class?: string\n}>(), {\n size: 'md',\n isDisabled: undefined,\n disabled: undefined,\n isLoading: false,\n ariaLabel: 'Close',\n})\n\nconst isDisabled = useDeprecatedBooleanProp(\n 'CloseButton', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n</script>\n\n<template>\n <Button\n variant=\"ghost\"\n :is-icon-only=\"true\"\n :size=\"props.size\"\n :is-disabled=\"isDisabled\"\n :is-loading=\"props.isLoading\"\n :aria-label=\"props.ariaLabel\"\n :class=\"props.class\"\n >\n <!-- D-16: Inline SVG X glyph — 16×16 viewBox, 2px stroke, currentColor -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n x1=\"18\"\n y1=\"6\"\n x2=\"6\"\n y2=\"18\"\n />\n <line\n x1=\"6\"\n y1=\"6\"\n x2=\"18\"\n y2=\"18\"\n />\n </svg>\n </Button>\n</template>\n"],"mappings":""}
@@ -1,13 +1,18 @@
1
+ import { useDeprecatedBooleanProp } from "../../composables/useDeprecatedBooleanProp.js";
1
2
  import Button_default from "./Button.js";
2
- import { createBlock, createElementVNode, defineComponent, normalizeClass, openBlock, withCtx } from "vue";
3
+ import { createBlock, createElementVNode, defineComponent, normalizeClass, openBlock, unref, withCtx } from "vue";
3
4
  //#region src/components/button/CloseButton.vue?vue&type=script&setup=true&lang.ts
4
5
  var CloseButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ defineComponent({
5
6
  __name: "CloseButton",
6
7
  props: {
7
8
  size: { default: "md" },
9
+ isDisabled: {
10
+ type: Boolean,
11
+ default: void 0
12
+ },
8
13
  disabled: {
9
14
  type: Boolean,
10
- default: false
15
+ default: void 0
11
16
  },
12
17
  isLoading: {
13
18
  type: Boolean,
@@ -18,12 +23,13 @@ var CloseButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
18
23
  },
19
24
  setup(__props) {
20
25
  const props = __props;
26
+ const isDisabled = useDeprecatedBooleanProp("CloseButton", "isDisabled", () => props.isDisabled, "disabled", () => props.disabled);
21
27
  return (_ctx, _cache) => {
22
28
  return openBlock(), createBlock(Button_default, {
23
29
  variant: "ghost",
24
30
  "is-icon-only": true,
25
31
  size: props.size,
26
- disabled: props.disabled,
32
+ "is-disabled": unref(isDisabled),
27
33
  "is-loading": props.isLoading,
28
34
  "aria-label": props.ariaLabel,
29
35
  class: normalizeClass(props.class)
@@ -54,7 +60,7 @@ var CloseButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ de
54
60
  _: 1
55
61
  }, 8, [
56
62
  "size",
57
- "disabled",
63
+ "is-disabled",
58
64
  "is-loading",
59
65
  "aria-label",
60
66
  "class"
@@ -1 +1 @@
1
- {"version":3,"file":"CloseButton.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/button/CloseButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport Button from './Button.vue'\nimport type { ButtonVariants } from '@auronui/styles'\n\nconst props = withDefaults(defineProps<{\n size?: ButtonVariants['size']\n disabled?: boolean\n isLoading?: boolean\n ariaLabel?: string\n class?: string\n}>(), {\n size: 'md',\n disabled: false,\n isLoading: false,\n ariaLabel: 'Close',\n})\n</script>\n\n<template>\n <Button\n variant=\"ghost\"\n :is-icon-only=\"true\"\n :size=\"props.size\"\n :disabled=\"props.disabled\"\n :is-loading=\"props.isLoading\"\n :aria-label=\"props.ariaLabel\"\n :class=\"props.class\"\n >\n <!-- D-16: Inline SVG X glyph — 16×16 viewBox, 2px stroke, currentColor -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n x1=\"18\"\n y1=\"6\"\n x2=\"6\"\n y2=\"18\"\n />\n <line\n x1=\"6\"\n y1=\"6\"\n x2=\"18\"\n y2=\"18\"\n />\n </svg>\n </Button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;EAIA,MAAM,QAAQ;;uBAeZ,YAoCS,gBAAA;IAnCP,SAAQ;IACP,gBAAc;IACd,MAAM,MAAM;IACZ,UAAU,MAAM;IAChB,cAAY,MAAM;IAClB,cAAY,MAAM;IAClB,OAAK,eAAE,MAAM,MAAK;;2BA4Bb,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAzBN,mBAyBM,OAAA;KAxBJ,OAAM;KACN,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;KAChB,eAAY;KACZ,WAAU;QAEV,mBAKE,QAAA;KAJA,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;QAEL,mBAKE,QAAA;KAJA,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG"}
1
+ {"version":3,"file":"CloseButton.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/button/CloseButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport Button from './Button.vue'\nimport type { ButtonVariants } from '@auronui/styles'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n size?: ButtonVariants['size']\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n isLoading?: boolean\n ariaLabel?: string\n class?: string\n}>(), {\n size: 'md',\n isDisabled: undefined,\n disabled: undefined,\n isLoading: false,\n ariaLabel: 'Close',\n})\n\nconst isDisabled = useDeprecatedBooleanProp(\n 'CloseButton', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n</script>\n\n<template>\n <Button\n variant=\"ghost\"\n :is-icon-only=\"true\"\n :size=\"props.size\"\n :is-disabled=\"isDisabled\"\n :is-loading=\"props.isLoading\"\n :aria-label=\"props.ariaLabel\"\n :class=\"props.class\"\n >\n <!-- D-16: Inline SVG X glyph — 16×16 viewBox, 2px stroke, currentColor -->\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"16\"\n height=\"16\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n stroke-width=\"2\"\n stroke-linecap=\"round\"\n stroke-linejoin=\"round\"\n aria-hidden=\"true\"\n focusable=\"false\"\n >\n <line\n x1=\"18\"\n y1=\"6\"\n x2=\"6\"\n y2=\"18\"\n />\n <line\n x1=\"6\"\n y1=\"6\"\n x2=\"18\"\n y2=\"18\"\n />\n </svg>\n </Button>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;EAKA,MAAM,QAAQ;EAgBd,MAAM,aAAa,yBACjB,eAAe,oBAAoB,MAAM,YAAY,kBAAkB,MAAM,SAC/E;;uBAIE,YAoCS,gBAAA;IAnCP,SAAQ;IACP,gBAAc;IACd,MAAM,MAAM;IACZ,eAAa,MAAA,WAAU;IACvB,cAAY,MAAM;IAClB,cAAY,MAAM;IAClB,OAAK,eAAE,MAAM,MAAK;;2BA4Bb,CAAA,GAAA,OAAA,OAAA,OAAA,KAAA,CAzBN,mBAyBM,OAAA;KAxBJ,OAAM;KACN,OAAM;KACN,QAAO;KACP,SAAQ;KACR,MAAK;KACL,QAAO;KACP,gBAAa;KACb,kBAAe;KACf,mBAAgB;KAChB,eAAY;KACZ,WAAU;QAEV,mBAKE,QAAA;KAJA,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG;QAEL,mBAKE,QAAA;KAJA,IAAG;KACH,IAAG;KACH,IAAG;KACH,IAAG"}
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButton.js","names":[],"sources":["../../../src/components/button/ToggleButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Toggle } from 'reka-ui'\nimport { toggleButtonVariants, type ToggleButtonVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useToggleButtonGroupInject } from './toggle-button-group.context'\n\nconst props = withDefaults(defineProps<{\n variant?: ToggleButtonVariants['variant']\n size?: ToggleButtonVariants['size']\n isIconOnly?: boolean\n disabled?: boolean\n modelValue?: boolean\n defaultValue?: boolean\n value?: string\n class?: string\n as?: string\n asChild?: boolean\n name?: string\n required?: boolean\n}>(), {\n variant: undefined,\n size: undefined,\n isIconOnly: false,\n disabled: false,\n modelValue: undefined,\n defaultValue: false,\n value: undefined,\n as: undefined,\n asChild: false,\n name: undefined,\n required: false,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\n// Inject ToggleButtonGroup context with fallback defaults (mirrors Button → ButtonGroup pattern)\nconst groupCtx = useToggleButtonGroupInject({\n variant: ref('default'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('multiple'),\n selectedValues: ref([]),\n toggleValue: () => {},\n})\n\n// Prop precedence: group disabled wins; child prop wins for variant/size\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\n\n// When inside a group with selectionMode and a value prop, derive pressed from group state\nconst isGroupManaged = computed(() => props.value !== undefined)\nconst isPressed = computed(() => {\n if (isGroupManaged.value) {\n return groupCtx.selectedValues.value.includes(props.value!)\n }\n return props.modelValue\n})\n\nfunction handleUpdate(val: boolean) {\n if (isGroupManaged.value) {\n groupCtx.toggleValue(props.value!)\n } else {\n emit('update:modelValue', val)\n }\n}\n\nconst classes = computed(() =>\n toggleButtonVariants({\n variant: finalVariant.value,\n size: finalSize.value,\n isIconOnly: props.isIconOnly,\n })\n)\n</script>\n\n<template>\n <!--\n Use as-child so Reka's Toggle merges data-state / aria-pressed / onClick directly\n onto OUR <button> element instead of relying on a 2-level inheritAttrs chain\n (Toggle → Primitive → button). This guarantees the toggle-button CSS class and\n data-state=\"on\" are always on the same DOM element, so [data-state=\"on\"] selectors\n apply correctly.\n -->\n <Toggle\n as-child\n :disabled=\"isDisabled\"\n :model-value=\"isPressed\"\n :default-value=\"props.defaultValue\"\n :name=\"props.name\"\n :required=\"props.required\"\n @update:model-value=\"handleUpdate\"\n >\n <button\n :class=\"composeClassName(classes, props.class)\"\n :disabled=\"isDisabled || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :type=\"'button'\"\n >\n <slot />\n </button>\n </Toggle>\n</template>\n"],"mappings":""}
1
+ {"version":3,"file":"ToggleButton.js","names":[],"sources":["../../../src/components/button/ToggleButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Toggle } from 'reka-ui'\nimport { toggleButtonVariants, type ToggleButtonVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useToggleButtonGroupInject } from './toggle-button-group.context'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n variant?: ToggleButtonVariants['variant']\n size?: ToggleButtonVariants['size']\n isIconOnly?: boolean\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n modelValue?: boolean\n defaultValue?: boolean\n value?: string\n class?: string\n as?: string\n asChild?: boolean\n name?: string\n isRequired?: boolean\n /** @deprecated Use isRequired instead. */\n required?: boolean\n}>(), {\n variant: undefined,\n size: undefined,\n isIconOnly: false,\n isDisabled: undefined,\n disabled: undefined,\n modelValue: undefined,\n defaultValue: false,\n value: undefined,\n as: undefined,\n asChild: false,\n name: undefined,\n isRequired: undefined,\n required: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\n// Inject ToggleButtonGroup context with fallback defaults (mirrors Button → ButtonGroup pattern)\nconst groupCtx = useToggleButtonGroupInject({\n variant: ref('default'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('multiple'),\n selectedValues: ref([]),\n toggleValue: () => {},\n})\n\n// Resolve this button's own isDisabled/disabled prop pair before combining with group state.\nconst resolvedDisabled = useDeprecatedBooleanProp(\n 'ToggleButton', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\nconst isRequired = useDeprecatedBooleanProp(\n 'ToggleButton', 'isRequired', () => props.isRequired, 'required', () => props.required,\n)\n\n// Prop precedence: group disabled wins; child prop wins for variant/size\nconst effectiveDisabled = computed(() => groupCtx.disabled.value || resolvedDisabled.value)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\n\n// When inside a group with selectionMode and a value prop, derive pressed from group state\nconst isGroupManaged = computed(() => props.value !== undefined)\nconst isPressed = computed(() => {\n if (isGroupManaged.value) {\n return groupCtx.selectedValues.value.includes(props.value!)\n }\n return props.modelValue\n})\n\nfunction handleUpdate(val: boolean) {\n if (isGroupManaged.value) {\n groupCtx.toggleValue(props.value!)\n } else {\n emit('update:modelValue', val)\n }\n}\n\nconst classes = computed(() =>\n toggleButtonVariants({\n variant: finalVariant.value,\n size: finalSize.value,\n isIconOnly: props.isIconOnly,\n })\n)\n</script>\n\n<template>\n <!--\n Use as-child so Reka's Toggle merges data-state / aria-pressed / onClick directly\n onto OUR <button> element instead of relying on a 2-level inheritAttrs chain\n (Toggle → Primitive → button). This guarantees the toggle-button CSS class and\n data-state=\"on\" are always on the same DOM element, so [data-state=\"on\"] selectors\n apply correctly.\n -->\n <Toggle\n as-child\n :disabled=\"effectiveDisabled\"\n :model-value=\"isPressed\"\n :default-value=\"props.defaultValue\"\n :name=\"props.name\"\n :required=\"isRequired\"\n @update:model-value=\"handleUpdate\"\n >\n <button\n :class=\"composeClassName(classes, props.class)\"\n :disabled=\"effectiveDisabled || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :type=\"'button'\"\n >\n <slot />\n </button>\n </Toggle>\n</template>\n"],"mappings":""}
@@ -1,4 +1,5 @@
1
1
  import { composeClassName } from "../../utils/composeClassName.js";
2
+ import { useDeprecatedBooleanProp } from "../../composables/useDeprecatedBooleanProp.js";
2
3
  import { useToggleButtonGroupInject } from "./toggle-button-group.context.js";
3
4
  import { computed, createBlock, createElementVNode, defineComponent, normalizeClass, openBlock, ref, renderSlot, unref, withCtx } from "vue";
4
5
  import { toggleButtonVariants } from "@auronui/styles";
@@ -14,9 +15,13 @@ var ToggleButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
14
15
  type: Boolean,
15
16
  default: false
16
17
  },
18
+ isDisabled: {
19
+ type: Boolean,
20
+ default: void 0
21
+ },
17
22
  disabled: {
18
23
  type: Boolean,
19
- default: false
24
+ default: void 0
20
25
  },
21
26
  modelValue: {
22
27
  type: Boolean,
@@ -34,9 +39,13 @@ var ToggleButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
34
39
  default: false
35
40
  },
36
41
  name: { default: void 0 },
42
+ isRequired: {
43
+ type: Boolean,
44
+ default: void 0
45
+ },
37
46
  required: {
38
47
  type: Boolean,
39
- default: false
48
+ default: void 0
40
49
  }
41
50
  },
42
51
  emits: ["update:modelValue"],
@@ -53,7 +62,9 @@ var ToggleButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
53
62
  selectedValues: ref([]),
54
63
  toggleValue: () => {}
55
64
  });
56
- const isDisabled = computed(() => groupCtx.disabled.value || props.disabled);
65
+ const resolvedDisabled = useDeprecatedBooleanProp("ToggleButton", "isDisabled", () => props.isDisabled, "disabled", () => props.disabled);
66
+ const isRequired = useDeprecatedBooleanProp("ToggleButton", "isRequired", () => props.isRequired, "required", () => props.required);
67
+ const effectiveDisabled = computed(() => groupCtx.disabled.value || resolvedDisabled.value);
57
68
  const finalVariant = computed(() => props.variant ?? groupCtx.variant.value);
58
69
  const finalSize = computed(() => props.size ?? groupCtx.size.value);
59
70
  const isGroupManaged = computed(() => props.value !== void 0);
@@ -73,16 +84,16 @@ var ToggleButton_vue_vue_type_script_setup_true_lang_default = /* @__PURE__ */ d
73
84
  return (_ctx, _cache) => {
74
85
  return openBlock(), createBlock(unref(Toggle), {
75
86
  "as-child": "",
76
- disabled: isDisabled.value,
87
+ disabled: effectiveDisabled.value,
77
88
  "model-value": isPressed.value,
78
89
  "default-value": props.defaultValue,
79
90
  name: props.name,
80
- required: props.required,
91
+ required: unref(isRequired),
81
92
  "onUpdate:modelValue": handleUpdate
82
93
  }, {
83
94
  default: withCtx(() => [createElementVNode("button", {
84
95
  class: normalizeClass(unref(composeClassName)(classes.value, props.class)),
85
- disabled: isDisabled.value || void 0,
96
+ disabled: effectiveDisabled.value || void 0,
86
97
  "data-orientation": unref(groupCtx).orientation.value,
87
98
  type: "button"
88
99
  }, [renderSlot(_ctx.$slots, "default")], 10, _hoisted_1)]),
@@ -1 +1 @@
1
- {"version":3,"file":"ToggleButton.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/button/ToggleButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Toggle } from 'reka-ui'\nimport { toggleButtonVariants, type ToggleButtonVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useToggleButtonGroupInject } from './toggle-button-group.context'\n\nconst props = withDefaults(defineProps<{\n variant?: ToggleButtonVariants['variant']\n size?: ToggleButtonVariants['size']\n isIconOnly?: boolean\n disabled?: boolean\n modelValue?: boolean\n defaultValue?: boolean\n value?: string\n class?: string\n as?: string\n asChild?: boolean\n name?: string\n required?: boolean\n}>(), {\n variant: undefined,\n size: undefined,\n isIconOnly: false,\n disabled: false,\n modelValue: undefined,\n defaultValue: false,\n value: undefined,\n as: undefined,\n asChild: false,\n name: undefined,\n required: false,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\n// Inject ToggleButtonGroup context with fallback defaults (mirrors Button → ButtonGroup pattern)\nconst groupCtx = useToggleButtonGroupInject({\n variant: ref('default'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('multiple'),\n selectedValues: ref([]),\n toggleValue: () => {},\n})\n\n// Prop precedence: group disabled wins; child prop wins for variant/size\nconst isDisabled = computed(() => groupCtx.disabled.value || props.disabled)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\n\n// When inside a group with selectionMode and a value prop, derive pressed from group state\nconst isGroupManaged = computed(() => props.value !== undefined)\nconst isPressed = computed(() => {\n if (isGroupManaged.value) {\n return groupCtx.selectedValues.value.includes(props.value!)\n }\n return props.modelValue\n})\n\nfunction handleUpdate(val: boolean) {\n if (isGroupManaged.value) {\n groupCtx.toggleValue(props.value!)\n } else {\n emit('update:modelValue', val)\n }\n}\n\nconst classes = computed(() =>\n toggleButtonVariants({\n variant: finalVariant.value,\n size: finalSize.value,\n isIconOnly: props.isIconOnly,\n })\n)\n</script>\n\n<template>\n <!--\n Use as-child so Reka's Toggle merges data-state / aria-pressed / onClick directly\n onto OUR <button> element instead of relying on a 2-level inheritAttrs chain\n (Toggle → Primitive → button). This guarantees the toggle-button CSS class and\n data-state=\"on\" are always on the same DOM element, so [data-state=\"on\"] selectors\n apply correctly.\n -->\n <Toggle\n as-child\n :disabled=\"isDisabled\"\n :model-value=\"isPressed\"\n :default-value=\"props.defaultValue\"\n :name=\"props.name\"\n :required=\"props.required\"\n @update:model-value=\"handleUpdate\"\n >\n <button\n :class=\"composeClassName(classes, props.class)\"\n :disabled=\"isDisabled || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :type=\"'button'\"\n >\n <slot />\n </button>\n </Toggle>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAOA,MAAM,QAAQ;EA2Bd,MAAM,OAAO;EAKb,MAAM,WAAW,2BAA2B;GAC1C,SAAS,IAAI,UAAU;GACvB,MAAM,IAAI,KAAK;GACf,UAAU,IAAI,MAAM;GACpB,WAAW,IAAI,MAAM;GACrB,aAAa,IAAI,aAAa;GAC9B,eAAe,IAAI,WAAW;GAC9B,gBAAgB,IAAI,EAAE,CAAC;GACvB,mBAAmB;GACpB,CAAA;EAGD,MAAM,aAAa,eAAe,SAAS,SAAS,SAAS,MAAM,SAAQ;EAC3E,MAAM,eAAe,eAAe,MAAM,WAAW,SAAS,QAAQ,MAAK;EAC3E,MAAM,YAAY,eAAe,MAAM,QAAQ,SAAS,KAAK,MAAK;EAGlE,MAAM,iBAAiB,eAAe,MAAM,UAAU,KAAA,EAAS;EAC/D,MAAM,YAAY,eAAe;AAC/B,OAAI,eAAe,MACjB,QAAO,SAAS,eAAe,MAAM,SAAS,MAAM,MAAM;AAE5D,UAAO,MAAM;IACd;EAED,SAAS,aAAa,KAAc;AAClC,OAAI,eAAe,MACjB,UAAS,YAAY,MAAM,MAAM;OAEjC,MAAK,qBAAqB,IAAG;;EAIjC,MAAM,UAAU,eACd,qBAAqB;GACnB,SAAS,aAAa;GACtB,MAAM,UAAU;GAChB,YAAY,MAAM;GACnB,CAAA,CACH;;uBAWE,YAiBS,MAAA,OAAA,EAAA;IAhBP,YAAA;IACC,UAAU,WAAA;IACV,eAAa,UAAA;IACb,iBAAe,MAAM;IACrB,MAAM,MAAM;IACZ,UAAU,MAAM;IAChB,uBAAoB;;2BASZ,CAPT,mBAOS,UAAA;KANN,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,OAAS,MAAM,MAAK,CAAA;KAC5C,UAAU,WAAA,SAAc,KAAA;KACxB,oBAAkB,MAAA,SAAQ,CAAC,YAAY;KACvC,MAAM;QAEP,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA,CAAA,CAAA"}
1
+ {"version":3,"file":"ToggleButton.vue_vue_type_script_setup_true_lang.js","names":[],"sources":["../../../src/components/button/ToggleButton.vue"],"sourcesContent":["<script setup lang=\"ts\">\nimport { computed, ref } from 'vue'\nimport { Toggle } from 'reka-ui'\nimport { toggleButtonVariants, type ToggleButtonVariants } from '@auronui/styles'\nimport { composeClassName } from '../../utils/composeClassName'\nimport { useToggleButtonGroupInject } from './toggle-button-group.context'\nimport { useDeprecatedBooleanProp } from '../../composables/useDeprecatedBooleanProp'\n\nconst props = withDefaults(defineProps<{\n variant?: ToggleButtonVariants['variant']\n size?: ToggleButtonVariants['size']\n isIconOnly?: boolean\n isDisabled?: boolean\n /** @deprecated Use isDisabled instead. */\n disabled?: boolean\n modelValue?: boolean\n defaultValue?: boolean\n value?: string\n class?: string\n as?: string\n asChild?: boolean\n name?: string\n isRequired?: boolean\n /** @deprecated Use isRequired instead. */\n required?: boolean\n}>(), {\n variant: undefined,\n size: undefined,\n isIconOnly: false,\n isDisabled: undefined,\n disabled: undefined,\n modelValue: undefined,\n defaultValue: false,\n value: undefined,\n as: undefined,\n asChild: false,\n name: undefined,\n isRequired: undefined,\n required: undefined,\n})\n\nconst emit = defineEmits<{\n 'update:modelValue': [value: boolean]\n}>()\n\n// Inject ToggleButtonGroup context with fallback defaults (mirrors Button → ButtonGroup pattern)\nconst groupCtx = useToggleButtonGroupInject({\n variant: ref('default'),\n size: ref('md'),\n disabled: ref(false),\n fullWidth: ref(false),\n orientation: ref('horizontal'),\n selectionMode: ref('multiple'),\n selectedValues: ref([]),\n toggleValue: () => {},\n})\n\n// Resolve this button's own isDisabled/disabled prop pair before combining with group state.\nconst resolvedDisabled = useDeprecatedBooleanProp(\n 'ToggleButton', 'isDisabled', () => props.isDisabled, 'disabled', () => props.disabled,\n)\n\nconst isRequired = useDeprecatedBooleanProp(\n 'ToggleButton', 'isRequired', () => props.isRequired, 'required', () => props.required,\n)\n\n// Prop precedence: group disabled wins; child prop wins for variant/size\nconst effectiveDisabled = computed(() => groupCtx.disabled.value || resolvedDisabled.value)\nconst finalVariant = computed(() => props.variant ?? groupCtx.variant.value)\nconst finalSize = computed(() => props.size ?? groupCtx.size.value)\n\n// When inside a group with selectionMode and a value prop, derive pressed from group state\nconst isGroupManaged = computed(() => props.value !== undefined)\nconst isPressed = computed(() => {\n if (isGroupManaged.value) {\n return groupCtx.selectedValues.value.includes(props.value!)\n }\n return props.modelValue\n})\n\nfunction handleUpdate(val: boolean) {\n if (isGroupManaged.value) {\n groupCtx.toggleValue(props.value!)\n } else {\n emit('update:modelValue', val)\n }\n}\n\nconst classes = computed(() =>\n toggleButtonVariants({\n variant: finalVariant.value,\n size: finalSize.value,\n isIconOnly: props.isIconOnly,\n })\n)\n</script>\n\n<template>\n <!--\n Use as-child so Reka's Toggle merges data-state / aria-pressed / onClick directly\n onto OUR <button> element instead of relying on a 2-level inheritAttrs chain\n (Toggle → Primitive → button). This guarantees the toggle-button CSS class and\n data-state=\"on\" are always on the same DOM element, so [data-state=\"on\"] selectors\n apply correctly.\n -->\n <Toggle\n as-child\n :disabled=\"effectiveDisabled\"\n :model-value=\"isPressed\"\n :default-value=\"props.defaultValue\"\n :name=\"props.name\"\n :required=\"isRequired\"\n @update:model-value=\"handleUpdate\"\n >\n <button\n :class=\"composeClassName(classes, props.class)\"\n :disabled=\"effectiveDisabled || undefined\"\n :data-orientation=\"groupCtx.orientation.value\"\n :type=\"'button'\"\n >\n <slot />\n </button>\n </Toggle>\n</template>\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAQA,MAAM,QAAQ;EAiCd,MAAM,OAAO;EAKb,MAAM,WAAW,2BAA2B;GAC1C,SAAS,IAAI,UAAU;GACvB,MAAM,IAAI,KAAK;GACf,UAAU,IAAI,MAAM;GACpB,WAAW,IAAI,MAAM;GACrB,aAAa,IAAI,aAAa;GAC9B,eAAe,IAAI,WAAW;GAC9B,gBAAgB,IAAI,EAAE,CAAC;GACvB,mBAAmB;GACpB,CAAA;EAGD,MAAM,mBAAmB,yBACvB,gBAAgB,oBAAoB,MAAM,YAAY,kBAAkB,MAAM,SAChF;EAEA,MAAM,aAAa,yBACjB,gBAAgB,oBAAoB,MAAM,YAAY,kBAAkB,MAAM,SAChF;EAGA,MAAM,oBAAoB,eAAe,SAAS,SAAS,SAAS,iBAAiB,MAAK;EAC1F,MAAM,eAAe,eAAe,MAAM,WAAW,SAAS,QAAQ,MAAK;EAC3E,MAAM,YAAY,eAAe,MAAM,QAAQ,SAAS,KAAK,MAAK;EAGlE,MAAM,iBAAiB,eAAe,MAAM,UAAU,KAAA,EAAS;EAC/D,MAAM,YAAY,eAAe;AAC/B,OAAI,eAAe,MACjB,QAAO,SAAS,eAAe,MAAM,SAAS,MAAM,MAAM;AAE5D,UAAO,MAAM;IACd;EAED,SAAS,aAAa,KAAc;AAClC,OAAI,eAAe,MACjB,UAAS,YAAY,MAAM,MAAM;OAEjC,MAAK,qBAAqB,IAAG;;EAIjC,MAAM,UAAU,eACd,qBAAqB;GACnB,SAAS,aAAa;GACtB,MAAM,UAAU;GAChB,YAAY,MAAM;GACnB,CAAA,CACH;;uBAWE,YAiBS,MAAA,OAAA,EAAA;IAhBP,YAAA;IACC,UAAU,kBAAA;IACV,eAAa,UAAA;IACb,iBAAe,MAAM;IACrB,MAAM,MAAM;IACZ,UAAU,MAAA,WAAU;IACpB,uBAAoB;;2BASZ,CAPT,mBAOS,UAAA;KANN,OAAK,eAAE,MAAA,iBAAgB,CAAC,QAAA,OAAS,MAAM,MAAK,CAAA;KAC5C,UAAU,kBAAA,SAAqB,KAAA;KAC/B,oBAAkB,MAAA,SAAQ,CAAC,YAAY;KACvC,MAAM;QAEP,WAAQ,KAAA,QAAA,UAAA,CAAA,EAAA,IAAA,WAAA,CAAA,CAAA"}