@proyecto-viviana/solidaria 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/README.md +31 -236
  2. package/dist/actiongroup/createActionGroup.d.ts +5 -5
  3. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  4. package/dist/actiongroup/index.d.ts +1 -1
  5. package/dist/autocomplete/createAutocomplete.d.ts +10 -10
  6. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  7. package/dist/autocomplete/index.d.ts +1 -1
  8. package/dist/autocomplete/index.d.ts.map +1 -1
  9. package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
  10. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  11. package/dist/breadcrumbs/index.d.ts +1 -1
  12. package/dist/button/createButton.d.ts +1 -1
  13. package/dist/button/createButton.d.ts.map +1 -1
  14. package/dist/button/createToggleButton.d.ts +3 -3
  15. package/dist/button/createToggleButtonGroup.d.ts +7 -7
  16. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  17. package/dist/button/index.d.ts +6 -6
  18. package/dist/button/index.d.ts.map +1 -1
  19. package/dist/button/types.d.ts +18 -12
  20. package/dist/button/types.d.ts.map +1 -1
  21. package/dist/calendar/createCalendar.d.ts +15 -5
  22. package/dist/calendar/createCalendar.d.ts.map +1 -1
  23. package/dist/calendar/createCalendarCell.d.ts +6 -2
  24. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  26. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  27. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  28. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
  30. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  31. package/dist/calendar/index.d.ts +5 -5
  32. package/dist/calendar/index.d.ts.map +1 -1
  33. package/dist/calendar/intl/index.d.ts +12 -0
  34. package/dist/calendar/intl/index.d.ts.map +1 -0
  35. package/dist/calendar/utils.d.ts +12 -0
  36. package/dist/calendar/utils.d.ts.map +1 -0
  37. package/dist/checkbox/createCheckbox.d.ts +6 -6
  38. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  39. package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
  40. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  42. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  44. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  45. package/dist/checkbox/index.d.ts +8 -8
  46. package/dist/checkbox/index.d.ts.map +1 -1
  47. package/dist/collections/index.d.ts +3 -3
  48. package/dist/collections/index.d.ts.map +1 -1
  49. package/dist/color/createColorArea.d.ts +3 -3
  50. package/dist/color/createColorArea.d.ts.map +1 -1
  51. package/dist/color/createColorField.d.ts +4 -4
  52. package/dist/color/createColorField.d.ts.map +1 -1
  53. package/dist/color/createColorSlider.d.ts +4 -4
  54. package/dist/color/createColorSlider.d.ts.map +1 -1
  55. package/dist/color/createColorSwatch.d.ts +2 -2
  56. package/dist/color/createColorSwatch.d.ts.map +1 -1
  57. package/dist/color/createColorWheel.d.ts +3 -3
  58. package/dist/color/createColorWheel.d.ts.map +1 -1
  59. package/dist/color/index.d.ts +6 -6
  60. package/dist/color/types.d.ts +98 -16
  61. package/dist/color/types.d.ts.map +1 -1
  62. package/dist/combobox/createComboBox.d.ts +10 -7
  63. package/dist/combobox/createComboBox.d.ts.map +1 -1
  64. package/dist/combobox/index.d.ts +1 -1
  65. package/dist/combobox/intl/index.d.ts +1 -1
  66. package/dist/datepicker/createDateField.d.ts +18 -6
  67. package/dist/datepicker/createDateField.d.ts.map +1 -1
  68. package/dist/datepicker/createDatePicker.d.ts +51 -5
  69. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  71. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  72. package/dist/datepicker/createDateRangePicker.d.ts +8 -6
  73. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  74. package/dist/datepicker/createDateSegment.d.ts +10 -2
  75. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  76. package/dist/datepicker/createTimeField.d.ts +11 -5
  77. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeSegment.d.ts +2 -2
  79. package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
  80. package/dist/datepicker/index.d.ts +7 -6
  81. package/dist/datepicker/index.d.ts.map +1 -1
  82. package/dist/dialog/createDialog.d.ts +5 -5
  83. package/dist/dialog/createDialog.d.ts.map +1 -1
  84. package/dist/dialog/index.d.ts +2 -2
  85. package/dist/dialog/index.d.ts.map +1 -1
  86. package/dist/dialog/types.d.ts +4 -4
  87. package/dist/disclosure/createDisclosure.d.ts +5 -2
  88. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  89. package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
  90. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  91. package/dist/disclosure/index.d.ts +2 -2
  92. package/dist/dnd/createDrag.d.ts +2 -2
  93. package/dist/dnd/createDrag.d.ts.map +1 -1
  94. package/dist/dnd/createDraggableCollection.d.ts +2 -2
  95. package/dist/dnd/createDraggableItem.d.ts +3 -3
  96. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  97. package/dist/dnd/createDrop.d.ts +2 -2
  98. package/dist/dnd/createDrop.d.ts.map +1 -1
  99. package/dist/dnd/createDroppableCollection.d.ts +26 -6
  100. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  101. package/dist/dnd/createDroppableItem.d.ts +3 -3
  102. package/dist/dnd/index.d.ts +12 -12
  103. package/dist/dnd/index.d.ts.map +1 -1
  104. package/dist/dnd/types.d.ts +2 -2
  105. package/dist/dnd/types.d.ts.map +1 -1
  106. package/dist/dnd/utils.d.ts +1 -1
  107. package/dist/dnd/utils.d.ts.map +1 -1
  108. package/dist/focus/FocusScope.d.ts +1 -1
  109. package/dist/focus/FocusScope.d.ts.map +1 -1
  110. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  111. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  112. package/dist/focus/createVirtualFocus.d.ts +4 -4
  113. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  114. package/dist/focus/index.d.ts +4 -4
  115. package/dist/focus/index.d.ts.map +1 -1
  116. package/dist/form/createFormReset.d.ts +1 -1
  117. package/dist/form/createFormValidation.d.ts +3 -3
  118. package/dist/form/createFormValidation.d.ts.map +1 -1
  119. package/dist/form/index.d.ts +2 -2
  120. package/dist/form/index.d.ts.map +1 -1
  121. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  122. package/dist/grid/createGrid.d.ts +3 -3
  123. package/dist/grid/createGridCell.d.ts +3 -3
  124. package/dist/grid/createGridRow.d.ts +3 -3
  125. package/dist/grid/index.d.ts +5 -5
  126. package/dist/grid/types.d.ts +8 -8
  127. package/dist/gridlist/createGridList.d.ts +6 -4
  128. package/dist/gridlist/createGridList.d.ts.map +1 -1
  129. package/dist/gridlist/createGridListItem.d.ts +4 -4
  130. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  131. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  132. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  133. package/dist/gridlist/index.d.ts +4 -4
  134. package/dist/gridlist/types.d.ts +11 -7
  135. package/dist/gridlist/types.d.ts.map +1 -1
  136. package/dist/i18n/createCollator.d.ts.map +1 -1
  137. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  138. package/dist/i18n/createFilter.d.ts.map +1 -1
  139. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  140. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  141. package/dist/i18n/createStringFormatter.d.ts +2 -2
  142. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  143. package/dist/i18n/index.d.ts +8 -8
  144. package/dist/i18n/index.d.ts.map +1 -1
  145. package/dist/i18n/locale.d.ts +2 -2
  146. package/dist/i18n/locale.d.ts.map +1 -1
  147. package/dist/i18n/utils.d.ts.map +1 -1
  148. package/dist/index.d.ts +52 -51
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +18012 -16820
  151. package/dist/index.js.map +1 -1
  152. package/dist/index.jsx +18242 -0
  153. package/dist/index.jsx.map +1 -0
  154. package/dist/interactions/FocusableProvider.d.ts +2 -2
  155. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  156. package/dist/interactions/PressEvent.d.ts +2 -2
  157. package/dist/interactions/createFocus.d.ts +1 -1
  158. package/dist/interactions/createFocus.d.ts.map +1 -1
  159. package/dist/interactions/createFocusRing.d.ts +1 -1
  160. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  161. package/dist/interactions/createFocusWithin.d.ts +1 -1
  162. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  163. package/dist/interactions/createFocusable.d.ts +3 -3
  164. package/dist/interactions/createFocusable.d.ts.map +1 -1
  165. package/dist/interactions/createHover.d.ts +5 -5
  166. package/dist/interactions/createHover.d.ts.map +1 -1
  167. package/dist/interactions/createInteractionModality.d.ts +3 -3
  168. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  169. package/dist/interactions/createKeyboard.d.ts +1 -1
  170. package/dist/interactions/createLongPress.d.ts +5 -5
  171. package/dist/interactions/createMove.d.ts +5 -5
  172. package/dist/interactions/createMove.d.ts.map +1 -1
  173. package/dist/interactions/createPress.d.ts +4 -4
  174. package/dist/interactions/createPress.d.ts.map +1 -1
  175. package/dist/interactions/index.d.ts +12 -12
  176. package/dist/interactions/index.d.ts.map +1 -1
  177. package/dist/label/createField.d.ts +4 -4
  178. package/dist/label/createField.d.ts.map +1 -1
  179. package/dist/label/createLabel.d.ts +7 -7
  180. package/dist/label/createLabel.d.ts.map +1 -1
  181. package/dist/label/createLabels.d.ts +1 -1
  182. package/dist/label/createLabels.d.ts.map +1 -1
  183. package/dist/label/index.d.ts +5 -5
  184. package/dist/landmark/createLandmark.d.ts +5 -5
  185. package/dist/landmark/createLandmark.d.ts.map +1 -1
  186. package/dist/landmark/index.d.ts +1 -1
  187. package/dist/link/createLink.d.ts +14 -8
  188. package/dist/link/createLink.d.ts.map +1 -1
  189. package/dist/link/index.d.ts +1 -1
  190. package/dist/listbox/createListBox.d.ts +11 -6
  191. package/dist/listbox/createListBox.d.ts.map +1 -1
  192. package/dist/listbox/createOption.d.ts +21 -4
  193. package/dist/listbox/createOption.d.ts.map +1 -1
  194. package/dist/listbox/index.d.ts +2 -2
  195. package/dist/listbox/index.d.ts.map +1 -1
  196. package/dist/live-announcer/announce.d.ts +2 -2
  197. package/dist/live-announcer/announce.d.ts.map +1 -1
  198. package/dist/live-announcer/index.d.ts +1 -1
  199. package/dist/menu/createMenu.d.ts +7 -7
  200. package/dist/menu/createMenu.d.ts.map +1 -1
  201. package/dist/menu/createMenuItem.d.ts +16 -4
  202. package/dist/menu/createMenuItem.d.ts.map +1 -1
  203. package/dist/menu/createMenuTrigger.d.ts +4 -4
  204. package/dist/menu/index.d.ts +3 -3
  205. package/dist/menu/index.d.ts.map +1 -1
  206. package/dist/meter/createMeter.d.ts +6 -6
  207. package/dist/meter/createMeter.d.ts.map +1 -1
  208. package/dist/meter/index.d.ts +1 -1
  209. package/dist/numberfield/createNumberField.d.ts +9 -8
  210. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  211. package/dist/numberfield/index.d.ts +1 -1
  212. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  213. package/dist/overlays/createModal.d.ts +3 -3
  214. package/dist/overlays/createModal.d.ts.map +1 -1
  215. package/dist/overlays/createOverlay.d.ts +1 -1
  216. package/dist/overlays/createOverlay.d.ts.map +1 -1
  217. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  218. package/dist/overlays/index.d.ts +6 -6
  219. package/dist/overlays/index.d.ts.map +1 -1
  220. package/dist/popover/calculatePosition.d.ts +4 -4
  221. package/dist/popover/calculatePosition.d.ts.map +1 -1
  222. package/dist/popover/createOverlayPosition.d.ts +3 -3
  223. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  224. package/dist/popover/createPopover.d.ts +4 -4
  225. package/dist/popover/createPopover.d.ts.map +1 -1
  226. package/dist/popover/index.d.ts +3 -3
  227. package/dist/progress/createProgressBar.d.ts +7 -5
  228. package/dist/progress/createProgressBar.d.ts.map +1 -1
  229. package/dist/progress/index.d.ts +1 -1
  230. package/dist/radio/createRadio.d.ts +7 -7
  231. package/dist/radio/createRadio.d.ts.map +1 -1
  232. package/dist/radio/createRadioGroup.d.ts +10 -10
  233. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  234. package/dist/radio/createRadioGroupState.d.ts +3 -3
  235. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  236. package/dist/radio/index.d.ts +3 -3
  237. package/dist/radio/index.d.ts.map +1 -1
  238. package/dist/searchfield/createSearchField.d.ts +7 -7
  239. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  240. package/dist/searchfield/index.d.ts +2 -2
  241. package/dist/select/createHiddenSelect.d.ts +4 -4
  242. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  243. package/dist/select/createSelect.d.ts +14 -6
  244. package/dist/select/createSelect.d.ts.map +1 -1
  245. package/dist/select/index.d.ts +2 -2
  246. package/dist/select/index.d.ts.map +1 -1
  247. package/dist/selection/createTypeSelect.d.ts +2 -2
  248. package/dist/selection/index.d.ts +1 -1
  249. package/dist/separator/createSeparator.d.ts +9 -5
  250. package/dist/separator/createSeparator.d.ts.map +1 -1
  251. package/dist/separator/index.d.ts +1 -1
  252. package/dist/slider/createSlider.d.ts +11 -7
  253. package/dist/slider/createSlider.d.ts.map +1 -1
  254. package/dist/slider/index.d.ts +2 -2
  255. package/dist/ssr/index.d.ts +1 -1
  256. package/dist/ssr/index.d.ts.map +1 -1
  257. package/dist/steplist/createStepList.d.ts +36 -0
  258. package/dist/steplist/createStepList.d.ts.map +1 -0
  259. package/dist/steplist/index.d.ts +2 -0
  260. package/dist/steplist/index.d.ts.map +1 -0
  261. package/dist/switch/createSwitch.d.ts +6 -4
  262. package/dist/switch/createSwitch.d.ts.map +1 -1
  263. package/dist/switch/index.d.ts +1 -1
  264. package/dist/table/createTable.d.ts +3 -3
  265. package/dist/table/createTable.d.ts.map +1 -1
  266. package/dist/table/createTableCell.d.ts +3 -3
  267. package/dist/table/createTableCell.d.ts.map +1 -1
  268. package/dist/table/createTableColumnHeader.d.ts +3 -3
  269. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  270. package/dist/table/createTableColumnResize.d.ts +41 -0
  271. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  272. package/dist/table/createTableHeaderRow.d.ts +3 -3
  273. package/dist/table/createTableRow.d.ts +3 -3
  274. package/dist/table/createTableRow.d.ts.map +1 -1
  275. package/dist/table/createTableRowGroup.d.ts +2 -2
  276. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  277. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  278. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  279. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  280. package/dist/table/index.d.ts +11 -9
  281. package/dist/table/index.d.ts.map +1 -1
  282. package/dist/table/types.d.ts +15 -7
  283. package/dist/table/types.d.ts.map +1 -1
  284. package/dist/tabs/createTabs.d.ts +28 -25
  285. package/dist/tabs/createTabs.d.ts.map +1 -1
  286. package/dist/tabs/index.d.ts +1 -1
  287. package/dist/tag/createTag.d.ts +2 -2
  288. package/dist/tag/createTag.d.ts.map +1 -1
  289. package/dist/tag/createTagGroup.d.ts +5 -5
  290. package/dist/tag/createTagGroup.d.ts.map +1 -1
  291. package/dist/tag/index.d.ts +2 -2
  292. package/dist/tag/index.d.ts.map +1 -1
  293. package/dist/textfield/createTextField.d.ts +17 -11
  294. package/dist/textfield/createTextField.d.ts.map +1 -1
  295. package/dist/textfield/index.d.ts +1 -1
  296. package/dist/textfield/index.d.ts.map +1 -1
  297. package/dist/toast/createToast.d.ts +2 -2
  298. package/dist/toast/createToast.d.ts.map +1 -1
  299. package/dist/toast/createToastRegion.d.ts +5 -3
  300. package/dist/toast/createToastRegion.d.ts.map +1 -1
  301. package/dist/toast/index.d.ts +2 -2
  302. package/dist/toast/index.d.ts.map +1 -1
  303. package/dist/toggle/createToggle.d.ts +9 -9
  304. package/dist/toggle/createToggle.d.ts.map +1 -1
  305. package/dist/toggle/createToggleState.d.ts +2 -2
  306. package/dist/toggle/createToggleState.d.ts.map +1 -1
  307. package/dist/toggle/index.d.ts +4 -4
  308. package/dist/toggle/index.d.ts.map +1 -1
  309. package/dist/toolbar/createToolbar.d.ts +9 -9
  310. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  311. package/dist/toolbar/index.d.ts +1 -1
  312. package/dist/toolbar/index.d.ts.map +1 -1
  313. package/dist/tooltip/createTooltip.d.ts +5 -5
  314. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  315. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  316. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  317. package/dist/tooltip/index.d.ts +2 -2
  318. package/dist/tree/createTree.d.ts +3 -3
  319. package/dist/tree/createTree.d.ts.map +1 -1
  320. package/dist/tree/createTreeItem.d.ts +4 -4
  321. package/dist/tree/createTreeItem.d.ts.map +1 -1
  322. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  323. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  324. package/dist/tree/index.d.ts +4 -4
  325. package/dist/tree/types.d.ts +10 -6
  326. package/dist/tree/types.d.ts.map +1 -1
  327. package/dist/utils/createDescription.d.ts +2 -2
  328. package/dist/utils/createDescription.d.ts.map +1 -1
  329. package/dist/utils/dom.d.ts.map +1 -1
  330. package/dist/utils/env.d.ts.map +1 -1
  331. package/dist/utils/focus.d.ts +1 -1
  332. package/dist/utils/focus.d.ts.map +1 -1
  333. package/dist/utils/geometry.d.ts.map +1 -1
  334. package/dist/utils/index.d.ts +12 -12
  335. package/dist/utils/index.d.ts.map +1 -1
  336. package/dist/utils/mergeProps.d.ts.map +1 -1
  337. package/dist/utils/reactivity.d.ts +1 -1
  338. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  339. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  340. package/dist/visually-hidden/index.d.ts +1 -1
  341. package/package.json +32 -32
  342. package/src/actiongroup/createActionGroup.ts +101 -91
  343. package/src/actiongroup/index.ts +1 -1
  344. package/src/autocomplete/createAutocomplete.ts +117 -134
  345. package/src/autocomplete/index.ts +1 -1
  346. package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
  347. package/src/breadcrumbs/index.ts +1 -1
  348. package/src/button/createButton.ts +102 -73
  349. package/src/button/createToggleButton.ts +10 -10
  350. package/src/button/createToggleButtonGroup.ts +25 -32
  351. package/src/button/index.ts +6 -9
  352. package/src/button/types.ts +18 -12
  353. package/src/calendar/createCalendar.ts +62 -29
  354. package/src/calendar/createCalendarCell.ts +98 -46
  355. package/src/calendar/createCalendarGrid.ts +57 -35
  356. package/src/calendar/createRangeCalendar.ts +66 -31
  357. package/src/calendar/createRangeCalendarCell.ts +92 -31
  358. package/src/calendar/index.ts +5 -9
  359. package/src/calendar/intl/index.ts +210 -0
  360. package/src/calendar/utils.ts +227 -0
  361. package/src/checkbox/createCheckbox.ts +13 -21
  362. package/src/checkbox/createCheckboxGroup.ts +68 -44
  363. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  364. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  365. package/src/checkbox/index.ts +8 -10
  366. package/src/collections/index.ts +33 -29
  367. package/src/color/createColorArea.ts +232 -154
  368. package/src/color/createColorField.ts +107 -58
  369. package/src/color/createColorSlider.ts +231 -73
  370. package/src/color/createColorSwatch.ts +38 -13
  371. package/src/color/createColorWheel.ts +208 -83
  372. package/src/color/index.ts +6 -6
  373. package/src/color/types.ts +98 -16
  374. package/src/combobox/createComboBox.ts +157 -100
  375. package/src/combobox/index.ts +1 -1
  376. package/src/combobox/intl/index.ts +5 -5
  377. package/src/datepicker/createDateField.ts +192 -39
  378. package/src/datepicker/createDatePicker.ts +260 -67
  379. package/src/datepicker/createDatePickerGroup.ts +149 -0
  380. package/src/datepicker/createDateRangePicker.ts +105 -57
  381. package/src/datepicker/createDateSegment.ts +183 -96
  382. package/src/datepicker/createTimeField.ts +38 -34
  383. package/src/datepicker/createTimeSegment.ts +67 -85
  384. package/src/datepicker/index.ts +13 -14
  385. package/src/dialog/createDialog.ts +45 -38
  386. package/src/dialog/index.ts +2 -2
  387. package/src/dialog/types.ts +4 -4
  388. package/src/disclosure/createDisclosure.ts +138 -33
  389. package/src/disclosure/createDisclosureGroup.ts +8 -21
  390. package/src/disclosure/index.ts +2 -2
  391. package/src/dnd/createDrag.ts +19 -25
  392. package/src/dnd/createDraggableCollection.ts +4 -4
  393. package/src/dnd/createDraggableItem.ts +20 -19
  394. package/src/dnd/createDrop.ts +42 -51
  395. package/src/dnd/createDroppableCollection.ts +290 -173
  396. package/src/dnd/createDroppableItem.ts +34 -34
  397. package/src/dnd/index.ts +23 -12
  398. package/src/dnd/types.ts +4 -7
  399. package/src/dnd/utils.ts +36 -49
  400. package/src/focus/FocusScope.tsx +155 -164
  401. package/src/focus/createAutoFocus.ts +4 -20
  402. package/src/focus/createFocusRestore.ts +15 -28
  403. package/src/focus/createVirtualFocus.ts +20 -36
  404. package/src/focus/index.ts +4 -8
  405. package/src/form/createFormReset.ts +4 -4
  406. package/src/form/createFormValidation.ts +20 -43
  407. package/src/form/index.ts +2 -5
  408. package/src/grid/GridKeyboardDelegate.ts +30 -30
  409. package/src/grid/createGrid.ts +36 -36
  410. package/src/grid/createGridCell.ts +18 -18
  411. package/src/grid/createGridRow.ts +14 -14
  412. package/src/grid/index.ts +5 -5
  413. package/src/grid/types.ts +8 -8
  414. package/src/gridlist/createGridList.ts +34 -29
  415. package/src/gridlist/createGridListItem.ts +68 -23
  416. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  417. package/src/gridlist/index.ts +4 -4
  418. package/src/gridlist/types.ts +11 -7
  419. package/src/i18n/createCollator.ts +5 -18
  420. package/src/i18n/createDateFormatter.ts +5 -13
  421. package/src/i18n/createFilter.ts +11 -24
  422. package/src/i18n/createNumberFormatter.ts +4 -6
  423. package/src/i18n/createStringFormatter.ts +19 -15
  424. package/src/i18n/index.ts +8 -11
  425. package/src/i18n/locale.tsx +15 -40
  426. package/src/i18n/utils.ts +35 -39
  427. package/src/index.ts +68 -169
  428. package/src/interactions/FocusableProvider.tsx +3 -7
  429. package/src/interactions/PressEvent.ts +4 -4
  430. package/src/interactions/createFocus.ts +12 -8
  431. package/src/interactions/createFocusRing.ts +21 -19
  432. package/src/interactions/createFocusWithin.ts +20 -13
  433. package/src/interactions/createFocusable.ts +15 -16
  434. package/src/interactions/createHover.ts +70 -55
  435. package/src/interactions/createInteractionModality.ts +75 -82
  436. package/src/interactions/createKeyboard.ts +2 -2
  437. package/src/interactions/createLongPress.ts +23 -23
  438. package/src/interactions/createMove.ts +72 -62
  439. package/src/interactions/createPress.ts +164 -87
  440. package/src/interactions/index.ts +24 -16
  441. package/src/label/createField.ts +18 -19
  442. package/src/label/createLabel.ts +18 -30
  443. package/src/label/createLabels.ts +8 -12
  444. package/src/label/index.ts +5 -5
  445. package/src/landmark/createLandmark.ts +30 -51
  446. package/src/landmark/index.ts +1 -1
  447. package/src/link/createLink.ts +83 -56
  448. package/src/link/index.ts +1 -1
  449. package/src/listbox/createListBox.ts +69 -58
  450. package/src/listbox/createOption.ts +83 -37
  451. package/src/listbox/index.ts +2 -6
  452. package/src/live-announcer/announce.ts +44 -71
  453. package/src/live-announcer/index.ts +1 -1
  454. package/src/menu/createMenu.ts +79 -50
  455. package/src/menu/createMenuItem.ts +79 -27
  456. package/src/menu/createMenuTrigger.ts +15 -15
  457. package/src/menu/index.ts +3 -12
  458. package/src/meter/createMeter.ts +7 -15
  459. package/src/meter/index.ts +1 -1
  460. package/src/numberfield/createNumberField.ts +138 -81
  461. package/src/numberfield/index.ts +1 -1
  462. package/src/overlays/ariaHideOutside.ts +14 -10
  463. package/src/overlays/createInteractOutside.ts +21 -18
  464. package/src/overlays/createModal.tsx +17 -17
  465. package/src/overlays/createOverlay.ts +38 -8
  466. package/src/overlays/createOverlayTrigger.ts +16 -16
  467. package/src/overlays/createPreventScroll.ts +46 -24
  468. package/src/overlays/index.ts +6 -17
  469. package/src/popover/calculatePosition.ts +115 -117
  470. package/src/popover/createOverlayPosition.ts +46 -40
  471. package/src/popover/createPopover.ts +42 -17
  472. package/src/popover/index.ts +3 -3
  473. package/src/progress/createProgressBar.ts +31 -32
  474. package/src/progress/index.ts +1 -1
  475. package/src/radio/createRadio.ts +95 -73
  476. package/src/radio/createRadioGroup.ts +83 -77
  477. package/src/radio/createRadioGroupState.ts +7 -31
  478. package/src/radio/index.ts +3 -8
  479. package/src/searchfield/createSearchField.ts +57 -29
  480. package/src/searchfield/index.ts +2 -2
  481. package/src/select/createHiddenSelect.tsx +57 -44
  482. package/src/select/createSelect.ts +128 -71
  483. package/src/select/index.ts +2 -7
  484. package/src/selection/createTypeSelect.ts +11 -11
  485. package/src/selection/index.ts +1 -1
  486. package/src/separator/createSeparator.ts +20 -25
  487. package/src/separator/index.ts +1 -1
  488. package/src/slider/createSlider.ts +93 -124
  489. package/src/slider/index.ts +2 -2
  490. package/src/ssr/index.tsx +8 -47
  491. package/src/steplist/createStepList.ts +106 -0
  492. package/src/steplist/index.ts +8 -0
  493. package/src/switch/createSwitch.ts +9 -14
  494. package/src/switch/index.ts +1 -1
  495. package/src/table/createTable.ts +152 -85
  496. package/src/table/createTableCell.ts +17 -16
  497. package/src/table/createTableColumnHeader.ts +67 -20
  498. package/src/table/createTableColumnResize.ts +256 -0
  499. package/src/table/createTableHeaderRow.ts +7 -7
  500. package/src/table/createTableRow.ts +149 -29
  501. package/src/table/createTableRowGroup.ts +5 -7
  502. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  503. package/src/table/createTableSelectionCheckbox.ts +8 -8
  504. package/src/table/index.ts +14 -9
  505. package/src/table/types.ts +15 -7
  506. package/src/tabs/createTabs.ts +74 -92
  507. package/src/tabs/index.ts +1 -1
  508. package/src/tag/createTag.ts +52 -50
  509. package/src/tag/createTagGroup.ts +47 -41
  510. package/src/tag/index.ts +2 -6
  511. package/src/textfield/createTextField.ts +67 -35
  512. package/src/textfield/index.ts +1 -5
  513. package/src/toast/createToast.ts +28 -26
  514. package/src/toast/createToastRegion.ts +169 -26
  515. package/src/toast/index.ts +2 -6
  516. package/src/toggle/createToggle.ts +95 -53
  517. package/src/toggle/createToggleState.ts +2 -10
  518. package/src/toggle/index.ts +4 -5
  519. package/src/toolbar/createToolbar.ts +193 -210
  520. package/src/toolbar/index.ts +1 -1
  521. package/src/tooltip/createTooltip.ts +11 -24
  522. package/src/tooltip/createTooltipTrigger.ts +61 -49
  523. package/src/tooltip/index.ts +2 -2
  524. package/src/tree/createTree.ts +35 -37
  525. package/src/tree/createTreeItem.ts +29 -29
  526. package/src/tree/createTreeSelectionCheckbox.ts +11 -8
  527. package/src/tree/index.ts +4 -4
  528. package/src/tree/types.ts +10 -6
  529. package/src/utils/createDescription.ts +6 -23
  530. package/src/utils/dom.ts +61 -54
  531. package/src/utils/env.ts +9 -11
  532. package/src/utils/events.ts +7 -7
  533. package/src/utils/filterDOMProps.ts +49 -49
  534. package/src/utils/focus.ts +60 -68
  535. package/src/utils/geometry.ts +1 -4
  536. package/src/utils/globalListeners.ts +9 -9
  537. package/src/utils/index.ts +12 -22
  538. package/src/utils/mergeProps.ts +42 -15
  539. package/src/utils/platform.ts +2 -2
  540. package/src/utils/reactivity.ts +3 -3
  541. package/src/utils/textSelection.ts +16 -16
  542. package/src/visually-hidden/createVisuallyHidden.ts +16 -28
  543. package/src/visually-hidden/index.ts +1 -1
  544. package/dist/i18n/NumberFormatter.d.ts +0 -43
  545. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  546. package/dist/index.ssr.js +0 -17082
  547. package/dist/index.ssr.js.map +0 -1
  548. package/src/i18n/NumberFormatter.ts +0 -266
