@proyecto-viviana/solidaria 0.2.8 → 0.3.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 (548) hide show
  1. package/README.md +31 -236
  2. package/dist/actiongroup/createActionGroup.d.ts +5 -5
  3. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  4. package/dist/actiongroup/index.d.ts +1 -1
  5. package/dist/autocomplete/createAutocomplete.d.ts +10 -10
  6. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  7. package/dist/autocomplete/index.d.ts +1 -1
  8. package/dist/autocomplete/index.d.ts.map +1 -1
  9. package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
  10. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  11. package/dist/breadcrumbs/index.d.ts +1 -1
  12. package/dist/button/createButton.d.ts +1 -1
  13. package/dist/button/createButton.d.ts.map +1 -1
  14. package/dist/button/createToggleButton.d.ts +3 -3
  15. package/dist/button/createToggleButtonGroup.d.ts +7 -7
  16. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  17. package/dist/button/index.d.ts +6 -6
  18. package/dist/button/index.d.ts.map +1 -1
  19. package/dist/button/types.d.ts +18 -12
  20. package/dist/button/types.d.ts.map +1 -1
  21. package/dist/calendar/createCalendar.d.ts +15 -5
  22. package/dist/calendar/createCalendar.d.ts.map +1 -1
  23. package/dist/calendar/createCalendarCell.d.ts +6 -2
  24. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  26. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  27. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  28. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
  30. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  31. package/dist/calendar/index.d.ts +5 -5
  32. package/dist/calendar/index.d.ts.map +1 -1
  33. package/dist/calendar/intl/index.d.ts +12 -0
  34. package/dist/calendar/intl/index.d.ts.map +1 -0
  35. package/dist/calendar/utils.d.ts +12 -0
  36. package/dist/calendar/utils.d.ts.map +1 -0
  37. package/dist/checkbox/createCheckbox.d.ts +6 -6
  38. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  39. package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
  40. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  42. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  44. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  45. package/dist/checkbox/index.d.ts +8 -8
  46. package/dist/checkbox/index.d.ts.map +1 -1
  47. package/dist/collections/index.d.ts +3 -3
  48. package/dist/collections/index.d.ts.map +1 -1
  49. package/dist/color/createColorArea.d.ts +3 -3
  50. package/dist/color/createColorArea.d.ts.map +1 -1
  51. package/dist/color/createColorField.d.ts +4 -4
  52. package/dist/color/createColorField.d.ts.map +1 -1
  53. package/dist/color/createColorSlider.d.ts +4 -4
  54. package/dist/color/createColorSlider.d.ts.map +1 -1
  55. package/dist/color/createColorSwatch.d.ts +2 -2
  56. package/dist/color/createColorSwatch.d.ts.map +1 -1
  57. package/dist/color/createColorWheel.d.ts +3 -3
  58. package/dist/color/createColorWheel.d.ts.map +1 -1
  59. package/dist/color/index.d.ts +6 -6
  60. package/dist/color/types.d.ts +98 -16
  61. package/dist/color/types.d.ts.map +1 -1
  62. package/dist/combobox/createComboBox.d.ts +10 -7
  63. package/dist/combobox/createComboBox.d.ts.map +1 -1
  64. package/dist/combobox/index.d.ts +1 -1
  65. package/dist/combobox/intl/index.d.ts +1 -1
  66. package/dist/datepicker/createDateField.d.ts +18 -6
  67. package/dist/datepicker/createDateField.d.ts.map +1 -1
  68. package/dist/datepicker/createDatePicker.d.ts +51 -5
  69. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  71. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  72. package/dist/datepicker/createDateRangePicker.d.ts +8 -6
  73. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  74. package/dist/datepicker/createDateSegment.d.ts +10 -2
  75. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  76. package/dist/datepicker/createTimeField.d.ts +11 -5
  77. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeSegment.d.ts +2 -2
  79. package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
  80. package/dist/datepicker/index.d.ts +7 -6
  81. package/dist/datepicker/index.d.ts.map +1 -1
  82. package/dist/dialog/createDialog.d.ts +5 -5
  83. package/dist/dialog/createDialog.d.ts.map +1 -1
  84. package/dist/dialog/index.d.ts +2 -2
  85. package/dist/dialog/index.d.ts.map +1 -1
  86. package/dist/dialog/types.d.ts +4 -4
  87. package/dist/disclosure/createDisclosure.d.ts +5 -2
  88. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  89. package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
  90. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  91. package/dist/disclosure/index.d.ts +2 -2
  92. package/dist/dnd/createDrag.d.ts +2 -2
  93. package/dist/dnd/createDrag.d.ts.map +1 -1
  94. package/dist/dnd/createDraggableCollection.d.ts +2 -2
  95. package/dist/dnd/createDraggableItem.d.ts +3 -3
  96. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  97. package/dist/dnd/createDrop.d.ts +2 -2
  98. package/dist/dnd/createDrop.d.ts.map +1 -1
  99. package/dist/dnd/createDroppableCollection.d.ts +26 -6
  100. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  101. package/dist/dnd/createDroppableItem.d.ts +3 -3
  102. package/dist/dnd/index.d.ts +12 -12
  103. package/dist/dnd/index.d.ts.map +1 -1
  104. package/dist/dnd/types.d.ts +2 -2
  105. package/dist/dnd/types.d.ts.map +1 -1
  106. package/dist/dnd/utils.d.ts +1 -1
  107. package/dist/dnd/utils.d.ts.map +1 -1
  108. package/dist/focus/FocusScope.d.ts +1 -1
  109. package/dist/focus/FocusScope.d.ts.map +1 -1
  110. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  111. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  112. package/dist/focus/createVirtualFocus.d.ts +4 -4
  113. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  114. package/dist/focus/index.d.ts +4 -4
  115. package/dist/focus/index.d.ts.map +1 -1
  116. package/dist/form/createFormReset.d.ts +1 -1
  117. package/dist/form/createFormValidation.d.ts +3 -3
  118. package/dist/form/createFormValidation.d.ts.map +1 -1
  119. package/dist/form/index.d.ts +2 -2
  120. package/dist/form/index.d.ts.map +1 -1
  121. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  122. package/dist/grid/createGrid.d.ts +3 -3
  123. package/dist/grid/createGridCell.d.ts +3 -3
  124. package/dist/grid/createGridRow.d.ts +3 -3
  125. package/dist/grid/index.d.ts +5 -5
  126. package/dist/grid/types.d.ts +8 -8
  127. package/dist/gridlist/createGridList.d.ts +6 -4
  128. package/dist/gridlist/createGridList.d.ts.map +1 -1
  129. package/dist/gridlist/createGridListItem.d.ts +4 -4
  130. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  131. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  132. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  133. package/dist/gridlist/index.d.ts +4 -4
  134. package/dist/gridlist/types.d.ts +11 -7
  135. package/dist/gridlist/types.d.ts.map +1 -1
  136. package/dist/i18n/createCollator.d.ts.map +1 -1
  137. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  138. package/dist/i18n/createFilter.d.ts.map +1 -1
  139. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  140. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  141. package/dist/i18n/createStringFormatter.d.ts +2 -2
  142. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  143. package/dist/i18n/index.d.ts +8 -8
  144. package/dist/i18n/index.d.ts.map +1 -1
  145. package/dist/i18n/locale.d.ts +2 -2
  146. package/dist/i18n/locale.d.ts.map +1 -1
  147. package/dist/i18n/utils.d.ts.map +1 -1
  148. package/dist/index.d.ts +52 -51
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +18012 -16820
  151. package/dist/index.js.map +1 -1
  152. package/dist/index.jsx +18242 -0
  153. package/dist/index.jsx.map +1 -0
  154. package/dist/interactions/FocusableProvider.d.ts +2 -2
  155. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  156. package/dist/interactions/PressEvent.d.ts +2 -2
  157. package/dist/interactions/createFocus.d.ts +1 -1
  158. package/dist/interactions/createFocus.d.ts.map +1 -1
  159. package/dist/interactions/createFocusRing.d.ts +1 -1
  160. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  161. package/dist/interactions/createFocusWithin.d.ts +1 -1
  162. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  163. package/dist/interactions/createFocusable.d.ts +3 -3
  164. package/dist/interactions/createFocusable.d.ts.map +1 -1
  165. package/dist/interactions/createHover.d.ts +5 -5
  166. package/dist/interactions/createHover.d.ts.map +1 -1
  167. package/dist/interactions/createInteractionModality.d.ts +3 -3
  168. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  169. package/dist/interactions/createKeyboard.d.ts +1 -1
  170. package/dist/interactions/createLongPress.d.ts +5 -5
  171. package/dist/interactions/createMove.d.ts +5 -5
  172. package/dist/interactions/createMove.d.ts.map +1 -1
  173. package/dist/interactions/createPress.d.ts +4 -4
  174. package/dist/interactions/createPress.d.ts.map +1 -1
  175. package/dist/interactions/index.d.ts +12 -12
  176. package/dist/interactions/index.d.ts.map +1 -1
  177. package/dist/label/createField.d.ts +4 -4
  178. package/dist/label/createField.d.ts.map +1 -1
  179. package/dist/label/createLabel.d.ts +7 -7
  180. package/dist/label/createLabel.d.ts.map +1 -1
  181. package/dist/label/createLabels.d.ts +1 -1
  182. package/dist/label/createLabels.d.ts.map +1 -1
  183. package/dist/label/index.d.ts +5 -5
  184. package/dist/landmark/createLandmark.d.ts +5 -5
  185. package/dist/landmark/createLandmark.d.ts.map +1 -1
  186. package/dist/landmark/index.d.ts +1 -1
  187. package/dist/link/createLink.d.ts +14 -8
  188. package/dist/link/createLink.d.ts.map +1 -1
  189. package/dist/link/index.d.ts +1 -1
  190. package/dist/listbox/createListBox.d.ts +11 -6
  191. package/dist/listbox/createListBox.d.ts.map +1 -1
  192. package/dist/listbox/createOption.d.ts +21 -4
  193. package/dist/listbox/createOption.d.ts.map +1 -1
  194. package/dist/listbox/index.d.ts +2 -2
  195. package/dist/listbox/index.d.ts.map +1 -1
  196. package/dist/live-announcer/announce.d.ts +2 -2
  197. package/dist/live-announcer/announce.d.ts.map +1 -1
  198. package/dist/live-announcer/index.d.ts +1 -1
  199. package/dist/menu/createMenu.d.ts +7 -7
  200. package/dist/menu/createMenu.d.ts.map +1 -1
  201. package/dist/menu/createMenuItem.d.ts +16 -4
  202. package/dist/menu/createMenuItem.d.ts.map +1 -1
  203. package/dist/menu/createMenuTrigger.d.ts +4 -4
  204. package/dist/menu/index.d.ts +3 -3
  205. package/dist/menu/index.d.ts.map +1 -1
  206. package/dist/meter/createMeter.d.ts +6 -6
  207. package/dist/meter/createMeter.d.ts.map +1 -1
  208. package/dist/meter/index.d.ts +1 -1
  209. package/dist/numberfield/createNumberField.d.ts +9 -8
  210. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  211. package/dist/numberfield/index.d.ts +1 -1
  212. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  213. package/dist/overlays/createModal.d.ts +3 -3
  214. package/dist/overlays/createModal.d.ts.map +1 -1
  215. package/dist/overlays/createOverlay.d.ts +1 -1
  216. package/dist/overlays/createOverlay.d.ts.map +1 -1
  217. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  218. package/dist/overlays/index.d.ts +6 -6
  219. package/dist/overlays/index.d.ts.map +1 -1
  220. package/dist/popover/calculatePosition.d.ts +4 -4
  221. package/dist/popover/calculatePosition.d.ts.map +1 -1
  222. package/dist/popover/createOverlayPosition.d.ts +3 -3
  223. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  224. package/dist/popover/createPopover.d.ts +4 -4
  225. package/dist/popover/createPopover.d.ts.map +1 -1
  226. package/dist/popover/index.d.ts +3 -3
  227. package/dist/progress/createProgressBar.d.ts +7 -5
  228. package/dist/progress/createProgressBar.d.ts.map +1 -1
  229. package/dist/progress/index.d.ts +1 -1
  230. package/dist/radio/createRadio.d.ts +7 -7
  231. package/dist/radio/createRadio.d.ts.map +1 -1
  232. package/dist/radio/createRadioGroup.d.ts +10 -10
  233. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  234. package/dist/radio/createRadioGroupState.d.ts +3 -3
  235. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  236. package/dist/radio/index.d.ts +3 -3
  237. package/dist/radio/index.d.ts.map +1 -1
  238. package/dist/searchfield/createSearchField.d.ts +7 -7
  239. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  240. package/dist/searchfield/index.d.ts +2 -2
  241. package/dist/select/createHiddenSelect.d.ts +4 -4
  242. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  243. package/dist/select/createSelect.d.ts +14 -6
  244. package/dist/select/createSelect.d.ts.map +1 -1
  245. package/dist/select/index.d.ts +2 -2
  246. package/dist/select/index.d.ts.map +1 -1
  247. package/dist/selection/createTypeSelect.d.ts +2 -2
  248. package/dist/selection/index.d.ts +1 -1
  249. package/dist/separator/createSeparator.d.ts +9 -5
  250. package/dist/separator/createSeparator.d.ts.map +1 -1
  251. package/dist/separator/index.d.ts +1 -1
  252. package/dist/slider/createSlider.d.ts +11 -7
  253. package/dist/slider/createSlider.d.ts.map +1 -1
  254. package/dist/slider/index.d.ts +2 -2
  255. package/dist/ssr/index.d.ts +1 -1
  256. package/dist/ssr/index.d.ts.map +1 -1
  257. package/dist/steplist/createStepList.d.ts +36 -0
  258. package/dist/steplist/createStepList.d.ts.map +1 -0
  259. package/dist/steplist/index.d.ts +2 -0
  260. package/dist/steplist/index.d.ts.map +1 -0
  261. package/dist/switch/createSwitch.d.ts +6 -4
  262. package/dist/switch/createSwitch.d.ts.map +1 -1
  263. package/dist/switch/index.d.ts +1 -1
  264. package/dist/table/createTable.d.ts +3 -3
  265. package/dist/table/createTable.d.ts.map +1 -1
  266. package/dist/table/createTableCell.d.ts +3 -3
  267. package/dist/table/createTableCell.d.ts.map +1 -1
  268. package/dist/table/createTableColumnHeader.d.ts +3 -3
  269. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  270. package/dist/table/createTableColumnResize.d.ts +41 -0
  271. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  272. package/dist/table/createTableHeaderRow.d.ts +3 -3
  273. package/dist/table/createTableRow.d.ts +3 -3
  274. package/dist/table/createTableRow.d.ts.map +1 -1
  275. package/dist/table/createTableRowGroup.d.ts +2 -2
  276. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  277. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  278. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  279. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  280. package/dist/table/index.d.ts +11 -9
  281. package/dist/table/index.d.ts.map +1 -1
  282. package/dist/table/types.d.ts +15 -7
  283. package/dist/table/types.d.ts.map +1 -1
  284. package/dist/tabs/createTabs.d.ts +28 -25
  285. package/dist/tabs/createTabs.d.ts.map +1 -1
  286. package/dist/tabs/index.d.ts +1 -1
  287. package/dist/tag/createTag.d.ts +2 -2
  288. package/dist/tag/createTag.d.ts.map +1 -1
  289. package/dist/tag/createTagGroup.d.ts +5 -5
  290. package/dist/tag/createTagGroup.d.ts.map +1 -1
  291. package/dist/tag/index.d.ts +2 -2
  292. package/dist/tag/index.d.ts.map +1 -1
  293. package/dist/textfield/createTextField.d.ts +17 -11
  294. package/dist/textfield/createTextField.d.ts.map +1 -1
  295. package/dist/textfield/index.d.ts +1 -1
  296. package/dist/textfield/index.d.ts.map +1 -1
  297. package/dist/toast/createToast.d.ts +2 -2
  298. package/dist/toast/createToast.d.ts.map +1 -1
  299. package/dist/toast/createToastRegion.d.ts +5 -3
  300. package/dist/toast/createToastRegion.d.ts.map +1 -1
  301. package/dist/toast/index.d.ts +2 -2
  302. package/dist/toast/index.d.ts.map +1 -1
  303. package/dist/toggle/createToggle.d.ts +9 -9
  304. package/dist/toggle/createToggle.d.ts.map +1 -1
  305. package/dist/toggle/createToggleState.d.ts +2 -2
  306. package/dist/toggle/createToggleState.d.ts.map +1 -1
  307. package/dist/toggle/index.d.ts +4 -4
  308. package/dist/toggle/index.d.ts.map +1 -1
  309. package/dist/toolbar/createToolbar.d.ts +9 -9
  310. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  311. package/dist/toolbar/index.d.ts +1 -1
  312. package/dist/toolbar/index.d.ts.map +1 -1
  313. package/dist/tooltip/createTooltip.d.ts +5 -5
  314. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  315. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  316. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  317. package/dist/tooltip/index.d.ts +2 -2
  318. package/dist/tree/createTree.d.ts +3 -3
  319. package/dist/tree/createTree.d.ts.map +1 -1
  320. package/dist/tree/createTreeItem.d.ts +4 -4
  321. package/dist/tree/createTreeItem.d.ts.map +1 -1
  322. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  323. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  324. package/dist/tree/index.d.ts +4 -4
  325. package/dist/tree/types.d.ts +10 -6
  326. package/dist/tree/types.d.ts.map +1 -1
  327. package/dist/utils/createDescription.d.ts +2 -2
  328. package/dist/utils/createDescription.d.ts.map +1 -1
  329. package/dist/utils/dom.d.ts.map +1 -1
  330. package/dist/utils/env.d.ts.map +1 -1
  331. package/dist/utils/focus.d.ts +1 -1
  332. package/dist/utils/focus.d.ts.map +1 -1
  333. package/dist/utils/geometry.d.ts.map +1 -1
  334. package/dist/utils/index.d.ts +12 -12
  335. package/dist/utils/index.d.ts.map +1 -1
  336. package/dist/utils/mergeProps.d.ts.map +1 -1
  337. package/dist/utils/reactivity.d.ts +1 -1
  338. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  339. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  340. package/dist/visually-hidden/index.d.ts +1 -1
  341. package/package.json +32 -32
  342. package/src/actiongroup/createActionGroup.ts +101 -91
  343. package/src/actiongroup/index.ts +1 -1
  344. package/src/autocomplete/createAutocomplete.ts +117 -134
  345. package/src/autocomplete/index.ts +1 -1
  346. package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
  347. package/src/breadcrumbs/index.ts +1 -1
  348. package/src/button/createButton.ts +102 -73
  349. package/src/button/createToggleButton.ts +10 -10
  350. package/src/button/createToggleButtonGroup.ts +25 -32
  351. package/src/button/index.ts +6 -9
  352. package/src/button/types.ts +18 -12
  353. package/src/calendar/createCalendar.ts +62 -29
  354. package/src/calendar/createCalendarCell.ts +98 -46
  355. package/src/calendar/createCalendarGrid.ts +57 -35
  356. package/src/calendar/createRangeCalendar.ts +66 -31
  357. package/src/calendar/createRangeCalendarCell.ts +92 -31
  358. package/src/calendar/index.ts +5 -9
  359. package/src/calendar/intl/index.ts +210 -0
  360. package/src/calendar/utils.ts +227 -0
  361. package/src/checkbox/createCheckbox.ts +13 -21
  362. package/src/checkbox/createCheckboxGroup.ts +68 -44
  363. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  364. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  365. package/src/checkbox/index.ts +8 -10
  366. package/src/collections/index.ts +33 -29
  367. package/src/color/createColorArea.ts +232 -154
  368. package/src/color/createColorField.ts +107 -58
  369. package/src/color/createColorSlider.ts +231 -73
  370. package/src/color/createColorSwatch.ts +38 -13
  371. package/src/color/createColorWheel.ts +208 -83
  372. package/src/color/index.ts +6 -6
  373. package/src/color/types.ts +98 -16
  374. package/src/combobox/createComboBox.ts +157 -100
  375. package/src/combobox/index.ts +1 -1
  376. package/src/combobox/intl/index.ts +5 -5
  377. package/src/datepicker/createDateField.ts +192 -39
  378. package/src/datepicker/createDatePicker.ts +260 -67
  379. package/src/datepicker/createDatePickerGroup.ts +149 -0
  380. package/src/datepicker/createDateRangePicker.ts +105 -57
  381. package/src/datepicker/createDateSegment.ts +183 -96
  382. package/src/datepicker/createTimeField.ts +38 -34
  383. package/src/datepicker/createTimeSegment.ts +67 -85
  384. package/src/datepicker/index.ts +13 -14
  385. package/src/dialog/createDialog.ts +45 -38
  386. package/src/dialog/index.ts +2 -2
  387. package/src/dialog/types.ts +4 -4
  388. package/src/disclosure/createDisclosure.ts +138 -33
  389. package/src/disclosure/createDisclosureGroup.ts +8 -21
  390. package/src/disclosure/index.ts +2 -2
  391. package/src/dnd/createDrag.ts +19 -25
  392. package/src/dnd/createDraggableCollection.ts +4 -4
  393. package/src/dnd/createDraggableItem.ts +20 -19
  394. package/src/dnd/createDrop.ts +42 -51
  395. package/src/dnd/createDroppableCollection.ts +290 -173
  396. package/src/dnd/createDroppableItem.ts +34 -34
  397. package/src/dnd/index.ts +23 -12
  398. package/src/dnd/types.ts +4 -7
  399. package/src/dnd/utils.ts +36 -49
  400. package/src/focus/FocusScope.tsx +155 -164
  401. package/src/focus/createAutoFocus.ts +4 -20
  402. package/src/focus/createFocusRestore.ts +15 -28
  403. package/src/focus/createVirtualFocus.ts +20 -36
  404. package/src/focus/index.ts +4 -8
  405. package/src/form/createFormReset.ts +4 -4
  406. package/src/form/createFormValidation.ts +20 -43
  407. package/src/form/index.ts +2 -5
  408. package/src/grid/GridKeyboardDelegate.ts +30 -30
  409. package/src/grid/createGrid.ts +36 -36
  410. package/src/grid/createGridCell.ts +18 -18
  411. package/src/grid/createGridRow.ts +14 -14
  412. package/src/grid/index.ts +5 -5
  413. package/src/grid/types.ts +8 -8
  414. package/src/gridlist/createGridList.ts +34 -29
  415. package/src/gridlist/createGridListItem.ts +68 -23
  416. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  417. package/src/gridlist/index.ts +4 -4
  418. package/src/gridlist/types.ts +11 -7
  419. package/src/i18n/createCollator.ts +5 -18
  420. package/src/i18n/createDateFormatter.ts +5 -13
  421. package/src/i18n/createFilter.ts +11 -24
  422. package/src/i18n/createNumberFormatter.ts +4 -6
  423. package/src/i18n/createStringFormatter.ts +19 -15
  424. package/src/i18n/index.ts +8 -11
  425. package/src/i18n/locale.tsx +15 -40
  426. package/src/i18n/utils.ts +35 -39
  427. package/src/index.ts +68 -169
  428. package/src/interactions/FocusableProvider.tsx +3 -7
  429. package/src/interactions/PressEvent.ts +4 -4
  430. package/src/interactions/createFocus.ts +12 -8
  431. package/src/interactions/createFocusRing.ts +21 -19
  432. package/src/interactions/createFocusWithin.ts +20 -13
  433. package/src/interactions/createFocusable.ts +15 -16
  434. package/src/interactions/createHover.ts +70 -55
  435. package/src/interactions/createInteractionModality.ts +75 -82
  436. package/src/interactions/createKeyboard.ts +2 -2
  437. package/src/interactions/createLongPress.ts +23 -23
  438. package/src/interactions/createMove.ts +72 -62
  439. package/src/interactions/createPress.ts +164 -87
  440. package/src/interactions/index.ts +24 -16
  441. package/src/label/createField.ts +18 -19
  442. package/src/label/createLabel.ts +18 -30
  443. package/src/label/createLabels.ts +8 -12
  444. package/src/label/index.ts +5 -5
  445. package/src/landmark/createLandmark.ts +30 -51
  446. package/src/landmark/index.ts +1 -1
  447. package/src/link/createLink.ts +83 -56
  448. package/src/link/index.ts +1 -1
  449. package/src/listbox/createListBox.ts +69 -58
  450. package/src/listbox/createOption.ts +83 -37
  451. package/src/listbox/index.ts +2 -6
  452. package/src/live-announcer/announce.ts +44 -71
  453. package/src/live-announcer/index.ts +1 -1
  454. package/src/menu/createMenu.ts +79 -50
  455. package/src/menu/createMenuItem.ts +79 -27
  456. package/src/menu/createMenuTrigger.ts +15 -15
  457. package/src/menu/index.ts +3 -12
  458. package/src/meter/createMeter.ts +7 -15
  459. package/src/meter/index.ts +1 -1
  460. package/src/numberfield/createNumberField.ts +138 -81
  461. package/src/numberfield/index.ts +1 -1
  462. package/src/overlays/ariaHideOutside.ts +14 -10
  463. package/src/overlays/createInteractOutside.ts +21 -18
  464. package/src/overlays/createModal.tsx +17 -17
  465. package/src/overlays/createOverlay.ts +38 -8
  466. package/src/overlays/createOverlayTrigger.ts +16 -16
  467. package/src/overlays/createPreventScroll.ts +46 -24
  468. package/src/overlays/index.ts +6 -17
  469. package/src/popover/calculatePosition.ts +115 -117
  470. package/src/popover/createOverlayPosition.ts +46 -40
  471. package/src/popover/createPopover.ts +42 -17
  472. package/src/popover/index.ts +3 -3
  473. package/src/progress/createProgressBar.ts +31 -32
  474. package/src/progress/index.ts +1 -1
  475. package/src/radio/createRadio.ts +95 -73
  476. package/src/radio/createRadioGroup.ts +83 -77
  477. package/src/radio/createRadioGroupState.ts +7 -31
  478. package/src/radio/index.ts +3 -8
  479. package/src/searchfield/createSearchField.ts +57 -29
  480. package/src/searchfield/index.ts +2 -2
  481. package/src/select/createHiddenSelect.tsx +57 -44
  482. package/src/select/createSelect.ts +128 -71
  483. package/src/select/index.ts +2 -7
  484. package/src/selection/createTypeSelect.ts +11 -11
  485. package/src/selection/index.ts +1 -1
  486. package/src/separator/createSeparator.ts +20 -25
  487. package/src/separator/index.ts +1 -1
  488. package/src/slider/createSlider.ts +93 -124
  489. package/src/slider/index.ts +2 -2
  490. package/src/ssr/index.tsx +8 -47
  491. package/src/steplist/createStepList.ts +106 -0
  492. package/src/steplist/index.ts +8 -0
  493. package/src/switch/createSwitch.ts +9 -14
  494. package/src/switch/index.ts +1 -1
  495. package/src/table/createTable.ts +152 -85
  496. package/src/table/createTableCell.ts +17 -16
  497. package/src/table/createTableColumnHeader.ts +67 -20
  498. package/src/table/createTableColumnResize.ts +256 -0
  499. package/src/table/createTableHeaderRow.ts +7 -7
  500. package/src/table/createTableRow.ts +149 -29
  501. package/src/table/createTableRowGroup.ts +5 -7
  502. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  503. package/src/table/createTableSelectionCheckbox.ts +8 -8
  504. package/src/table/index.ts +14 -9
  505. package/src/table/types.ts +15 -7
  506. package/src/tabs/createTabs.ts +74 -92
  507. package/src/tabs/index.ts +1 -1
  508. package/src/tag/createTag.ts +52 -50
  509. package/src/tag/createTagGroup.ts +47 -41
  510. package/src/tag/index.ts +2 -6
  511. package/src/textfield/createTextField.ts +67 -35
  512. package/src/textfield/index.ts +1 -5
  513. package/src/toast/createToast.ts +28 -26
  514. package/src/toast/createToastRegion.ts +169 -26
  515. package/src/toast/index.ts +2 -6
  516. package/src/toggle/createToggle.ts +95 -53
  517. package/src/toggle/createToggleState.ts +2 -10
  518. package/src/toggle/index.ts +4 -5
  519. package/src/toolbar/createToolbar.ts +193 -210
  520. package/src/toolbar/index.ts +1 -1
  521. package/src/tooltip/createTooltip.ts +11 -24
  522. package/src/tooltip/createTooltipTrigger.ts +61 -49
  523. package/src/tooltip/index.ts +2 -2
  524. package/src/tree/createTree.ts +35 -37
  525. package/src/tree/createTreeItem.ts +29 -29
  526. package/src/tree/createTreeSelectionCheckbox.ts +11 -8
  527. package/src/tree/index.ts +4 -4
  528. package/src/tree/types.ts +10 -6
  529. package/src/utils/createDescription.ts +6 -23
  530. package/src/utils/dom.ts +61 -54
  531. package/src/utils/env.ts +9 -11
  532. package/src/utils/events.ts +7 -7
  533. package/src/utils/filterDOMProps.ts +49 -49
  534. package/src/utils/focus.ts +60 -68
  535. package/src/utils/geometry.ts +1 -4
  536. package/src/utils/globalListeners.ts +9 -9
  537. package/src/utils/index.ts +12 -22
  538. package/src/utils/mergeProps.ts +42 -15
  539. package/src/utils/platform.ts +2 -2
  540. package/src/utils/reactivity.ts +3 -3
  541. package/src/utils/textSelection.ts +16 -16
  542. package/src/visually-hidden/createVisuallyHidden.ts +16 -28
  543. package/src/visually-hidden/index.ts +1 -1
  544. package/dist/i18n/NumberFormatter.d.ts +0 -43
  545. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  546. package/dist/index.ssr.js +0 -17082
  547. package/dist/index.ssr.js.map +0 -1
  548. package/src/i18n/NumberFormatter.ts +0 -266
