@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
@@ -3,13 +3,13 @@
3
3
  * Based on @react-aria/table/useTable.
4
4
  */
5
5
 
6
- import { createMemo, createEffect, on, type Accessor } from 'solid-js';
7
- import type { JSX } from 'solid-js';
8
- import { createId } from '@proyecto-viviana/solid-stately';
9
- import type { TableState, TableCollection, Key, GridNode } from '@proyecto-viviana/solid-stately';
10
- import type { AriaTableProps, TableAria } from './types';
11
- import { useLocale } from '../i18n';
12
- import { announce } from '../live-announcer';
6
+ import { createMemo, createEffect, on, type Accessor } from "solid-js";
7
+ import type { JSX } from "solid-js";
8
+ import { createId } from "@proyecto-viviana/solid-stately";
9
+ import type { TableState, TableCollection, Key, GridNode } from "@proyecto-viviana/solid-stately";
10
+ import type { AriaTableProps, TableAria } from "./types";
11
+ import { useLocale } from "../i18n";
12
+ import { announce } from "../live-announcer";
13
13
 
14
14
  // Global map to store table metadata for child components
15
15
  const tableMap = new WeakMap<
@@ -18,7 +18,7 @@ const tableMap = new WeakMap<
18
18
  tableId: string;
19
19
  actions: { onRowAction?: (key: Key) => void; onCellAction?: (key: Key) => void };
20
20
  shouldSelectOnPressUp?: boolean;
21
- focusMode?: 'row' | 'cell';
21
+ focusMode?: "row" | "cell";
22
22
  }
23
23
  >();
24
24
 
