@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
@@ -5,220 +5,243 @@
5
5
  * Based on @react-aria/toolbar useToolbar.
6
6
  */
7
7
 
8
- import {
9
- createSignal,
10
- createEffect,
11
- onMount,
12
- onCleanup,
13
- type Accessor,
14
- } from 'solid-js'
15
- import { type MaybeAccessor, access } from '../utils'
16
- import { useLocale } from '../i18n'
17
- import { getOwnerDocument, isFocusable } from '../utils'
18
- import { focusSafely } from '../utils/focus'
19
-
20
- // ============================================
21
- // TYPES
22
- // ============================================
23
-
24
- export type Orientation = 'horizontal' | 'vertical'
8
+ import { createSignal, onMount, onCleanup, type Accessor } from "solid-js";
9
+ import { type MaybeAccessor, access } from "../utils";
10
+ import { useLocale } from "../i18n";
11
+ import { getOwnerDocument, isFocusable } from "../utils";
12
+ import { focusSafely } from "../utils/focus";
13
+
14
+ export type Orientation = "horizontal" | "vertical";
25
15
 
26
16
  export interface AriaToolbarProps {
27
17
  /** The orientation of the toolbar. @default 'horizontal' */
28
- orientation?: MaybeAccessor<Orientation>
18
+ orientation?: MaybeAccessor<Orientation>;
29
19
  /** An accessibility label for the toolbar. */
30
- 'aria-label'?: MaybeAccessor<string>
20
+ "aria-label"?: MaybeAccessor<string>;
31
21
  /** Identifies the element (or elements) that labels the toolbar. */
32
- 'aria-labelledby'?: MaybeAccessor<string>
22
+ "aria-labelledby"?: MaybeAccessor<string>;
33
23
  }
34
24
 
35
25
  export interface ToolbarAria {
36
26
  /** Props for the toolbar container element. */
37
27
  toolbarProps: {
38
- role: 'toolbar' | 'group'
39
- 'aria-orientation': Orientation
40
- 'aria-label'?: string
41
- 'aria-labelledby'?: string
42
- tabIndex?: number
43
- ref: (el: HTMLElement) => void
44
- }
28
+ role: "toolbar" | "group";
29
+ "aria-orientation": Orientation;
30
+ "aria-label"?: string;
31
+ "aria-labelledby"?: string;
32
+ tabIndex?: number;
33
+ ref: (el: HTMLElement) => void;
34
+ };
45
35
  /** The orientation of the toolbar. */
46
- orientation: Accessor<Orientation>
36
+ orientation: Accessor<Orientation>;
47
37
  }
48
38
 
49
- // ============================================
50
- // FOCUS MANAGER FOR TOOLBAR
51
- // ============================================
52
-
53
39
  interface FocusManagerOptions {
54
- from?: Element
55
- tabbable?: boolean
56
- wrap?: boolean
57
- accept?: (node: Element) => boolean
40
+ from?: Element;
41
+ tabbable?: boolean;
42
+ wrap?: boolean;
43
+ accept?: (node: Element) => boolean;
58
44
  }
59
45
 
60
46
  interface FocusManager {
61
- focusNext(opts?: FocusManagerOptions): HTMLElement | null
62
- focusPrevious(opts?: FocusManagerOptions): HTMLElement | null
63
- focusFirst(opts?: FocusManagerOptions): HTMLElement | null
64
- focusLast(opts?: FocusManagerOptions): HTMLElement | null
47
+ focusNext(opts?: FocusManagerOptions): HTMLElement | null;
48
+ focusPrevious(opts?: FocusManagerOptions): HTMLElement | null;
49
+ focusFirst(opts?: FocusManagerOptions): HTMLElement | null;
50
+ focusLast(opts?: FocusManagerOptions): HTMLElement | null;
65
51
  }
66
52
 
67
53
  function isTabbable(element: Element): boolean {
68
54
  if (!isFocusable(element)) {
69
- return false
55
+ return false;
70
56
  }
71
- const tabIndex = element.getAttribute('tabindex')
57
+ const tabIndex = element.getAttribute("tabindex");
72
58
  if (tabIndex != null) {
73
- return parseInt(tabIndex, 10) >= 0
59
+ return parseInt(tabIndex, 10) >= 0;
74
60
  }
75
- return true
61
+ return true;
76
62
  }