@@ -7,20 +7,16 @@
7
7
  * This is a 1:1 port of @react-aria/radio's useRadio hook.
8
8
  */
9
9
 
10
- import { JSX, Accessor, createEffect } from 'solid-js';
11
- import { createPress } from '../interactions/createPress';
12
- import { createFocusable } from '../interactions/createFocusable';
13
- import { mergeProps } from '../utils/mergeProps';
14
- import { filterDOMProps } from '../utils/filterDOMProps';
15
- import { type MaybeAccessor, access } from '../utils/reactivity';
16
- import { isDevEnv } from '../utils/env';
17
- import { type RadioGroupState, radioGroupSyncVersion } from '@proyecto-viviana/solid-stately';
18
- import { radioGroupData } from './createRadioGroup';
19
- import { type PressEvent } from '../interactions/PressEvent';
20
-
21
- // ============================================
22
- // TYPES
23
- // ============================================
10
+ import { JSX, Accessor, createEffect } from "solid-js";
11
+ import { createPress } from "../interactions/createPress";
12
+ import { createFocusable } from "../interactions/createFocusable";
13
+ import { mergeProps } from "../utils/mergeProps";
14
+ import { filterDOMProps } from "../utils/filterDOMProps";
15
+ import { type MaybeAccessor, access } from "../utils/reactivity";
16
+ import { isDevEnv } from "../utils/env";
17
+ import { type RadioGroupState, radioGroupSyncVersion } from "@proyecto-viviana/solid-stately";
18
+ import { radioGroupData } from "./createRadioGroup";
19
+ import { type PressEvent } from "../interactions/PressEvent";
24
20
 
