@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
@@ -3,11 +3,11 @@
3
3
  * Based on @react-aria/table/useTableCell.
4
4
  */
5
5
 
6
- import { createMemo, createSignal, type Accessor } from 'solid-js';
7
- import type { JSX } from 'solid-js';
8
- import type { TableState, TableCollection } from '@proyecto-viviana/solid-stately';
9
- import type { AriaTableCellProps, TableCellAria } from './types';
10
- import { getTableData } from './createTable';
6
+ import { createMemo, createSignal, type Accessor } from "solid-js";
7
+ import type { JSX } from "solid-js";
8
+ import type { TableState, TableCollection } from "@proyecto-viviana/solid-stately";
9
+ import type { AriaTableCellProps, TableCellAria } from "./types";
10
+ import { getTableData } from "./createTable";
11
11
 
12
12
  /**
13
13
  * Creates accessibility props for a table cell.
@@ -15,7 +15,7 @@ import { getTableData } from './createTable';
15
15
  export function createTableCell<T extends object>(
16
16
  props: Accessor<AriaTableCellProps>,
17
17
  state: Accessor<TableState<T, TableCollection<T>>>,
18
- _ref: Accessor<HTMLTableCellElement | null>
18
+ _ref: Accessor<HTMLTableCellElement | null>,
19
19
  ): TableCellAria {
20
20
  const [isPressed, setIsPressed] = createSignal(false);
21
21
 
@@ -64,7 +64,7 @@ export function createTableCell<T extends object>(
64
64
  if (isDisabled()) return;
65
65
 
66
66
  // Enter triggers cell action
67
- if (e.key === 'Enter') {
67
+ if (e.key === "Enter") {
68
68
  const tableData = getTableData(s);
69
69
  const onCellAction = tableData?.actions.onCellAction;
70
70
 
@@ -103,17 +103,18 @@ export function createTableCell<T extends object>(
103
103
  const tableData = getTableData(s);
104
104
 
105
105
  // Determine the role based on node type
106
- let role: string = 'gridcell';
107
- if (node.type === 'rowheader') {
108
- role = 'rowheader';
106
+ let role: string = "gridcell";
107
+ if (node.type === "rowheader") {
108
+ role = "rowheader";
109
109
  }
110
110
 
111
111
  const baseProps: Record<string, unknown> = {
112
112
  role,
113
- id: tableData && node.parentKey != null
114
- ? `${tableData.tableId}-${node.parentKey}-${node.key}`
115
- : undefined,
116
- 'aria-disabled': isDisabled() || undefined,
113
+ id:
114
+ tableData && node.parentKey != null
115
+ ? `${tableData.tableId}-${node.parentKey}-${node.key}`
116
+ : undefined,
117
+ "aria-disabled": isDisabled() || undefined,
117
118
  tabIndex: isFocused() ? 0 : -1,
118
119
  onClick,
119
120
  onKeyDown,
@@ -124,12 +125,12 @@ export function createTableCell<T extends object>(
124
125
 
125
126
  // Add aria-colindex for virtualized tables
126
127
  if (p.isVirtualized && node.column != null) {
127
- baseProps['aria-colindex'] = node.column + 1; // 1-based
128
+ baseProps["aria-colindex"] = node.column + 1; // 1-based
128
129
  }
129
130
 
130
131
  // Add colspan if present
131
132
  if (node.colspan != null && node.colspan > 1) {
132
- baseProps['aria-colspan'] = node.colspan;
133
+ baseProps["aria-colspan"] = node.colspan;
133
134
  baseProps.colSpan = node.colspan;
134
135
  }
135
136
 
@@ -3,11 +3,11 @@
3
3
  * Based on @react-aria/table/useTableColumnHeader.
4
4
  */
5
5
 
6
- import { createMemo, createSignal, type Accessor } from 'solid-js';
7
- import type { JSX } from 'solid-js';
8
- import type { TableState, TableCollection } from '@proyecto-viviana/solid-stately';
9
- import type { AriaTableColumnHeaderProps, TableColumnHeaderAria } from './types';
10
- import { getTableData } from './createTable';
6
+ import { createMemo, createSignal, type Accessor } from "solid-js";
7
+ import type { JSX } from "solid-js";
8
+ import type { TableState, TableCollection } from "@proyecto-viviana/solid-stately";
9
+ import type { AriaTableColumnHeaderProps, TableColumnHeaderAria } from "./types";
10
+ import { getTableData } from "./createTable";
11
11
 