@@ -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 = disabled ? undefined : 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
  };
@@ -1,16 +1,12 @@
1
- import type { JSX } from 'solid-js';
2
- import type {
3
- Key,
4
- ToggleGroupProps,
5
- ToggleGroupState,
6
- } from '@proyecto-viviana/solid-stately';
7
- import { createToolbar, type Orientation } from '../toolbar';
8
- import { mergeProps } from '../utils';
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";
9
5
  import {
10
6
  createToggleButton,
11
7
  type AriaToggleButtonProps,
12
8
  type ToggleButtonAria,
13
- } from './createToggleButton';
9
+ } from "./createToggleButton";
14
10
 
15
11
  export interface AriaToggleButtonGroupProps extends ToggleGroupProps {
16
12
  /**
@@ -19,9 +15,9 @@ export interface AriaToggleButtonGroupProps extends ToggleGroupProps {
19
15
  */
20
16
  orientation?: Orientation;
21
17
  /** Accessible label. */
22
- 'aria-label'?: string;
18
+ "aria-label"?: string;
23
19
  /** Labelled-by id. */
24
- 'aria-labelledby'?: string;
20
+ "aria-labelledby"?: string;
25
21
  }
26
22
 
27
23
  export interface ToggleButtonGroupAria {
@@ -29,16 +25,13 @@ export interface ToggleButtonGroupAria {
29
25
  groupProps: JSX.HTMLAttributes<HTMLElement>;
30
26
  }
31
27
 
32
- export interface AriaToggleButtonGroupItemProps
33
- extends Omit<AriaToggleButtonProps, 'children'> {
28
+ export interface AriaToggleButtonGroupItemProps extends Omit<AriaToggleButtonProps, "children"> {
34
29
  /** Key used in the group selection state. */
35
30
  id: Key;
36
31
  }
37
32
 
38
- function isDisabledValue(
39
- isDisabled: AriaToggleButtonProps['isDisabled']
40
- ): boolean {
41
- if (typeof isDisabled === 'function') {
33
+ function isDisabledValue(isDisabled: AriaToggleButtonProps["isDisabled"]): boolean {
34
+ if (typeof isDisabled === "function") {
42
35
  return isDisabled();
43
36
  }
44
37
  return !!isDisabled;
@@ -49,25 +42,25 @@ function isDisabledValue(
49
42
  */
50
43
  export function createToggleButtonGroup(
51
44
  props: AriaToggleButtonGroupProps,
52
- state: ToggleGroupState
45
+ state: ToggleGroupState,
53
46
  ): ToggleButtonGroupAria {
54
47
  const { toolbarProps } = createToolbar({
55
48
  get orientation() {
56
49
  return props.orientation;
57
50
  },
58
- get 'aria-label'() {
59
- return props['aria-label'];
51
+ get "aria-label"() {
52
+ return props["aria-label"];
60
53
  },
61
- get 'aria-labelledby'() {
62
- return props['aria-labelledby'];
54
+ get "aria-labelledby"() {
55
+ return props["aria-labelledby"];
63
56
  },
64
57
  });
65
58
 
66
59
  const groupProps = mergeProps(toolbarProps as Record<string, unknown>, {
67
60
  get role() {
68
- return state.selectionMode === 'single' ? 'radiogroup' : toolbarProps.role;
61
+ return state.selectionMode === "single" ? "radiogroup" : toolbarProps.role;
69
62
  },
70
- get 'aria-disabled'() {
63
+ get "aria-disabled"() {
71
64
  return props.isDisabled || undefined;
72
65
  },
73
66
  }) as JSX.HTMLAttributes<HTMLElement>;
@@ -80,7 +73,7 @@ export function createToggleButtonGroup(
80
73
  */
81
74
  export function createToggleButtonGroupItem(
82
75
  props: AriaToggleButtonGroupItemProps,
83
- state: ToggleGroupState
76
+ state: ToggleGroupState,
84
77
  ): ToggleButtonAria {
85
78
  const { id: _id, ...toggleProps } = props;
86
79
 
@@ -102,22 +95,22 @@ export function createToggleButtonGroupItem(
102
95
  const buttonProps: Record<string, unknown> = {
103
96
  ...baseButtonProps,
104
97
  get role() {
105
- if (state.selectionMode === 'single') {
106
- return 'radio';
98
+ if (state.selectionMode === "single") {
99
+ return "radio";
107
100
  }
108
101
  return baseButtonProps.role as string | undefined;
109
102
  },
110
- get 'aria-checked'() {
111
- if (state.selectionMode !== 'single') {
103
+ get "aria-checked"() {
104
+ if (state.selectionMode !== "single") {
112
105
  return undefined;
113
106
  }
114
107
  return state.selectedKeys.has(props.id);
115
108
  },
116
- get 'aria-pressed'() {
117
- if (state.selectionMode === 'single') {
109
+ get "aria-pressed"() {
110
+ if (state.selectionMode === "single") {
118
111
  return undefined;
119
112
  }
120
- return baseButtonProps['aria-pressed'];
113
+ return baseButtonProps["aria-pressed"];
121
114
  },
122
115
  };
123
116
 
@@ -1,13 +1,10 @@
1
- export { createButton } from './createButton';
2
- export { createToggleButton } from './createToggleButton';
3
- export {
4
- createToggleButtonGroup,
5
- createToggleButtonGroupItem,
6
- } from './createToggleButtonGroup';
7
- export type { AriaButtonProps, ButtonAria } from './types';
8
- 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";
9
6
  export type {
10
7
  AriaToggleButtonGroupProps,
11
8
  ToggleButtonGroupAria,
12
9
  AriaToggleButtonGroupItemProps,
13
- } from './createToggleButtonGroup';
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
  },