@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,268 +1,368 @@
1
- /**
2
- * Provides the behavior and accessibility implementation for a number field.
3
- * Based on @react-aria/numberfield useNumberField.
4
- */
5
-
6
- import { type JSX, createMemo } from 'solid-js';
7
- import { createLabel } from '../label/createLabel';
8
- import { filterDOMProps } from '../utils/filterDOMProps';
9
- import { mergeProps } from '../utils/mergeProps';
10
- import { createId } from '../ssr';
11
- import { access, type MaybeAccessor } from '../utils/reactivity';
12
- import type { NumberFieldState } from '@proyecto-viviana/solid-stately';
13
-
14
- export interface AriaNumberFieldProps {
15
- /** A label for the number field. */
16
- label?: JSX.Element;
17
- /** An accessible label for the number field. */
18
- 'aria-label'?: string;
19
- /** The element ID that labels the number field. */
20
- 'aria-labelledby'?: string;
21
- /** The element ID that describes the number field. */
22
- 'aria-describedby'?: string;
23
- /** Whether the number field is disabled. */
24
- isDisabled?: boolean;
25
- /** Whether the number field is read-only. */
26
- isReadOnly?: boolean;
27
- /** Whether the number field is required. */
28
- isRequired?: boolean;
29
- /** Whether the number field is invalid. */
30
- isInvalid?: boolean;
31
- /** A description for the number field. */
32
- description?: JSX.Element;
33
- /** An error message for the number field. */
34
- errorMessage?: JSX.Element;
35
- /** The ID of the number field. */
36
- id?: string;
37
- /** Whether to auto-focus the input. */
38
- autoFocus?: boolean;
39
- /** The name for the form input. */
40
- name?: string;
41
- }
42
-
43
- export interface NumberFieldAria {
44
- /** Props for the label element. */
45
- labelProps: JSX.HTMLAttributes<HTMLElement>;
46
- /** Props for the input element group. */
47
- groupProps: JSX.HTMLAttributes<HTMLElement>;
48
- /** Props for the input element. */
49
- inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;
50
- /** Props for the increment button. */
51
- incrementButtonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;
52
- /** Props for the decrement button. */
53
- decrementButtonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;
54
- /** Props for the description element. */
55
- descriptionProps: JSX.HTMLAttributes<HTMLElement>;
56
- /** Props for the error message element. */
57
- errorMessageProps: JSX.HTMLAttributes<HTMLElement>;
58
- }
59
-
60
- /**
61
- * Provides the behavior and accessibility implementation for a number field.
62
- */
63
- export function createNumberField(
64
- props: MaybeAccessor<AriaNumberFieldProps>,
65
- state: NumberFieldState,
66
- inputRef?: () => HTMLInputElement | null
67
- ): NumberFieldAria {
68
- const getProps = () => access(props);
69
- const id = createId(getProps().id);
70
-
71
- // Generate IDs for associated elements
72
- const inputId = `${id}-input`;
73
- const incrementId = `${id}-increment`;
74
- const decrementId = `${id}-decrement`;
75
- const descriptionId = `${id}-description`;
76
- const errorMessageId = `${id}-error`;
77
-
78
- // Label handling
79
- const { labelProps, fieldProps } = createLabel({
80
- get id() {
81
- return inputId;
82
- },
83
- get label() {
84
- return getProps().label;
85
- },
86
- get 'aria-label'() {
87
- return getProps()['aria-label'];
88
- },
89
- get 'aria-labelledby'() {
90
- return getProps()['aria-labelledby'];
91
- },
92
- labelElementType: 'span',
93
- });
94
-
95
- // Get the label text for button aria-labels
96
- const getLabelText = (): string => {
97
- const p = getProps();
98
- if (p['aria-label']) return p['aria-label'];
99
- if (typeof p.label === 'string') return p.label;
100
- return 'value';
101
- };
102
-
103
- // Filter DOM props
104
- const domProps = createMemo(() =>
105
- filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true })
106
- );
107
-
108
- // Handle input change
109
- const onInputChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {
110
- const value = e.currentTarget.value;
111
- if (state.validate(value)) {
112
- state.setInputValue(value);
113
- }
114
- };
115
-
116
- // Handle input blur - commit value
117
- const onInputBlur: JSX.EventHandler<HTMLInputElement, FocusEvent> = () => {
118
- state.commit();
119
- };
120
-
121
- // Handle keyboard events
122
- const onKeyDown: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (e) => {
123
- const p = getProps();
124
- if (p.isDisabled || p.isReadOnly) return;
125
-
126
- switch (e.key) {
127
- case 'ArrowUp':
128
- e.preventDefault();
129
- state.increment();
130
- break;
131
- case 'ArrowDown':
132
- e.preventDefault();
133
- state.decrement();
134
- break;
135
- case 'PageUp':
136
- e.preventDefault();
137
- state.incrementToMax();
138
- break;
139
- case 'PageDown':
140
- e.preventDefault();
141
- state.decrementToMin();
142
- break;
143
- case 'Home':
144
- e.preventDefault();
145
- state.decrementToMin();
146
- break;
147
- case 'End':
148
- e.preventDefault();
149
- state.incrementToMax();
150
- break;
151
- case 'Enter':
152
- state.commit();
153
- break;
154
- }
155
- };
156
-
157
- // Handle increment button
158
- const onIncrementPress = () => {
159
- state.increment();
160
- // Return focus to input
161
- inputRef?.()?.focus();
162
- };
163
-
164
- // Handle decrement button
165
- const onDecrementPress = () => {
166
- state.decrement();
167
- // Return focus to input
168
- inputRef?.()?.focus();
169
- };
170
-
171
- // Build aria-describedby
172
- const getAriaDescribedBy = () => {
173
- const p = getProps();
174
- const parts: string[] = [];
175
- if (p['aria-describedby']) parts.push(p['aria-describedby']);
176
- if (p.description) parts.push(descriptionId);
177
- if (p.isInvalid && p.errorMessage) parts.push(errorMessageId);
178
- return parts.length > 0 ? parts.join(' ') : undefined;
179
- };
180
-
181
- return {
182
- get labelProps() {
183
- return labelProps as JSX.HTMLAttributes<HTMLElement>;
184
- },
185
- get groupProps() {
186
- return {
187
- role: 'group',
188
- 'aria-disabled': getProps().isDisabled || undefined,
189
- } as JSX.HTMLAttributes<HTMLElement>;
190
- },
191
- get inputProps() {
192
- const p = getProps();
193
- const isDisabled = p.isDisabled ?? state.isDisabled();
194
- const isReadOnly = p.isReadOnly ?? state.isReadOnly();
195
-
196
- return mergeProps(
197
- domProps(),
198
- fieldProps as Record<string, unknown>,
199
- {
200
- id: inputId,
201
- type: 'text',
202
- inputMode: 'decimal' as const,
203
- autoComplete: 'off',
204
- autoCorrect: 'off',
205
- spellcheck: false,
206
- role: 'spinbutton',
207
- 'aria-valuenow': isNaN(state.numberValue()) ? undefined : state.numberValue(),
208
- 'aria-valuemin': state.minValue(),
209
- 'aria-valuemax': state.maxValue(),
210
- 'aria-valuetext': isNaN(state.numberValue()) ? undefined : state.inputValue(),
211
- 'aria-invalid': p.isInvalid || undefined,
212
- 'aria-required': p.isRequired || undefined,
213
- 'aria-describedby': getAriaDescribedBy(),
214
- disabled: isDisabled || undefined,
215
- readOnly: isReadOnly || undefined,
216
- value: state.inputValue(),
217
- onChange: onInputChange,
218
- onBlur: onInputBlur,
219
- onKeyDown,
220
- name: p.name,
221
- autoFocus: p.autoFocus,
222
- } as Record<string, unknown>
223
- ) as JSX.InputHTMLAttributes<HTMLInputElement>;
224
- },
225
- get incrementButtonProps() {
226
- const p = getProps();
227
- const isDisabled = p.isDisabled ?? state.isDisabled();
228
- const canIncrement = state.canIncrement();
229
-
230
- return {
231
- id: incrementId,
232
- type: 'button' as const,
233
- tabIndex: -1, // Exclude from tab order
234
- 'aria-label': `Increase ${getLabelText()}`,
235
- 'aria-controls': inputId,
236
- disabled: isDisabled || !canIncrement,
237
- onClick: onIncrementPress,
238
- onMouseDown: (e: MouseEvent) => e.preventDefault(), // Prevent focus
239
- } as JSX.ButtonHTMLAttributes<HTMLButtonElement>;
240
- },
241
- get decrementButtonProps() {
242
- const p = getProps();
243
- const isDisabled = p.isDisabled ?? state.isDisabled();
244
- const canDecrement = state.canDecrement();
245
-
246
- return {
247
- id: decrementId,
248
- type: 'button' as const,
249
- tabIndex: -1, // Exclude from tab order
250
- 'aria-label': `Decrease ${getLabelText()}`,
251
- 'aria-controls': inputId,
252
- disabled: isDisabled || !canDecrement,
253
- onClick: onDecrementPress,
254
- onMouseDown: (e: MouseEvent) => e.preventDefault(), // Prevent focus
255
- } as JSX.ButtonHTMLAttributes<HTMLButtonElement>;
256
- },
257
- get descriptionProps() {
258
- return {
259
- id: descriptionId,
260
- } as JSX.HTMLAttributes<HTMLElement>;
261
- },
262
- get errorMessageProps() {
263
- return {
264
- id: errorMessageId,
265
- } as JSX.HTMLAttributes<HTMLElement>;
266
- },
267
- };
268
- }
1
+ /**
2
+ * Provides the behavior and accessibility implementation for a number field.
3
+ * Based on @react-aria/numberfield useNumberField.
4
+ */
5
+
6
+ import { type JSX, createMemo } from "solid-js";
7
+ import { createLabel } from "../label/createLabel";
8
+ import { filterDOMProps } from "../utils/filterDOMProps";
9
+ import { mergeProps } from "../utils/mergeProps";
10
+ import { createId } from "../ssr";
11
+ import { access, type MaybeAccessor } from "../utils/reactivity";
12
+ import type { NumberFieldState } from "@proyecto-viviana/solid-stately";
13
+ import type { AriaButtonProps } from "../button/types";
14
+ import type { PressEvent } from "../interactions";
15
+
16
+ export interface AriaNumberFieldProps {
17
+ /** A label for the number field. */
18
+ label?: JSX.Element;
19
+ /** An accessible label for the number field. */
20
+ "aria-label"?: string;
21
+ /** The element ID that labels the number field. */
22
+ "aria-labelledby"?: string;
23
+ /** The element ID that describes the number field. */
24
+ "aria-describedby"?: string;
25
+ /** Whether the number field is disabled. */
26
+ isDisabled?: boolean;
27
+ /** Whether the number field is read-only. */
28
+ isReadOnly?: boolean;
29
+ /** Whether the number field is required. */
30
+ isRequired?: boolean;
31
+ /** Whether the number field is invalid. */
32
+ isInvalid?: boolean;
33
+ /** A description for the number field. */
34
+ description?: JSX.Element;
35
+ /** An error message for the number field. */
36
+ errorMessage?: JSX.Element;
37
+ /** The ID of the number field. */
38
+ id?: string;
39
+ /** Whether to auto-focus the input. */
40
+ autoFocus?: boolean;
41
+ /** The name for the form input. */
42
+ name?: string;
43
+ /** The form element this input belongs to. */
44
+ form?: string;
45
+ /** Handler for focus events. */
46
+ onFocus?: JSX.EventHandler<HTMLInputElement, FocusEvent>;
47
+ /** Handler for blur events. */
48
+ onBlur?: JSX.EventHandler<HTMLInputElement, FocusEvent>;
49
+ /** Handler called when focus state changes. */
50
+ onFocusChange?: (isFocused: boolean) => void;
51
+ /** Handler for key down events. */
52
+ onKeyDown?: JSX.EventHandler<HTMLInputElement, KeyboardEvent>;
53
+ /** Handler for key up events. */
54
+ onKeyUp?: JSX.EventHandler<HTMLInputElement, KeyboardEvent>;
55
+ /** Handler for paste events. */
56
+ onPaste?: JSX.EventHandler<HTMLInputElement, ClipboardEvent>;
57
+ /** Handler for copy events. */
58
+ onCopy?: JSX.EventHandler<HTMLInputElement, ClipboardEvent>;
59
+ /** Handler for cut events. */
60
+ onCut?: JSX.EventHandler<HTMLInputElement, ClipboardEvent>;
61
+ }
62
+
63
+ export interface NumberFieldAria {
64
+ /** Props for the label element. */
65
+ labelProps: JSX.HTMLAttributes<HTMLElement>;
66
+ /** Props for the input element group. */
67
+ groupProps: JSX.HTMLAttributes<HTMLElement>;
68
+ /** Props for the input element. */
69
+ inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;
70
+ /** Props for the increment button. */
71
+ incrementButtonProps: AriaButtonProps;
72
+ /** Props for the decrement button. */
73
+ decrementButtonProps: AriaButtonProps;
74
+ /** Props for the description element. */
75
+ descriptionProps: JSX.HTMLAttributes<HTMLElement>;
76
+ /** Props for the error message element. */
77
+ errorMessageProps: JSX.HTMLAttributes<HTMLElement>;
78
+ }
79
+
80
+ /**
81
+ * Provides the behavior and accessibility implementation for a number field.
82
+ */
83
+ export function createNumberField(
84
+ props: MaybeAccessor<AriaNumberFieldProps>,
85
+ state: NumberFieldState,
86
+ inputRef?: () => HTMLInputElement | null,
87
+ ): NumberFieldAria {
88
+ const getProps = () => access(props);
89
+ const id = createId(getProps().id);
90
+
91
+ // Generate IDs for associated elements
92
+ const inputId = `${id}-input`;
93
+ const incrementId = `${id}-increment`;
94
+ const decrementId = `${id}-decrement`;
95
+ const descriptionId = `${id}-description`;
96
+ const errorMessageId = `${id}-error`;
97
+
98
+ // Label handling
99
+ const { labelProps, fieldProps } = createLabel({
100
+ get id() {
101
+ return inputId;
102
+ },
103
+ get label() {
104
+ return getProps().label;
105
+ },
106
+ get "aria-label"() {
107
+ return getProps()["aria-label"];
108
+ },
109
+ get "aria-labelledby"() {
110
+ return getProps()["aria-labelledby"];
111
+ },
112
+ labelElementType: "span",
113
+ });
114
+
115
+ // Get the label text for button aria-labels
116
+ const getLabelText = (): string => {
117
+ const p = getProps();
118
+ if (p["aria-label"]) return p["aria-label"];
119
+ if (typeof p.label === "string") return p.label;
120
+ return "value";
121
+ };
122
+
123
+ // Filter DOM props
124
+ const domProps = createMemo(() =>
125
+ filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true }),
126
+ );
127
+
128
+ // Handle input change
129
+ const onInputChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {
130
+ const value = e.currentTarget.value;
131
+ if (state.validate(value)) {
132
+ state.setInputValue(value);
133
+ }
134
+ };
135
+
136
+ // Handle input blur - commit value
137
+ const onInputBlur: JSX.EventHandler<HTMLInputElement, FocusEvent> = (e) => {
138
+ state.commit();
139
+ const p = getProps();
140
+ p.onBlur?.(e);
141
+ p.onFocusChange?.(false);
142
+ };
143
+
144
+ const onInputFocus: JSX.EventHandler<HTMLInputElement, FocusEvent> = (e) => {
145
+ const p = getProps();
146
+ p.onFocus?.(e);
147
+ p.onFocusChange?.(true);
148
+ };
149
+
150
+ // Handle keyboard events
151
+ const onKeyDown: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (e) => {
152
+ const p = getProps();
153
+ if (p.isDisabled || p.isReadOnly) {
154
+ p.onKeyDown?.(e);
155
+ return;
156
+ }
157
+
158
+ switch (e.key) {
159
+ case "ArrowUp":
160
+ e.preventDefault();
161
+ state.increment();
162
+ break;
163
+ case "ArrowDown":
164
+ e.preventDefault();
165
+ state.decrement();
166
+ break;
167
+ case "PageUp":
168
+ e.preventDefault();
169
+ state.incrementToMax();
170
+ break;
171
+ case "PageDown":
172
+ e.preventDefault();
173
+ state.decrementToMin();
174
+ break;
175
+ case "Home":
176
+ e.preventDefault();
177
+ state.decrementToMin();
178
+ break;
179
+ case "End":
180
+ e.preventDefault();
181
+ state.incrementToMax();
182
+ break;
183
+ case "Enter":
184
+ state.commit();
185
+ break;
186
+ }
187
+
188
+ p.onKeyDown?.(e);
189
+ };
190
+
191
+ const onKeyUp: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (e) => {
192
+ getProps().onKeyUp?.(e);
193
+ };
194
+
195
+ const onButtonPressStart = (e: PressEvent) => {
196
+ const input = inputRef?.();
197
+
198
+ // Keep existing input focus in place. This avoids hiding software keyboards
199
+ // and prevents a blur/refocus flicker when mouse pressing the steppers.
200
+ if (input && input.ownerDocument.activeElement === input) {
201
+ return;
202
+ }
203
+
204
+ if (e.pointerType === "mouse") {
205
+ input?.focus();
206
+ } else if (e.target instanceof HTMLElement) {
207
+ e.target.focus();
208
+ }
209
+ };
210
+
211
+ let incrementTouchPressUp = false;
212
+ let decrementTouchPressUp = false;
213
+
214
+ const onIncrementPressStart = (e: PressEvent) => {
215
+ if (e.pointerType !== "touch") {
216
+ state.increment();
217
+ } else {
218
+ incrementTouchPressUp = false;
219
+ }
220
+
221
+ onButtonPressStart(e);
222
+ };
223
+
224
+ const onIncrementPressUp = (e: PressEvent) => {
225
+ if (e.pointerType === "touch") {
226
+ incrementTouchPressUp = true;
227
+ }
228
+ };
229
+
230
+ const onIncrementPressEnd = (e: PressEvent) => {
231
+ if (e.pointerType === "touch" && incrementTouchPressUp) {
232
+ state.increment();
233
+ }
234
+
235
+ incrementTouchPressUp = false;
236
+ };
237
+
238
+ const onDecrementPressStart = (e: PressEvent) => {
239
+ if (e.pointerType !== "touch") {
240
+ state.decrement();
241
+ } else {
242
+ decrementTouchPressUp = false;
243
+ }
244
+
245
+ onButtonPressStart(e);
246
+ };
247
+
248
+ const onDecrementPressUp = (e: PressEvent) => {
249
+ if (e.pointerType === "touch") {
250
+ decrementTouchPressUp = true;
251
+ }
252
+ };
253
+
254
+ const onDecrementPressEnd = (e: PressEvent) => {
255
+ if (e.pointerType === "touch" && decrementTouchPressUp) {
256
+ state.decrement();
257
+ }
258
+
259
+ decrementTouchPressUp = false;
260
+ };
261
+
262
+ // Build aria-describedby
263
+ const getAriaDescribedBy = () => {
264
+ const p = getProps();
265
+ const parts: string[] = [];
266
+ if (p["aria-describedby"]) parts.push(p["aria-describedby"]);
267
+ if (p.description) parts.push(descriptionId);
268
+ if (p.isInvalid && p.errorMessage) parts.push(errorMessageId);
269
+ return parts.length > 0 ? parts.join(" ") : undefined;
270
+ };
271
+
272
+ return {
273
+ get labelProps() {
274
+ return labelProps as JSX.HTMLAttributes<HTMLElement>;
275
+ },
276
+ get groupProps() {
277
+ return {
278
+ role: "group",
279
+ "aria-disabled": getProps().isDisabled || undefined,
280
+ "aria-invalid": getProps().isInvalid || undefined,
281
+ } as JSX.HTMLAttributes<HTMLElement>;
282
+ },
283
+ get inputProps() {
284
+ const p = getProps();
285
+ const isDisabled = p.isDisabled ?? state.isDisabled();
286
+ const isReadOnly = p.isReadOnly ?? state.isReadOnly();
287
+
288
+ return mergeProps(
289
+ domProps(),
290
+ fieldProps as Record<string, unknown>,
291
+ {
292
+ id: inputId,
293
+ type: "text",
294
+ inputMode: "decimal" as const,
295
+ autoComplete: "off",
296
+ autoCorrect: "off",
297
+ spellcheck: false,
298
+ role: "spinbutton",
299
+ "aria-valuenow": isNaN(state.numberValue()) ? undefined : state.numberValue(),
300
+ "aria-valuemin": state.minValue(),
301
+ "aria-valuemax": state.maxValue(),
302
+ "aria-valuetext": isNaN(state.numberValue()) ? undefined : state.inputValue(),
303
+ "aria-invalid": p.isInvalid || undefined,
304
+ "aria-required": p.isRequired || undefined,
305
+ "aria-describedby": getAriaDescribedBy(),
306
+ disabled: isDisabled || undefined,
307
+ readOnly: isReadOnly || undefined,
308
+ required: p.isRequired || undefined,
309
+ value: state.inputValue(),
310
+ onInput: onInputChange,
311
+ onChange: onInputChange,
312
+ onFocus: onInputFocus,
313
+ onBlur: onInputBlur,
314
+ onKeyDown,
315
+ onKeyUp,
316
+ onPaste: p.onPaste,
317
+ onCopy: p.onCopy,
318
+ onCut: p.onCut,
319
+ name: p.name,
320
+ form: p.form,
321
+ autoFocus: p.autoFocus,
322
+ } as Record<string, unknown>,
323
+ ) as JSX.InputHTMLAttributes<HTMLInputElement>;
324
+ },
325
+ get incrementButtonProps() {
326
+ return {
327
+ id: incrementId,
328
+ "aria-label": `Increase ${getLabelText()}`,
329
+ "aria-controls": inputId,
330
+ excludeFromTabOrder: true,
331
+ preventFocusOnPress: true,
332
+ allowFocusWhenDisabled: true,
333
+ get isDisabled() {
334
+ return !state.canIncrement();
335
+ },
336
+ onPressStart: onIncrementPressStart,
337
+ onPressUp: onIncrementPressUp,
338
+ onPressEnd: onIncrementPressEnd,
339
+ } as AriaButtonProps;
340
+ },
341
+ get decrementButtonProps() {
342
+ return {
343
+ id: decrementId,
344
+ "aria-label": `Decrease ${getLabelText()}`,
345
+ "aria-controls": inputId,
346
+ excludeFromTabOrder: true,
347
+ preventFocusOnPress: true,
348
+ allowFocusWhenDisabled: true,
349
+ get isDisabled() {
350
+ return !state.canDecrement();
351
+ },
352
+ onPressStart: onDecrementPressStart,
353
+ onPressUp: onDecrementPressUp,
354
+ onPressEnd: onDecrementPressEnd,
355
+ } as AriaButtonProps;
356
+ },
357
+ get descriptionProps() {
358
+ return {
359
+ id: descriptionId,
360
+ } as JSX.HTMLAttributes<HTMLElement>;
361
+ },
362
+ get errorMessageProps() {
363
+ return {
364
+ id: errorMessageId,
365
+ } as JSX.HTMLAttributes<HTMLElement>;
366
+ },
367
+ };
368
+ }
@@ -1,5 +1,5 @@
1
- export {
2
- createNumberField,
3
- type AriaNumberFieldProps,
4
- type NumberFieldAria,
5
- } from './createNumberField';
1
+ export {
2
+ createNumberField,
3
+ type AriaNumberFieldProps,
4
+ type NumberFieldAria,
5
+ } from "./createNumberField";