12
12
  /**
13
13
  * Creates accessibility props for a table column header.
@@ -15,9 +15,11 @@ import { getTableData } from './createTable';
15
15
  export function createTableColumnHeader<T extends object>(
16
16
  props: Accessor<AriaTableColumnHeaderProps>,
17
17
  state: Accessor<TableState<T, TableCollection<T>>>,
18
- _ref: Accessor<HTMLTableCellElement | null>
18
+ _ref: Accessor<HTMLTableCellElement | null>,
19
19
  ): TableColumnHeaderAria {
20
- const [_isPressed, setIsPressed] = createSignal(false);
20
+ const [isPressed, setIsPressed] = createSignal(false);
21
+ let ignoreNextClick = false;
22
+ let ignoreNextClickTimeout: ReturnType<typeof setTimeout> | undefined;
21
23
 
22
24
  const isFocused = createMemo(() => {
23
25
  const s = state();
@@ -25,8 +27,7 @@ export function createTableColumnHeader<T extends object>(
25
27
  return s.focusedKey === p.node.key;
26
28
  });
27
29
 
28
- // Handle click for sorting
29
- const onClick = () => {
30
+ const sortColumn = () => {
30
31
  const s = state();
31
32
  const p = props();
32
33
 
@@ -35,13 +36,44 @@ export function createTableColumnHeader<T extends object>(
35
36
  }
36
37
  };
37
38
 
39
+ const clearPendingClickIgnore = () => {
40
+ if (ignoreNextClickTimeout != null) {
41
+ clearTimeout(ignoreNextClickTimeout);
42
+ ignoreNextClickTimeout = undefined;
43
+ }
44
+ };
45
+
46
+ const ignorePointerGeneratedClick = () => {
47
+ clearPendingClickIgnore();
48
+ ignoreNextClick = true;
49
+ ignoreNextClickTimeout = setTimeout(() => {
50
+ ignoreNextClick = false;
51
+ ignoreNextClickTimeout = undefined;
52
+ }, 0);
53
+ };
54
+
55
+ // Handle click for sorting. Pointer activation is handled on pointerup because
56
+ // focusing the table header can re-render its child content before a native
57
+ // click is dispatched.
58
+ const onClick = () => {
59
+ if (ignoreNextClick) {
60
+ ignoreNextClick = false;
61
+ clearPendingClickIgnore();
62
+ return;
63
+ }
64
+
65
+ sortColumn();
66
+ };
67
+
38
68
  const onKeyDown = (e: KeyboardEvent) => {
39
69
  const p = props();
40
- const s = state();
41
70
 
42
- if (p.allowsSorting && (e.key === 'Enter' || e.key === ' ')) {
71
+ if (
72
+ p.allowsSorting &&
73
+ (e.key === "Enter" || e.key === " " || e.key === "Space" || e.key === "Spacebar")
74
+ ) {
43
75
  e.preventDefault();
44
- s.sort(p.node.key);
76
+ sortColumn();
45
77
  }
46
78
  };
47
79
 
@@ -51,11 +83,24 @@ export function createTableColumnHeader<T extends object>(
51
83
  s.setFocusedKey(p.node.key);
52
84
  };
53
85
 
54
- const onPointerDown = () => {
86
+ const onPointerDown = (e: PointerEvent) => {
87
+ if (e.button !== 0) {
88
+ return;
89
+ }
90
+
55
91
  setIsPressed(true);
56
92
  };
57
93
 
58
94
  const onPointerUp = () => {
95
+ if (isPressed()) {
96
+ ignorePointerGeneratedClick();
97
+ sortColumn();
98
+ }
99
+
100
+ setIsPressed(false);
101
+ };
102
+
103
+ const onPointerCancel = () => {
59
104
  setIsPressed(false);
60
105
  };
61
106
 
@@ -66,20 +111,20 @@ export function createTableColumnHeader<T extends object>(
66
111
  const tableData = getTableData(s);
67
112
 
68
113
  // Determine sort state
69
- let ariaSort: 'none' | 'ascending' | 'descending' | undefined = undefined;
114
+ let ariaSort: "none" | "ascending" | "descending" | undefined = undefined;
70
115
  if (p.allowsSorting) {
71
116
  const sortDescriptor = s.sortDescriptor;
72
117
  if (sortDescriptor?.column === node.key) {
73
118
  ariaSort = sortDescriptor.direction;
74
119
  } else {
75
- ariaSort = 'none';
120
+ ariaSort = "none";
76
121
  }
77
122
  }
78
123
 
79
124
  const baseProps: Record<string, unknown> = {
80
- role: 'columnheader',
125
+ role: "columnheader",
81
126
  id: tableData ? `${tableData.tableId}-${node.key}` : undefined,
82
- 'aria-sort': ariaSort,
127
+ "aria-sort": ariaSort,
83
128
  tabIndex: isFocused() ? 0 : -1,
84
129
  onFocus,
85
130
  };
@@ -90,17 +135,19 @@ export function createTableColumnHeader<T extends object>(
90
135
  baseProps.onKeyDown = onKeyDown;
91
136
  baseProps.onPointerDown = onPointerDown;
92
137
  baseProps.onPointerUp = onPointerUp;
93
- baseProps.style = { cursor: 'pointer' };
138
+ baseProps.onPointerCancel = onPointerCancel;
139
+ baseProps.onPointerLeave = onPointerCancel;
140
+ baseProps.style = { cursor: "pointer" };
94
141
  }
95
142
 
96
143
  // Add aria-colindex for virtualized tables
97
144
  if (p.isVirtualized && node.column != null) {
98
- baseProps['aria-colindex'] = node.column + 1; // 1-based
145
+ baseProps["aria-colindex"] = node.column + 1; // 1-based
99
146
  }
100
147
 
101
148
  // Add colspan if present
102
149
  if (node.colspan != null && node.colspan > 1) {
103
- baseProps['aria-colspan'] = node.colspan;
150
+ baseProps["aria-colspan"] = node.colspan;
104
151
  baseProps.colSpan = node.colspan;
105
152
  }
106
153
 
@@ -0,0 +1,256 @@
1
+ /**
2
+ * ARIA hook for table column resize interactions.
3
+ * Based on @react-aria/table/useTableColumnResize.
4
+ *
5
+ * Provides pointer-drag and keyboard-based column resizing with
6
+ * correct ARIA attributes for screen readers.
7
+ */
8
+
9
+ import { createSignal, createMemo, type Accessor, type JSX } from "solid-js";
10
+ import type { Key, TableColumnResizeState } from "@proyecto-viviana/solid-stately";
11
+ import { useLocale } from "../i18n";
12
+
13
+ export interface CreateTableColumnResizeProps {
14
+ /** The column being resized. */
15
+ column: { key: Key };
16
+ /** Accessible label for the resizer. */
17
+ "aria-label": string;
18
+ /** Whether resizing is disabled. */
19
+ isDisabled?: boolean;
20
+ /** Called when a resize operation starts. */
21
+ onResizeStart?: (widths: Map<Key, number>) => void;
22
+ /** Called during resize with updated widths. */
23
+ onResize?: (widths: Map<Key, number>) => void;
24
+ /** Called when resize operation ends. */
25
+ onResizeEnd?: (widths: Map<Key, number>) => void;
26
+ }
27
+
28
+ export interface TableColumnResizeResult {
29
+ /** Props for the visible resizer handle element (div). */
30
+ resizerProps: JSX.HTMLAttributes<HTMLDivElement>;
31
+ /** Props for the hidden range input (screen reader accessible). */
32
+ inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;
33
+ /** Whether this column is currently being resized. */
34
+ isResizing: Accessor<boolean>;
35
+ }
36
+
37
+ const KEYBOARD_STEP = 10; // px per arrow key press
38
+
39
+ /**
40
+ * Creates ARIA-compliant column resize behavior.
41
+ *
42
+ * Returns props for a visible drag handle (div) and a visually-hidden
43
+ * range input that allows keyboard and screen-reader users to resize columns.
44
+ */
45
+ export function createTableColumnResize(
46
+ props: Accessor<CreateTableColumnResizeProps>,
47
+ state: Accessor<TableColumnResizeState>,
48
+ ): TableColumnResizeResult {
49
+ const getProps = () => props();
50
+ const getState = () => state();
51
+ const locale = useLocale();
52
+
53
+ const [isPointerDragging, setIsPointerDragging] = createSignal(false);
54
+ const [isKeyboardResizing, setIsKeyboardResizing] = createSignal(false);
55
+
56
+ const isResizing = createMemo(() => getState().resizingColumn() === getProps().column.key);
57
+
58
+ const isRtl = createMemo(() => {
59
+ const l = locale();
60
+ return l?.direction === "rtl";
61
+ });
62
+
63
+ // ---- Pointer (mouse/touch) drag ----
64
+
65
+ let startX = 0;
66
+ let startWidth = 0;
67
+
68
+ const onPointerDown = (e: PointerEvent) => {
69
+ if (getProps().isDisabled) return;
70
+ e.preventDefault();
71
+ e.stopPropagation();
72
+
73
+ const key = getProps().column.key;
74
+ startX = e.clientX;
75
+ startWidth = getState().getColumnWidth(key);
76
+
77
+ getState().startResize(key);
78
+ getProps().onResizeStart?.(getState().columnWidths());
79
+ setIsPointerDragging(true);
80
+
81
+ const target = e.currentTarget as HTMLElement;
82
+ target.setPointerCapture(e.pointerId);
83
+ };
84
+
85
+ const onPointerMove = (e: PointerEvent) => {
86
+ if (!isPointerDragging()) return;
87
+ e.preventDefault();
88
+
89
+ const deltaX = e.clientX - startX;
90
+ const direction = isRtl() ? -1 : 1;
91
+ const newWidth = startWidth + deltaX * direction;
92
+
93
+ const key = getProps().column.key;
94
+ const widths = getState().updateResizedColumns(key, newWidth);
95
+ getProps().onResize?.(widths);
96
+ };
97
+
98
+ const onPointerUp = (e: PointerEvent) => {
99
+ if (!isPointerDragging()) return;
100
+ e.preventDefault();
101
+ setIsPointerDragging(false);
102
+ getState().endResize();
103
+ getProps().onResizeEnd?.(getState().columnWidths());
104
+ };
105
+
106
+ // ---- Keyboard resize (on the hidden input) ----
107
+
108
+ const onKeyDown = (e: KeyboardEvent) => {
109
+ if (getProps().isDisabled) return;
110
+
111
+ const key = getProps().column.key;
112
+ const rtlMul = isRtl() ? -1 : 1;
113
+
114
+ switch (e.key) {
115
+ case "Enter": {
116
+ if (isKeyboardResizing()) {
117
+ // End resize
118
+ setIsKeyboardResizing(false);
119
+ getState().endResize();
120
+ getProps().onResizeEnd?.(getState().columnWidths());
121
+ } else {
122
+ // Start resize
123
+ setIsKeyboardResizing(true);
124
+ getState().startResize(key);
125
+ getProps().onResizeStart?.(getState().columnWidths());
126
+ }
127
+ e.preventDefault();
128
+ break;
129
+ }
130
+ case "Escape": {
131
+ if (isKeyboardResizing()) {
132
+ setIsKeyboardResizing(false);
133
+ getState().endResize();
134
+ getProps().onResizeEnd?.(getState().columnWidths());
135
+ e.preventDefault();
136
+ }
137
+ break;
138
+ }
139
+ case "Tab": {
140
+ if (isKeyboardResizing()) {
141
+ setIsKeyboardResizing(false);
142
+ getState().endResize();
143
+ getProps().onResizeEnd?.(getState().columnWidths());
144
+ }
145
+ // Let Tab propagate for focus management
146
+ break;
147
+ }
148
+ case "ArrowRight": {
149
+ if (isKeyboardResizing()) {
150
+ const currentWidth = getState().getColumnWidth(key);
151
+ const widths = getState().updateResizedColumns(
152
+ key,
153
+ currentWidth + KEYBOARD_STEP * rtlMul,
154
+ );
155
+ getProps().onResize?.(widths);
156
+ e.preventDefault();
157
+ }
158
+ break;
159
+ }
160
+ case "ArrowLeft": {
161
+ if (isKeyboardResizing()) {
162
+ const currentWidth = getState().getColumnWidth(key);
163
+ const widths = getState().updateResizedColumns(
164
+ key,
165
+ currentWidth - KEYBOARD_STEP * rtlMul,
166
+ );
167
+ getProps().onResize?.(widths);
168
+ e.preventDefault();
169
+ }
170
+ break;
171
+ }
172
+ }
173
+ };
174
+
175
+ // Handle input change (from screen reader range slider)
176
+ const onInputChange = (e: Event) => {
177
+ const input = e.target as HTMLInputElement;
178
+ const newWidth = parseFloat(input.value);
179
+ if (isNaN(newWidth)) return;
180
+
181
+ const key = getProps().column.key;
182
+ if (!isResizing()) {
183
+ getState().startResize(key);
184
+ getProps().onResizeStart?.(getState().columnWidths());
185
+ }
186
+
187
+ const widths = getState().updateResizedColumns(key, newWidth);
188
+ getProps().onResize?.(widths);
189
+
190
+ // End immediately for discrete input changes
191
+ getState().endResize();
192
+ getProps().onResizeEnd?.(getState().columnWidths());
193
+ };
194
+
195
+ // Visible resize handle props. The accessible resize control is the hidden
196
+ // range input below, matching React Aria's ColumnResizer structure.
197
+ const resizerProps: JSX.HTMLAttributes<HTMLDivElement> = {
198
+ role: "presentation",
199
+ tabIndex: -1,
200
+ style: {
201
+ "touch-action": "none",
202
+ cursor: "col-resize",
203
+ },
204
+ onPointerDown,
205
+ onPointerMove,
206
+ onPointerUp,
207
+ };
208
+
209
+ // Visually hidden range input props
210
+ const inputProps: JSX.InputHTMLAttributes<HTMLInputElement> = {
211
+ get type() {
212
+ return "range";
213
+ },
214
+ get tabIndex() {
215
+ return getProps().isDisabled ? -1 : 0;
216
+ },
217
+ get disabled() {
218
+ return getProps().isDisabled;
219
+ },
220
+ get "aria-label"() {
221
+ return getProps()["aria-label"];
222
+ },
223
+ get "aria-orientation"() {
224
+ return "horizontal" as const;
225
+ },
226
+ get min() {
227
+ return getState().getColumnMinWidth(getProps().column.key);
228
+ },
229
+ get max() {
230
+ const maxW = getState().getColumnMaxWidth(getProps().column.key);
231
+ return maxW === Infinity ? 9999 : maxW;
232
+ },
233
+ get value() {
234
+ return getState().getColumnWidth(getProps().column.key);
235
+ },
236
+ style: {
237
+ position: "absolute",
238
+ width: "1px",
239
+ height: "1px",
240
+ padding: "0",
241
+ margin: "-1px",
242
+ overflow: "hidden",
243
+ clip: "rect(0, 0, 0, 0)",
244
+ "white-space": "nowrap",
245
+ "border-width": "0",
246
+ },
247
+ onKeyDown,
248
+ onChange: onInputChange,
249
+ };
250
+
251
+ return {
252
+ resizerProps,
253
+ inputProps,
254
+ isResizing,
255
+ };
256
+ }
@@ -3,10 +3,10 @@
3
3
  * Based on @react-aria/table/useTableHeaderRow.
