@proyecto-viviana/solidaria 0.2.5 → 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 (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -6,19 +6,19 @@
6
6
  * Port of @react-aria/toast useToast.
7
7
  */
8
8
 
9
- import { type JSX, createMemo } from 'solid-js';
10
- import { type QueuedToast, type ToastState } from '@proyecto-viviana/solid-stately';
11
- import { createId } from '../ssr';
12
-
13
- // ============================================
14
- // TYPES
15
- // ============================================
9
+ import { type JSX, createMemo } from "solid-js";
10
+ import { type QueuedToast, type ToastState } from "@proyecto-viviana/solid-stately";
11
+ import { createId } from "../ssr";
16
12
 
17
13
  export interface AriaToastProps<T> {
18
14
  /** The toast to display. */
19
15
  toast: QueuedToast<T>;
20
16
  /** The toast state from createToastState. */
21
17
  state: ToastState<T>;
18
+ /** Whether the rendered toast includes a title element. */
19
+ hasTitle?: boolean;
20
+ /** Whether the rendered toast includes a description element. */
21
+ hasDescription?: boolean;
22
22
  }
23
23
 
24
24
  export interface ToastAria {
@@ -34,10 +34,6 @@ export interface ToastAria {
34
34
  closeButtonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;
35
35
  }
36
36
 
37
- // ============================================
38
- // IMPLEMENTATION
39
- // ============================================
40
-
41
37
  /**
42
38
  * Provides the accessibility implementation for a Toast component.
43
39
  *
@@ -70,6 +66,8 @@ export interface ToastAria {
70
66
  export function createToast<T>(props: AriaToastProps<T>): ToastAria {
71
67
  const titleId = createId();
72
68
  const descriptionId = createId();
69
+ const hasTitle = props.hasTitle ?? true;
70
+ const hasDescription = props.hasDescription ?? true;
73
71
 
74
72
  const close = () => {
75
73
  props.state.close(props.toast.key);
@@ -77,19 +75,19 @@ export function createToast<T>(props: AriaToastProps<T>): ToastAria {
77
75
 
78
76
  // Toast container - role="alertdialog" for screen readers
79
77
  const toastProps = createMemo<JSX.HTMLAttributes<HTMLElement>>(() => ({
80
- role: 'alertdialog',
81
- 'aria-modal': 'false',
82
- 'aria-labelledby': titleId,
83
- 'aria-describedby': descriptionId,
84
- 'data-animation': props.toast.animation,
85
- 'data-key': props.toast.key,
78
+ role: "alertdialog",
79
+ "aria-modal": "false",
80
+ "aria-labelledby": hasTitle ? titleId : undefined,
81
+ "aria-describedby": hasDescription ? descriptionId : undefined,
82
+ "data-animation": props.toast.animation,
83
+ "data-key": props.toast.key,
86
84
  }));
87
85
 
88
86
  // Content area with role="alert" for immediate announcement
89
87
  const contentProps = createMemo<JSX.HTMLAttributes<HTMLElement>>(() => ({
90
- role: 'alert',
91
- 'aria-atomic': 'true',
92
- 'aria-live': 'assertive',
88
+ role: "alert",
89
+ "aria-atomic": "true",
90
+ "aria-live": "assertive",
93
91
  }));
94
92
 
95
93
  // Title props
@@ -104,15 +102,25 @@ export function createToast<T>(props: AriaToastProps<T>): ToastAria {
104
102
 
105
103
  // Close button
106
104
  const closeButtonProps = createMemo<JSX.ButtonHTMLAttributes<HTMLButtonElement>>(() => ({
107
- 'aria-label': 'Close',
105
+ "aria-label": "Close",
108
106
  onClick: close,
109
107
  }));
110
108
 
111
109
  return {
112
- get toastProps() { return toastProps(); },
113
- get contentProps() { return contentProps(); },
114
- get titleProps() { return titleProps(); },
115
- get descriptionProps() { return descriptionProps(); },
116
- get closeButtonProps() { return closeButtonProps(); },
110
+ get toastProps() {
111
+ return toastProps();
112
+ },
113
+ get contentProps() {
114
+ return contentProps();
115
+ },
116
+ get titleProps() {
117
+ return titleProps();
118
+ },
119
+ get descriptionProps() {
120
+ return descriptionProps();
121
+ },
122
+ get closeButtonProps() {
123
+ return closeButtonProps();
124
+ },
117
125
  };
118
126
  }
@@ -7,20 +7,20 @@
7
7
  * Port of @react-aria/toast useToastRegion.
8
8
  */
9
9
 
10
- import { type JSX, createMemo } from 'solid-js';
11
- import { type ToastState } from '@proyecto-viviana/solid-stately';
12
- import { mergeProps } from '../utils';
13
- import { createHover } from '../interactions/createHover';
14
-
15
- // ============================================
16
- // TYPES
17
- // ============================================
10
+ import { type Accessor, type JSX, createEffect, createMemo, onCleanup } from "solid-js";
11
+ import { type ToastState } from "@proyecto-viviana/solid-stately";
12
+ import { createHover } from "../interactions/createHover";
13
+ import { getInteractionModality } from "../interactions/createInteractionModality";
14
+ import { createLandmark } from "../landmark/createLandmark";
15
+ import { focusWithoutScrolling } from "../utils/focus";
18
16
 
19
17
  export interface AriaToastRegionProps<T> {
20
18
  /** The toast state from createToastState. */
21
19
  state: ToastState<T>;
20
+ /** The toast region element. Required for landmark navigation and focus recovery. */
21
+ ref?: Accessor<HTMLElement | undefined>;
22
22
  /** An accessible label for the region. */
23
- 'aria-label'?: string;
23
+ "aria-label"?: string;
24
24
  }
25
25
 
26
26
  export interface ToastRegionAria {
@@ -28,10 +28,6 @@ export interface ToastRegionAria {
28
28
  regionProps: JSX.HTMLAttributes<HTMLElement>;
29
29
  }
30
30
 
31
- // ============================================
32
- // IMPLEMENTATION
33
- // ============================================
34
-
35
31
  /**
36
32
  * Provides the accessibility implementation for a ToastRegion component.
37
33
  *
@@ -60,41 +56,187 @@ export interface ToastRegionAria {
60
56
  * ```
61
57
  */
62
58
  export function createToastRegion<T>(props: AriaToastRegionProps<T>): ToastRegionAria {
63
- // Pause timers on hover
59
+ const visibleToasts = () =>
60
+ typeof props.state.visibleToasts === "function" ? props.state.visibleToasts() : [];
61
+ const regionRef = () => props.ref?.();
62
+ const activeRegionRef = () => (visibleToasts().length > 0 ? regionRef() : undefined);
63
+
64
+ const { landmarkProps } = createLandmark(
65
+ () => ({
66
+ role: "region",
67
+ "aria-label": props["aria-label"] ?? "Notifications",
68
+ }),
69
+ activeRegionRef,
70
+ );
71
+
72
+ let isHovered = false;
73
+ let isFocused = false;
74
+ let toastElements: HTMLElement[] = [];
75
+ let previousVisibleToasts = visibleToasts();
76
+ let focusedToastIndex = -1;
77
+ let lastFocused: HTMLElement | null = null;
78
+
79
+ const updateTimers = () => {
80
+ if (isHovered || isFocused) {
81
+ props.state.pauseAll();
82
+ } else {
83
+ props.state.resumeAll();
84
+ }
85
+ };
86
+
64
87
  const { hoverProps } = createHover({
65
88
  onHoverStart: () => {
66
- props.state.pauseAll();
89
+ isHovered = true;
90
+ updateTimers();
67
91
  },
68
92
  onHoverEnd: () => {
69
- props.state.resumeAll();
93
+ isHovered = false;
94
+ updateTimers();
70
95
  },
71
96
  });
72
97
 
73
- // Pause timers on focus
74
- const handleFocus = () => {
75
- props.state.pauseAll();
98
+ const getToastElements = () => {
99
+ const element = regionRef();
100
+ return element ? [...element.querySelectorAll<HTMLElement>('[role="alertdialog"]')] : [];
101
+ };
102
+
103
+ const restoreLastFocused = () => {
104
+ if (!lastFocused?.isConnected) {
105
+ lastFocused = null;
106
+ return;
107
+ }
108
+
109
+ if (getInteractionModality() === "pointer") {
110
+ focusWithoutScrolling(lastFocused);
111
+ } else {
112
+ lastFocused.focus();
113
+ }
114
+
115
+ lastFocused = null;
116
+ };
117
+
118
+ const handleFocusIn = (e: FocusEvent) => {
119
+ const currentTarget = e.currentTarget as HTMLElement;
120
+ const relatedTarget = e.relatedTarget as HTMLElement | null;
121
+
122
+ if (!isFocused) {
123
+ isFocused = true;
124
+ if (relatedTarget && !currentTarget.contains(relatedTarget)) {
125
+ lastFocused = relatedTarget;
126
+ }
127
+ updateTimers();
128
+ }
129
+
130
+ toastElements = getToastElements();
131
+ const target =
132
+ e.target instanceof Element ? e.target.closest<HTMLElement>('[role="alertdialog"]') : null;
133
+ focusedToastIndex = target ? toastElements.findIndex((toast) => toast === target) : -1;
76
134
  };
77
135
 
78
- const handleBlur = (e: FocusEvent) => {
79
- // Only resume if focus moved outside the region
136
+ const handleFocusOut = (e: FocusEvent) => {
80
137
  const target = e.relatedTarget as HTMLElement | null;
81
138
  const currentTarget = e.currentTarget as HTMLElement;
82
139
  if (!target || !currentTarget.contains(target)) {
83
- props.state.resumeAll();
140
+ isFocused = false;
141
+ focusedToastIndex = -1;
142
+ updateTimers();
84
143
  }
85
144
  };
86
145
 
146
+ createEffect(() => {
147
+ const currentVisibleToasts = visibleToasts();
148
+ const element = regionRef();
149
+
150
+ if (focusedToastIndex === -1 || currentVisibleToasts.length === 0 || !element) {
151
+ toastElements = [];
152
+ previousVisibleToasts = currentVisibleToasts;
153
+ return;
154
+ }
155
+
156
+ toastElements = getToastElements();
157
+
158
+ const unchanged =
159
+ previousVisibleToasts.length === currentVisibleToasts.length &&
160
+ currentVisibleToasts.every((toast, index) => toast.key === previousVisibleToasts[index]?.key);
161
+
162
+ if (unchanged) {
163
+ previousVisibleToasts = currentVisibleToasts;
164
+ return;
165
+ }
166
+
167
+ const allToasts = previousVisibleToasts.map((toast, index) => ({
168
+ index,
169
+ isRemoved: !currentVisibleToasts.some((currentToast) => currentToast.key === toast.key),
170
+ }));
171
+ const removedFocusedToastIndex = allToasts.findIndex(
172
+ (toast) => toast.index === focusedToastIndex && toast.isRemoved,
173
+ );
174
+
175
+ if (removedFocusedToastIndex > -1) {
176
+ if (getInteractionModality() === "pointer" && lastFocused?.isConnected) {
177
+ focusWithoutScrolling(lastFocused);
178
+ } else {
179
+ let index = 0;
180
+ let nextToast: number | undefined;
181
+ let previousToast: number | undefined;
182
+
183
+ while (index <= removedFocusedToastIndex) {
184
+ if (!allToasts[index]?.isRemoved) {
185
+ previousToast = Math.max(0, index - 1);
186
+ }
187
+ index++;
188
+ }
189
+
190
+ while (index < allToasts.length) {
191
+ if (!allToasts[index]?.isRemoved) {
192
+ nextToast = index - 1;
193
+ break;
194
+ }
195
+ index++;
196
+ }
197
+
198
+ if (previousToast === undefined && nextToast === undefined) {
199
+ previousToast = 0;
200
+ }
201
+
202
+ if (
203
+ previousToast !== undefined &&
204
+ previousToast >= 0 &&
205
+ previousToast < toastElements.length
206
+ ) {
207
+ focusWithoutScrolling(toastElements[previousToast]);
208
+ } else if (nextToast !== undefined && nextToast >= 0 && nextToast < toastElements.length) {
209
+ focusWithoutScrolling(toastElements[nextToast]);
210
+ }
211
+ }
212
+ }
213
+
214
+ previousVisibleToasts = currentVisibleToasts;
215
+ });
216
+
217
+ createEffect(() => {
218
+ if (visibleToasts().length === 0) {
219
+ restoreLastFocused();
220
+ }
221
+ });
222
+
223
+ onCleanup(() => {
224
+ restoreLastFocused();
225
+ });
226
+
87
227
  // Region props
88
228
  const regionProps = createMemo<JSX.HTMLAttributes<HTMLElement>>(() => ({
229
+ ...landmarkProps,
89
230
  ...hoverProps,
90
- role: 'region' as const,
91
- 'aria-label': props['aria-label'] ?? 'Notifications',
92
231
  tabIndex: -1,
93
- onFocusIn: handleFocus,
94
- onFocusOut: handleBlur,
232
+ "data-solidaria-top-layer": "true",
233
+ onFocusIn: handleFocusIn,
234
+ onFocusOut: handleFocusOut,
95
235
  }));
96
236
 
97
237
  return {
98
- get regionProps() { return regionProps(); },
238
+ get regionProps() {
239
+ return regionProps();
240
+ },
99
241
  };
100
242
  }
@@ -1,11 +1,7 @@
1
- export {
2
- createToast,
3
- type AriaToastProps,
4
- type ToastAria,
5
- } from './createToast';
1
+ export { createToast, type AriaToastProps, type ToastAria } from "./createToast";
6
2
 
7
3
  export {
8
4
  createToastRegion,
9
5
  type AriaToastRegionProps,
10
6
  type ToastRegionAria,
11
- } from './createToastRegion';
7
+ } from "./createToastRegion";
@@ -6,19 +6,15 @@
6
6
  * This is a 1:1 port of @react-aria/toggle's useToggle hook.
7
7
  */
8
8
 
9
- import { JSX, Accessor, createEffect } from 'solid-js';
10
- import { createPress } from '../interactions/createPress';
11
- import { createFocusable } from '../interactions/createFocusable';
12
- import { mergeProps } from '../utils/mergeProps';
13
- import { filterDOMProps } from '../utils/filterDOMProps';
14
- import { type MaybeAccessor, access } from '../utils/reactivity';
15
- import { isDevEnv } from '../utils/env';
16
- import { type ToggleState } from '@proyecto-viviana/solid-stately';
17
- import { type PressEvent } from '../interactions/PressEvent';
18
-
19
- // ============================================
20
- // TYPES
21
- // ============================================
9
+ import { JSX, Accessor, createEffect } from "solid-js";
10
+ import { createPress } from "../interactions/createPress";
11
+ import { createFocusable } from "../interactions/createFocusable";
12
+ import { mergeProps } from "../utils/mergeProps";
13
+ import { filterDOMProps } from "../utils/filterDOMProps";
14
+ import { type MaybeAccessor, access } from "../utils/reactivity";
15
+ import { isDevEnv } from "../utils/env";
16
+ import { type ToggleState } from "@proyecto-viviana/solid-stately";
17
+ import { type PressEvent } from "../interactions/PressEvent";
22
18
 
23
19
  export interface AriaToggleProps {
24
20
  /** Whether the element should be selected (controlled). */
@@ -44,15 +40,15 @@ export interface AriaToggleProps {
44
40
  /** The element's children. */
45
41
  children?: JSX.Element;
46
42
  /** Defines a string value that labels the current element. */
47
- 'aria-label'?: string;
43
+ "aria-label"?: string;
48
44
  /** Identifies the element (or elements) that labels the current element. */
49
- 'aria-labelledby'?: string;
45
+ "aria-labelledby"?: string;
50
46
  /** Identifies the element (or elements) that describes the object. */
51
- 'aria-describedby'?: string;
47
+ "aria-describedby"?: string;
52
48
  /** Identifies the element (or elements) that provide an error message for the object. */
53
- 'aria-errormessage'?: string;
49
+ "aria-errormessage"?: string;
54
50
  /** Identifies the element (or elements) whose contents or presence are controlled by the current element. */
55
- 'aria-controls'?: string;
51
+ "aria-controls"?: string;
56
52
  /** The element's unique identifier. */
57
53
  id?: string;
58
54
  /** Handler that is called when the press is released over the target. */
@@ -100,17 +96,13 @@ export interface ToggleAria {
100
96
  isInvalid: boolean;
101
97
  }
102
98
 
103
- // ============================================
104
- // IMPLEMENTATION
105
- // ============================================
106
-
107
99
  /**
108
100
  * Handles interactions for toggle elements, e.g. Checkboxes and Switches.
109
101
  */
110
102
  export function createToggle(
111
103
  props: MaybeAccessor<AriaToggleProps>,
112
104
  state: ToggleState,
113
- ref: () => HTMLInputElement | null
105
+ ref: () => HTMLInputElement | null,
114
106
  ): ToggleAria {
115
107
  const getProps = () => access(props);
116
108
 
@@ -122,45 +114,93 @@ export function createToggle(
122
114
 
123
115
  // Handle press state for keyboard interactions and cases where labelProps is not used.
124
116
  const { pressProps, isPressed } = createPress({
125
- get onPressStart() { return getProps().onPressStart; },
126
- get onPressEnd() { return getProps().onPressEnd; },
127
- get onPressChange() { return getProps().onPressChange; },
128
- get onPress() { return getProps().onPress; },
129
- get onPressUp() { return getProps().onPressUp; },
130
- get isDisabled() { return isDisabled(); },
117
+ get onPressStart() {
118
+ return getProps().onPressStart;
119
+ },
120
+ get onPressEnd() {
121
+ return getProps().onPressEnd;
122
+ },
123
+ get onPressChange() {
124
+ return getProps().onPressChange;
125
+ },
126
+ get onPress() {
127
+ return getProps().onPress;
128
+ },
129
+ get onPressUp() {
130
+ return getProps().onPressUp;
131
+ },
132
+ get onClick() {
133
+ return getProps().onClick;
134
+ },
135
+ get isDisabled() {
136
+ return isDisabled();
137
+ },
131
138
  });
132
139
 
133
140
  // Handle press state on the label.
134
141
  const { pressProps: labelPressProps, isPressed: isLabelPressed } = createPress({
135
- get onPressStart() { return getProps().onPressStart; },
136
- get onPressEnd() { return getProps().onPressEnd; },
137
- get onPressChange() { return getProps().onPressChange; },
138
- get onPressUp() { return getProps().onPressUp; },
142
+ get onPressStart() {
143
+ return getProps().onPressStart;
144
+ },
145
+ get onPressEnd() {
146
+ return getProps().onPressEnd;
147
+ },
148
+ get onPressChange() {
149
+ return getProps().onPressChange;
150
+ },
151
+ get onPressUp() {
152
+ return getProps().onPressUp;
153
+ },
154
+ get onClick() {
155
+ return getProps().onClick;
156
+ },
139
157
  onPress(e: PressEvent) {
140
158
  getProps().onPress?.(e);
141
159
  state.toggle();
142
160
  ref()?.focus();
143
161
  },
144
- get isDisabled() { return isDisabled() || isReadOnly(); },
162
+ get isDisabled() {
163
+ return isDisabled() || isReadOnly();
164
+ },
145
165
  });
146
166
 
147
167
  // Handle focusable - extract the relevant props for createFocusable
148
- const { focusableProps } = createFocusable({
149
- get isDisabled() { return isDisabled(); },
150
- get autoFocus() { return getProps().autoFocus; },
151
- get onFocus() { return getProps().onFocus; },
152
- get onBlur() { return getProps().onBlur; },
153
- get onFocusChange() { return getProps().onFocusChange; },
154
- get onKeyDown() { return getProps().onKeyDown; },
155
- get onKeyUp() { return getProps().onKeyUp; },
156
- get excludeFromTabOrder() { return getProps().excludeFromTabOrder; },
157
- }, ref as unknown as (el: HTMLElement) => void);
168
+ const { focusableProps } = createFocusable(
169
+ {
170
+ get isDisabled() {
171
+ return isDisabled();
172
+ },
173
+ get autoFocus() {
174
+ return getProps().autoFocus;
175
+ },
176
+ get onFocus() {
177
+ return getProps().onFocus;
178
+ },
179
+ get onBlur() {
180
+ return getProps().onBlur;
181
+ },
182
+ get onFocusChange() {
183
+ return getProps().onFocusChange;
184
+ },
185
+ get onKeyDown() {
186
+ return getProps().onKeyDown;
187
+ },
188
+ get onKeyUp() {
189
+ return getProps().onKeyUp;
190
+ },
191
+ get excludeFromTabOrder() {
192
+ return getProps().excludeFromTabOrder;
193
+ },
194
+ },
195
+ ref as unknown as (el: HTMLElement) => void,
196
+ );
158
197
 
159
198
  // Combine press and focusable props for input
160
199
  const interactions = mergeProps(pressProps, focusableProps);
161
200
 
162
201
  // Filter DOM props
163
- const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
202
+ const domProps = () =>
203
+ filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
164
204
 
165
205
  // Handle input change
166
206
  const onChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {
@@ -182,9 +222,11 @@ export function createToggle(
182
222
  createEffect(() => {
183
223
  const p = getProps();
184
224
  const hasChildren = p.children != null;
185
- const hasAriaLabel = p['aria-label'] != null || p['aria-labelledby'] != null;
225
+ const hasAriaLabel = p["aria-label"] != null || p["aria-labelledby"] != null;
186
226
  if (!hasChildren && !hasAriaLabel && isDevEnv()) {
187
- console.warn('If you do not provide children, you must specify an aria-label for accessibility');
227
+ console.warn(
228
+ "If you do not provide children, you must specify an aria-label for accessibility",
229
+ );
188
230
  }
189
231
  });
190
232
 
@@ -194,20 +236,20 @@ export function createToggle(
194
236
  return {
195
237
  labelProps: mergeProps(labelPressProps, {
196
238
  onClick: (e: MouseEvent) => e.preventDefault(),
197
- }),
239
+ }) as JSX.LabelHTMLAttributes<HTMLLabelElement>,
198
240
  get inputProps() {
199
241
  const p = getProps();
200
242
  return mergeProps(domProps(), {
201
- 'aria-invalid': isInvalid() || undefined,
202
- 'aria-errormessage': p['aria-errormessage'],
203
- 'aria-controls': p['aria-controls'],
204
- 'aria-readonly': isReadOnly() || undefined,
243
+ "aria-invalid": isInvalid() || undefined,
244
+ "aria-errormessage": p["aria-errormessage"],
245
+ "aria-controls": p["aria-controls"],
246
+ "aria-readonly": isReadOnly() || undefined,
205
247
  onChange,
206
248
  disabled: isDisabled(),
207
249
  ...(p.value == null ? {} : { value: p.value }),
208
250
  name: p.name,
209
251
  form: p.form,
210
- type: 'checkbox' as const,
252
+ type: "checkbox" as const,
211
253
  ...interactions,
212
254
  // Stop click propagation to prevent labelProps.onClick from calling preventDefault
213
255
  // which would prevent the checkbox from toggling in JSDOM/testing-library environments
@@ -6,12 +6,8 @@
6
6
  * This is a 1:1 port of @react-stately/toggle's useToggleState.
7
7
  */
8
8
 
9
- import { createSignal, Accessor } from 'solid-js';
10
- import { type MaybeAccessor, access } from '../utils/reactivity';
11
-
12
- // ============================================
13
- // TYPES
14
- // ============================================
9
+ import { createSignal, Accessor } from "solid-js";
10
+ import { type MaybeAccessor, access } from "../utils/reactivity";
15
11
 
16
12
  export interface ToggleStateOptions {
17
13
  /** Whether the element should be selected (controlled). */
@@ -35,10 +31,6 @@ export interface ToggleState {
35
31
  toggle(): void;
36
32
  }
37
33
 
38
- // ============================================
39
- // IMPLEMENTATION
40
- // ============================================
41
-
42
34
  /**
43
35
  * Provides state management for toggle components like checkboxes and switches.
44
36
  */
@@ -1,7 +1,6 @@
1
- // Re-export state from solid-stately
2
- export { createToggleState } from '@proyecto-viviana/solid-stately';
3
- export type { ToggleStateOptions, ToggleState } from '@proyecto-viviana/solid-stately';
1
+ export { createToggleState } from "@proyecto-viviana/solid-stately";
2
+ export type { ToggleStateOptions, ToggleState } from "@proyecto-viviana/solid-stately";
4
3
 
5
4
  // ARIA hook (solidaria-specific)
6
- export { createToggle } from './createToggle';
7
- export type { AriaToggleProps, ToggleAria } from './createToggle';
5
+ export { createToggle } from "./createToggle";
6
+ export type { AriaToggleProps, ToggleAria } from "./createToggle";