@proyecto-viviana/solidaria 0.1.3 → 0.2.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 (580) hide show
  1. package/dist/index.d.ts +6135 -50
  2. package/dist/index.js +485 -1120
  3. package/dist/{index.ssr.js → index.jsx} +89 -143
  4. package/package.json +7 -9
  5. package/dist/autocomplete/createAutocomplete.d.ts +0 -109
  6. package/dist/autocomplete/createAutocomplete.d.ts.map +0 -1
  7. package/dist/autocomplete/index.d.ts +0 -2
  8. package/dist/autocomplete/index.d.ts.map +0 -1
  9. package/dist/breadcrumbs/createBreadcrumbs.d.ts +0 -43
  10. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +0 -1
  11. package/dist/breadcrumbs/index.d.ts +0 -2
  12. package/dist/breadcrumbs/index.d.ts.map +0 -1
  13. package/dist/button/createButton.d.ts +0 -29
  14. package/dist/button/createButton.d.ts.map +0 -1
  15. package/dist/button/createToggleButton.d.ts +0 -41
  16. package/dist/button/createToggleButton.d.ts.map +0 -1
  17. package/dist/button/index.d.ts +0 -5
  18. package/dist/button/index.d.ts.map +0 -1
  19. package/dist/button/types.d.ts +0 -77
  20. package/dist/button/types.d.ts.map +0 -1
  21. package/dist/calendar/createCalendar.d.ts +0 -41
  22. package/dist/calendar/createCalendar.d.ts.map +0 -1
  23. package/dist/calendar/createCalendarCell.d.ts +0 -41
  24. package/dist/calendar/createCalendarCell.d.ts.map +0 -1
  25. package/dist/calendar/createCalendarGrid.d.ts +0 -29
  26. package/dist/calendar/createCalendarGrid.d.ts.map +0 -1
  27. package/dist/calendar/createRangeCalendar.d.ts +0 -39
  28. package/dist/calendar/createRangeCalendar.d.ts.map +0 -1
  29. package/dist/calendar/createRangeCalendarCell.d.ts +0 -45
  30. package/dist/calendar/createRangeCalendarCell.d.ts.map +0 -1
  31. package/dist/calendar/index.d.ts +0 -6
  32. package/dist/calendar/index.d.ts.map +0 -1
  33. package/dist/checkbox/createCheckbox.d.ts +0 -56
  34. package/dist/checkbox/createCheckbox.d.ts.map +0 -1
  35. package/dist/checkbox/createCheckboxGroup.d.ts +0 -53
  36. package/dist/checkbox/createCheckboxGroup.d.ts.map +0 -1
  37. package/dist/checkbox/createCheckboxGroupItem.d.ts +0 -25
  38. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +0 -1
  39. package/dist/checkbox/createCheckboxGroupState.d.ts +0 -71
  40. package/dist/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  41. package/dist/checkbox/index.d.ts +0 -9
  42. package/dist/checkbox/index.d.ts.map +0 -1
  43. package/dist/color/createColorArea.d.ts +0 -13
  44. package/dist/color/createColorArea.d.ts.map +0 -1
  45. package/dist/color/createColorField.d.ts +0 -13
  46. package/dist/color/createColorField.d.ts.map +0 -1
  47. package/dist/color/createColorSlider.d.ts +0 -13
  48. package/dist/color/createColorSlider.d.ts.map +0 -1
  49. package/dist/color/createColorSwatch.d.ts +0 -12
  50. package/dist/color/createColorSwatch.d.ts.map +0 -1
  51. package/dist/color/createColorWheel.d.ts +0 -13
  52. package/dist/color/createColorWheel.d.ts.map +0 -1
  53. package/dist/color/index.d.ts +0 -10
  54. package/dist/color/index.d.ts.map +0 -1
  55. package/dist/color/types.d.ts +0 -106
  56. package/dist/color/types.d.ts.map +0 -1
  57. package/dist/combobox/createComboBox.d.ts +0 -77
  58. package/dist/combobox/createComboBox.d.ts.map +0 -1
  59. package/dist/combobox/index.d.ts +0 -2
  60. package/dist/combobox/index.d.ts.map +0 -1
  61. package/dist/combobox/intl/index.d.ts +0 -14
  62. package/dist/combobox/intl/index.d.ts.map +0 -1
  63. package/dist/datepicker/createDateField.d.ts +0 -51
  64. package/dist/datepicker/createDateField.d.ts.map +0 -1
  65. package/dist/datepicker/createDatePicker.d.ts +0 -65
  66. package/dist/datepicker/createDatePicker.d.ts.map +0 -1
  67. package/dist/datepicker/createDateSegment.d.ts +0 -29
  68. package/dist/datepicker/createDateSegment.d.ts.map +0 -1
  69. package/dist/datepicker/createTimeField.d.ts +0 -51
  70. package/dist/datepicker/createTimeField.d.ts.map +0 -1
  71. package/dist/datepicker/index.d.ts +0 -5
  72. package/dist/datepicker/index.d.ts.map +0 -1
  73. package/dist/dialog/createDialog.d.ts +0 -25
  74. package/dist/dialog/createDialog.d.ts.map +0 -1
  75. package/dist/dialog/index.d.ts +0 -3
  76. package/dist/dialog/index.d.ts.map +0 -1
  77. package/dist/dialog/types.d.ts +0 -18
  78. package/dist/dialog/types.d.ts.map +0 -1
  79. package/dist/disclosure/createDisclosure.d.ts +0 -52
  80. package/dist/disclosure/createDisclosure.d.ts.map +0 -1
  81. package/dist/disclosure/createDisclosureGroup.d.ts +0 -39
  82. package/dist/disclosure/createDisclosureGroup.d.ts.map +0 -1
  83. package/dist/disclosure/index.d.ts +0 -3
  84. package/dist/disclosure/index.d.ts.map +0 -1
  85. package/dist/dnd/createDrag.d.ts +0 -16
  86. package/dist/dnd/createDrag.d.ts.map +0 -1
  87. package/dist/dnd/createDraggableCollection.d.ts +0 -27
  88. package/dist/dnd/createDraggableCollection.d.ts.map +0 -1
  89. package/dist/dnd/createDraggableItem.d.ts +0 -37
  90. package/dist/dnd/createDraggableItem.d.ts.map +0 -1
  91. package/dist/dnd/createDrop.d.ts +0 -16
  92. package/dist/dnd/createDrop.d.ts.map +0 -1
  93. package/dist/dnd/createDroppableCollection.d.ts +0 -76
  94. package/dist/dnd/createDroppableCollection.d.ts.map +0 -1
  95. package/dist/dnd/createDroppableItem.d.ts +0 -31
  96. package/dist/dnd/createDroppableItem.d.ts.map +0 -1
  97. package/dist/dnd/index.d.ts +0 -18
  98. package/dist/dnd/index.d.ts.map +0 -1
  99. package/dist/dnd/types.d.ts +0 -66
  100. package/dist/dnd/types.d.ts.map +0 -1
  101. package/dist/dnd/utils.d.ts +0 -57
  102. package/dist/dnd/utils.d.ts.map +0 -1
  103. package/dist/focus/FocusScope.d.ts +0 -57
  104. package/dist/focus/FocusScope.d.ts.map +0 -1
  105. package/dist/focus/createAutoFocus.d.ts +0 -120
  106. package/dist/focus/createAutoFocus.d.ts.map +0 -1
  107. package/dist/focus/createFocusRestore.d.ts +0 -116
  108. package/dist/focus/createFocusRestore.d.ts.map +0 -1
  109. package/dist/focus/createVirtualFocus.d.ts +0 -170
  110. package/dist/focus/createVirtualFocus.d.ts.map +0 -1
  111. package/dist/focus/index.d.ts +0 -5
  112. package/dist/focus/index.d.ts.map +0 -1
  113. package/dist/form/createFormReset.d.ts +0 -27
  114. package/dist/form/createFormReset.d.ts.map +0 -1
  115. package/dist/form/createFormValidation.d.ts +0 -56
  116. package/dist/form/createFormValidation.d.ts.map +0 -1
  117. package/dist/form/index.d.ts +0 -3
  118. package/dist/form/index.d.ts.map +0 -1
  119. package/dist/grid/GridKeyboardDelegate.d.ts +0 -79
  120. package/dist/grid/GridKeyboardDelegate.d.ts.map +0 -1
  121. package/dist/grid/createGrid.d.ts +0 -24
  122. package/dist/grid/createGrid.d.ts.map +0 -1
  123. package/dist/grid/createGridCell.d.ts +0 -12
  124. package/dist/grid/createGridCell.d.ts.map +0 -1
  125. package/dist/grid/createGridRow.d.ts +0 -12
  126. package/dist/grid/createGridRow.d.ts.map +0 -1
  127. package/dist/grid/index.d.ts +0 -10
  128. package/dist/grid/index.d.ts.map +0 -1
  129. package/dist/grid/types.d.ts +0 -126
  130. package/dist/grid/types.d.ts.map +0 -1
  131. package/dist/gridlist/createGridList.d.ts +0 -28
  132. package/dist/gridlist/createGridList.d.ts.map +0 -1
  133. package/dist/gridlist/createGridListItem.d.ts +0 -12
  134. package/dist/gridlist/createGridListItem.d.ts.map +0 -1
  135. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +0 -12
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +0 -1
  137. package/dist/gridlist/index.d.ts +0 -8
  138. package/dist/gridlist/index.d.ts.map +0 -1
  139. package/dist/gridlist/types.d.ts +0 -75
  140. package/dist/gridlist/types.d.ts.map +0 -1
  141. package/dist/i18n/NumberFormatter.d.ts +0 -43
  142. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  143. package/dist/i18n/createCollator.d.ts +0 -41
  144. package/dist/i18n/createCollator.d.ts.map +0 -1
  145. package/dist/i18n/createDateFormatter.d.ts +0 -45
  146. package/dist/i18n/createDateFormatter.d.ts.map +0 -1
  147. package/dist/i18n/createFilter.d.ts +0 -57
  148. package/dist/i18n/createFilter.d.ts.map +0 -1
  149. package/dist/i18n/createNumberFormatter.d.ts +0 -43
  150. package/dist/i18n/createNumberFormatter.d.ts.map +0 -1
  151. package/dist/i18n/createStringFormatter.d.ts +0 -42
  152. package/dist/i18n/createStringFormatter.d.ts.map +0 -1
  153. package/dist/i18n/index.d.ts +0 -9
  154. package/dist/i18n/index.d.ts.map +0 -1
  155. package/dist/i18n/locale.d.ts +0 -66
  156. package/dist/i18n/locale.d.ts.map +0 -1
  157. package/dist/i18n/utils.d.ts +0 -17
  158. package/dist/i18n/utils.d.ts.map +0 -1
  159. package/dist/index.d.ts.map +0 -1
  160. package/dist/index.js.map +0 -7
  161. package/dist/index.ssr.js.map +0 -7
  162. package/dist/interactions/FocusableProvider.d.ts +0 -26
  163. package/dist/interactions/FocusableProvider.d.ts.map +0 -1
  164. package/dist/interactions/PressEvent.d.ts +0 -73
  165. package/dist/interactions/PressEvent.d.ts.map +0 -1
  166. package/dist/interactions/createFocus.d.ts +0 -31
  167. package/dist/interactions/createFocus.d.ts.map +0 -1
  168. package/dist/interactions/createFocusRing.d.ts +0 -37
  169. package/dist/interactions/createFocusRing.d.ts.map +0 -1
  170. package/dist/interactions/createFocusWithin.d.ts +0 -27
  171. package/dist/interactions/createFocusWithin.d.ts.map +0 -1
  172. package/dist/interactions/createFocusable.d.ts +0 -65
  173. package/dist/interactions/createFocusable.d.ts.map +0 -1
  174. package/dist/interactions/createHover.d.ts +0 -43
  175. package/dist/interactions/createHover.d.ts.map +0 -1
  176. package/dist/interactions/createInteractionModality.d.ts +0 -73
  177. package/dist/interactions/createInteractionModality.d.ts.map +0 -1
  178. package/dist/interactions/createKeyboard.d.ts +0 -35
  179. package/dist/interactions/createKeyboard.d.ts.map +0 -1
  180. package/dist/interactions/createLongPress.d.ts +0 -63
  181. package/dist/interactions/createLongPress.d.ts.map +0 -1
  182. package/dist/interactions/createMove.d.ts +0 -40
  183. package/dist/interactions/createMove.d.ts.map +0 -1
  184. package/dist/interactions/createPress.d.ts +0 -55
  185. package/dist/interactions/createPress.d.ts.map +0 -1
  186. package/dist/interactions/index.d.ts +0 -13
  187. package/dist/interactions/index.d.ts.map +0 -1
  188. package/dist/label/createField.d.ts +0 -51
  189. package/dist/label/createField.d.ts.map +0 -1
  190. package/dist/label/createLabel.d.ts +0 -49
  191. package/dist/label/createLabel.d.ts.map +0 -1
  192. package/dist/label/createLabels.d.ts +0 -16
  193. package/dist/label/createLabels.d.ts.map +0 -1
  194. package/dist/label/index.d.ts +0 -6
  195. package/dist/label/index.d.ts.map +0 -1
  196. package/dist/landmark/createLandmark.d.ts +0 -79
  197. package/dist/landmark/createLandmark.d.ts.map +0 -1
  198. package/dist/landmark/index.d.ts +0 -2
  199. package/dist/landmark/index.d.ts.map +0 -1
  200. package/dist/link/createLink.d.ts +0 -65
  201. package/dist/link/createLink.d.ts.map +0 -1
  202. package/dist/link/index.d.ts +0 -2
  203. package/dist/link/index.d.ts.map +0 -1
  204. package/dist/listbox/createListBox.d.ts +0 -58
  205. package/dist/listbox/createListBox.d.ts.map +0 -1
  206. package/dist/listbox/createOption.d.ts +0 -42
  207. package/dist/listbox/createOption.d.ts.map +0 -1
  208. package/dist/listbox/index.d.ts +0 -3
  209. package/dist/listbox/index.d.ts.map +0 -1
  210. package/dist/live-announcer/announce.d.ts +0 -113
  211. package/dist/live-announcer/announce.d.ts.map +0 -1
  212. package/dist/live-announcer/index.d.ts +0 -2
  213. package/dist/live-announcer/index.d.ts.map +0 -1
  214. package/dist/menu/createMenu.d.ts +0 -57
  215. package/dist/menu/createMenu.d.ts.map +0 -1
  216. package/dist/menu/createMenuItem.d.ts +0 -42
  217. package/dist/menu/createMenuItem.d.ts.map +0 -1
  218. package/dist/menu/createMenuTrigger.d.ts +0 -29
  219. package/dist/menu/createMenuTrigger.d.ts.map +0 -1
  220. package/dist/menu/index.d.ts +0 -4
  221. package/dist/menu/index.d.ts.map +0 -1
  222. package/dist/meter/createMeter.d.ts +0 -44
  223. package/dist/meter/createMeter.d.ts.map +0 -1
  224. package/dist/meter/index.d.ts +0 -2
  225. package/dist/meter/index.d.ts.map +0 -1
  226. package/dist/numberfield/createNumberField.d.ts +0 -56
  227. package/dist/numberfield/createNumberField.d.ts.map +0 -1
  228. package/dist/numberfield/index.d.ts +0 -2
  229. package/dist/numberfield/index.d.ts.map +0 -1
  230. package/dist/overlays/ariaHideOutside.d.ts +0 -25
  231. package/dist/overlays/ariaHideOutside.d.ts.map +0 -1
  232. package/dist/overlays/createInteractOutside.d.ts +0 -20
  233. package/dist/overlays/createInteractOutside.d.ts.map +0 -1
  234. package/dist/overlays/createModal.d.ts +0 -70
  235. package/dist/overlays/createModal.d.ts.map +0 -1
  236. package/dist/overlays/createOverlay.d.ts +0 -43
  237. package/dist/overlays/createOverlay.d.ts.map +0 -1
  238. package/dist/overlays/createOverlayTrigger.d.ts +0 -30
  239. package/dist/overlays/createOverlayTrigger.d.ts.map +0 -1
  240. package/dist/overlays/createPreventScroll.d.ts +0 -15
  241. package/dist/overlays/createPreventScroll.d.ts.map +0 -1
  242. package/dist/overlays/index.d.ts +0 -7
  243. package/dist/overlays/index.d.ts.map +0 -1
  244. package/dist/popover/calculatePosition.d.ts +0 -67
  245. package/dist/popover/calculatePosition.d.ts.map +0 -1
  246. package/dist/popover/createOverlayPosition.d.ts +0 -109
  247. package/dist/popover/createOverlayPosition.d.ts.map +0 -1
  248. package/dist/popover/createPopover.d.ts +0 -88
  249. package/dist/popover/createPopover.d.ts.map +0 -1
  250. package/dist/popover/index.d.ts +0 -4
  251. package/dist/popover/index.d.ts.map +0 -1
  252. package/dist/progress/createProgressBar.d.ts +0 -47
  253. package/dist/progress/createProgressBar.d.ts.map +0 -1
  254. package/dist/progress/index.d.ts +0 -2
  255. package/dist/progress/index.d.ts.map +0 -1
  256. package/dist/radio/createRadio.d.ts +0 -68
  257. package/dist/radio/createRadio.d.ts.map +0 -1
  258. package/dist/radio/createRadioGroup.d.ts +0 -85
  259. package/dist/radio/createRadioGroup.d.ts.map +0 -1
  260. package/dist/radio/createRadioGroupState.d.ts +0 -77
  261. package/dist/radio/createRadioGroupState.d.ts.map +0 -1
  262. package/dist/radio/index.d.ts +0 -4
  263. package/dist/radio/index.d.ts.map +0 -1
  264. package/dist/searchfield/createSearchField.d.ts +0 -32
  265. package/dist/searchfield/createSearchField.d.ts.map +0 -1
  266. package/dist/searchfield/index.d.ts +0 -3
  267. package/dist/searchfield/index.d.ts.map +0 -1
  268. package/dist/select/createHiddenSelect.d.ts +0 -69
  269. package/dist/select/createHiddenSelect.d.ts.map +0 -1
  270. package/dist/select/createSelect.d.ts +0 -70
  271. package/dist/select/createSelect.d.ts.map +0 -1
  272. package/dist/select/index.d.ts +0 -3
  273. package/dist/select/index.d.ts.map +0 -1
  274. package/dist/selection/createTypeSelect.d.ts +0 -43
  275. package/dist/selection/createTypeSelect.d.ts.map +0 -1
  276. package/dist/selection/index.d.ts +0 -6
  277. package/dist/selection/index.d.ts.map +0 -1
  278. package/dist/separator/createSeparator.d.ts +0 -38
  279. package/dist/separator/createSeparator.d.ts.map +0 -1
  280. package/dist/separator/index.d.ts +0 -2
  281. package/dist/separator/index.d.ts.map +0 -1
  282. package/dist/slider/createSlider.d.ts +0 -43
  283. package/dist/slider/createSlider.d.ts.map +0 -1
  284. package/dist/slider/index.d.ts +0 -3
  285. package/dist/slider/index.d.ts.map +0 -1
  286. package/dist/ssr/index.d.ts +0 -221
  287. package/dist/ssr/index.d.ts.map +0 -1
  288. package/dist/switch/createSwitch.d.ts +0 -34
  289. package/dist/switch/createSwitch.d.ts.map +0 -1
  290. package/dist/switch/index.d.ts +0 -2
  291. package/dist/switch/index.d.ts.map +0 -1
  292. package/dist/table/createTable.d.ts +0 -24
  293. package/dist/table/createTable.d.ts.map +0 -1
  294. package/dist/table/createTableCell.d.ts +0 -12
  295. package/dist/table/createTableCell.d.ts.map +0 -1
  296. package/dist/table/createTableColumnHeader.d.ts +0 -12
  297. package/dist/table/createTableColumnHeader.d.ts.map +0 -1
  298. package/dist/table/createTableHeaderRow.d.ts +0 -12
  299. package/dist/table/createTableHeaderRow.d.ts.map +0 -1
  300. package/dist/table/createTableRow.d.ts +0 -12
  301. package/dist/table/createTableRow.d.ts.map +0 -1
  302. package/dist/table/createTableRowGroup.d.ts +0 -11
  303. package/dist/table/createTableRowGroup.d.ts.map +0 -1
  304. package/dist/table/createTableSelectAllCheckbox.d.ts +0 -12
  305. package/dist/table/createTableSelectAllCheckbox.d.ts.map +0 -1
  306. package/dist/table/createTableSelectionCheckbox.d.ts +0 -12
  307. package/dist/table/createTableSelectionCheckbox.d.ts.map +0 -1
  308. package/dist/table/index.d.ts +0 -14
  309. package/dist/table/index.d.ts.map +0 -1
  310. package/dist/table/types.d.ts +0 -150
  311. package/dist/table/types.d.ts.map +0 -1
  312. package/dist/tabs/createTabs.d.ts +0 -123
  313. package/dist/tabs/createTabs.d.ts.map +0 -1
  314. package/dist/tabs/index.d.ts +0 -2
  315. package/dist/tabs/index.d.ts.map +0 -1
  316. package/dist/tag/createTag.d.ts +0 -42
  317. package/dist/tag/createTag.d.ts.map +0 -1
  318. package/dist/tag/createTagGroup.d.ts +0 -54
  319. package/dist/tag/createTagGroup.d.ts.map +0 -1
  320. package/dist/tag/index.d.ts +0 -3
  321. package/dist/tag/index.d.ts.map +0 -1
  322. package/dist/textfield/createTextField.d.ts +0 -73
  323. package/dist/textfield/createTextField.d.ts.map +0 -1
  324. package/dist/textfield/index.d.ts +0 -2
  325. package/dist/textfield/index.d.ts.map +0 -1
  326. package/dist/toast/createToast.d.ts +0 -58
  327. package/dist/toast/createToast.d.ts.map +0 -1
  328. package/dist/toast/createToastRegion.d.ts +0 -49
  329. package/dist/toast/createToastRegion.d.ts.map +0 -1
  330. package/dist/toast/index.d.ts +0 -3
  331. package/dist/toast/index.d.ts.map +0 -1
  332. package/dist/toggle/createToggle.d.ts +0 -94
  333. package/dist/toggle/createToggle.d.ts.map +0 -1
  334. package/dist/toggle/createToggleState.d.ts +0 -34
  335. package/dist/toggle/createToggleState.d.ts.map +0 -1
  336. package/dist/toggle/index.d.ts +0 -5
  337. package/dist/toggle/index.d.ts.map +0 -1
  338. package/dist/toolbar/createToolbar.d.ts +0 -49
  339. package/dist/toolbar/createToolbar.d.ts.map +0 -1
  340. package/dist/toolbar/index.d.ts +0 -2
  341. package/dist/toolbar/index.d.ts.map +0 -1
  342. package/dist/tooltip/createTooltip.d.ts +0 -48
  343. package/dist/tooltip/createTooltip.d.ts.map +0 -1
  344. package/dist/tooltip/createTooltipTrigger.d.ts +0 -64
  345. package/dist/tooltip/createTooltipTrigger.d.ts.map +0 -1
  346. package/dist/tooltip/index.d.ts +0 -3
  347. package/dist/tooltip/index.d.ts.map +0 -1
  348. package/dist/tree/createTree.d.ts +0 -28
  349. package/dist/tree/createTree.d.ts.map +0 -1
  350. package/dist/tree/createTreeItem.d.ts +0 -12
  351. package/dist/tree/createTreeItem.d.ts.map +0 -1
  352. package/dist/tree/createTreeSelectionCheckbox.d.ts +0 -12
  353. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +0 -1
  354. package/dist/tree/index.d.ts +0 -8
  355. package/dist/tree/index.d.ts.map +0 -1
  356. package/dist/tree/types.d.ts +0 -81
  357. package/dist/tree/types.d.ts.map +0 -1
  358. package/dist/utils/createDescription.d.ts +0 -56
  359. package/dist/utils/createDescription.d.ts.map +0 -1
  360. package/dist/utils/dom.d.ts +0 -68
  361. package/dist/utils/dom.d.ts.map +0 -1
  362. package/dist/utils/env.d.ts +0 -18
  363. package/dist/utils/env.d.ts.map +0 -1
  364. package/dist/utils/events.d.ts +0 -29
  365. package/dist/utils/events.d.ts.map +0 -1
  366. package/dist/utils/filterDOMProps.d.ts +0 -29
  367. package/dist/utils/filterDOMProps.d.ts.map +0 -1
  368. package/dist/utils/focus.d.ts +0 -20
  369. package/dist/utils/focus.d.ts.map +0 -1
  370. package/dist/utils/geometry.d.ts +0 -40
  371. package/dist/utils/geometry.d.ts.map +0 -1
  372. package/dist/utils/globalListeners.d.ts +0 -36
  373. package/dist/utils/globalListeners.d.ts.map +0 -1
  374. package/dist/utils/index.d.ts +0 -13
  375. package/dist/utils/index.d.ts.map +0 -1
  376. package/dist/utils/mergeProps.d.ts +0 -11
  377. package/dist/utils/mergeProps.d.ts.map +0 -1
  378. package/dist/utils/platform.d.ts +0 -14
  379. package/dist/utils/platform.d.ts.map +0 -1
  380. package/dist/utils/reactivity.d.ts +0 -28
  381. package/dist/utils/reactivity.d.ts.map +0 -1
  382. package/dist/utils/textSelection.d.ts +0 -19
  383. package/dist/utils/textSelection.d.ts.map +0 -1
  384. package/dist/visually-hidden/createVisuallyHidden.d.ts +0 -60
  385. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +0 -1
  386. package/dist/visually-hidden/index.d.ts +0 -2
  387. package/dist/visually-hidden/index.d.ts.map +0 -1
  388. package/src/autocomplete/createAutocomplete.ts +0 -341
  389. package/src/autocomplete/index.ts +0 -9
  390. package/src/breadcrumbs/createBreadcrumbs.ts +0 -196
  391. package/src/breadcrumbs/index.ts +0 -8
  392. package/src/button/createButton.ts +0 -142
  393. package/src/button/createToggleButton.ts +0 -101
  394. package/src/button/index.ts +0 -4
  395. package/src/button/types.ts +0 -78
  396. package/src/calendar/createCalendar.ts +0 -138
  397. package/src/calendar/createCalendarCell.ts +0 -187
  398. package/src/calendar/createCalendarGrid.ts +0 -140
  399. package/src/calendar/createRangeCalendar.ts +0 -136
  400. package/src/calendar/createRangeCalendarCell.ts +0 -186
  401. package/src/calendar/index.ts +0 -34
  402. package/src/checkbox/createCheckbox.ts +0 -135
  403. package/src/checkbox/createCheckboxGroup.ts +0 -137
  404. package/src/checkbox/createCheckboxGroupItem.ts +0 -117
  405. package/src/checkbox/createCheckboxGroupState.ts +0 -193
  406. package/src/checkbox/index.ts +0 -13
  407. package/src/color/createColorArea.ts +0 -314
  408. package/src/color/createColorField.ts +0 -137
  409. package/src/color/createColorSlider.ts +0 -197
  410. package/src/color/createColorSwatch.ts +0 -40
  411. package/src/color/createColorWheel.ts +0 -208
  412. package/src/color/index.ts +0 -24
  413. package/src/color/types.ts +0 -116
  414. package/src/combobox/createComboBox.ts +0 -647
  415. package/src/combobox/index.ts +0 -6
  416. package/src/combobox/intl/en-US.json +0 -7
  417. package/src/combobox/intl/es-ES.json +0 -7
  418. package/src/combobox/intl/index.ts +0 -23
  419. package/src/datepicker/createDateField.ts +0 -154
  420. package/src/datepicker/createDatePicker.ts +0 -206
  421. package/src/datepicker/createDateSegment.ts +0 -229
  422. package/src/datepicker/createTimeField.ts +0 -154
  423. package/src/datepicker/index.ts +0 -28
  424. package/src/dialog/createDialog.ts +0 -120
  425. package/src/dialog/index.ts +0 -2
  426. package/src/dialog/types.ts +0 -19
  427. package/src/disclosure/createDisclosure.ts +0 -131
  428. package/src/disclosure/createDisclosureGroup.ts +0 -62
  429. package/src/disclosure/index.ts +0 -11
  430. package/src/dnd/createDrag.ts +0 -209
  431. package/src/dnd/createDraggableCollection.ts +0 -63
  432. package/src/dnd/createDraggableItem.ts +0 -243
  433. package/src/dnd/createDrop.ts +0 -321
  434. package/src/dnd/createDroppableCollection.ts +0 -293
  435. package/src/dnd/createDroppableItem.ts +0 -213
  436. package/src/dnd/index.ts +0 -47
  437. package/src/dnd/types.ts +0 -89
  438. package/src/dnd/utils.ts +0 -294
  439. package/src/focus/FocusScope.tsx +0 -408
  440. package/src/focus/createAutoFocus.ts +0 -321
  441. package/src/focus/createFocusRestore.ts +0 -313
  442. package/src/focus/createVirtualFocus.ts +0 -396
  443. package/src/focus/index.ts +0 -35
  444. package/src/form/createFormReset.ts +0 -51
  445. package/src/form/createFormValidation.ts +0 -224
  446. package/src/form/index.ts +0 -11
  447. package/src/grid/GridKeyboardDelegate.ts +0 -429
  448. package/src/grid/createGrid.ts +0 -261
  449. package/src/grid/createGridCell.ts +0 -182
  450. package/src/grid/createGridRow.ts +0 -153
  451. package/src/grid/index.ts +0 -18
  452. package/src/grid/types.ts +0 -133
  453. package/src/gridlist/createGridList.ts +0 -185
  454. package/src/gridlist/createGridListItem.ts +0 -180
  455. package/src/gridlist/createGridListSelectionCheckbox.ts +0 -59
  456. package/src/gridlist/index.ts +0 -16
  457. package/src/gridlist/types.ts +0 -81
  458. package/src/i18n/NumberFormatter.ts +0 -266
  459. package/src/i18n/createCollator.ts +0 -79
  460. package/src/i18n/createDateFormatter.ts +0 -83
  461. package/src/i18n/createFilter.ts +0 -131
  462. package/src/i18n/createNumberFormatter.ts +0 -52
  463. package/src/i18n/createStringFormatter.ts +0 -87
  464. package/src/i18n/index.ts +0 -40
  465. package/src/i18n/locale.tsx +0 -188
  466. package/src/i18n/utils.ts +0 -99
  467. package/src/index.ts +0 -670
  468. package/src/interactions/FocusableProvider.tsx +0 -44
  469. package/src/interactions/PressEvent.ts +0 -124
  470. package/src/interactions/createFocus.ts +0 -163
  471. package/src/interactions/createFocusRing.ts +0 -89
  472. package/src/interactions/createFocusWithin.ts +0 -206
  473. package/src/interactions/createFocusable.ts +0 -168
  474. package/src/interactions/createHover.ts +0 -254
  475. package/src/interactions/createInteractionModality.ts +0 -424
  476. package/src/interactions/createKeyboard.ts +0 -82
  477. package/src/interactions/createLongPress.ts +0 -174
  478. package/src/interactions/createMove.ts +0 -289
  479. package/src/interactions/createPress.ts +0 -834
  480. package/src/interactions/index.ts +0 -78
  481. package/src/label/createField.ts +0 -145
  482. package/src/label/createLabel.ts +0 -117
  483. package/src/label/createLabels.ts +0 -50
  484. package/src/label/index.ts +0 -19
  485. package/src/landmark/createLandmark.ts +0 -377
  486. package/src/landmark/index.ts +0 -8
  487. package/src/link/createLink.ts +0 -182
  488. package/src/link/index.ts +0 -1
  489. package/src/listbox/createListBox.ts +0 -269
  490. package/src/listbox/createOption.ts +0 -151
  491. package/src/listbox/index.ts +0 -12
  492. package/src/live-announcer/announce.ts +0 -322
  493. package/src/live-announcer/index.ts +0 -9
  494. package/src/menu/createMenu.ts +0 -396
  495. package/src/menu/createMenuItem.ts +0 -149
  496. package/src/menu/createMenuTrigger.ts +0 -88
  497. package/src/menu/index.ts +0 -18
  498. package/src/meter/createMeter.ts +0 -75
  499. package/src/meter/index.ts +0 -1
  500. package/src/numberfield/createNumberField.ts +0 -268
  501. package/src/numberfield/index.ts +0 -5
  502. package/src/overlays/ariaHideOutside.ts +0 -219
  503. package/src/overlays/createInteractOutside.ts +0 -149
  504. package/src/overlays/createModal.tsx +0 -202
  505. package/src/overlays/createOverlay.ts +0 -155
  506. package/src/overlays/createOverlayTrigger.ts +0 -85
  507. package/src/overlays/createPreventScroll.ts +0 -266
  508. package/src/overlays/index.ts +0 -44
  509. package/src/popover/calculatePosition.ts +0 -766
  510. package/src/popover/createOverlayPosition.ts +0 -356
  511. package/src/popover/createPopover.ts +0 -170
  512. package/src/popover/index.ts +0 -24
  513. package/src/progress/createProgressBar.ts +0 -128
  514. package/src/progress/index.ts +0 -5
  515. package/src/radio/createRadio.ts +0 -287
  516. package/src/radio/createRadioGroup.ts +0 -189
  517. package/src/radio/createRadioGroupState.ts +0 -201
  518. package/src/radio/index.ts +0 -23
  519. package/src/searchfield/createSearchField.ts +0 -186
  520. package/src/searchfield/index.ts +0 -2
  521. package/src/select/createHiddenSelect.tsx +0 -236
  522. package/src/select/createSelect.ts +0 -395
  523. package/src/select/index.ts +0 -14
  524. package/src/selection/createTypeSelect.ts +0 -201
  525. package/src/selection/index.ts +0 -6
  526. package/src/separator/createSeparator.ts +0 -82
  527. package/src/separator/index.ts +0 -6
  528. package/src/slider/createSlider.ts +0 -349
  529. package/src/slider/index.ts +0 -2
  530. package/src/ssr/index.tsx +0 -370
  531. package/src/switch/createSwitch.ts +0 -70
  532. package/src/switch/index.ts +0 -1
  533. package/src/table/createTable.ts +0 -526
  534. package/src/table/createTableCell.ts +0 -147
  535. package/src/table/createTableColumnHeader.ts +0 -115
  536. package/src/table/createTableHeaderRow.ts +0 -40
  537. package/src/table/createTableRow.ts +0 -155
  538. package/src/table/createTableRowGroup.ts +0 -32
  539. package/src/table/createTableSelectAllCheckbox.ts +0 -73
  540. package/src/table/createTableSelectionCheckbox.ts +0 -59
  541. package/src/table/index.ts +0 -30
  542. package/src/table/types.ts +0 -165
  543. package/src/tabs/createTabs.ts +0 -472
  544. package/src/tabs/index.ts +0 -14
  545. package/src/tag/createTag.ts +0 -194
  546. package/src/tag/createTagGroup.ts +0 -154
  547. package/src/tag/index.ts +0 -12
  548. package/src/textfield/createTextField.ts +0 -198
  549. package/src/textfield/index.ts +0 -5
  550. package/src/toast/createToast.ts +0 -118
  551. package/src/toast/createToastRegion.ts +0 -100
  552. package/src/toast/index.ts +0 -11
  553. package/src/toggle/createToggle.ts +0 -223
  554. package/src/toggle/createToggleState.ts +0 -94
  555. package/src/toggle/index.ts +0 -7
  556. package/src/toolbar/createToolbar.ts +0 -368
  557. package/src/toolbar/index.ts +0 -6
  558. package/src/tooltip/createTooltip.ts +0 -79
  559. package/src/tooltip/createTooltipTrigger.ts +0 -222
  560. package/src/tooltip/index.ts +0 -6
  561. package/src/tree/createTree.ts +0 -246
  562. package/src/tree/createTreeItem.ts +0 -233
  563. package/src/tree/createTreeSelectionCheckbox.ts +0 -68
  564. package/src/tree/index.ts +0 -16
  565. package/src/tree/types.ts +0 -87
  566. package/src/utils/createDescription.ts +0 -137
  567. package/src/utils/dom.ts +0 -327
  568. package/src/utils/env.ts +0 -54
  569. package/src/utils/events.ts +0 -106
  570. package/src/utils/filterDOMProps.ts +0 -116
  571. package/src/utils/focus.ts +0 -151
  572. package/src/utils/geometry.ts +0 -115
  573. package/src/utils/globalListeners.ts +0 -142
  574. package/src/utils/index.ts +0 -80
  575. package/src/utils/mergeProps.ts +0 -52
  576. package/src/utils/platform.ts +0 -52
  577. package/src/utils/reactivity.ts +0 -36
  578. package/src/utils/textSelection.ts +0 -114
  579. package/src/visually-hidden/createVisuallyHidden.ts +0 -124
  580. package/src/visually-hidden/index.ts +0 -6