77
63
 
78
64
  function getFocusableElements(root: Element, tabbable = false): HTMLElement[] {
79
- const elements: HTMLElement[] = []
80
- const filter = tabbable ? isTabbable : isFocusable
65
+ const elements: HTMLElement[] = [];
66
+ const filter = tabbable ? isTabbable : isFocusable;
81
67
 
82
68
  // Check the root element itself
83
69
  if (filter(root)) {
84
- elements.push(root as HTMLElement)
70
+ elements.push(root as HTMLElement);
85
71
  }
86
72
 
87
73
  // Check all descendants
88
- const descendants = root.querySelectorAll('*')
74
+ const descendants = root.querySelectorAll("*");
89
75
  for (let i = 0; i < descendants.length; i++) {
90
- const el = descendants[i]
76
+ const el = descendants[i];
91
77
  if (filter(el)) {
92
- elements.push(el as HTMLElement)
78
+ elements.push(el as HTMLElement);
93
79
  }
94
80
  }
95
81
 
96
- return elements
82
+ return elements;
97
83
  }
98
84
 
99
85
  function getActiveElement(doc: Document): Element | null {
100
- let activeElement = doc.activeElement
86
+ let activeElement = doc.activeElement;
101
87
  while (activeElement?.shadowRoot?.activeElement) {
102
- activeElement = activeElement.shadowRoot.activeElement
88
+ activeElement = activeElement.shadowRoot.activeElement;
89
+ }
90
+ return activeElement;
91
+ }
92
+
93
+ const TEXT_INPUT_TYPES = new Set([
94
+ "",
95
+ "text",
96
+ "search",
97
+ "url",
98
+ "tel",
99
+ "password",
100
+ "email",
101
+ "number",
102
+ "date",
103
+ "datetime-local",
104
+ "month",
105
+ "time",
106
+ "week",
107
+ ]);
108
+
109
+ function isTextInputLikeElement(target: EventTarget | null): boolean {
110
+ if (!(target instanceof HTMLElement)) {
111
+ return false;
112
+ }
113
+
114
+ if (target.isContentEditable || !!target.closest('[contenteditable="true"]')) {
115
+ return true;
103
116
  }
104
- return activeElement
117
+
118
+ if (target.getAttribute("role") === "textbox") {
119
+ return true;
120
+ }
121
+
122
+ if (target instanceof HTMLTextAreaElement || target instanceof HTMLSelectElement) {
123
+ return true;
124
+ }
125
+
126
+ if (target instanceof HTMLInputElement) {
127
+ const type = target.type.toLowerCase();
128
+ return TEXT_INPUT_TYPES.has(type);
129
+ }
130
+
131
+ return false;
105
132
  }
106
133
 