25
21
  export interface AriaRadioProps {
26
22
  /** The value of the radio button, used when submitting an HTML form. */
@@ -30,11 +26,11 @@ export interface AriaRadioProps {
30
26
  /** The label for the radio button. */
31
27
  children?: JSX.Element;
32
28
  /** Defines a string value that labels the current element. */
33
- 'aria-label'?: string;
29
+ "aria-label"?: string;
34
30
  /** Identifies the element (or elements) that labels the current element. */
35
- 'aria-labelledby'?: string;
31
+ "aria-labelledby"?: string;
36
32
  /** Identifies the element (or elements) that describes the object. */
37
- 'aria-describedby'?: string;
33
+ "aria-describedby"?: string;
38
34
  /** Handler that is called when the press is released over the target. */
39
35
  onPress?: (e: PressEvent) => void;
40
36
  /** Handler that is called when a press interaction starts. */
@@ -74,10 +70,6 @@ export interface RadioAria {
74
70
  isPressed: Accessor<boolean>;
75
71
  }
76
72
 
77
- // ============================================
78
- // IMPLEMENTATION
79
- // ============================================
80
-
81
73
  /**
82
74
  * Provides the behavior and accessibility implementation for an individual
83
75
  * radio button in a radio group.
@@ -85,7 +77,7 @@ export interface RadioAria {
85
77
  export function createRadio(
86
78
  props: MaybeAccessor<AriaRadioProps>,
87
79
  state: RadioGroupState,
88
- ref: () => HTMLInputElement | null
80
+ ref: () => HTMLInputElement | null,
89
81
  ): RadioAria {
90
82
  const getProps = () => access(props);
91
83
 
@@ -97,13 +89,14 @@ export function createRadio(
97
89
  return selected === v;
98
90
  };
99
91
 
100
- // Warn if no accessible label
101
92
  createEffect(() => {
102
93
  const p = getProps();
103
94
  const hasChildren = p.children != null;
104
- const hasAriaLabel = p['aria-label'] != null || p['aria-labelledby'] != null;
95
+ const hasAriaLabel = p["aria-label"] != null || p["aria-labelledby"] != null;
105
96
  if (!hasChildren && !hasAriaLabel && isDevEnv()) {
106
- console.warn('If you do not provide children, you must specify an aria-label for accessibility');
97
+ console.warn(
98
+ "If you do not provide children, you must specify an aria-label for accessibility",
99
+ );
107
100
  }
108
101
  });
109
102
 
@@ -120,25 +113,19 @@ export function createRadio(
120
113
  // We track `syncVersion` to ensure this effect runs on EVERY selection attempt,
121
114
  // even in controlled mode where isSelected() may not change.
122
115
  createEffect(() => {
123
- const inputEl = ref();
124
- if (!inputEl) return;
125
-
126
- // Track syncVersion to trigger on any selection attempt
127
- // This is crucial for controlled mode where isSelected() may not change
128
- // syncVersion is stored in an internal WeakMap to maintain API parity with React-Aria
116
+ // The WeakMap accessor is outside the public API to maintain React Aria parity.
129
117
  const syncVersion = radioGroupSyncVersion.get(state);
130
118
  syncVersion?.();
131
119
 
132
- // Read the reactive state to establish tracking and get current value
133
120
  const shouldBeChecked = isSelected();
121
+ const inputEl = ref();
122
+ if (!inputEl) return;
134
123
 
135
- // Sync the DOM checked state immediately
136
124
  if (inputEl.checked !== shouldBeChecked) {
137
125
  inputEl.checked = shouldBeChecked;
138
126
  }
139
127
  });
140
128
 
141
- // Handle input change
142
129
  // SolidJS-specific: Unlike React, the input's `checked` state can get out of sync
143
130
  // with our reactive state. This happens because:
144
131
  // 1. A readonly `<input type="radio" />` is always "checkable" in the browser
@@ -172,49 +159,88 @@ export function createRadio(
172
159
 
173
160
  // Handle press state for keyboard interactions and cases where labelProps is not used.
174
161
  const { pressProps, isPressed } = createPress({
175
- get onPressStart() { return getProps().onPressStart; },
176
- get onPressEnd() { return getProps().onPressEnd; },
177
- get onPressChange() { return getProps().onPressChange; },
178
- get onPress() { return getProps().onPress; },
179
- get onPressUp() { return getProps().onPressUp; },
180
- get isDisabled() { return isDisabled(); },
162
+ get onPressStart() {
163
+ return getProps().onPressStart;
164
+ },
165
+ get onPressEnd() {
166
+ return getProps().onPressEnd;
167
+ },
168
+ get onPressChange() {
169
+ return getProps().onPressChange;
170
+ },
171
+ get onPress() {
172
+ return getProps().onPress;
173
+ },
174
+ get onPressUp() {
175
+ return getProps().onPressUp;
176
+ },
177
+ get onClick() {
178
+ return getProps().onClick;
179
+ },
180
+ get isDisabled() {
181
+ return isDisabled();
182
+ },
181
183
  });
182
184
 
183
- // Handle press state on the label.
184
185
  const { pressProps: labelPressProps, isPressed: isLabelPressed } = createPress({
185
- get onPressStart() { return getProps().onPressStart; },
186
- get onPressEnd() { return getProps().onPressEnd; },
187
- get onPressChange() { return getProps().onPressChange; },
188
- get onPressUp() { return getProps().onPressUp; },
186
+ get onPressStart() {
187
+ return getProps().onPressStart;
188
+ },
189
+ get onPressEnd() {
190
+ return getProps().onPressEnd;
191
+ },
192
+ get onPressChange() {
193
+ return getProps().onPressChange;
194
+ },
195
+ get onPressUp() {
196
+ return getProps().onPressUp;
197
+ },
198
+ get onClick() {
199
+ return getProps().onClick;
200
+ },
189
201
  onPress(e: PressEvent) {
190
202
  getProps().onPress?.(e);
191
203
  state.setSelectedValue(value());
192
204
  ref()?.focus();
193
205
  },
194
- get isDisabled() { return isDisabled(); },
206
+ get isDisabled() {
207
+ return isDisabled();
208
+ },
195
209
  });
196
210
 
197
- // Handle focusable
198
- const { focusableProps } = createFocusable({
199
- get isDisabled() { return isDisabled(); },
200
- get autoFocus() { return getProps().autoFocus; },
201
- onFocus(e: FocusEvent) {
202
- getProps().onFocus?.(e);
203
- state.setLastFocusedValue(value());
211
+ const { focusableProps } = createFocusable(
212
+ {
213
+ get isDisabled() {
214
+ return isDisabled();
215
+ },
216
+ get autoFocus() {
217
+ return getProps().autoFocus;
218
+ },
219
+ onFocus(e: FocusEvent) {
220
+ getProps().onFocus?.(e);
221
+ state.setLastFocusedValue(value());
222
+ },
223
+ get onBlur() {
224
+ return getProps().onBlur;
225
+ },
226
+ get onFocusChange() {
227
+ return getProps().onFocusChange;
228
+ },
229
+ get onKeyDown() {
230
+ return getProps().onKeyDown;
231
+ },
232
+ get onKeyUp() {
233
+ return getProps().onKeyUp;
234
+ },
204
235
  },
205
- get onBlur() { return getProps().onBlur; },
206
- get onFocusChange() { return getProps().onFocusChange; },
207
- get onKeyDown() { return getProps().onKeyDown; },
208
- get onKeyUp() { return getProps().onKeyUp; },
209
- }, ref as unknown as (el: HTMLElement) => void);
236
+ ref as unknown as (el: HTMLElement) => void,
237
+ );
210
238
 
211
- // Combine press and focusable props for input
212
239
  const interactions = mergeProps(pressProps, focusableProps);
213
240
 
214
- // Filter DOM props
215
- const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
241
+ const domProps = () =>
242
+ filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
216
243
 
217
- // Calculate tabIndex based on selection and focus state
218
244
  const getTabIndex = (): number | undefined => {
219
245
  if (isDisabled()) {
220
246
  return undefined;
@@ -225,13 +251,11 @@ export function createRadio(
225
251
  const currentValue = value();
226
252
 
227
253
  if (selected != null) {
228
- // If there's a selection, only the selected radio is focusable
229
254
  if (selected === currentValue) {
230
255
  return 0;
231
256
  }
232
257
  return -1;
233
258
  } else {
234
- // If no selection, the last focused or first radio is focusable
235
259
  if (lastFocused === currentValue || lastFocused == null) {
236
260
  return 0;
237
261
  }
@@ -239,10 +263,8 @@ export function createRadio(
239
263
  }
240
264
  };
241
265
 
242
- // Get group data
243
266
  const getGroupData = () => radioGroupData.get(state);
244
267
 
245
- // Combined pressed state
246
268
  const combinedIsPressed: Accessor<boolean> = () => isPressed() || isLabelPressed();
247
269
 
248
270
  return {
@@ -254,10 +276,9 @@ export function createRadio(
254
276
  const p = getProps();
255
277
  const groupData = getGroupData();
256
278
 
257
- // Build aria-describedby
258
279
  const describedByIds: string[] = [];
259
- if (p['aria-describedby']) {
260
- describedByIds.push(p['aria-describedby']);
280
+ if (p["aria-describedby"]) {
281
+ describedByIds.push(p["aria-describedby"]);
261
282
  }
262
283
  if (state.isInvalid && groupData?.errorMessageId) {
263
284
  describedByIds.push(groupData.errorMessageId);
@@ -265,19 +286,20 @@ export function createRadio(
265
286
  if (groupData?.descriptionId) {
266
287
  describedByIds.push(groupData.descriptionId);
267
288
  }
268
- const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(' ') : undefined;
289
+ const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(" ") : undefined;
290
+ const validationBehavior = groupData?.validationBehavior ?? "native";
269
291
 
270
292
  return mergeProps(domProps(), interactions, {
271
- type: 'radio' as const,
293
+ type: "radio" as const,
272
294
  name: groupData?.name,
273
295
  form: groupData?.form,
274
296
  tabIndex: getTabIndex(),
275
297
  disabled: isDisabled(),
276
- required: state.isRequired && groupData?.validationBehavior === 'native',
298
+ required: validationBehavior === "native" ? state.isRequired : undefined,
277
299
  checked: isSelected(),
278
300
  value: value(),
279
301
  onChange,
280
- 'aria-describedby': ariaDescribedBy,
302
+ "aria-describedby": ariaDescribedBy,
281
303
  }) as JSX.InputHTMLAttributes<HTMLInputElement>;
282
304
  },
283
305
  isDisabled: isDisabled(),
@@ -7,20 +7,16 @@
7
7
  * This is a 1:1 port of @react-aria/radio's useRadioGroup hook.
8
8
  */
9
9
 
10
- import { JSX } from 'solid-js';
11
- import { createField } from '../label/createField';
12
- import { createFocusWithin } from '../interactions/createFocusWithin';
13
- import { mergeProps } from '../utils/mergeProps';
14
- import { filterDOMProps } from '../utils/filterDOMProps';
15
- import { focusSafely, getEventTarget } from '../utils';
16
- import { useLocale } from '../i18n';
17
- import { createId } from '../ssr';
18
- import { type MaybeAccessor, access } from '../utils/reactivity';
19
- import { type RadioGroupState, type ValidityState } from '@proyecto-viviana/solid-stately';
20
-
21
- // ============================================
22
- // TYPES
23
- // ============================================
10
+ import { JSX } from "solid-js";
11
+ import { createField } from "../label/createField";
12
+ import { createFocusWithin } from "../interactions/createFocusWithin";
13
+ import { mergeProps } from "../utils/mergeProps";
14
+ import { filterDOMProps } from "../utils/filterDOMProps";
15
+ import { focusSafely, getEventTarget } from "../utils";
16
+ import { useLocale } from "../i18n";
17
+ import { createId } from "../ssr";
18
+ import { type MaybeAccessor, access } from "../utils/reactivity";
19
+ import { type RadioGroupState, type ValidityState } from "@proyecto-viviana/solid-stately";
24
20
 
25
21
  export interface AriaRadioGroupProps {
26
22
  /** The content to display as the label. */
@@ -28,7 +24,9 @@ export interface AriaRadioGroupProps {
28
24
  /** A description for the radio group. Provides additional context. */
29
25
  description?: JSX.Element;
30
26
  /** An error message for the radio group. */
31
- errorMessage?: JSX.Element | ((validation: { isInvalid: boolean; validationErrors: string[] }) => JSX.Element);
27
+ errorMessage?:
28
+ | JSX.Element
29
+ | ((validation: { isInvalid: boolean; validationErrors: string[] }) => JSX.Element);
32
30
  /** Whether the radio group is disabled. */
33
31
  isDisabled?: boolean;
34
32
  /** Whether the radio group is read only. */
@@ -38,13 +36,13 @@ export interface AriaRadioGroupProps {
38
36
  /** Whether the radio group is invalid. */
39
37
  isInvalid?: boolean;
40
38
  /** The axis the Radio Button(s) should align with. Defaults to 'vertical'. */
41
- orientation?: 'horizontal' | 'vertical';
39
+ orientation?: "horizontal" | "vertical";
42
40
  /** The name of the radio group, used when submitting an HTML form. */
43
41
  name?: string;
44
42
  /** The form to associate the radio group with. */
45
43
  form?: string;
46
44
  /** Validation behavior for the radio group. */
47
- validationBehavior?: 'aria' | 'native';
45
+ validationBehavior?: "aria" | "native";
48
46
  /** Handler that is called when the radio group receives focus. */
49
47
  onFocus?: (e: FocusEvent) => void;
50
48
  /** Handler that is called when the radio group loses focus. */
@@ -52,13 +50,13 @@ export interface AriaRadioGroupProps {
52
50
  /** Handler that is called when the radio group's focus status changes. */
53
51
  onFocusChange?: (isFocused: boolean) => void;
54
52
  /** Defines a string value that labels the current element. */
55
- 'aria-label'?: string;
53
+ "aria-label"?: string;
56
54
  /** Identifies the element (or elements) that labels the current element. */
57
- 'aria-labelledby'?: string;
55
+ "aria-labelledby"?: string;
58
56
  /** Identifies the element (or elements) that describes the object. */
59
- 'aria-describedby'?: string;
57
+ "aria-describedby"?: string;
60
58
  /** Identifies the element (or elements) that provide an error message for the object. */
61
- 'aria-errormessage'?: string;
59
+ "aria-errormessage"?: string;
62
60
  /** The element's unique identifier. */
63
61
  id?: string;
64
62
  }
@@ -86,31 +84,27 @@ interface RadioGroupData {
86
84
  form: string | undefined;
87
85
  descriptionId: string | undefined;
88
86
  errorMessageId: string | undefined;
89
- validationBehavior: 'aria' | 'native';
87
+ validationBehavior: "aria" | "native";
90
88
  }
91
89
 
92
90
  export const radioGroupData: WeakMap<RadioGroupState, RadioGroupData> = new WeakMap();
93
91
 
94
- // ============================================
95
- // IMPLEMENTATION
96
- // ============================================
97
-
98
92
  /**
99
93
  * Provides the behavior and accessibility implementation for a radio group component.
100
94
  * Radio groups allow users to select a single item from a list of mutually exclusive options.
101
95
  */
102
96
  export function createRadioGroup(
103
97
  props: MaybeAccessor<AriaRadioGroupProps>,
104
- state: RadioGroupState
98
+ state: RadioGroupState,
105
99
  ): RadioGroupAria {
106
100
  const getProps = () => access(props);
107
101
  const locale = useLocale();
108
102
 
109
- const orientation = () => getProps().orientation ?? 'vertical';
103
+ const orientation = () => getProps().orientation ?? "vertical";
110
104
  const isReadOnly = () => getProps().isReadOnly ?? false;
111
105
  const isRequired = () => getProps().isRequired ?? false;
112
106
  const isDisabled = () => getProps().isDisabled ?? false;
113
- const validationBehavior = () => getProps().validationBehavior ?? 'aria';
107
+ const validationBehavior = () => getProps().validationBehavior ?? "native";
114
108
  const displayValidation = () => state.displayValidation();
115
109
  const validationErrors = () => displayValidation().validationErrors;
116
110
  const validationDetails = () => displayValidation().validationDetails;
@@ -120,18 +114,31 @@ export function createRadioGroup(
120
114
  return errors.length > 0 ? errors : undefined;
121
115
  };
122
116
 
123
- // Use field for label, description, error message
124
117
  const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField({
125
- get id() { return getProps().id; },
126
- get label() { return getProps().label; },
127
- get 'aria-label'() { return getProps()['aria-label']; },
128
- get 'aria-labelledby'() { return getProps()['aria-labelledby']; },
129
- get description() { return getProps().description; },
130
- get errorMessage() { return getProps().errorMessage ?? fallbackErrorMessage(); },
131
- get isInvalid() { return isInvalid(); },
118
+ get id() {
119
+ return getProps().id;
120
+ },
121
+ get label() {
122
+ return getProps().label;
123
+ },
124
+ get "aria-label"() {
125
+ return getProps()["aria-label"];
126
+ },
127
+ get "aria-labelledby"() {
128
+ return getProps()["aria-labelledby"];
129
+ },
130
+ get description() {
131
+ return getProps().description;
132
+ },
133
+ get errorMessage() {
134
+ return getProps().errorMessage ?? fallbackErrorMessage();
135
+ },
136
+ get isInvalid() {
137
+ return isInvalid();
138
+ },
132
139
  // Radio group is not an HTML input element so it
133
140
  // shouldn't be labeled by a <label> element.
134
- labelElementType: 'span',
141
+ labelElementType: "span",
135
142
  });
136
143
 
137
144
  // Handle focus within - reset focusable radio when group loses focus and no selection
@@ -146,13 +153,11 @@ export function createRadioGroup(
146
153
  onFocusWithinChange: (isFocused: boolean) => getProps().onFocusChange?.(isFocused),
147
154
  });
148
155
 
149
- // Filter DOM props
150
- const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
156
+ const domProps = () =>
157
+ filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
151
158
 
152
- // Generate group name
153
159
  const groupName = getProps().name ?? createId();
154
160
 
155
- // Store data for radio items to access
156
161
  radioGroupData.set(state, {
157
162
  name: groupName,
158
163
  form: getProps().form,
@@ -162,31 +167,32 @@ export function createRadioGroup(
162
167
  });
163
168
 
164
169
  const getNavigableRadios = (root: HTMLElement): HTMLInputElement[] => {
165
- return Array.from(root.querySelectorAll('input[type="radio"]'))
166
- .filter((el): el is HTMLInputElement => {
167
- return el instanceof HTMLInputElement && !el.matches(':disabled');
168
- });
170
+ return Array.from(root.querySelectorAll('input[type="radio"]')).filter(
171
+ (el): el is HTMLInputElement => {
172
+ return el instanceof HTMLInputElement && !el.matches(":disabled");
173
+ },
174
+ );
169
175
  };
170
176
 
171
177
  // Keyboard navigation parity with React Aria.
172
178
  const onKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (e) => {
173
- let nextDir: 'next' | 'prev' | null = null;
179
+ let nextDir: "next" | "prev" | null = null;
174
180
  const currentOrientation = orientation();
175
- const isHorizontal = currentOrientation !== 'vertical';
176
- const isRTL = locale().direction === 'rtl' && isHorizontal;
181
+ const isHorizontal = currentOrientation !== "vertical";
182
+ const isRTL = locale().direction === "rtl" && isHorizontal;
177
183
 
178
184
  switch (e.key) {
179
- case 'ArrowRight':
180
- nextDir = isRTL ? 'prev' : 'next';
185
+ case "ArrowRight":
186
+ nextDir = isRTL ? "prev" : "next";
181
187
  break;
182
- case 'ArrowLeft':
183
- nextDir = isRTL ? 'next' : 'prev';
188
+ case "ArrowLeft":
189
+ nextDir = isRTL ? "next" : "prev";
184
190
  break;
185
- case 'ArrowDown':
186
- nextDir = 'next';
191
+ case "ArrowDown":
192
+ nextDir = "next";
187
193
  break;
188
- case 'ArrowUp':
189
- nextDir = 'prev';
194
+ case "ArrowUp":
195
+ nextDir = "prev";
190
196
  break;
191
197
  default:
192
198
  return;
@@ -207,17 +213,21 @@ export function createRadioGroup(
207
213
  const eventTarget = getEventTarget<Element>(e);
208
214
  const activeElement = root.ownerDocument.activeElement;
209
215
 
210
- const currentRadio = eventTarget instanceof HTMLInputElement && eventTarget.type === 'radio'
211
- ? eventTarget
212
- : (activeElement instanceof HTMLInputElement && activeElement.type === 'radio' ? activeElement : null);
216
+ const currentRadio =
217
+ eventTarget instanceof HTMLInputElement && eventTarget.type === "radio"
218
+ ? eventTarget
219
+ : activeElement instanceof HTMLInputElement && activeElement.type === "radio"
220
+ ? activeElement
221
+ : null;
213
222
 
214
223
  const currentIndex = currentRadio ? radios.indexOf(currentRadio) : -1;
215
224
 
216
225
  let nextIndex: number;
217
- if (nextDir === 'next') {
226
+ if (nextDir === "next") {
218
227
  nextIndex = currentIndex >= 0 ? (currentIndex + 1) % radios.length : 0;
219
228
  } else {
220
- nextIndex = currentIndex >= 0 ? (currentIndex - 1 + radios.length) % radios.length : radios.length - 1;
229
+ nextIndex =
230
+ currentIndex >= 0 ? (currentIndex - 1 + radios.length) % radios.length : radios.length - 1;
221
231
  }
222
232
 
223
233
  const nextRadio = radios[nextIndex];
@@ -231,21 +241,17 @@ export function createRadioGroup(
231
241
 
232
242
  return {
233
243
  get radioGroupProps() {
234
- return mergeProps(
235
- domProps(),
236
- focusWithinProps as unknown as Record<string, unknown>,
237
- {
238
- role: 'radiogroup',
239
- onKeyDown,
240
- 'aria-invalid': isInvalid() || undefined,
241
- 'aria-errormessage': getProps()['aria-errormessage'],
242
- 'aria-readonly': isReadOnly() || undefined,
243
- 'aria-required': isRequired() || undefined,
244
- 'aria-disabled': isDisabled() || undefined,
245
- 'aria-orientation': orientation(),
246
- ...fieldProps,
247
- }
248
- ) as JSX.HTMLAttributes<HTMLDivElement>;
244
+ return mergeProps(domProps(), focusWithinProps as unknown as Record<string, unknown>, {
245
+ role: "radiogroup",
246
+ onKeyDown,
247
+ "aria-invalid": isInvalid() || undefined,
248
+ "aria-errormessage": getProps()["aria-errormessage"],
249
+ "aria-readonly": isReadOnly() || undefined,
250
+ "aria-required": isRequired() || undefined,
251
+ "aria-disabled": isDisabled() || undefined,
252
+ "aria-orientation": orientation(),
253
+ ...fieldProps,
254
+ }) as JSX.HTMLAttributes<HTMLDivElement>;
249
255
  },
250
256
  labelProps: labelProps as JSX.HTMLAttributes<HTMLElement>,
251
257
  descriptionProps,