@@ -1,287 +0,0 @@
1
- /**
2
- * Radio hook for Solidaria
3
- *
4
- * Provides the behavior and accessibility implementation for an individual
5
- * radio button in a radio group.
6
- *
7
- * This is a 1:1 port of @react-aria/radio's useRadio hook.
8
- */
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
- // ============================================
24
-
25
- export interface AriaRadioProps {
26
- /** The value of the radio button, used when submitting an HTML form. */
27
- value: string;
28
- /** Whether the radio button is disabled. */
29
- isDisabled?: boolean;
30
- /** The label for the radio button. */
31
- children?: JSX.Element;
32
- /** Defines a string value that labels the current element. */
33
- 'aria-label'?: string;
34
- /** Identifies the element (or elements) that labels the current element. */
35
- 'aria-labelledby'?: string;
36
- /** Identifies the element (or elements) that describes the object. */
37
- 'aria-describedby'?: string;
38
- /** Handler that is called when the press is released over the target. */
39
- onPress?: (e: PressEvent) => void;
40
- /** Handler that is called when a press interaction starts. */
41
- onPressStart?: (e: PressEvent) => void;
42
- /** Handler that is called when a press interaction ends, either over the target or when the pointer leaves the target. */
43
- onPressEnd?: (e: PressEvent) => void;
44
- /** Handler that is called when the press state changes. */
45
- onPressChange?: (isPressed: boolean) => void;
46
- /** Handler that is called when a press is released over the target, regardless of whether it started on the target or not. */
47
- onPressUp?: (e: PressEvent) => void;
48
- /** Handler that is called when the element is clicked. */
49
- onClick?: (e: MouseEvent) => void;
50
- /** Handler that is called when the element receives focus. */
51
- onFocus?: (e: FocusEvent) => void;
52
- /** Handler that is called when the element loses focus. */
53
- onBlur?: (e: FocusEvent) => void;
54
- /** Handler that is called when the element's focus status changes. */
55
- onFocusChange?: (isFocused: boolean) => void;
56
- /** Handler that is called when a key is pressed. */
57
- onKeyDown?: (e: KeyboardEvent) => void;
58
- /** Handler that is called when a key is released. */
59
- onKeyUp?: (e: KeyboardEvent) => void;
60
- /** Whether to autofocus the element. */
61
- autoFocus?: boolean;
62
- }
63
-
64
- export interface RadioAria {
65
- /** Props for the label wrapper element. */
66
- labelProps: JSX.LabelHTMLAttributes<HTMLLabelElement>;
67
- /** Props for the input element. */
68
- inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;
69
- /** Whether the radio is disabled. */
70
- isDisabled: boolean;
71
- /** Whether the radio is currently selected. */
72
- isSelected: Accessor<boolean>;
73
- /** Whether the radio is in a pressed state. */
74
- isPressed: Accessor<boolean>;
75
- }
76
-
77
- // ============================================
78
- // IMPLEMENTATION
79
- // ============================================
80
-
81
- /**
82
- * Provides the behavior and accessibility implementation for an individual
83
- * radio button in a radio group.
84
- */
85
- export function createRadio(
86
- props: MaybeAccessor<AriaRadioProps>,
87
- state: RadioGroupState,
88
- ref: () => HTMLInputElement | null
89
- ): RadioAria {
90
- const getProps = () => access(props);
91
-
92
- const isDisabled = () => getProps().isDisabled || state.isDisabled;
93
- const value = () => getProps().value;
94
- const isSelected: Accessor<boolean> = () => {
95
- const selected = state.selectedValue();
96
- const v = value();
97
- return selected === v;
98
- };
99
-
100
- // Warn if no accessible label
101
- createEffect(() => {
102
- const p = getProps();
103
- const hasChildren = p.children != null;
104
- const hasAriaLabel = p['aria-label'] != null || p['aria-labelledby'] != null;
105
- if (!hasChildren && !hasAriaLabel && isDevEnv()) {
106
- console.warn('If you do not provide children, you must specify an aria-label for accessibility');
107
- }
108
- });
109
-
110
- // SolidJS-specific: Sync DOM checked state whenever selection changes
111
- // This handles:
112
- // 1. Initial render with controlled value
113
- // 2. Controlled mode where parent doesn't update value after click
114
- // 3. Native radio group behavior (clicking one unchecks others)
115
- //
116
- // Unlike React's VDOM reconciliation that re-applies all props on every render,
117
- // SolidJS only updates when signals change. Native radio behavior can change
118
- // the DOM checked state without our knowledge, so we need to actively sync.
119
- //
120
- // We track `syncVersion` to ensure this effect runs on EVERY selection attempt,
121
- // even in controlled mode where isSelected() may not change.
122
- 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
129
- const syncVersion = radioGroupSyncVersion.get(state);
130
- syncVersion?.();
131
-
132
- // Read the reactive state to establish tracking and get current value
133
- const shouldBeChecked = isSelected();
134
-
135
- // Sync the DOM checked state immediately
136
- if (inputEl.checked !== shouldBeChecked) {
137
- inputEl.checked = shouldBeChecked;
138
- }
139
- });
140
-
141
- // Handle input change
142
- // SolidJS-specific: Unlike React, the input's `checked` state can get out of sync
143
- // with our reactive state. This happens because:
144
- // 1. A readonly `<input type="radio" />` is always "checkable" in the browser
145
- // 2. Even controlled inputs (`<input checked={isChecked} />`) will change their
146
- // internal `checked` state when clicked, regardless of what the signal says
147
- //
148
- // To prevent this, we force the input's `checked` DOM property to match our state
149
- // after processing the change. This is the pattern used by Kobalte and other
150
- // SolidJS component libraries.
151
- const onChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {
152
- e.stopPropagation();
153
-
154
- const target = e.target as HTMLInputElement;
155
-
156
- // Guard against disabled state - JSDOM's fireEvent may bypass disabled check
157
- if (isDisabled()) {
158
- target.checked = isSelected();
159
- return;
160
- }
161
-
162
- state.setSelectedValue(value());
163
-
164
- // Focus the input when clicked
165
- // In real browsers this happens automatically, but JSDOM/fireEvent doesn't trigger it
166
- target.focus();
167
-
168
- // Force the DOM checked state to match our reactive state
169
- // This handles controlled mode where the parent might not update the value
170
- target.checked = isSelected();
171
- };
172
-
173
- // Handle press state for keyboard interactions and cases where labelProps is not used.
174
- 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(); },
181
- });
182
-
183
- // Handle press state on the label.
184
- 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; },
189
- onPress(e: PressEvent) {
190
- getProps().onPress?.(e);
191
- state.setSelectedValue(value());
192
- ref()?.focus();
193
- },
194
- get isDisabled() { return isDisabled(); },
195
- });
196
-
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());
204
- },
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);
210
-
211
- // Combine press and focusable props for input
212
- const interactions = mergeProps(pressProps, focusableProps);
213
-
214
- // Filter DOM props
215
- const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
216
-
217
- // Calculate tabIndex based on selection and focus state
218
- const getTabIndex = (): number | undefined => {
219
- if (isDisabled()) {
220
- return undefined;
221
- }
222
-
223
- const selected = state.selectedValue();
224
- const lastFocused = state.lastFocusedValue();
225
- const currentValue = value();
226
-
227
- if (selected != null) {
228
- // If there's a selection, only the selected radio is focusable
229
- if (selected === currentValue) {
230
- return 0;
231
- }
232
- return -1;
233
- } else {
234
- // If no selection, the last focused or first radio is focusable
235
- if (lastFocused === currentValue || lastFocused == null) {
236
- return 0;
237
- }
238
- return -1;
239
- }
240
- };
241
-
242
- // Get group data
243
- const getGroupData = () => radioGroupData.get(state);
244
-
245
- // Combined pressed state
246
- const combinedIsPressed: Accessor<boolean> = () => isPressed() || isLabelPressed();
247
-
248
- return {
249
- labelProps: mergeProps(labelPressProps, {
250
- onClick: (e: MouseEvent) => e.preventDefault(),
251
- onMouseDown: (e: MouseEvent) => e.preventDefault(),
252
- }),
253
- get inputProps() {
254
- const p = getProps();
255
- const groupData = getGroupData();
256
-
257
- // Build aria-describedby
258
- const describedByIds: string[] = [];
259
- if (p['aria-describedby']) {
260
- describedByIds.push(p['aria-describedby']);
261
- }
262
- if (state.isInvalid && groupData?.errorMessageId) {
263
- describedByIds.push(groupData.errorMessageId);
264
- }
265
- if (groupData?.descriptionId) {
266
- describedByIds.push(groupData.descriptionId);
267
- }
268
- const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(' ') : undefined;
269
-
270
- return mergeProps(domProps(), interactions, {
271
- type: 'radio' as const,
272
- name: groupData?.name,
273
- form: groupData?.form,
274
- tabIndex: getTabIndex(),
275
- disabled: isDisabled(),
276
- required: state.isRequired && groupData?.validationBehavior === 'native',
277
- checked: isSelected(),
278
- value: value(),
279
- onChange,
280
- 'aria-describedby': ariaDescribedBy,
281
- }) as JSX.InputHTMLAttributes<HTMLInputElement>;
282
- },
283
- isDisabled: isDisabled(),
284
- isSelected,
285
- isPressed: combinedIsPressed,
286
- };
287
- }
@@ -1,189 +0,0 @@
1
- /**
2
- * Radio group hook for Solidaria
3
- *
4
- * Provides the behavior and accessibility implementation for a radio group component.
5
- * Radio groups allow users to select a single item from a list of mutually exclusive options.
6
- *
7
- * This is a 1:1 port of @react-aria/radio's useRadioGroup hook.
8
- */
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 { createId } from '../ssr';
16
- import { type MaybeAccessor, access } from '../utils/reactivity';
17
- import { type RadioGroupState } from '@proyecto-viviana/solid-stately';
18
-
19
- // ============================================
20
- // TYPES
21
- // ============================================
22
-
23
- export interface AriaRadioGroupProps {
24
- /** The content to display as the label. */
25
- label?: JSX.Element;
26
- /** A description for the radio group. Provides additional context. */
27
- description?: JSX.Element;
28
- /** An error message for the radio group. */
29
- errorMessage?: JSX.Element | ((validation: { isInvalid: boolean; validationErrors: string[] }) => JSX.Element);
30
- /** Whether the radio group is disabled. */
31
- isDisabled?: boolean;
32
- /** Whether the radio group is read only. */
33
- isReadOnly?: boolean;
34
- /** Whether the radio group is required. */
35
- isRequired?: boolean;
36
- /** Whether the radio group is invalid. */
37
- isInvalid?: boolean;
38
- /** The axis the Radio Button(s) should align with. Defaults to 'vertical'. */
39
- orientation?: 'horizontal' | 'vertical';
40
- /** The name of the radio group, used when submitting an HTML form. */
41
- name?: string;
42
- /** The form to associate the radio group with. */
43
- form?: string;
44
- /** Validation behavior for the radio group. */
45
- validationBehavior?: 'aria' | 'native';
46
- /** Handler that is called when the radio group receives focus. */
47
- onFocus?: (e: FocusEvent) => void;
48
- /** Handler that is called when the radio group loses focus. */
49
- onBlur?: (e: FocusEvent) => void;
50
- /** Handler that is called when the radio group's focus status changes. */
51
- onFocusChange?: (isFocused: boolean) => void;
52
- /** Defines a string value that labels the current element. */
53
- 'aria-label'?: string;
54
- /** Identifies the element (or elements) that labels the current element. */
55
- 'aria-labelledby'?: string;
56
- /** Identifies the element (or elements) that describes the object. */
57
- 'aria-describedby'?: string;
58
- /** Identifies the element (or elements) that provide an error message for the object. */
59
- 'aria-errormessage'?: string;
60
- /** The element's unique identifier. */
61
- id?: string;
62
- }
63
-
64
- export interface RadioGroupAria {
65
- /** Props for the radio group wrapper element. */
66
- radioGroupProps: JSX.HTMLAttributes<HTMLDivElement>;
67
- /** Props for the radio group's visible label (if any). */
68
- labelProps: JSX.HTMLAttributes<HTMLElement>;
69
- /** Props for the radio group description element, if any. */
70
- descriptionProps: JSX.HTMLAttributes<HTMLElement>;
71
- /** Props for the radio group error message element, if any. */
72
- errorMessageProps: JSX.HTMLAttributes<HTMLElement>;
73
- /** Whether the radio group is invalid. */
74
- isInvalid: boolean;
75
- /** Validation errors, if any. */
76
- validationErrors: string[];
77
- /** Validation details, if any. */
78
- validationDetails: Record<string, boolean>;
79
- }
80
-
81
- // WeakMap to share data between radio group and radio items
82
- interface RadioGroupData {
83
- name: string;
84
- form: string | undefined;
85
- descriptionId: string | undefined;
86
- errorMessageId: string | undefined;
87
- validationBehavior: 'aria' | 'native';
88
- }
89
-
90
- export const radioGroupData: WeakMap<RadioGroupState, RadioGroupData> = new WeakMap();
91
-
92
- // ============================================
93
- // IMPLEMENTATION
94
- // ============================================
95
-
96
- /**
97
- * Provides the behavior and accessibility implementation for a radio group component.
98
- * Radio groups allow users to select a single item from a list of mutually exclusive options.
99
- */
100
- export function createRadioGroup(
101
- props: MaybeAccessor<AriaRadioGroupProps>,
102
- state: RadioGroupState
103
- ): RadioGroupAria {
104
- const getProps = () => access(props);
105
-
106
- const orientation = () => getProps().orientation ?? 'vertical';
107
- const isReadOnly = () => getProps().isReadOnly ?? false;
108
- const isRequired = () => getProps().isRequired ?? false;
109
- const isDisabled = () => getProps().isDisabled ?? false;
110
- const validationBehavior = () => getProps().validationBehavior ?? 'aria';
111
-
112
- // Use field for label, description, error message
113
- const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField({
114
- get label() { return getProps().label; },
115
- get description() { return getProps().description; },
116
- get errorMessage() { return getProps().errorMessage; },
117
- get isInvalid() { return state.isInvalid; },
118
- // Radio group is not an HTML input element so it
119
- // shouldn't be labeled by a <label> element.
120
- labelElementType: 'span',
121
- });
122
-
123
- // Handle focus within - reset focusable radio when group loses focus and no selection
124
- const { focusWithinProps } = createFocusWithin({
125
- onBlurWithin(e: FocusEvent) {
126
- getProps().onBlur?.(e);
127
- if (!state.selectedValue()) {
128
- state.setLastFocusedValue(null);
129
- }
130
- },
131
- onFocusWithin: (e: FocusEvent) => getProps().onFocus?.(e),
132
- onFocusWithinChange: (isFocused: boolean) => getProps().onFocusChange?.(isFocused),
133
- });
134
-
135
- // Filter DOM props
136
- const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
137
-
138
- // Generate group name
139
- const groupName = getProps().name ?? createId();
140
-
141
- // Store data for radio items to access
142
- radioGroupData.set(state, {
143
- name: groupName,
144
- form: getProps().form,
145
- descriptionId: descriptionProps.id,
146
- errorMessageId: errorMessageProps.id,
147
- validationBehavior: validationBehavior(),
148
- });
149
-
150
- // Keyboard navigation handler for arrow keys
151
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
152
- const onKeyDown = (_e: KeyboardEvent) => {
153
- // For now, we rely on native radio behavior
154
- // The complex tree walker implementation can be added later if needed
155
- // Most browsers handle arrow key navigation natively for radio groups
156
- };
157
-
158
- return {
159
- get radioGroupProps() {
160
- return mergeProps(
161
- domProps(),
162
- focusWithinProps as unknown as Record<string, unknown>,
163
- {
164
- role: 'radiogroup',
165
- onKeyDown,
166
- 'aria-invalid': state.isInvalid || undefined,
167
- 'aria-errormessage': getProps()['aria-errormessage'],
168
- 'aria-readonly': isReadOnly() || undefined,
169
- 'aria-required': isRequired() || undefined,
170
- 'aria-disabled': isDisabled() || undefined,
171
- 'aria-orientation': orientation(),
172
- ...fieldProps,
173
- }
174
- ) as JSX.HTMLAttributes<HTMLDivElement>;
175
- },
176
- labelProps: labelProps as JSX.HTMLAttributes<HTMLElement>,
177
- descriptionProps,
178
- errorMessageProps,
179
- get isInvalid() {
180
- return state.isInvalid;
181
- },
182
- get validationErrors() {
183
- return []; // Simplified - full validation can be added later
184
- },
185
- get validationDetails() {
186
- return {}; // Simplified - full validation can be added later
187
- },
188
- };
189
- }
@@ -1,201 +0,0 @@
1
- /**
2
- * Radio group state for Solidaria
3
- *
4
- * Provides state management for a radio group component.
5
- * Provides a name for the group, and manages selection and focus state.
6
- *
7
- * This is a 1:1 port of @react-stately/radio's useRadioGroupState.
8
- */
9
-
10
- import { createSignal, Accessor, untrack } from 'solid-js';
11
- import { type MaybeAccessor, access } from '../utils/reactivity';
12
- import { createId } from '../ssr';
13
-
14
- // ============================================
15
- // TYPES
16
- // ============================================
17
-
18
- export interface RadioGroupProps {
19
- /** The current selected value (controlled). */
20
- value?: string | null;
21
- /** The default selected value (uncontrolled). */
22
- defaultValue?: string | null;
23
- /** Handler that is called when the value changes. */
24
- onChange?: (value: string) => void;
25
- /** Whether the radio group is disabled. */
26
- isDisabled?: boolean;
27
- /** Whether the radio group is read only. */
28
- isReadOnly?: boolean;
29
- /** Whether the radio group is required. */
30
- isRequired?: boolean;
31
- /** Whether the radio group is invalid. */
32
- isInvalid?: boolean;
33
- /** The name of the radio group, used when submitting an HTML form. */
34
- name?: string;
35
- /** The form to associate the radio group with. */
36
- form?: string;
37
- /** The label for the radio group. */
38
- label?: string;
39
- /** Orientation of the radio group. */
40
- orientation?: 'horizontal' | 'vertical';
41
- /** Handler that is called when the radio group receives focus. */
42
- onFocus?: (e: FocusEvent) => void;
43
- /** Handler that is called when the radio group loses focus. */
44
- onBlur?: (e: FocusEvent) => void;
45
- /** Handler that is called when the radio group's focus status changes. */
46
- onFocusChange?: (isFocused: boolean) => void;
47
- }
48
-
49
- export interface RadioGroupState {
50
- /** The name for the group, used for native form submission. */
51
- readonly name: string;
52
-
53
- /** Whether the radio group is disabled. */
54
- readonly isDisabled: boolean;
55
-
56
- /** Whether the radio group is read only. */
57
- readonly isReadOnly: boolean;
58
-
59
- /** Whether the radio group is required. */
60
- readonly isRequired: boolean;
61
-
62
- /** Whether the radio group is invalid. */
63
- readonly isInvalid: boolean;
64
-
65
- /** The currently selected value. */
66
- readonly selectedValue: Accessor<string | null>;
67
-
68
- /** The default selected value. */
69
- readonly defaultSelectedValue: string | null;
70
-
71
- /** Sets the selected value. */
72
- setSelectedValue(value: string | null): void;
73
-
74
- /** The value of the last focused radio. */
75
- readonly lastFocusedValue: Accessor<string | null>;
76
-
77
- /** Sets the last focused value. */
78
- setLastFocusedValue(value: string | null): void;
79
- }
80
-
81
- // ============================================
82
- // INTERNAL: SolidJS-specific sync mechanism
83
- // ============================================
84
-
85
- /**
86
- * Internal WeakMap to store sync version accessors for each radio group state.
87
- * This is used by createRadio to trigger DOM sync when native radio behavior
88
- * causes the DOM checked state to desync from our reactive state.
89
- *
90
- * This is kept separate from RadioGroupState to maintain API parity with React-Aria.
91
- * @internal
92
- */
93
- export const radioGroupSyncVersion: WeakMap<RadioGroupState, Accessor<number>> = new WeakMap();
94
-
95
- // ============================================
96
- // IMPLEMENTATION
97
- // ============================================
98
-
99
- /**
100
- * Provides state management for a radio group component.
101
- * Provides a name for the group, and manages selection and focus state.
102
- */
103
- export function createRadioGroupState(
104
- props: MaybeAccessor<RadioGroupProps> = {}
105
- ): RadioGroupState {
106
- const getProps = () => access(props);
107
-
108
- // Get initial props using untrack to avoid setting up dependencies
109
- // This ensures we capture the initial defaultValue without reactivity issues
110
- const initialProps = untrack(() => getProps());
111
-
112
- // Generate name - preserved for backward compatibility
113
- // React Aria now generates the name instead of stately
114
- const name = initialProps.name || `radio-group-${createId()}`;
115
-
116
- // Create internal signal for uncontrolled mode
117
- // Initialize with defaultValue only (not value, which is for controlled mode)
118
- const [internalValue, setInternalValue] = createSignal<string | null>(
119
- initialProps.defaultValue ?? null
120
- );
121
- const [lastFocusedValue, setLastFocusedValueInternal] = createSignal<string | null>(null);
122
-
123
- // SolidJS-specific: Version counter for triggering DOM sync across all radios
124
- // This handles the case where native radio behavior causes DOM state to desync
125
- // from our reactive state (e.g., clicking a radio unchecks siblings in the DOM)
126
- const [syncVersion, setSyncVersion] = createSignal(0);
127
-
128
- // Determine if controlled - must be reactive to handle dynamic props
129
- const isControlled = () => getProps().value !== undefined;
130
-
131
- // Get current value - reactive for both controlled and uncontrolled modes
132
- const selectedValue: Accessor<string | null> = () => {
133
- const p = getProps();
134
- // In controlled mode, always read from props.value reactively
135
- // In uncontrolled mode, read from internal signal
136
- if (p.value !== undefined) {
137
- return p.value ?? null;
138
- }
139
- return internalValue();
140
- };
141
-
142
- // Check if invalid
143
- const isInvalid = () => {
144
- return getProps().isInvalid ?? false;
145
- };
146
-
147
- // Set value
148
- function setSelectedValue(value: string | null): void {
149
- const p = getProps();
150
- if (p.isReadOnly || p.isDisabled) {
151
- return;
152
- }
153
-
154
- // Always increment syncVersion to trigger DOM sync across all radios
155
- // This is crucial for SolidJS because:
156
- // 1. Native radio behavior unchecks siblings when one is checked
157
- // 2. In controlled mode, isSelected() may not change even though DOM changed
158
- // 3. We need ALL radios to re-sync their checked state after any click
159
- setSyncVersion((v) => v + 1);
160
-
161
- if (!isControlled()) {
162
- setInternalValue(value);
163
- }
164
-
165
- if (value != null) {
166
- p.onChange?.(value);
167
- }
168
- }
169
-
170
- // Set last focused value
171
- function setLastFocusedValue(value: string | null): void {
172
- setLastFocusedValueInternal(value);
173
- }
174
-
175
- const state: RadioGroupState = {
176
- name,
177
- selectedValue,
178
- defaultSelectedValue: initialProps.defaultValue ?? null,
179
- setSelectedValue,
180
- lastFocusedValue,
181
- setLastFocusedValue,
182
- get isDisabled() {
183
- return getProps().isDisabled ?? false;
184
- },
185
- get isReadOnly() {
186
- return getProps().isReadOnly ?? false;
187
- },
188
- get isRequired() {
189
- return getProps().isRequired ?? false;
190
- },
191
- get isInvalid() {
192
- return isInvalid();
193
- },
194
- };
195
-
196
- // Store syncVersion in internal WeakMap (not part of public API)
197
- // This maintains API parity with React-Aria while supporting SolidJS's reactivity needs
198
- radioGroupSyncVersion.set(state, syncVersion);
199
-
200
- return state;
201
- }
@@ -1,23 +0,0 @@
1
- // Re-export state from solid-stately
2
- export {
3
- createRadioGroupState,
4
- radioGroupSyncVersion,
5
- type RadioGroupProps,
6
- type RadioGroupState,
7
- } from '@proyecto-viviana/solid-stately';
8
-
9
- // ARIA hooks (solidaria-specific)
10
- // Radio Group
11
- export {
12
- createRadioGroup,
13
- radioGroupData,
14
- type AriaRadioGroupProps,
15
- type RadioGroupAria,
16
- } from './createRadioGroup';
17
-
18
- // Radio
19
- export {
20
- createRadio,
21
- type AriaRadioProps,
22
- type RadioAria,
23
- } from './createRadio';