4
4
  */
5
5
 
6
- import { createMemo, type Accessor } from 'solid-js';
7
- import type { JSX } from 'solid-js';
8
- import type { TableState, TableCollection } from '@proyecto-viviana/solid-stately';
9
- import type { AriaTableHeaderRowProps, TableHeaderRowAria } from './types';
6
+ import { createMemo, type Accessor } from "solid-js";
7
+ import type { JSX } from "solid-js";
8
+ import type { TableState, TableCollection } from "@proyecto-viviana/solid-stately";
9
+ import type { AriaTableHeaderRowProps, TableHeaderRowAria } from "./types";
10
10
 
11
11
  /**
12
12
  * Creates accessibility props for a table header row.
@@ -14,19 +14,19 @@ import type { AriaTableHeaderRowProps, TableHeaderRowAria } from './types';
14
14
  export function createTableHeaderRow<T extends object>(
15
15
  props: Accessor<AriaTableHeaderRowProps>,
16
16
  _state: Accessor<TableState<T, TableCollection<T>>>,
17
- _ref: Accessor<HTMLTableRowElement | null>
17
+ _ref: Accessor<HTMLTableRowElement | null>,
18
18
  ): TableHeaderRowAria {
19
19
  const rowProps = createMemo(() => {
20
20
  const p = props();
21
21
  const node = p.node;
22
22
 
23
23
  const baseProps: Record<string, unknown> = {
24
- role: 'row',
24
+ role: "row",
25
25
  };
26
26
 
27
27
  // Add aria-rowindex for virtualized tables
28
28
  if (p.isVirtualized && node.rowIndex != null) {
29
- baseProps['aria-rowindex'] = node.rowIndex + 1; // 1-based
29
+ baseProps["aria-rowindex"] = node.rowIndex + 1; // 1-based
30
30
  }
31
31
 
32
32
  return baseProps as JSX.HTMLAttributes<HTMLTableRowElement>;