107
134
  function createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManager {
108
135
  return {
109
136
  focusNext(opts: FocusManagerOptions = {}) {
110
- const root = ref()
111
- if (!root) return null
137
+ const root = ref();
138
+ if (!root) return null;
112
139
 
113
- const { from, tabbable = true, wrap = false, accept } = opts
114
- const doc = getOwnerDocument(root)
115
- const current = from || getActiveElement(doc)
140
+ const { from, tabbable = true, wrap = false, accept } = opts;
141
+ const doc = getOwnerDocument(root);
142
+ const current = from || getActiveElement(doc);
116
143
 
117
- let elements = getFocusableElements(root, tabbable)
144
+ let elements = getFocusableElements(root, tabbable);
118
145
  if (accept) {
119
- elements = elements.filter(accept)
146
+ elements = elements.filter(accept);
120
147
  }
121
148
 
122
- if (!current || elements.length === 0) return null
149
+ if (!current || elements.length === 0) return null;
123
150
 
124
- const currentIndex = elements.indexOf(current as HTMLElement)
125
- let nextIndex = currentIndex + 1
151
+ const currentIndex = elements.indexOf(current as HTMLElement);
152
+ let nextIndex = currentIndex + 1;
126
153
 
127
154
  if (nextIndex >= elements.length) {
128
155
  if (wrap) {
129
- nextIndex = 0
156
+ nextIndex = 0;
130
157
  } else {
131
- return null
158
+ return null;
132
159
  }
133
160
  }
134
161
 
135
- const nextElement = elements[nextIndex]
162
+ const nextElement = elements[nextIndex];
136
163
  if (nextElement) {
137
- focusSafely(nextElement)
138
- return nextElement
164
+ focusSafely(nextElement);
165
+ return nextElement;
139
166
  }
140
167
 
141
- return null
168
+ return null;
142
169
  },
143
170
 
144
171
  focusPrevious(opts: FocusManagerOptions = {}) {
145
- const root = ref()
146
- if (!root) return null
172
+ const root = ref();
173
+ if (!root) return null;
147
174
 
148
- const { from, tabbable = true, wrap = false, accept } = opts
149
- const doc = getOwnerDocument(root)
150
- const current = from || getActiveElement(doc)
175
+ const { from, tabbable = true, wrap = false, accept } = opts;
176
+ const doc = getOwnerDocument(root);
177
+ const current = from || getActiveElement(doc);
151
178
 
152
- let elements = getFocusableElements(root, tabbable)
179
+ let elements = getFocusableElements(root, tabbable);
153
180
  if (accept) {
154
- elements = elements.filter(accept)
181
+ elements = elements.filter(accept);
155
182
  }
156
183
 
157
- if (!current || elements.length === 0) return null
184
+ if (!current || elements.length === 0) return null;
158
185
 
159
- const currentIndex = elements.indexOf(current as HTMLElement)
160
- let prevIndex = currentIndex - 1
186
+ const currentIndex = elements.indexOf(current as HTMLElement);
187
+ let prevIndex = currentIndex - 1;
161
188
 
162
189
  if (prevIndex < 0) {
163
190
  if (wrap) {
164
- prevIndex = elements.length - 1
191
+ prevIndex = elements.length - 1;
165
192
  } else {
166
- return null
193
+ return null;
167
194
  }
168
195
  }
169
196
 
170
- const prevElement = elements[prevIndex]
197
+ const prevElement = elements[prevIndex];
171
198
  if (prevElement) {
172
- focusSafely(prevElement)
173
- return prevElement
199
+ focusSafely(prevElement);
200
+ return prevElement;
174
201
  }
175
202
 
176
- return null
203
+ return null;
177
204
  },
178
205
 
179
206
  focusFirst(opts: FocusManagerOptions = {}) {
180
- const root = ref()
181
- if (!root) return null
207
+ const root = ref();
208
+ if (!root) return null;
182
209
 
183
- const { tabbable = true, accept } = opts
184
- let elements = getFocusableElements(root, tabbable)
210
+ const { tabbable = true, accept } = opts;
211
+ let elements = getFocusableElements(root, tabbable);
185
212
  if (accept) {
186
- elements = elements.filter(accept)
213
+ elements = elements.filter(accept);
187
214
  }
188
215
 
189
216
  if (elements.length > 0) {
190
- focusSafely(elements[0])
191
- return elements[0]
217
+ focusSafely(elements[0]);
218
+ return elements[0];
192
219
  }
193
220
 
194
- return null
221
+ return null;
195
222
  },
196
223
 
197
224
  focusLast(opts: FocusManagerOptions = {}) {
198
- const root = ref()
199
- if (!root) return null
225
+ const root = ref();
226
+ if (!root) return null;
200
227
 
201
- const { tabbable = true, accept } = opts
202
- let elements = getFocusableElements(root, tabbable)
228
+ const { tabbable = true, accept } = opts;
229
+ let elements = getFocusableElements(root, tabbable);
203
230
  if (accept) {
204
- elements = elements.filter(accept)
231
+ elements = elements.filter(accept);
205
232
  }
206
233
 
207
234
  if (elements.length > 0) {
208
- const lastElement = elements[elements.length - 1]
209
- focusSafely(lastElement)
210
- return lastElement
235
+ const lastElement = elements[elements.length - 1];
236
+ focusSafely(lastElement);
237
+ return lastElement;
211
238
  }
212
239
 
213
- return null
240
+ return null;
214
241
  },
215
- }
242
+ };
216
243
  }
217
244
 
218
- // ============================================
219
- // CREATE TOOLBAR HOOK
220
- // ============================================
221
-
222
245
  /**
223
246
  * Provides the behavior and accessibility implementation for a toolbar.
224
247
  * A toolbar is a container for a set of interactive controls with arrow key navigation.
@@ -237,90 +260,124 @@ function createFocusManager(ref: Accessor<HTMLElement | undefined>): FocusManage
237
260
  * ```
238
261
  */
