@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
@@ -5,18 +5,18 @@
5
5
  * Based on @react-aria/datepicker useDateSegment
6
6
  */
7
7
 
8
- import { createSignal, createMemo } from 'solid-js';
9
- import { access, type MaybeAccessor } from '../utils/reactivity';
10
- import type { DateFieldState, DateSegment, DateSegmentType } from '@proyecto-viviana/solid-stately';
11
- import { useLocale } from '../i18n';
12
-
13
- // ============================================
14
- // TYPES
15
- // ============================================
8
+ import { createSignal, createMemo, onCleanup } from "solid-js";
9
+ import { access, type MaybeAccessor } from "../utils/reactivity";
10
+ import type { DateFieldState, DateSegment, DateSegmentType } from "@proyecto-viviana/solid-stately";
11
+ import { useLocale } from "../i18n";
16
12
 
17
13
  export interface AriaDateSegmentProps {
18
14
  /** The segment data. */
19
15
  segment: DateSegment;
16
+ /** The ID of the calendar dialog controlled by this segment (when inside a datepicker). */
17
+ "aria-controls"?: string;
18
+ /** The ID of an element that describes the segment. */
19
+ "aria-describedby"?: string;
20
20
  }
21
21
 
22
22
  export interface DateSegmentAria {
@@ -30,23 +30,25 @@ export interface DateSegmentAria {
30
30
  isPlaceholder: boolean;
31
31
  /** The text to display. */
32
32
  text: string;
33
+ /** Whether the segment is hovered. */
34
+ isHovered: boolean;
35
+ /** Whether the segment has keyboard focus visible. */
36
+ isFocusVisible: boolean;
33
37
  }
34
38
 
35
- // ============================================
36
- // IMPLEMENTATION
37
- // ============================================
38
-
39
39
  /**
40
40
  * Provides the behavior and accessibility implementation for a date segment.
41
41
  */
42
42
  export function createDateSegment<T extends DateFieldState>(
43
43
  props: MaybeAccessor<AriaDateSegmentProps>,
44
44
  state: T,
45
- ref?: () => HTMLElement | null
45
+ ref?: () => HTMLElement | null,
46
46
  ): DateSegmentAria {
47
47
  const getProps = () => access(props);
48
48
  const [isFocused, setIsFocused] = createSignal(false);
49
- const [enteredKeys, setEnteredKeys] = createSignal('');
49
+ const [isFocusVisible, setIsFocusVisible] = createSignal(false);
50
+ const [isHovered, setIsHovered] = createSignal(false);
51
+ const [enteredKeys, setEnteredKeys] = createSignal("");
50
52
  const [isComposing, setIsComposing] = createSignal(false);
51
53
  const locale = useLocale();
52
54
 
@@ -59,25 +61,53 @@ export function createDateSegment<T extends DateFieldState>(
59
61
  return seg.isEditable && !state.isDisabled() && !state.isReadOnly();
60
62
  });
61
63
 
62
- const focusSegment = (target: 'first' | 'last' | 'prev' | 'next') => {
64
+ // Long press state for ArrowUp / ArrowDown
65
+ let longPressTimeout: ReturnType<typeof setTimeout> | null = null;
66
+ let longPressInterval: ReturnType<typeof setInterval> | null = null;
67
+ let hadPointerDown = false;
68
+
69
+ const clearLongPress = () => {
70
+ if (longPressTimeout) {
71
+ clearTimeout(longPressTimeout);
72
+ longPressTimeout = null;
73
+ }
74
+ if (longPressInterval) {
75
+ clearInterval(longPressInterval);
76
+ longPressInterval = null;
77
+ }
78
+ };
79
+
80
+ const startLongPress = (action: () => void) => {
81
+ clearLongPress();
82
+ longPressTimeout = setTimeout(() => {
83
+ action();
84
+ longPressInterval = setInterval(() => {
85
+ action();
86
+ }, 100);
87
+ }, 300);
88
+ };
89
+
90
+ onCleanup(() => {
91
+ clearLongPress();
92
+ });
93
+
94
+ const focusSegment = (target: "first" | "last" | "prev" | "next") => {
63
95
  const el = ref?.();
64
96
  if (!el) return;
65
97
 
66
98
  const container = el.parentElement;
67
99
  if (!container) return;
68
100
 
69
- const segments = Array.from(
70
- container.querySelectorAll<HTMLElement>('[role="spinbutton"]')
71
- );
101
+ const segments = Array.from(container.querySelectorAll<HTMLElement>('[role="spinbutton"]'));
72
102
 
73
103
  if (segments.length === 0) return;
74
104
 
75
- if (target === 'first') {
105
+ if (target === "first") {
76
106
  segments[0]?.focus();
77
107
  return;
78
108
  }
79
109
 
80
- if (target === 'last') {
110
+ if (target === "last") {
81
111
  segments[segments.length - 1]?.focus();
82
112
  return;
83
113
  }
@@ -85,7 +115,7 @@ export function createDateSegment<T extends DateFieldState>(
85
115
  const currentIndex = segments.indexOf(el);
86
116
  if (currentIndex < 0) return;
87
117
 
88
- const nextIndex = target === 'next' ? currentIndex + 1 : currentIndex - 1;
118
+ const nextIndex = target === "next" ? currentIndex + 1 : currentIndex - 1;
89
119
  if (nextIndex >= 0 && nextIndex < segments.length) {
90
120
  segments[nextIndex]?.focus();
91
121
  }
@@ -93,7 +123,7 @@ export function createDateSegment<T extends DateFieldState>(
93
123
 
94
124
  const clearCurrentSegment = (type: DateSegmentType) => {
95
125
  state.clearSegment(type);
96
- setEnteredKeys('');
126
+ setEnteredKeys("");
97
127
  };
98
128
 
99
129
  // Handle keyboard input
@@ -104,43 +134,52 @@ export function createDateSegment<T extends DateFieldState>(
104
134
  const seg = segment();
105
135
  const type = seg.type;
106
136
 
107
- if (type === 'literal') return;
137
+ if (type === "literal") return;
138
+
139
+ // Keyboard interaction means focus is visible
140
+ setIsFocusVisible(true);
108
141
 
109
142
  switch (e.key) {
110
- case 'ArrowRight':
143
+ case "ArrowRight":
111
144
  e.preventDefault();
112
- focusSegment(locale().direction === 'rtl' ? 'prev' : 'next');
145
+ focusSegment(locale().direction === "rtl" ? "prev" : "next");
113
146
  break;
114
- case 'ArrowLeft':
147
+ case "ArrowLeft":
115
148
  e.preventDefault();
116
- focusSegment(locale().direction === 'rtl' ? 'next' : 'prev');
149
+ focusSegment(locale().direction === "rtl" ? "next" : "prev");
117
150
  break;
118
- case 'ArrowUp':
151
+ case "ArrowUp":
119
152
  e.preventDefault();
120
153
  state.incrementSegment(type);
154
+ if (!e.repeat) {
155
+ startLongPress(() => state.incrementSegment(type));
156
+ }
121
157
  break;
122
- case 'ArrowDown':
158
+ case "ArrowDown":
123
159
  e.preventDefault();
124
160
  state.decrementSegment(type);
161
+ if (!e.repeat) {
162
+ startLongPress(() => state.decrementSegment(type));
163
+ }
125
164
  break;
126
- case 'Home':
165
+ case "Home":
127
166
  e.preventDefault();
128
- focusSegment('first');
167
+ focusSegment("first");
129
168
  break;
130
- case 'End':
169
+ case "End":
131
170
  e.preventDefault();
132
- focusSegment('last');
171
+ focusSegment("last");
133
172
  break;
134
- case 'Backspace':
173
+ case "Backspace":
135
174
  e.preventDefault();
136
175
  // Match common date-field UX: backspace on an empty placeholder moves to previous segment.
137
176
  if (seg.isPlaceholder) {
138
- focusSegment('prev');
177
+ focusSegment("prev");
139
178
  } else {
140
179
  clearCurrentSegment(type);
141
180
  }
142
181
  break;
143
- case 'Delete':
182
+ case "Delete":
144
183
  e.preventDefault();
145
184
  clearCurrentSegment(type);
146
185
  break;
@@ -155,12 +194,12 @@ export function createDateSegment<T extends DateFieldState>(
155
194
  }
156
195
  };
157
196
 
197
+ const handleKeyUp = () => {
198
+ clearLongPress();
199
+ };
200
+
158
201
  // Handle numeric input
159
- const handleNumericInput = (
160
- key: string,
161
- type: DateSegmentType,
162
- seg: DateSegment
163
- ) => {
202
+ const handleNumericInput = (key: string, type: DateSegmentType, seg: DateSegment) => {
164
203
  const newKeys = enteredKeys() + key;
165
204
  const numValue = parseInt(newKeys, 10);
166
205
  const maxValue = seg.maxValue ?? 99;
@@ -172,10 +211,10 @@ export function createDateSegment<T extends DateFieldState>(
172
211
  state.setSegment(type, numValue);
173
212
 
174
213
  // If entering more digits wouldn't make sense, clear entered keys
175
- const potentialNextValue = parseInt(newKeys + '0', 10);
214
+ const potentialNextValue = parseInt(newKeys + "0", 10);
176
215
  if (potentialNextValue > maxValue || newKeys.length >= maxDigits) {
177
- setEnteredKeys('');
178
- focusSegment('next');
216
+ setEnteredKeys("");
217
+ focusSegment("next");
179
218
  } else {
180
219
  setEnteredKeys(newKeys);
181
220
  }
@@ -184,15 +223,15 @@ export function createDateSegment<T extends DateFieldState>(
184
223
  const singleValue = parseInt(key, 10);
185
224
  if (singleValue >= minValue && singleValue <= maxValue) {
186
225
  state.setSegment(type, singleValue);
187
- const potentialNextValue = parseInt(key + '0', 10);
226
+ const potentialNextValue = parseInt(key + "0", 10);
188
227
  if (potentialNextValue > maxValue || key.length >= maxDigits) {
189
- setEnteredKeys('');
190
- focusSegment('next');
228
+ setEnteredKeys("");
229
+ focusSegment("next");
191
230
  } else {
192
231
  setEnteredKeys(key);
193
232
  }
194
233
  } else {
195
- setEnteredKeys('');
234
+ setEnteredKeys("");
196
235
  }
197
236
  }
198
237
  };
@@ -202,15 +241,15 @@ export function createDateSegment<T extends DateFieldState>(
202
241
  if (isComposing()) return;
203
242
 
204
243
  const seg = segment();
205
- if (seg.type === 'literal') return;
244
+ if (seg.type === "literal") return;
206
245
 
207
- if (e.inputType === 'deleteContentBackward' || e.inputType === 'deleteContentForward') {
246
+ if (e.inputType === "deleteContentBackward" || e.inputType === "deleteContentForward") {
208
247
  e.preventDefault();
209
248
  clearCurrentSegment(seg.type);
210
249
  return;
211
250
  }
212
251
 
213
- if (e.inputType === 'insertText' && e.data) {
252
+ if (e.inputType === "insertText" && e.data) {
214
253
  const normalizedDigit = normalizeDigit(e.data);
215
254
  if (!normalizedDigit) return;
216
255
  e.preventDefault();
@@ -221,7 +260,7 @@ export function createDateSegment<T extends DateFieldState>(
221
260
  const handleCompositionStart = () => {
222
261
  if (!isEditable()) return;
223
262
  setIsComposing(true);
224
- setEnteredKeys('');
263
+ setEnteredKeys("");
225
264
  };
226
265
 
227
266
  const handleCompositionEnd = (e: CompositionEvent) => {
@@ -229,9 +268,9 @@ export function createDateSegment<T extends DateFieldState>(
229
268
  setIsComposing(false);
230
269
 
231
270
  const seg = segment();
232
- if (seg.type === 'literal') return;
271
+ if (seg.type === "literal") return;
233
272
 
234
- const digits = extractNormalizedDigits(e.data ?? '');
273
+ const digits = extractNormalizedDigits(e.data ?? "");
235
274
  if (digits.length === 0) return;
236
275
 
237
276
  for (const digit of digits) {
@@ -242,53 +281,99 @@ export function createDateSegment<T extends DateFieldState>(
242
281
  // Handle focus
243
282
  const handleFocus = () => {
244
283
  setIsFocused(true);
245
- setEnteredKeys('');
284
+ setEnteredKeys("");
285
+
286
+ if (!hadPointerDown) {
287
+ setIsFocusVisible(true);
288
+ }
289
+ hadPointerDown = false;
290
+
291
+ // Select all text in the segment
292
+ const el = ref?.();
293
+ if (el && typeof window !== "undefined") {
294
+ const selection = window.getSelection();
295
+ if (selection) {
296
+ const range = new Range();
297
+ range.selectNodeContents(el);
298
+ selection.removeAllRanges();
299
+ selection.addRange(range);
300
+ }
301
+ }
246
302
  };
247
303
 
248
304
  const handleBlur = () => {
249
305
  setIsFocused(false);
250
- setEnteredKeys('');
306
+ setIsFocusVisible(false);
307
+ setEnteredKeys("");
308
+ clearLongPress();
251
309
  state.confirmPlaceholder();
252
310
  };
253
311
 
312
+ const handleMouseEnter = () => {
313
+ setIsHovered(true);
314
+ };
315
+
316
+ const handleMouseLeave = () => {
317
+ setIsHovered(false);
318
+ };
319
+
254
320
  // Segment props
255
321
  const segmentProps = createMemo(() => {
256
322
  const seg = segment();
257
323
  const type = seg.type;
324
+ const p = getProps();
258
325
 
259
326
  // Literal segments don't need interaction props
260
- if (type === 'literal') {
327
+ if (type === "literal") {
261
328
  return {
262
- 'aria-hidden': true,
329
+ "aria-hidden": true,
263
330
  };
264
331
  }
265
332
 
266
333
  return {
267
- role: 'spinbutton',
334
+ role: "spinbutton",
268
335
  tabIndex: isEditable() ? 0 : -1,
269
- 'aria-label': getSegmentLabel(type, locale().locale),
270
- 'aria-valuenow': seg.value,
271
- 'aria-valuemin': seg.minValue,
272
- 'aria-valuemax': seg.maxValue,
273
- 'aria-valuetext': seg.isPlaceholder ? seg.placeholder : seg.text,
274
- 'aria-readonly': state.isReadOnly() || undefined,
275
- 'aria-disabled': state.isDisabled() || undefined,
276
- 'aria-invalid': state.isInvalid() || undefined,
336
+ "aria-label": getSegmentLabel(type, locale().locale),
337
+ "aria-valuenow": seg.value,
338
+ "aria-valuemin": seg.minValue,
339
+ "aria-valuemax": seg.maxValue,
340
+ "aria-valuetext": seg.isPlaceholder ? "" : seg.text,
341
+ "aria-readonly": state.isReadOnly() || undefined,
342
+ "aria-disabled": state.isDisabled() || undefined,
343
+ "aria-invalid": state.isInvalid() || undefined,
344
+ "aria-controls": p["aria-controls"] || undefined,
345
+ "aria-describedby": p["aria-describedby"] || undefined,
277
346
  contentEditable: isEditable(),
278
347
  suppressContentEditableWarning: true,
279
- inputMode: 'numeric' as const,
280
- autoCorrect: 'off',
281
- enterKeyHint: 'next' as const,
348
+ inputMode: "numeric" as const,
349
+ autoCorrect: "off",
350
+ enterKeyHint: "next" as const,
282
351
  spellCheck: false,
352
+ "data-placeholder": seg.isPlaceholder ? "true" : undefined,
353
+ "data-readonly": state.isReadOnly() || undefined,
354
+ "data-disabled": state.isDisabled() || undefined,
355
+ "data-invalid": state.isInvalid() || undefined,
356
+ "data-type": seg.type,
357
+ "data-hovered": isHovered() || undefined,
358
+ "data-focused": isFocused() || undefined,
359
+ "data-focus-visible": isFocusVisible() || undefined,
283
360
  onKeyDown: handleKeyDown,
361
+ onKeyUp: handleKeyUp,
284
362
  onFocus: handleFocus,
285
363
  onBlur: handleBlur,
286
364
  onBeforeInput: handleBeforeInput,
287
365
  onCompositionStart: handleCompositionStart,
288
366
  onCompositionEnd: handleCompositionEnd,
289
- onMouseDown: (e: MouseEvent) => {
367
+ onMouseEnter: handleMouseEnter,
368
+ onMouseLeave: handleMouseLeave,
369
+ onPointerDown: (e: PointerEvent) => {
290
370
  // Prevent cursor positioning in the middle of the segment
291
371
  e.preventDefault();
372
+ hadPointerDown = true;
373
+ setIsFocusVisible(false);
374
+ },
375
+ onPointerUp: () => {
376
+ clearLongPress();
292
377
  },
293
378
  };
294
379
  });
@@ -315,42 +400,44 @@ export function createDateSegment<T extends DateFieldState>(
315
400
  get text() {
316
401
  return text();
317
402
  },
403
+ get isHovered() {
404
+ return isHovered();
405
+ },
406
+ get isFocusVisible() {
407
+ return isFocusVisible();
408
+ },
318
409
  };
319
410
  }
320
411
 
321
- // ============================================
322
- // HELPER FUNCTIONS
323
- // ============================================
324
-
325
- const SEGMENT_LABELS: Record<string, Record<Exclude<DateSegmentType, 'literal'>, string>> = {
412
+ const SEGMENT_LABELS: Record<string, Record<Exclude<DateSegmentType, "literal">, string>> = {
326
413
  en: {
327
- year: 'Year',
328
- month: 'Month',
329
- day: 'Day',
330
- hour: 'Hour',
331
- minute: 'Minute',
332
- second: 'Second',
333
- dayPeriod: 'AM/PM',
334
- era: 'Era',
335
- timeZoneName: 'Time zone',
414
+ year: "Year",
415
+ month: "Month",
416
+ day: "Day",
417
+ hour: "Hour",
418
+ minute: "Minute",
419
+ second: "Second",
420
+ dayPeriod: "AM/PM",
421
+ era: "Era",
422
+ timeZoneName: "Time zone",
336
423
  },
337
424
  es: {
338
- year: 'Año',
339
- month: 'Mes',
340
- day: 'Día',
341
- hour: 'Hora',
342
- minute: 'Minuto',
343
- second: 'Segundo',
344
- dayPeriod: 'AM/PM',
345
- era: 'Era',
346
- timeZoneName: 'Zona horaria',
425
+ year: "Año",
426
+ month: "Mes",
427
+ day: "Día",
428
+ hour: "Hora",
429
+ minute: "Minuto",
430
+ second: "Segundo",
431
+ dayPeriod: "AM/PM",
432
+ era: "Era",
433
+ timeZoneName: "Zona horaria",
347
434
  },
348
435
  };
349
436
 
350
437
  function getSegmentLabel(type: DateSegmentType, locale: string): string {
351
- if (type === 'literal') return '';
438
+ if (type === "literal") return "";
352
439
 
353
- const language = locale.toLowerCase().split('-')[0] ?? 'en';
440
+ const language = locale.toLowerCase().split("-")[0] ?? "en";
354
441
  const labels = SEGMENT_LABELS[language] ?? SEGMENT_LABELS.en;
355
442
  return labels[type];
356
443
  }
@@ -5,16 +5,12 @@
5
5
  * Based on @react-aria/datepicker useTimeField
6
6
  */
7
7
 
8
- import { createMemo } from 'solid-js';
9
- import { createId } from '../ssr';
10
- import { createLabel } from '../label/createLabel';
11
- import { access, type MaybeAccessor } from '../utils/reactivity';
12
- import { mergeProps } from '../utils/mergeProps';
13
- import type { TimeFieldState, TimeSegment, TimeValue } from '@proyecto-viviana/solid-stately';
14
-
15
- // ============================================
16
- // TYPES
17
- // ============================================
8
+ import { createMemo } from "solid-js";
9
+ import { createId } from "../ssr";
10
+ import { createLabel } from "../label/createLabel";
11
+ import { access, type MaybeAccessor } from "../utils/reactivity";
12
+ import { mergeProps } from "../utils/mergeProps";
13
+ import type { TimeFieldState, TimeSegment, TimeValue } from "@proyecto-viviana/solid-stately";
18
14
 
19
15
  export interface AriaTimeFieldProps {
20
16
  /** An ID for the time field. */
@@ -22,11 +18,11 @@ export interface AriaTimeFieldProps {
22
18
  /** A visible label for the time field. */
23
19
  label?: string;
24
20
  /** An accessible label for the time field. */
25
- 'aria-label'?: string;
21
+ "aria-label"?: string;
26
22
  /** The ID of an element that labels the time field. */
27
- 'aria-labelledby'?: string;
23
+ "aria-labelledby"?: string;
28
24
  /** The ID of an element that describes the time field. */
29
- 'aria-describedby'?: string;
25
+ "aria-describedby"?: string;
30
26
  /** Whether the time field is disabled. */
31
27
  isDisabled?: boolean;
32
28
  /** Whether the time field is read-only. */
@@ -39,6 +35,12 @@ export interface AriaTimeFieldProps {
39
35
  description?: string;
40
36
  /** Error message. */
41
37
  errorMessage?: string;
38
+ /** The name of the input element, used when submitting an HTML form. */
39
+ name?: string;
40
+ /** The id of the form the hidden input belongs to. */
41
+ form?: string;
42
+ /** Describes the autocomplete behavior for the hidden input. */
43
+ autoComplete?: string;
42
44
  }
43
45
 
44
46
  export interface TimeFieldAria {
@@ -56,17 +58,13 @@ export interface TimeFieldAria {
56
58
  segments: TimeSegment[];
57
59
  }
58
60
 
59
- // ============================================
60
- // IMPLEMENTATION
61
- // ============================================
62
-
63
61
  /**
64
62
  * Provides the behavior and accessibility implementation for a time field component.
65
63
  */
66
64
  export function createTimeField<T extends TimeFieldState<TimeValue>>(
67
65
  props: MaybeAccessor<AriaTimeFieldProps>,
68
66
  state: T,
69
- _ref?: () => HTMLElement | null
67
+ _ref?: () => HTMLElement | null,
70
68
  ): TimeFieldAria {
71
69
  const getProps = () => access(props);
72
70
  const id = createId(getProps().id);
@@ -75,26 +73,32 @@ export function createTimeField<T extends TimeFieldState<TimeValue>>(
75
73
 
76
74
  // Create label handling
77
75
  const { labelProps, fieldProps: labelFieldProps } = createLabel({
78
- get label() { return getProps().label; },
79
- get 'aria-label'() { return getProps()['aria-label']; },
80
- get 'aria-labelledby'() { return getProps()['aria-labelledby']; },
81
- labelElementType: 'span',
76
+ get label() {
77
+ return getProps().label;
78
+ },
79
+ get "aria-label"() {
80
+ return getProps()["aria-label"];
81
+ },
82
+ get "aria-labelledby"() {
83
+ return getProps()["aria-labelledby"];
84
+ },
85
+ labelElementType: "span",
82
86
  });
83
87
 
84
88
  // Build aria-describedby
85
89
  const getAriaDescribedBy = () => {
86
90
  const p = getProps();
87
91
  const ids: string[] = [];
88
- if (p['aria-describedby']) {
89
- ids.push(p['aria-describedby']);
92
+ if (p["aria-describedby"]) {
93
+ ids.push(p["aria-describedby"]);
90
94
  }
91
95
  if (p.description) {
92
96
  ids.push(descriptionId);
93
97
  }
94
- if (p.isInvalid && p.errorMessage) {
98
+ if ((p.isInvalid || state.isInvalid()) && p.errorMessage) {
95
99
  ids.push(errorMessageId);
96
100
  }
97
- return ids.length > 0 ? ids.join(' ') : undefined;
101
+ return ids.length > 0 ? ids.join(" ") : undefined;
98
102
  };
99
103
 
100
104
  // Segments from state
@@ -106,18 +110,18 @@ export function createTimeField<T extends TimeFieldState<TimeValue>>(
106
110
 
107
111
  return mergeProps(labelFieldProps as Record<string, unknown>, {
108
112
  id,
109
- role: 'group',
110
- 'aria-disabled': p.isDisabled || state.isDisabled() || undefined,
111
- 'aria-readonly': p.isReadOnly || state.isReadOnly() || undefined,
112
- 'aria-required': p.isRequired || state.isRequired() || undefined,
113
- 'aria-invalid': p.isInvalid || state.isInvalid() || undefined,
114
- 'aria-describedby': getAriaDescribedBy(),
113
+ role: "group",
114
+ "aria-disabled": p.isDisabled || state.isDisabled() || undefined,
115
+ "aria-readonly": p.isReadOnly || state.isReadOnly() || undefined,
116
+ "aria-required": p.isRequired || state.isRequired() || undefined,
117
+ "aria-invalid": p.isInvalid || state.isInvalid() || undefined,
118
+ "aria-describedby": getAriaDescribedBy(),
115
119
  });
116
120
  });
117
121
 
118
122
  // Input container props
119
123
  const inputProps = createMemo(() => ({
120
- role: 'presentation',
124
+ role: "presentation",
121
125
  }));
122
126
 
123
127
  // Description props
@@ -128,7 +132,7 @@ export function createTimeField<T extends TimeFieldState<TimeValue>>(
128
132
  // Error message props
129
133
  const errorMessageProps = createMemo(() => ({
130
134
  id: errorMessageId,
131
- role: 'alert',
135
+ role: "alert",
132
136
  }));
133
137
 
134
138
  return {