@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
@@ -1,11 +1,11 @@
1
- import { Accessor } from 'solid-js';
2
- import { createPress } from '../interactions';
3
- import { createFocusable } from '../interactions';
4
- import { mergeProps, filterDOMProps } from '../utils';
5
- import type { AriaButtonProps, ButtonAria } from './types';
1
+ import { Accessor } from "solid-js";
2
+ import { createPress } from "../interactions";
3
+ import { createFocusable } from "../interactions";
4
+ import { mergeProps, filterDOMProps } from "../utils";
5
+ import type { AriaButtonProps, ButtonAria } from "./types";
6
6
 
7
7
  function isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): boolean {
8
- if (typeof isDisabled === 'function') {
8
+ if (typeof isDisabled === "function") {
9
9
  return isDisabled();
10
10
  }
11
11
  return isDisabled ?? false;
@@ -38,101 +38,130 @@ function isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): b
38
38
  * ```
39
39
  */
40
40
  export function createButton(props: AriaButtonProps = {}): ButtonAria {
41
- const elementType = props.elementType ?? 'button';
41
+ const elementType = props.elementType ?? "button";
42
+ const isDisabled = () => isDisabledValue(props.isDisabled);
42
43
 
43
44
  const { pressProps, isPressed } = createPress({
44
- isDisabled: props.isDisabled,
45
- onPress: props.onPress,
46
- onPressStart: props.onPressStart,
47
- onPressEnd: props.onPressEnd,
48
- onPressUp: props.onPressUp,
49
- onPressChange: props.onPressChange,
50
- onClick: props.onClick,
51
- preventFocusOnPress: props.preventFocusOnPress,
45
+ isDisabled,
46
+ onPress: (event) => props.onPress?.(event),
47
+ onPressStart: (event) => props.onPressStart?.(event),
48
+ onPressEnd: (event) => props.onPressEnd?.(event),
49
+ onPressUp: (event) => props.onPressUp?.(event),
50
+ onPressChange: (pressed) => props.onPressChange?.(pressed),
51
+ onClick: (event) => props.onClick?.(event),
52
+ get preventFocusOnPress() {
53
+ return props.preventFocusOnPress;
54
+ },
52
55
  });
53
56
 
54
57
  const { focusableProps } = createFocusable({
55
- isDisabled: props.isDisabled,
58
+ isDisabled,
56
59
  autoFocus: props.autoFocus,
57
60
  excludeFromTabOrder: props.excludeFromTabOrder,
58
61
  });
59
62
 
60
- const isNativeButton = elementType === 'button' || elementType === 'input';
61
- const isLink = elementType === 'a';
62
- const disabled = isDisabledValue(props.isDisabled);
63
+ const isNativeButton = elementType === "button";
64
+ const isLink = elementType === "a";
63
65
 
64
66
  // Handle allowFocusWhenDisabled - set tabIndex to -1 when disabled but focusable
65
67
  // This allows tooltips to be shown on disabled buttons
66
- if (props.allowFocusWhenDisabled && disabled) {
67
- (focusableProps as Record<string, unknown>).tabIndex = -1;
68
+ if (props.allowFocusWhenDisabled) {
69
+ Object.defineProperty(focusableProps, "tabIndex", {
70
+ enumerable: true,
71
+ configurable: true,
72
+ get() {
73
+ return isDisabled() ? -1 : props.excludeFromTabOrder ? -1 : 0;
74
+ },
75
+ });
68
76
  }
69
77
 
70
- // Build base props based on element type
71
78
  let additionalProps: Record<string, unknown> = {};
72
79
 
73
80
  if (isNativeButton) {
74
81
  additionalProps = {
75
- type: props.type ?? 'button',
76
- disabled: disabled,
77
- // Form-related attributes
78
- ...(props.form && { form: props.form }),
79
- ...(props.formAction && { formAction: props.formAction }),
80
- ...(props.formEncType && { formEncType: props.formEncType }),
81
- ...(props.formMethod && { formMethod: props.formMethod }),
82
- ...(props.formNoValidate && { formNoValidate: props.formNoValidate }),
83
- ...(props.formTarget && { formTarget: props.formTarget }),
84
- ...(props.name && { name: props.name }),
85
- ...(props.value && { value: props.value }),
82
+ get type() {
83
+ return props.type ?? "button";
84
+ },
85
+ get disabled() {
86
+ return isDisabled();
87
+ },
88
+ get form() {
89
+ return props.form;
90
+ },
91
+ get formAction() {
92
+ return props.formAction;
93
+ },
94
+ get formEncType() {
95
+ return props.formEncType;
96
+ },
97
+ get formMethod() {
98
+ return props.formMethod;
99
+ },
100
+ get formNoValidate() {
101
+ return props.formNoValidate;
102
+ },
103
+ get formTarget() {
104
+ return props.formTarget;
105
+ },
106
+ get name() {
107
+ return props.name;
108
+ },
109
+ get value() {
110
+ return props.value;
111
+ },
86
112
  };
87
113
  } else {
88
- // Non-native buttons need role and tabIndex
114
+ // Non-native buttons need role; focusableProps supplies tabIndex.
89
115
  additionalProps = {
90
- role: 'button',
91
- tabIndex: disabled ? undefined : 0,
92
- 'aria-disabled': disabled ? true : undefined,
116
+ role: "button",
117
+ get href() {
118
+ return isLink && !isDisabled() ? props.href : undefined;
119
+ },
120
+ get target() {
121
+ return isLink ? props.target : undefined;
122
+ },
123
+ get type() {
124
+ return elementType === "input" ? (props.type ?? "button") : undefined;
125
+ },
126
+ get disabled() {
127
+ return elementType === "input" ? isDisabled() : undefined;
128
+ },
129
+ get "aria-disabled"() {
130
+ return isDisabled() && elementType !== "input" ? true : undefined;
131
+ },
132
+ get rel() {
133
+ return isLink ? props.rel : undefined;
134
+ },
93
135
  };
94
-
95
- if (isLink) {
96
- additionalProps.href = props.href;
97
- additionalProps.target = props.target;
98
- additionalProps.rel = props.rel;
99
- }
100
136
  }
101
137
 
102
- // ARIA attributes
103
- const ariaProps: Record<string, unknown> = {};
104
-
105
- if (props['aria-pressed'] !== undefined) {
106
- ariaProps['aria-pressed'] = props['aria-pressed'];
107
- }
108
- if (props['aria-haspopup'] !== undefined) {
109
- ariaProps['aria-haspopup'] = props['aria-haspopup'];
110
- }
111
- if (props['aria-expanded'] !== undefined) {
112
- ariaProps['aria-expanded'] = props['aria-expanded'];
113
- }
114
- if (props['aria-label']) {
115
- ariaProps['aria-label'] = props['aria-label'];
116
- }
117
- if (props['aria-labelledby']) {
118
- ariaProps['aria-labelledby'] = props['aria-labelledby'];
119
- }
120
- if (props['aria-describedby']) {
121
- ariaProps['aria-describedby'] = props['aria-describedby'];
122
- }
123
- if (props['aria-controls']) {
124
- ariaProps['aria-controls'] = props['aria-controls'];
125
- }
126
- if (props['aria-current'] !== undefined) {
127
- ariaProps['aria-current'] = props['aria-current'];
128
- }
138
+ const ariaProps: Record<string, unknown> = {
139
+ get "aria-haspopup"() {
140
+ return props["aria-haspopup"];
141
+ },
142
+ get "aria-expanded"() {
143
+ return props["aria-expanded"];
144
+ },
145
+ get "aria-controls"() {
146
+ return props["aria-controls"];
147
+ },
148
+ get "aria-pressed"() {
149
+ return props["aria-pressed"];
150
+ },
151
+ get "aria-current"() {
152
+ return props["aria-current"];
153
+ },
154
+ get "aria-disabled"() {
155
+ return props["aria-disabled"];
156
+ },
157
+ };
129
158
 
130
159
  const buttonProps = mergeProps(
131
- filterDOMProps(props as Record<string, unknown>, { labelable: true }),
132
160
  additionalProps,
133
- ariaProps,
134
161
  focusableProps as Record<string, unknown>,
135
- pressProps as Record<string, unknown>
162
+ pressProps as Record<string, unknown>,
163
+ filterDOMProps(props as Record<string, unknown>, { labelable: true }),
164
+ ariaProps,
136
165
  );
137
166
 
138
167
  return {
@@ -1,10 +1,10 @@
1
- import { Accessor, createSignal } from 'solid-js';
2
- import { createButton } from './createButton';
3
- import { mergeProps } from '../utils';
4
- import type { AriaButtonProps, ButtonAria } from './types';
5
- import type { PressEvent } from '../interactions';
1
+ import { Accessor, createSignal } from "solid-js";
2
+ import { createButton } from "./createButton";
3
+ import { mergeProps } from "../utils";
4
+ import type { AriaButtonProps, ButtonAria } from "./types";
5
+ import type { PressEvent } from "../interactions";
6
6
 
7
- export interface AriaToggleButtonProps extends Omit<AriaButtonProps, 'aria-pressed'> {
7
+ export interface AriaToggleButtonProps extends Omit<AriaButtonProps, "aria-pressed"> {
8
8
  /** Whether the button is selected (controlled). */
9
9
  isSelected?: Accessor<boolean> | boolean;
10
10
  /** Handler called when the button's selection state changes. */
@@ -19,7 +19,7 @@ export interface ToggleButtonAria extends ButtonAria {
19
19
  }
20
20
 
21
21
  function getSelectedValue(isSelected: Accessor<boolean> | boolean | undefined): boolean {
22
- if (typeof isSelected === 'function') {
22
+ if (typeof isSelected === "function") {
23
23
  return isSelected();
24
24
  }
25
25
  return isSelected ?? false;
@@ -54,7 +54,7 @@ export function createToggleButton(props: AriaToggleButtonProps = {}): ToggleBut
54
54
  // Handle controlled vs uncontrolled state
55
55
  const isControlled = props.isSelected !== undefined;
56
56
  const [uncontrolledSelected, setUncontrolledSelected] = createSignal(
57
- props.defaultSelected ?? false
57
+ props.defaultSelected ?? false,
58
58
  );
59
59
 
60
60
  const isSelected = (): boolean => {
@@ -82,13 +82,13 @@ export function createToggleButton(props: AriaToggleButtonProps = {}): ToggleBut
82
82
  const { buttonProps: baseButtonProps, isPressed } = createButton(
83
83
  mergeProps(props, {
84
84
  onPress,
85
- }) as AriaButtonProps
85
+ }) as AriaButtonProps,
86
86
  );
87
87
 
88
88
  // Create buttonProps with a getter for aria-pressed so it stays reactive
89
89
  const buttonProps = {
90
90
  ...baseButtonProps,
91
- get 'aria-pressed'() {
91
+ get "aria-pressed"() {
92
92
  return isSelected();
93
93
  },
94
94
  };
@@ -0,0 +1,121 @@
1
+ import type { JSX } from "solid-js";
2
+ import type { Key, ToggleGroupProps, ToggleGroupState } from "@proyecto-viviana/solid-stately";
3
+ import { createToolbar, type Orientation } from "../toolbar";
4
+ import { mergeProps } from "../utils";
5
+ import {
6
+ createToggleButton,
7
+ type AriaToggleButtonProps,
8
+ type ToggleButtonAria,
9
+ } from "./createToggleButton";
10
+
11
+ export interface AriaToggleButtonGroupProps extends ToggleGroupProps {
12
+ /**
13
+ * The orientation of the toggle button group.
14
+ * @default 'horizontal'
15
+ */
16
+ orientation?: Orientation;
17
+ /** Accessible label. */
18
+ "aria-label"?: string;
19
+ /** Labelled-by id. */
20
+ "aria-labelledby"?: string;
21
+ }
22
+
23
+ export interface ToggleButtonGroupAria {
24
+ /** Props for the group container. */
25
+ groupProps: JSX.HTMLAttributes<HTMLElement>;
26
+ }
27
+
28
+ export interface AriaToggleButtonGroupItemProps extends Omit<AriaToggleButtonProps, "children"> {
29
+ /** Key used in the group selection state. */
30
+ id: Key;
31
+ }
32
+
33
+ function isDisabledValue(isDisabled: AriaToggleButtonProps["isDisabled"]): boolean {
34
+ if (typeof isDisabled === "function") {
35
+ return isDisabled();
36
+ }
37
+ return !!isDisabled;
38
+ }
39
+
40
+ /**
41
+ * Provides ARIA behavior for a toggle button group container.
42
+ */
43
+ export function createToggleButtonGroup(
44
+ props: AriaToggleButtonGroupProps,
45
+ state: ToggleGroupState,
46
+ ): ToggleButtonGroupAria {
47
+ const { toolbarProps } = createToolbar({
48
+ get orientation() {
49
+ return props.orientation;
50
+ },
51
+ get "aria-label"() {
52
+ return props["aria-label"];
53
+ },
54
+ get "aria-labelledby"() {
55
+ return props["aria-labelledby"];
56
+ },
57
+ });
58
+
59
+ const groupProps = mergeProps(toolbarProps as Record<string, unknown>, {
60
+ get role() {
61
+ return state.selectionMode === "single" ? "radiogroup" : toolbarProps.role;
62
+ },
63
+ get "aria-disabled"() {
64
+ return props.isDisabled || undefined;
65
+ },
66
+ }) as JSX.HTMLAttributes<HTMLElement>;
67
+
68
+ return { groupProps };
69
+ }
70
+
71
+ /**
72
+ * Provides ARIA behavior for an item within a toggle button group.
73
+ */
74
+ export function createToggleButtonGroupItem(
75
+ props: AriaToggleButtonGroupItemProps,
76
+ state: ToggleGroupState,
77
+ ): ToggleButtonAria {
78
+ const { id: _id, ...toggleProps } = props;
79
+
80
+ const toggleButton = createToggleButton({
81
+ ...toggleProps,
82
+ get isSelected() {
83
+ return state.selectedKeys.has(props.id);
84
+ },
85
+ onChange(isSelected) {
86
+ state.setSelected(props.id, isSelected);
87
+ props.onChange?.(isSelected);
88
+ },
89
+ get isDisabled() {
90
+ return isDisabledValue(props.isDisabled) || state.isDisabled;
91
+ },
92
+ });
93
+
94
+ const baseButtonProps = toggleButton.buttonProps as Record<string, unknown>;
95
+ const buttonProps: Record<string, unknown> = {
96
+ ...baseButtonProps,
97
+ get role() {
98
+ if (state.selectionMode === "single") {
99
+ return "radio";
100
+ }
101
+ return baseButtonProps.role as string | undefined;
102
+ },
103
+ get "aria-checked"() {
104
+ if (state.selectionMode !== "single") {
105
+ return undefined;
106
+ }
107
+ return state.selectedKeys.has(props.id);
108
+ },
109
+ get "aria-pressed"() {
110
+ if (state.selectionMode === "single") {
111
+ return undefined;
112
+ }
113
+ return baseButtonProps["aria-pressed"];
114
+ },
115
+ };
116
+
117
+ return {
118
+ ...toggleButton,
119
+ buttonProps,
120
+ };
121
+ }
@@ -1,4 +1,10 @@
1
- export { createButton } from './createButton';
2
- export { createToggleButton } from './createToggleButton';
3
- export type { AriaButtonProps, ButtonAria } from './types';
4
- export type { AriaToggleButtonProps, ToggleButtonAria } from './createToggleButton';
1
+ export { createButton } from "./createButton";
2
+ export { createToggleButton } from "./createToggleButton";
3
+ export { createToggleButtonGroup, createToggleButtonGroupItem } from "./createToggleButtonGroup";
4
+ export type { AriaButtonProps, ButtonAria } from "./types";
5
+ export type { AriaToggleButtonProps, ToggleButtonAria } from "./createToggleButton";
6
+ export type {
7
+ AriaToggleButtonGroupProps,
8
+ ToggleButtonGroupAria,
9
+ AriaToggleButtonGroupItemProps,
10
+ } from "./createToggleButtonGroup";
@@ -1,7 +1,9 @@
1
- import { Accessor } from 'solid-js';
2
- import { PressEvent } from '../interactions';
1
+ import { Accessor } from "solid-js";
2
+ import { PressEvent } from "../interactions";
3
3
 
4
4
  export interface AriaButtonProps {
5
+ /** The element's unique identifier. */
6
+ id?: string | number;
5
7
  /** Whether the button is disabled. */
6
8
  isDisabled?: Accessor<boolean> | boolean;
7
9
  /** Handler called when the press is released over the target. */
@@ -30,7 +32,7 @@ export interface AriaButtonProps {
30
32
  /** Whether the element should receive focus on render. */
31
33
  autoFocus?: boolean;
32
34
  /** The HTML element type to use for the button. */
33
- elementType?: 'button' | 'a' | 'div' | 'input' | 'span';
35
+ elementType?: "button" | "a" | "div" | "input" | "span";
34
36
  /** The URL to link to (for anchor elements). */
35
37
  href?: string;
36
38
  /** The target for the link (for anchor elements). */
@@ -38,23 +40,27 @@ export interface AriaButtonProps {
38
40
  /** The rel attribute for the link (for anchor elements). */
39
41
  rel?: string;
40
42
  /** The type attribute for button elements. */
41
- type?: 'button' | 'submit' | 'reset';
43
+ type?: "button" | "submit" | "reset";
42
44
  /** Whether the button is in a pressed state (controlled). */
43
- 'aria-pressed'?: boolean | 'true' | 'false' | 'mixed';
45
+ "aria-pressed"?: boolean | "true" | "false" | "mixed";
44
46
  /** Whether the button has a popup. */
45
- 'aria-haspopup'?: boolean | 'menu' | 'listbox' | 'tree' | 'grid' | 'dialog' | 'true' | 'false';
47
+ "aria-haspopup"?: boolean | "menu" | "listbox" | "tree" | "grid" | "dialog" | "true" | "false";
46
48
  /** Whether the popup is expanded. */
47
- 'aria-expanded'?: boolean | 'true' | 'false';
49
+ "aria-expanded"?: boolean | "true" | "false";
48
50
  /** The accessible label for the button. */
49
- 'aria-label'?: string;
51
+ "aria-label"?: string;
50
52
  /** The id of the element that labels the button. */
51
- 'aria-labelledby'?: string;
53
+ "aria-labelledby"?: string;
52
54
  /** The id of the element that describes the button. */
53
- 'aria-describedby'?: string;
55
+ "aria-describedby"?: string;
56
+ /** The id of the element that provides detailed, extended description for the button. */
57
+ "aria-details"?: string;
54
58
  /** Identifies the element (or elements) whose contents or presence are controlled by the button. */
55
- 'aria-controls'?: string;
59
+ "aria-controls"?: string;
56
60
  /** Indicates the current "pressed" state of toggle buttons. */
57
- 'aria-current'?: boolean | 'page' | 'step' | 'location' | 'date' | 'time' | 'true' | 'false';
61
+ "aria-current"?: boolean | "page" | "step" | "location" | "date" | "time" | "true" | "false";
62
+ /** Indicates that the button is perceivable but disabled. */
63
+ "aria-disabled"?: boolean | "true" | "false";
58
64
  /** Additional attributes for form buttons. */
59
65
  form?: string;
60
66
  formAction?: string;
@@ -5,15 +5,12 @@
5
5
  * Based on @react-aria/calendar useCalendar
6
6
  */
7
7
 
8
- import { createMemo } from 'solid-js';
9
- import { createId } from '../ssr';
10
- import { access, type MaybeAccessor } from '../utils/reactivity';
11
- import { mergeProps } from '../utils/mergeProps';
12
- import type { CalendarState } from '@proyecto-viviana/solid-stately';
13
-
14
- // ============================================
15
- // TYPES
16
- // ============================================
8
+ import { createMemo } from "solid-js";
9
+ import { createId } from "../ssr";
10
+ import { access, type MaybeAccessor } from "../utils/reactivity";
11
+ import { mergeProps } from "../utils/mergeProps";
12
+ import type { CalendarState } from "@proyecto-viviana/solid-stately";
13
+ import { formatVisibleRangeDescription, setCalendarHookData } from "./utils";
17
14
 
18
15
  export interface AriaCalendarProps {
19
16
  /** An ID for the calendar. */
@@ -23,11 +20,19 @@ export interface AriaCalendarProps {
23
20
  /** Whether the calendar is read-only. */
24
21
  isReadOnly?: boolean;
25
22
  /** An accessible label for the calendar. */
26
- 'aria-label'?: string;
23
+ "aria-label"?: string;
27
24
  /** The ID of an element that labels the calendar. */
28
- 'aria-labelledby'?: string;
25
+ "aria-labelledby"?: string;
29
26
  /** The ID of an element that describes the calendar. */
30
- 'aria-describedby'?: string;
27
+ "aria-describedby"?: string;
28
+ /** The ID of an element that provides additional details about the calendar. */
29
+ "aria-details"?: string;
30
+ /** Whether the current selection is invalid. */
31
+ isInvalid?: boolean;
32
+ /** Error message rendered for invalid selections. */
33
+ errorMessage?: string;
34
+ /** ID of the rendered error message element. */
35
+ errorMessageId?: string;
31
36
  /** Minimum number of visible months. */
32
37
  visibleMonths?: number;
33
38
  }
@@ -41,27 +46,50 @@ export interface CalendarAria {
41
46
  nextButtonProps: Record<string, unknown>;
42
47
  /** Props for the title/heading element. */
43
48
  titleProps: Record<string, unknown>;
49
+ /** Props for the error message element, if any. */
50
+ errorMessageProps: Record<string, unknown>;
44
51
  /** An accessible label for the title. */
45
52
  title: string;
46
53
  }
47
54
 
48
- // ============================================
49
- // IMPLEMENTATION
50
- // ============================================
51
-
52
55
  /**
53
56
  * Provides the behavior and accessibility implementation for a calendar component.
54
57
  */
55
58
  export function createCalendar<T extends CalendarState>(
56
59
  props: MaybeAccessor<AriaCalendarProps>,
57
- state: T
60
+ state: T,
58
61
  ): CalendarAria {
59
62
  const getProps = () => access(props);
60
63
  const id = createId(getProps().id);
61
64
  const titleId = createId();
65
+ const errorMessageId = createId(getProps().errorMessageId);
62
66
 
63
67
  // Title (e.g., "December 2024")
64
68
  const title = createMemo(() => state.title());
69
+ const visibleRangeDescription = createMemo(() => {
70
+ const range = state.visibleRange();
71
+ return formatVisibleRangeDescription(range.start, range.end, state.timeZone, state.locale());
72
+ });
73
+ const calendarLabel = createMemo(() => {
74
+ const p = getProps();
75
+ return [p["aria-label"], visibleRangeDescription()].filter(Boolean).join(", ");
76
+ });
77
+
78
+ const initialProps = getProps();
79
+ if (
80
+ initialProps.id ||
81
+ initialProps["aria-label"] ||
82
+ initialProps["aria-labelledby"] ||
83
+ initialProps["aria-describedby"] ||
84
+ initialProps["aria-details"] ||
85
+ initialProps.errorMessage ||
86
+ initialProps.errorMessageId
87
+ ) {
88
+ setCalendarHookData(state, {
89
+ errorMessageId:
90
+ initialProps.errorMessage || initialProps.errorMessageId ? errorMessageId : undefined,
91
+ });
92
+ }
65
93
 
66
94
  // Previous button props
67
95
  const prevButtonProps = createMemo(() => {
@@ -69,7 +97,7 @@ export function createCalendar<T extends CalendarState>(
69
97
  const isDisabled = p.isDisabled || state.isDisabled();
70
98
 
71
99
  return {
72
- 'aria-label': 'Previous month',
100
+ "aria-label": "Previous month",
73
101
  onClick: () => {
74
102
  if (!isDisabled) {
75
103
  state.focusPreviousPage();
@@ -86,7 +114,7 @@ export function createCalendar<T extends CalendarState>(
86
114
  const isDisabled = p.isDisabled || state.isDisabled();
87
115
 
88
116
  return {
89
- 'aria-label': 'Next month',
117
+ "aria-label": "Next month",
90
118
  onClick: () => {
91
119
  if (!isDisabled) {
92
120
  state.focusNextPage();
@@ -100,22 +128,24 @@ export function createCalendar<T extends CalendarState>(
100
128
  // Title props
101
129
  const titleProps = createMemo(() => ({
102
130
  id: titleId,
103
- 'aria-live': 'polite' as const,
131
+ "aria-live": "polite" as const,
132
+ }));
133
+ const errorMessageProps = createMemo(() => ({
134
+ id: errorMessageId,
104
135
  }));
105
136
 
106
137
  // Calendar container props
107
138
  const calendarProps = createMemo(() => {
108
139
  const p = getProps();
109
140
 
110
- return mergeProps(
111
- {
112
- id,
113
- role: 'group',
114
- 'aria-labelledby': p['aria-labelledby'] ?? titleId,
115
- 'aria-label': p['aria-label'],
116
- 'aria-describedby': p['aria-describedby'],
117
- }
118
- );
141
+ return mergeProps({
142
+ id,
143
+ role: "application",
144
+ "aria-labelledby": p["aria-labelledby"],
145
+ "aria-label": calendarLabel(),
146
+ "aria-describedby": p["aria-describedby"],
147
+ "aria-details": p["aria-details"],
148
+ });
119
149
  });
120
150
 
121
151
  return {
@@ -131,6 +161,9 @@ export function createCalendar<T extends CalendarState>(
131
161
  get titleProps() {
132
162
  return titleProps();
133
163
  },
164
+ get errorMessageProps() {
165
+ return errorMessageProps();
166
+ },
134
167
  get title() {
135
168
  return title();
136
169
  },