@@ -34,13 +34,17 @@ export function getTableData<T>(state: TableState<T, TableCollection<T>>) {
34
34
  */
35
35
  function getChildCells<T>(collection: TableCollection<T>, rowKey: Key): GridNode<T>[] {
36
36
  const children = collection.getChildren(rowKey);
37
- return [...children].filter(node => node.type === 'cell' || node.type === 'rowheader');
37
+ return [...children].filter((node) => node.type === "cell" || node.type === "rowheader");
38
38
  }
39
39
 
40
40
  /**
41
41
  * Helper to get cell at specific index in a row
42
42
  */
43
- function getCellAtIndex<T>(collection: TableCollection<T>, rowKey: Key, index: number): GridNode<T> | null {
43
+ function getCellAtIndex<T>(
44
+ collection: TableCollection<T>,
45
+ rowKey: Key,
46
+ index: number,
47
+ ): GridNode<T> | null {
44
48
  const cells = getChildCells(collection, rowKey);
45
49
  return cells[index] ?? null;
46
50
  }
@@ -49,14 +53,21 @@ function getCellAtIndex<T>(collection: TableCollection<T>, rowKey: Key, index: n
49
53
  * Helper to check if a node is a cell
50
54
  */
51
55
  function isCell<T>(node: GridNode<T> | null): boolean {
52
- return node?.type === 'cell' || node?.type === 'rowheader';
56
+ return node?.type === "cell" || node?.type === "rowheader";
53
57
  }
54
58
 
55
59
  /**
56
60
  * Helper to check if a node is a row
57
61
  */
58
62
  function isRow<T>(node: GridNode<T> | null): boolean {
59
- return node?.type === 'item';
63
+ return node?.type === "item";
64
+ }
65
+
66
+ function focusCurrentElement(el: HTMLElement | null | undefined) {
67
+ const target = el?.querySelector<HTMLElement>(
68
+ '[role="row"][tabindex="0"], [role="rowheader"][tabindex="0"], [role="gridcell"][tabindex="0"], [role="columnheader"][tabindex="0"]',
69
+ );
70
+ target?.focus();
60
71
  }
61
72
 
62
73
  /**
@@ -65,14 +76,16 @@ function isRow<T>(node: GridNode<T> | null): boolean {
65
76
  export function createTable<T extends object>(
66
77
  props: Accessor<AriaTableProps>,
67
78
  state: Accessor<TableState<T, TableCollection<T>>>,
68
- ref: Accessor<HTMLTableElement | null>
79
+ ref: Accessor<HTMLTableElement | null>,
69
80
  ): TableAria {
70
81
  const id = createId(props().id);
71
82
  const locale = useLocale();
72
83
 
73
84
  // Track previous sort descriptor for announcements
74
- let prevSortDescriptor: { column: Key; direction: 'ascending' | 'descending' } | null = null;
85
+ let prevSortDescriptor: { column: Key; direction: "ascending" | "descending" } | null = null;
75
86
  let isFirstRender = true;
87
+ let typeaheadBuffer = "";
88
+ let typeaheadTimeout: ReturnType<typeof setTimeout> | undefined;
76
89
 
77
90
  // Store metadata for child components
78
91
  const storeTableData = () => {
@@ -95,38 +108,83 @@ export function createTable<T extends object>(
95
108
  });
96
109
 
97
110
  // Announce sort changes (only after initial render)
98
- createEffect(on(
99
- () => state().sortDescriptor,
100
- (sortDescriptor) => {
101
- if (isFirstRender) {
102
- isFirstRender = false;
103
- prevSortDescriptor = sortDescriptor;
104
- return;
105
- }
106
-
107
- if (sortDescriptor && (
108
- sortDescriptor.column !== prevSortDescriptor?.column ||
109
- sortDescriptor.direction !== prevSortDescriptor?.direction
110
- )) {
111
- const collection = state().collection;
112
- const column = collection.columns.find(c => c.key === sortDescriptor.column);
113
- const columnName = column?.textValue ?? String(sortDescriptor.column);
114
- const directionText = sortDescriptor.direction === 'ascending' ? 'ascending' : 'descending';
111
+ createEffect(
112
+ on(
113
+ () => state().sortDescriptor,
114
+ (sortDescriptor) => {
115
+ if (isFirstRender) {
116
+ isFirstRender = false;
117
+ prevSortDescriptor = sortDescriptor;
118
+ return;
119
+ }
115
120
 
116
- announce(`Sorted by ${columnName}, ${directionText}`, 'assertive', 500);
117
- }
121
+ if (
122
+ sortDescriptor &&
123
+ (sortDescriptor.column !== prevSortDescriptor?.column ||
124
+ sortDescriptor.direction !== prevSortDescriptor?.direction)
125
+ ) {
126
+ const collection = state().collection;
127
+ const column = collection.columns.find((c) => c.key === sortDescriptor.column);
128
+ const columnName = column?.textValue ?? String(sortDescriptor.column);
129
+ const directionText =
130
+ sortDescriptor.direction === "ascending" ? "ascending" : "descending";
131
+
132
+ announce(`Sorted by ${columnName}, ${directionText}`, "assertive", 500);
133
+ }
118
134
 
119
- prevSortDescriptor = sortDescriptor;
120
- }
121
- ));
135
+ prevSortDescriptor = sortDescriptor;
136
+ },
137
+ ),
138
+ );
122
139
 
123
140
  // Keyboard navigation handler with full 2D navigation
124
141
  const onKeyDown = (e: KeyboardEvent) => {
125
142
  const s = state();
126
143
  const collection = s.collection;
127
144
  const p = props();
128
- const focusMode = p.focusMode ?? 'row';
129
- const isRTL = locale().direction === 'rtl';
145
+ const focusMode = p.focusMode ?? "row";
146
+ const isRTL = locale().direction === "rtl";
147
+ const setFocusedKey = (key: Key) => {
148
+ s.setFocusedKey(key);
149
+ queueMicrotask(() => focusCurrentElement(ref()));
150
+ };
151
+ const runTypeahead = (focusedKey: Key, focusedItem: GridNode<T>) => {
152
+ if (e.key.length !== 1 || e.ctrlKey || e.metaKey || e.altKey) {
153
+ return false;
154
+ }
155
+
156
+ typeaheadBuffer += e.key.toLocaleLowerCase();
157
+ if (typeaheadTimeout) {
158
+ clearTimeout(typeaheadTimeout);
159
+ }
160
+ typeaheadTimeout = setTimeout(() => {
161
+ typeaheadBuffer = "";
162
+ typeaheadTimeout = undefined;
163
+ }, 500);
164
+
165
+ const rows = Array.from(collection).filter((node) => !s.isDisabled(node.key));
166
+ if (rows.length === 0) {
167
+ return true;
168
+ }
169
+
170
+ const currentRowKey =
171
+ isCell(focusedItem) && focusedItem.parentKey != null ? focusedItem.parentKey : focusedKey;
172
+ const currentIndex = rows.findIndex((node) => node.key === currentRowKey);
173
+ const orderedRows =
174
+ currentIndex >= 0
175
+ ? [...rows.slice(currentIndex + 1), ...rows.slice(0, currentIndex + 1)]
176
+ : rows;
177
+ const match = orderedRows.find((node) =>
178
+ collection.getTextValue(node.key).toLocaleLowerCase().startsWith(typeaheadBuffer),
179
+ );
180
+
181
+ if (match) {
182
+ e.preventDefault();
183
+ setFocusedKey(match.key);
184
+ }
185
+
186
+ return true;
187
+ };
130
188
 
131
189
  if (s.isKeyboardNavigationDisabled) {
132
190
  return;
@@ -135,11 +193,11 @@ export function createTable<T extends object>(
135
193
  const focusedKey = s.focusedKey;
136
194
  if (focusedKey == null) {
137
195
  // If nothing is focused, focus the first item
138
- if (e.key === 'ArrowDown' || e.key === 'ArrowUp' || e.key === 'Home' || e.key === 'End') {
196
+ if (e.key === "ArrowDown" || e.key === "ArrowUp" || e.key === "Home" || e.key === "End") {
139
197
  const firstKey = collection.getFirstKey();
140
198
  if (firstKey != null) {
141
199
  e.preventDefault();
142
- s.setFocusedKey(firstKey);
200
+ setFocusedKey(firstKey);
143
201
  }
144
202
  }
145
203
  return;
@@ -151,7 +209,7 @@ export function createTable<T extends object>(
151
209
  let nextKey: Key | null = null;
152
210
 
153
211
  switch (e.key) {
154
- case 'ArrowDown': {
212
+ case "ArrowDown": {
155
213
  e.preventDefault();
156
214
  // If focused on a cell, move to the same column in the next row
157
215
  if (isCell(focusedItem) && focusedItem.parentKey != null) {
@@ -168,7 +226,7 @@ export function createTable<T extends object>(
168
226
  break;
169
227
  }
170
228
 
171
- case 'ArrowUp': {
229
+ case "ArrowUp": {
172
230
  e.preventDefault();
173
231
  // If focused on a cell, move to the same column in the previous row
174
232
  if (isCell(focusedItem) && focusedItem.parentKey != null) {
@@ -185,7 +243,7 @@ export function createTable<T extends object>(
185
243
  break;
186
244
  }
187
245
 
188
- case 'ArrowRight': {
246
+ case "ArrowRight": {
189
247
  e.preventDefault();
190
248
  const goNext = !isRTL;
191
249
 
@@ -203,7 +261,7 @@ export function createTable<T extends object>(
203
261
 
204
262
  if (targetIndex >= 0 && targetIndex < cells.length) {
205
263
  nextKey = cells[targetIndex].key;
206
- } else if (focusMode === 'row') {
264
+ } else if (focusMode === "row") {
207
265
  // Wrap to row
208
266
  nextKey = focusedItem.parentKey;
209
267
  } else {
@@ -214,7 +272,7 @@ export function createTable<T extends object>(
214
272
  break;
215
273
  }
216
274
 
217
- case 'ArrowLeft': {
275
+ case "ArrowLeft": {
218
276
  e.preventDefault();
219
277
  const goNext = isRTL;
220
278
 
@@ -232,7 +290,7 @@ export function createTable<T extends object>(
232
290
 
233
291
  if (targetIndex >= 0 && targetIndex < cells.length) {
234
292
  nextKey = cells[targetIndex].key;
235
- } else if (focusMode === 'row') {
293
+ } else if (focusMode === "row") {
236
294
  // Wrap to row
237
295
  nextKey = focusedItem.parentKey;
238
296
  } else {
@@ -243,13 +301,13 @@ export function createTable<T extends object>(
243
301
  break;
244
302
  }
245
303
 
246
- case 'Home': {
304
+ case "Home": {
247
305
  e.preventDefault();
248
306
  if (e.ctrlKey) {
249
307
  // Ctrl+Home: Go to first row/cell
250
308
  const firstRowKey = collection.getFirstKey();
251
309
  if (firstRowKey != null) {
252
- if (isCell(focusedItem) || focusMode === 'cell') {
310
+ if (isCell(focusedItem) || focusMode === "cell") {
253
311
  const cells = getChildCells(collection, firstRowKey);
254
312
  nextKey = cells[0]?.key ?? firstRowKey;
255
313
  } else {
@@ -267,13 +325,13 @@ export function createTable<T extends object>(
267
325
  break;
268
326
  }
269
327
 
270
- case 'End': {
328
+ case "End": {
271
329
  e.preventDefault();
272
330
  if (e.ctrlKey) {
273
331
  // Ctrl+End: Go to last row/cell
274
332
  const lastRowKey = collection.getLastKey();
275
333
  if (lastRowKey != null) {
276
- if (isCell(focusedItem) || focusMode === 'cell') {
334
+ if (isCell(focusedItem) || focusMode === "cell") {
277
335
  const cells = getChildCells(collection, lastRowKey);
278
336
  nextKey = cells[cells.length - 1]?.key ?? lastRowKey;
279
337
  } else {
@@ -291,11 +349,11 @@ export function createTable<T extends object>(
291
349
  break;
292
350
  }
293
351
 
294
- case 'PageDown': {
352
+ case "PageDown": {
295
353
  e.preventDefault();
296
354
  // Move down by roughly a page (using DOM measurements if available)
297
355
  const el = ref();
298
- if (el) {
356
+ if (el && el.clientHeight > 0) {
299
357
  const visibleHeight = el.clientHeight;
300
358
  let currentKey: Key | null = focusedKey;
301
359
  let traveled = 0;
@@ -329,9 +387,10 @@ export function createTable<T extends object>(
329
387
  } else {
330
388
  // Fallback: move 10 rows
331
389
  let count = 10;
332
- let current: Key | null = isCell(focusedItem) && focusedItem.parentKey != null
333
- ? focusedItem.parentKey
334
- : focusedKey;
390
+ let current: Key | null =
391
+ isCell(focusedItem) && focusedItem.parentKey != null
392
+ ? focusedItem.parentKey
393
+ : focusedKey;
335
394
  while (count > 0 && current != null) {
336
395
  const next = collection.getKeyAfter(current);
337
396
  if (next == null) break;
@@ -348,11 +407,11 @@ export function createTable<T extends object>(
348
407
  break;
349
408
  }
350
409
 
351
- case 'PageUp': {
410
+ case "PageUp": {
352
411
  e.preventDefault();
353
412
  // Move up by roughly a page
354
413
  const el = ref();
355
- if (el) {
414
+ if (el && el.clientHeight > 0) {
356
415
  const visibleHeight = el.clientHeight;
357
416
  let currentKey: Key | null = focusedKey;
358
417
  let traveled = 0;
@@ -384,9 +443,10 @@ export function createTable<T extends object>(
384
443
  } else {
385
444
  // Fallback: move 10 rows
386
445
  let count = 10;
387
- let current: Key | null = isCell(focusedItem) && focusedItem.parentKey != null
388
- ? focusedItem.parentKey
389
- : focusedKey;
446
+ let current: Key | null =
447
+ isCell(focusedItem) && focusedItem.parentKey != null
448
+ ? focusedItem.parentKey
449
+ : focusedKey;
390
450
  while (count > 0 && current != null) {
391
451
  const prev = collection.getKeyBefore(current);
392
452
  if (prev == null) break;
@@ -403,30 +463,33 @@ export function createTable<T extends object>(
403
463
  break;
404
464
  }
405
465
 
406
- case 'Escape':
407
- s.clearSelection();
466
+ case "Escape":
467
+ if (p.escapeKeyBehavior !== "none") {
468
+ s.clearSelection();
469
+ }
408
470
  return;
409
471
 
410
- case 'a':
472
+ case "a":
411
473
  if (e.ctrlKey || e.metaKey) {
412
474
  e.preventDefault();
413
- if (s.selectionMode === 'multiple') {
475
+ if (s.selectionMode === "multiple") {
414
476
  s.selectAll();
415
477
  }
416
478
  }
417
479
  return;
418
480
 
419
- case ' ':
420
- case 'Enter':
481
+ case " ":
482
+ case "Enter":
421
483
  e.preventDefault();
422
484
  // Toggle selection or trigger action
423
- if (s.selectionMode !== 'none') {
485
+ if (s.selectionMode !== "none") {
424
486
  // For cells, select the parent row
425
- const keyToSelect = isCell(focusedItem) && focusedItem.parentKey != null
426
- ? focusedItem.parentKey
427
- : focusedKey;
487
+ const keyToSelect =
488
+ isCell(focusedItem) && focusedItem.parentKey != null
489
+ ? focusedItem.parentKey
490
+ : focusedKey;
428
491
 
429
- if (e.shiftKey && s.selectionMode === 'multiple') {
492
+ if (e.shiftKey && s.selectionMode === "multiple") {
430
493
  s.extendSelection(keyToSelect);
431
494
  } else {
432
495
  s.toggleSelection(keyToSelect);
@@ -435,19 +498,23 @@ export function createTable<T extends object>(
435
498
  return;
436
499
 
437
500
  default:
501
+ if (runTypeahead(focusedKey, focusedItem)) {
502
+ return;
503
+ }
438
504
  return;
439
505
  }
440
506
 
441
507
  if (nextKey != null) {
442
- s.setFocusedKey(nextKey);
508
+ setFocusedKey(nextKey);
443
509
 
444
510
  // Handle shift+arrow for range selection
445
- if (e.shiftKey && s.selectionMode === 'multiple') {
511
+ if (e.shiftKey && s.selectionMode === "multiple") {
446
512
  // For cells, select the parent row
447
513
  const focusedNode = collection.getItem(nextKey);
448
- const keyToSelect = focusedNode && isCell(focusedNode) && focusedNode.parentKey != null
449
- ? focusedNode.parentKey
450
- : nextKey;
514
+ const keyToSelect =
515
+ focusedNode && isCell(focusedNode) && focusedNode.parentKey != null
516
+ ? focusedNode.parentKey
517
+ : nextKey;
451
518
  s.extendSelection(keyToSelect);
452
519
  }
453
520
  }
@@ -488,8 +555,8 @@ export function createTable<T extends object>(
488
555
  // Warn if no label is provided
489
556
  createMemo(() => {
490
557
  const p = props();
491
- if (!p['aria-label'] && !p['aria-labelledby']) {
492
- console.warn('Table: An aria-label or aria-labelledby prop is required for accessibility.');
558
+ if (!p["aria-label"] && !p["aria-labelledby"]) {
559
+ console.warn("Table: An aria-label or aria-labelledby prop is required for accessibility.");
493
560
  }
494
561
  });
495
562
 
@@ -498,12 +565,12 @@ export function createTable<T extends object>(
498
565
  const s = state();
499
566
 
500
567
  const baseProps: Record<string, unknown> = {
501
- role: 'grid',
568
+ role: "grid",
502
569
  id,
503
- 'aria-label': p['aria-label'],
504
- 'aria-labelledby': p['aria-labelledby'],
505
- 'aria-describedby': p['aria-describedby'],
506
- 'aria-multiselectable': s.selectionMode === 'multiple' ? 'true' : undefined,
570
+ "aria-label": p["aria-label"],
571
+ "aria-labelledby": p["aria-labelledby"],
572
+ "aria-describedby": p["aria-describedby"],
573
+ "aria-multiselectable": s.selectionMode === "multiple" ? "true" : undefined,
507
574
  // Keep the grid itself tabbable so keyboard users can enter
508
575
  // row/cell navigation without requiring a prior pointer interaction.
509
576
  tabIndex: 0,
@@ -513,8 +580,8 @@ export function createTable<T extends object>(
513
580
  };
514
581
 
515
582
  if (p.isVirtualized) {
516
- baseProps['aria-rowcount'] = s.collection.rowCount;
517
- baseProps['aria-colcount'] = s.collection.columnCount;
583
+ baseProps["aria-rowcount"] = s.collection.rowCount;
584
+ baseProps["aria-colcount"] = s.collection.columnCount;
518
585
  }
519
586
 
520
587
  return baseProps as JSX.HTMLAttributes<HTMLTableElement>;
@@ -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