239
262
  export function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {
240
- let toolbarRef: HTMLElement | undefined
241
- const [isInToolbar, setIsInToolbar] = createSignal(false)
242
- let lastFocusedElement: Element | null = null
263
+ let toolbarRef: HTMLElement | undefined;
264
+ const [isInToolbar, setIsInToolbar] = createSignal(false);
265
+ let lastFocusedElement: Element | null = null;
243
266
 
244
- const locale = useLocale()
245
- const orientation = () => access(props.orientation) ?? 'horizontal'
246
- const ariaLabel = () => access(props['aria-label'])
247
- const ariaLabelledby = () => access(props['aria-labelledby'])
267
+ const locale = useLocale();
268
+ const orientation = () => access(props.orientation) ?? "horizontal";
269
+ const ariaLabel = () => access(props["aria-label"]);
270
+ const ariaLabelledby = () => access(props["aria-labelledby"]);
248
271
 
249
- const focusManager = createFocusManager(() => toolbarRef)
272
+ const focusManager = createFocusManager(() => toolbarRef);
250
273
 
251
274
  // Check if this toolbar is nested inside another toolbar
252
275
  onMount(() => {
253
276
  if (toolbarRef) {
254
- const parentToolbar = toolbarRef.parentElement?.closest('[role="toolbar"]')
255
- setIsInToolbar(!!parentToolbar)
277
+ const parentToolbar = toolbarRef.parentElement?.closest('[role="toolbar"]');
278
+ setIsInToolbar(!!parentToolbar);
256
279
  }
257
- })
280
+ });
258
281
 
259
282
  // Keyboard event handler
260
283
  const onKeyDown = (e: KeyboardEvent) => {
284
+ const root = toolbarRef;
285
+ if (!root) return;
286
+
261
287
  // Don't handle if nested toolbar (parent handles navigation)
262
- if (isInToolbar()) return
288
+ if (isInToolbar()) return;
289
+
290
+ const target = e.target;
291
+ if (!(target instanceof Element) || !root.contains(target)) {
292
+ return;
293
+ }
294
+
295
+ // Let modified shortcuts pass through.
296
+ if (e.altKey || e.ctrlKey || e.metaKey || e.shiftKey) {
297
+ return;
298
+ }
263
299
 
264
- const dir = locale().direction
265
- const isRTL = dir === 'rtl'
266
- const isHorizontal = orientation() === 'horizontal'
300
+ // Text entry controls should keep arrow/home/end for caret/value navigation.
301
+ if (isTextInputLikeElement(target)) {
302
+ switch (e.key) {
303
+ case "ArrowRight":
304
+ case "ArrowLeft":
305
+ case "ArrowDown":
306
+ case "ArrowUp":
307
+ case "Home":
308
+ case "End":
309
+ return;
310
+ }
311
+ }
267
312
 
268
- let handled = false
313
+ const dir = locale().direction;
314
+ const isRTL = dir === "rtl";
315
+ const isHorizontal = orientation() === "horizontal";
316
+
317
+ let handled = false;
269
318
 
270
319
  switch (e.key) {
271
- case 'ArrowRight':
320
+ case "ArrowRight":
272
321
  if (isHorizontal) {
273
322
  if (isRTL) {
274
- focusManager.focusPrevious({ tabbable: true })
323
+ focusManager.focusPrevious({ tabbable: true });
275
324
  } else {
276
- focusManager.focusNext({ tabbable: true })
325
+ focusManager.focusNext({ tabbable: true });
277
326
  }
278
- handled = true
327
+ handled = true;
279
328
  }
280
- break
281
- case 'ArrowLeft':
329
+ break;
330
+ case "ArrowLeft":
282
331
  if (isHorizontal) {
283
332
  if (isRTL) {
284
- focusManager.focusNext({ tabbable: true })
333
+ focusManager.focusNext({ tabbable: true });
285
334
  } else {
286
- focusManager.focusPrevious({ tabbable: true })
335
+ focusManager.focusPrevious({ tabbable: true });
287
336
  }
288
- handled = true
337
+ handled = true;
289
338
  }
290
- break
291
- case 'ArrowDown':
339
+ break;
340
+ case "ArrowDown":
292
341
  if (!isHorizontal) {
293
- focusManager.focusNext({ tabbable: true })
294
- handled = true
342
+ focusManager.focusNext({ tabbable: true });
343
+ handled = true;
295
344
  }
296
- break
297
- case 'ArrowUp':
345
+ break;
346
+ case "ArrowUp":
298
347
  if (!isHorizontal) {
299
- focusManager.focusPrevious({ tabbable: true })
300
- handled = true
348
+ focusManager.focusPrevious({ tabbable: true });
349
+ handled = true;
301
350
  }
302
- break
303
- case 'Tab':
351
+ break;
352
+ case "Home":
353
+ focusManager.focusFirst({ tabbable: true });
354
+ handled = true;
355
+ break;
356
+ case "End":
357
+ focusManager.focusLast({ tabbable: true });
358
+ handled = true;
359
+ break;
360
+ case "Tab":
304
361
  // Store the last focused element for re-entry
305
- lastFocusedElement = e.target as Element
306
- break
362
+ lastFocusedElement = e.target as Element;
363
+ break;
307
364
  }
308
365
 
309
366
  if (handled) {
310
- e.preventDefault()
311
- e.stopPropagation()
367
+ e.preventDefault();
368
+ e.stopPropagation();
312
369
  }
313
- }
370
+ };
314
371
 
