@proyecto-viviana/solidaria 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -1,321 +1,305 @@
1
- /**
2
- * Auto-focus management for solidaria
3
- *
4
- * Provides priority-based auto-focus with deferred execution
5
- * and conflict resolution for multiple auto-focus elements.
6
- */
7
-
8
- import { createEffect, onCleanup, onMount } from 'solid-js';
9
- import { isServer } from 'solid-js/web';
10
- import { focusSafely } from '../utils/focus';
11
-
12
- // ============================================
13
- // TYPES
14
- // ============================================
15
-
16
- export interface AutoFocusOptions {
17
- /**
18
- * Whether auto-focus is enabled.
19
- * @default true
20
- */
21
- isEnabled?: boolean;
22
- /**
23
- * Priority level (higher = more important).
24
- * When multiple elements request auto-focus, the highest priority wins.
25
- * @default 0
26
- */
27
- priority?: number;
28
- /**
29
- * Delay in milliseconds before focusing.
30
- * Useful for animations or transitions.
31
- * @default 0
32
- */
33
- delay?: number;
34
- /**
35
- * Whether to focus even if another element is already focused.
36
- * @default false
37
- */
38
- force?: boolean;
39
- /**
40
- * Whether to prevent scrolling when focusing.
41
- * @default true
42
- */
43
- preventScroll?: boolean;
44
- /**
45
- * Callback when focus is applied.
46
- */
47
- onFocus?: (element: HTMLElement) => void;
48
- /**
49
- * Callback when focus is skipped (due to lower priority or other reasons).
50
- */
51
- onSkip?: () => void;
52
- }
53
-
54
- export interface AutoFocusResult {
55
- /**
56
- * Manually trigger the auto-focus.
57
- */
58
- focus: () => void;
59
- /**
60
- * Cancel any pending auto-focus.
61
- */
62
- cancel: () => void;
63
- }
64
-
65
- // ============================================
66
- // AUTO-FOCUS QUEUE
67
- // ============================================
68
-
69
- interface QueuedFocus {
70
- ref: () => HTMLElement | null | undefined;
71
- priority: number;
72
- delay: number;
73
- force: boolean;
74
- preventScroll: boolean;
75
- onFocus?: (element: HTMLElement) => void;
76
- onSkip?: () => void;
77
- }
78
-
79
- // Global queue for managing auto-focus requests
80
- let autoFocusQueue: QueuedFocus[] = [];
81
- let processingTimeout: ReturnType<typeof setTimeout> | null = null;
82
-
83
- /**
84
- * Process the auto-focus queue and focus the highest priority element.
85
- */
86
- function processAutoFocusQueue(): void {
87
- if (processingTimeout) {
88
- clearTimeout(processingTimeout);
89
- processingTimeout = null;
90
- }
91
-
92
- if (autoFocusQueue.length === 0) return;
93
-
94
- // Sort by priority (highest first)
95
- autoFocusQueue.sort((a, b) => b.priority - a.priority);
96
-
97
- // Get the highest priority item
98
- const winner = autoFocusQueue[0];
99
- const losers = autoFocusQueue.slice(1);
100
-
101
- // Clear the queue
102
- autoFocusQueue = [];
103
-
104
- // Notify losers
105
- for (const loser of losers) {
106
- loser.onSkip?.();
107
- }
108
-
109
- // Focus the winner
110
- const element = winner.ref();
111
- if (!element) {
112
- winner.onSkip?.();
113
- return;
114
- }
115
-
116
- // Check if we should focus
117
- const activeElement = document.activeElement;
118
- const shouldFocus =
119
- winner.force ||
120
- !activeElement ||
121
- activeElement === document.body ||
122
- activeElement === document.documentElement;
123
-
124
- if (!shouldFocus) {
125
- winner.onSkip?.();
126
- return;
127
- }
128
-
129
- // Apply focus with optional delay
130
- if (winner.delay > 0) {
131
- setTimeout(() => {
132
- const el = winner.ref();
133
- if (el && document.body.contains(el)) {
134
- if (winner.preventScroll) {
135
- focusSafely(el);
136
- } else {
137
- el.focus();
138
- }
139
- winner.onFocus?.(el);
140
- }
141
- }, winner.delay);
142
- } else {
143
- if (winner.preventScroll) {
144
- focusSafely(element);
145
- } else {
146
- element.focus();
147
- }
148
- winner.onFocus?.(element);
149
- }
150
- }
151
-
152
- /**
153
- * Queue an element for auto-focus.
154
- */
155
- function queueAutoFocus(item: QueuedFocus): void {
156
- autoFocusQueue.push(item);
157
-
158
- // Schedule processing on next frame to allow all components to register
159
- if (processingTimeout === null) {
160
- processingTimeout = setTimeout(processAutoFocusQueue, 0);
161
- }
162
- }
163
-
164
- /**
165
- * Remove an item from the auto-focus queue.
166
- */
167
- function removeFromQueue(ref: () => HTMLElement | null | undefined): void {
168
- autoFocusQueue = autoFocusQueue.filter((item) => item.ref !== ref);
169
- }
170
-
171
- // ============================================
172
- // HOOK
173
- // ============================================
174
-
175
- /**
176
- * Creates auto-focus behavior for an element.
177
- *
178
- * This hook registers the element for auto-focus when mounted. If multiple
179
- * elements request auto-focus, the one with the highest priority wins.
180
- *
181
- * @param ref - Accessor for the element to focus
182
- * @param options - Auto-focus options
183
- *
184
- * @example
185
- * ```tsx
186
- * function Dialog(props) {
187
- * let contentRef: HTMLDivElement | undefined;
188
- *
189
- * createAutoFocus(() => contentRef, {
190
- * priority: 10, // High priority for dialogs
191
- * onFocus: () => console.log('Dialog focused'),
192
- * });
193
- *
194
- * return (
195
- * <div ref={contentRef} tabIndex={-1}>
196
- * {props.children}
197
- * </div>
198
- * );
199
- * }
200
- * ```
201
- *
202
- * @example
203
- * ```tsx
204
- * // With delay for animations
205
- * function AnimatedPanel() {
206
- * let panelRef: HTMLDivElement | undefined;
207
- *
208
- * createAutoFocus(() => panelRef, {
209
- * delay: 300, // Wait for animation
210
- * });
211
- *
212
- * return <div ref={panelRef} class="animated-panel">...</div>;
213
- * }
214
- * ```
215
- *
216
- * @example
217
- * ```tsx
218
- * // Conditional auto-focus
219
- * function Input(props) {
220
- * let inputRef: HTMLInputElement | undefined;
221
- *
222
- * createAutoFocus(() => inputRef, {
223
- * isEnabled: props.autoFocus,
224
- * });
225
- *
226
- * return <input ref={inputRef} />;
227
- * }
228
- * ```
229
- */
230
- export function createAutoFocus(
231
- ref: () => HTMLElement | null | undefined,
232
- options: AutoFocusOptions = {}
233
- ): AutoFocusResult {
234
- const {
235
- isEnabled = true,
236
- priority = 0,
237
- delay = 0,
238
- force = false,
239
- preventScroll = true,
240
- onFocus,
241
- onSkip,
242
- } = options;
243
-
244
- // During SSR, return no-op functions
245
- if (isServer) {
246
- return {
247
- focus: () => {},
248
- cancel: () => {},
249
- };
250
- }
251
-
252
- let canceled = false;
253
-
254
- // Queue auto-focus on mount
255
- onMount(() => {
256
- if (!isEnabled || canceled) return;
257
-
258
- queueAutoFocus({
259
- ref,
260
- priority,
261
- delay,
262
- force,
263
- preventScroll,
264
- onFocus,
265
- onSkip,
266
- });
267
- });
268
-
269
- // Remove from queue on cleanup
270
- onCleanup(() => {
271
- removeFromQueue(ref);
272
- });
273
-
274
- const focus = (): void => {
275
- if (canceled) return;
276
-
277
- const element = ref();
278
- if (!element) return;
279
-
280
- if (preventScroll) {
281
- focusSafely(element);
282
- } else {
283
- element.focus();
284
- }
285
- onFocus?.(element);
286
- };
287
-
288
- const cancel = (): void => {
289
- canceled = true;
290
- removeFromQueue(ref);
291
- };
292
-
293
- return {
294
- focus,
295
- cancel,
296
- };
297
- }
298
-
299
- // ============================================
300
- // UTILITIES
301
- // ============================================
302
-
303
- /**
304
- * Clears all pending auto-focus requests.
305
- * Useful for testing or when navigating away.
306
- */
307
- export function clearAutoFocusQueue(): void {
308
- if (processingTimeout) {
309
- clearTimeout(processingTimeout);
310
- processingTimeout = null;
311
- }
312
- autoFocusQueue = [];
313
- }
314
-
315
- /**
316
- * Gets the current auto-focus queue length.
317
- * Useful for debugging.
318
- */
319
- export function getAutoFocusQueueLength(): number {
320
- return autoFocusQueue.length;
321
- }
1
+ /**
2
+ * Auto-focus management for solidaria
3
+ *
4
+ * Provides priority-based auto-focus with deferred execution
5
+ * and conflict resolution for multiple auto-focus elements.
6
+ */
7
+
8
+ import { createEffect, onCleanup, onMount } from "solid-js";
9
+ import { isServer } from "solid-js/web";
10
+ import { focusSafely } from "../utils/focus";
11
+
12
+ export interface AutoFocusOptions {
13
+ /**
14
+ * Whether auto-focus is enabled.
15
+ * @default true
16
+ */
17
+ isEnabled?: boolean;
18
+ /**
19
+ * Priority level (higher = more important).
20
+ * When multiple elements request auto-focus, the highest priority wins.
21
+ * @default 0
22
+ */
23
+ priority?: number;
24
+ /**
25
+ * Delay in milliseconds before focusing.
26
+ * Useful for animations or transitions.
27
+ * @default 0
28
+ */
29
+ delay?: number;
30
+ /**
31
+ * Whether to focus even if another element is already focused.
32
+ * @default false
33
+ */
34
+ force?: boolean;
35
+ /**
36
+ * Whether to prevent scrolling when focusing.
37
+ * @default true
38
+ */
39
+ preventScroll?: boolean;
40
+ /**
41
+ * Callback when focus is applied.
42
+ */
43
+ onFocus?: (element: HTMLElement) => void;
44
+ /**
45
+ * Callback when focus is skipped (due to lower priority or other reasons).
46
+ */
47
+ onSkip?: () => void;
48
+ }
49
+
50
+ export interface AutoFocusResult {
51
+ /**
52
+ * Manually trigger the auto-focus.
53
+ */
54
+ focus: () => void;
55
+ /**
56
+ * Cancel any pending auto-focus.
57
+ */
58
+ cancel: () => void;
59
+ }
60
+
61
+ interface QueuedFocus {
62
+ ref: () => HTMLElement | null | undefined;
63
+ priority: number;
64
+ delay: number;
65
+ force: boolean;
66
+ preventScroll: boolean;
67
+ onFocus?: (element: HTMLElement) => void;
68
+ onSkip?: () => void;
69
+ }
70
+
71
+ // Global queue for managing auto-focus requests
72
+ let autoFocusQueue: QueuedFocus[] = [];
73
+ let processingTimeout: ReturnType<typeof setTimeout> | null = null;
74
+
75
+ /**
76
+ * Process the auto-focus queue and focus the highest priority element.
77
+ */
78
+ function processAutoFocusQueue(): void {
79
+ if (processingTimeout) {
80
+ clearTimeout(processingTimeout);
81
+ processingTimeout = null;
82
+ }
83
+
84
+ if (autoFocusQueue.length === 0) return;
85
+
86
+ // Sort by priority (highest first)
87
+ autoFocusQueue.sort((a, b) => b.priority - a.priority);
88
+
89
+ // Get the highest priority item
90
+ const winner = autoFocusQueue[0];
91
+ const losers = autoFocusQueue.slice(1);
92
+
93
+ // Clear the queue
94
+ autoFocusQueue = [];
95
+
96
+ // Notify losers
97
+ for (const loser of losers) {
98
+ loser.onSkip?.();
99
+ }
100
+
101
+ // Focus the winner
102
+ const element = winner.ref();
103
+ if (!element) {
104
+ winner.onSkip?.();
105
+ return;
106
+ }
107
+
108
+ // Check if we should focus
109
+ const activeElement = document.activeElement;
110
+ const shouldFocus =
111
+ winner.force ||
112
+ !activeElement ||
113
+ activeElement === document.body ||
114
+ activeElement === document.documentElement;
115
+
116
+ if (!shouldFocus) {
117
+ winner.onSkip?.();
118
+ return;
119
+ }
120
+
121
+ // Apply focus with optional delay
122
+ if (winner.delay > 0) {
123
+ setTimeout(() => {
124
+ const el = winner.ref();
125
+ if (el && document.body.contains(el)) {
126
+ if (winner.preventScroll) {
127
+ focusSafely(el);
128
+ } else {
129
+ el.focus();
130
+ }
131
+ winner.onFocus?.(el);
132
+ }
133
+ }, winner.delay);
134
+ } else {
135
+ if (winner.preventScroll) {
136
+ focusSafely(element);
137
+ } else {
138
+ element.focus();
139
+ }
140
+ winner.onFocus?.(element);
141
+ }
142
+ }
143
+
144
+ /**
145
+ * Queue an element for auto-focus.
146
+ */
147
+ function queueAutoFocus(item: QueuedFocus): void {
148
+ autoFocusQueue.push(item);
149
+
150
+ // Schedule processing on next frame to allow all components to register
151
+ if (processingTimeout === null) {
152
+ processingTimeout = setTimeout(processAutoFocusQueue, 0);
153
+ }
154
+ }
155
+
156
+ /**
157
+ * Remove an item from the auto-focus queue.
158
+ */
159
+ function removeFromQueue(ref: () => HTMLElement | null | undefined): void {
160
+ autoFocusQueue = autoFocusQueue.filter((item) => item.ref !== ref);
161
+ }
162
+
163
+ /**
164
+ * Creates auto-focus behavior for an element.
165
+ *
166
+ * This hook registers the element for auto-focus when mounted. If multiple
167
+ * elements request auto-focus, the one with the highest priority wins.
168
+ *
169
+ * @param ref - Accessor for the element to focus
170
+ * @param options - Auto-focus options
171
+ *
172
+ * @example
173
+ * ```tsx
174
+ * function Dialog(props) {
175
+ * let contentRef: HTMLDivElement | undefined;
176
+ *
177
+ * createAutoFocus(() => contentRef, {
178
+ * priority: 10, // High priority for dialogs
179
+ * onFocus: () => console.log('Dialog focused'),
180
+ * });
181
+ *
182
+ * return (
183
+ * <div ref={contentRef} tabIndex={-1}>
184
+ * {props.children}
185
+ * </div>
186
+ * );
187
+ * }
188
+ * ```
189
+ *
190
+ * @example
191
+ * ```tsx
192
+ * // With delay for animations
193
+ * function AnimatedPanel() {
194
+ * let panelRef: HTMLDivElement | undefined;
195
+ *
196
+ * createAutoFocus(() => panelRef, {
197
+ * delay: 300, // Wait for animation
198
+ * });
199
+ *
200
+ * return <div ref={panelRef} class="animated-panel">...</div>;
201
+ * }
202
+ * ```
203
+ *
204
+ * @example
205
+ * ```tsx
206
+ * // Conditional auto-focus
207
+ * function Input(props) {
208
+ * let inputRef: HTMLInputElement | undefined;
209
+ *
210
+ * createAutoFocus(() => inputRef, {
211
+ * isEnabled: props.autoFocus,
212
+ * });
213
+ *
214
+ * return <input ref={inputRef} />;
215
+ * }
216
+ * ```
217
+ */
218
+ export function createAutoFocus(
219
+ ref: () => HTMLElement | null | undefined,
220
+ options: AutoFocusOptions = {},
221
+ ): AutoFocusResult {
222
+ const {
223
+ isEnabled = true,
224
+ priority = 0,
225
+ delay = 0,
226
+ force = false,
227
+ preventScroll = true,
228
+ onFocus,
229
+ onSkip,
230
+ } = options;
231
+
232
+ // During SSR, return no-op functions
233
+ if (isServer) {
234
+ return {
235
+ focus: () => {},
236
+ cancel: () => {},
237
+ };
238
+ }
239
+
240
+ let canceled = false;
241
+
242
+ // Queue auto-focus on mount
243
+ onMount(() => {
244
+ if (!isEnabled || canceled) return;
245
+
246
+ queueAutoFocus({
247
+ ref,
248
+ priority,
249
+ delay,
250
+ force,
251
+ preventScroll,
252
+ onFocus,
253
+ onSkip,
254
+ });
255
+ });
256
+
257
+ // Remove from queue on cleanup
258
+ onCleanup(() => {
259
+ removeFromQueue(ref);
260
+ });
261
+
262
+ const focus = (): void => {
263
+ if (canceled) return;
264
+
265
+ const element = ref();
266
+ if (!element) return;
267
+
268
+ if (preventScroll) {
269
+ focusSafely(element);
270
+ } else {
271
+ element.focus();
272
+ }
273
+ onFocus?.(element);
274
+ };
275
+
276
+ const cancel = (): void => {
277
+ canceled = true;
278
+ removeFromQueue(ref);
279
+ };
280
+
281
+ return {
282
+ focus,
283
+ cancel,
284
+ };
285
+ }
286
+
287
+ /**
288
+ * Clears all pending auto-focus requests.
289
+ * Useful for testing or when navigating away.
290
+ */
291
+ export function clearAutoFocusQueue(): void {
292
+ if (processingTimeout) {
293
+ clearTimeout(processingTimeout);
294
+ processingTimeout = null;
295
+ }
296
+ autoFocusQueue = [];
297
+ }
298
+
299
+ /**
300
+ * Gets the current auto-focus queue length.
301
+ * Useful for debugging.
302
+ */
303
+ export function getAutoFocusQueueLength(): number {
304
+ return autoFocusQueue.length;
305
+ }