315
372
  // Focus handler - restore last focused element when re-entering
316
373
  const onFocus = (e: FocusEvent) => {
317
- if (isInToolbar()) return
374
+ if (isInToolbar()) return;
318
375
 
319
376
  // Only restore if focus is coming from outside the toolbar
320
- const root = toolbarRef
321
- if (!root) return
377
+ const root = toolbarRef;
378
+ if (!root) return;
322
379
 
323
- const relatedTarget = e.relatedTarget as Element | null
380
+ const relatedTarget = e.relatedTarget as Element | null;
324
381
 
325
382
  // If focus came from outside and we have a last focused element
326
383
  if (
@@ -329,41 +386,41 @@ export function createToolbar(props: AriaToolbarProps = {}): ToolbarAria {
329
386
  (!relatedTarget || !root.contains(relatedTarget))
330
387
  ) {
331
388
  // Restore focus to the last focused element
332
- focusSafely(lastFocusedElement as HTMLElement)
389
+ focusSafely(lastFocusedElement as HTMLElement);
333
390
  }
334
- }
391
+ };
335
392
 
336
393
  // Set up capture event listeners
337
394
  const setRef = (el: HTMLElement) => {
338
- toolbarRef = el
395
+ toolbarRef = el;
339
396
 
340
397
  // Use capture phase for keyboard events
341
- el.addEventListener('keydown', onKeyDown, true)
342
- el.addEventListener('focus', onFocus, true)
398
+ el.addEventListener("keydown", onKeyDown, true);
399
+ el.addEventListener("focus", onFocus, true);
343
400
 
344
401
  onCleanup(() => {
345
- el.removeEventListener('keydown', onKeyDown, true)
346
- el.removeEventListener('focus', onFocus, true)
347
- })
348
- }
402
+ el.removeEventListener("keydown", onKeyDown, true);
403
+ el.removeEventListener("focus", onFocus, true);
404
+ });
405
+ };
349
406
 
350
407
  return {
351
408
  toolbarProps: {
352
409
  get role() {
353
- return isInToolbar() ? 'group' : 'toolbar'
410
+ return isInToolbar() ? "group" : "toolbar";
354
411
  },
355
- get 'aria-orientation'() {
356
- return orientation()
412
+ get "aria-orientation"() {
413
+ return orientation();
357
414
  },
358
- get 'aria-label'() {
359
- return ariaLabel()
415
+ get "aria-label"() {
416
+ return ariaLabel();
360
417
  },
361
- get 'aria-labelledby'() {
418
+ get "aria-labelledby"() {
362
419
  // Only use aria-labelledby if no aria-label is provided
363
- return ariaLabel() ? undefined : ariaLabelledby()
420
+ return ariaLabel() ? undefined : ariaLabelledby();
364
421
  },
365
422
  ref: setRef,
366
423
  },
367
424
  orientation,
368
- }
425
+ };
369
426
  }
@@ -3,4 +3,4 @@ export {
3
3
  type AriaToolbarProps,
4
4
  type ToolbarAria,
5
5
  type Orientation,
6
- } from './createToolbar'
6
+ } from "./createToolbar";