@proyecto-viviana/solidaria 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -3,7 +3,7 @@
3
3
  * Based on @react-aria/utils event utilities.
4
4
  */
5
5
 
6
- import { isAndroid } from './platform';
6
+ import { isAndroid } from "./platform";
7
7
 
8
8
  /**
9
9
  * Checks if a click event was generated from a virtual source like a screen reader.
@@ -11,14 +11,14 @@ import { isAndroid } from './platform';
11
11
  */
12
12
  export function isVirtualClick(event: MouseEvent | PointerEvent): boolean {
13
13
  // JAWS/NVDA with Firefox.
14
- if ((event as PointerEvent).pointerType === '' && event.isTrusted) {
14
+ if ((event as PointerEvent).pointerType === "" && event.isTrusted) {
15
15
  return true;
16
16
  }
17
17
 
18
18
  // Android TalkBack's detail value varies depending on the event listener providing the event.
19
19
  // If pointerType is defined, event is from a click listener.
20
20
  if (isAndroid() && (event as PointerEvent).pointerType) {
21
- return event.type === 'click' && (event as MouseEvent).buttons === 1;
21
+ return event.type === "click" && (event as MouseEvent).buttons === 1;
22
22
  }
23
23
 
24
24
  return event.detail === 0 && !(event as PointerEvent).pointerType;
@@ -40,7 +40,7 @@ export function isVirtualPointerEvent(event: PointerEvent): boolean {
40
40
  event.height === 1 &&
41
41
  event.pressure === 0 &&
42
42
  event.detail === 0 &&
43
- event.pointerType === 'mouse')
43
+ event.pointerType === "mouse")
44
44
  );
45
45
  }
46
46
 
@@ -81,7 +81,7 @@ export function chain<T extends (...args: any[]) => any>(
81
81
  ): T {
82
82
  return ((...args: Parameters<T>) => {
83
83
  for (const callback of callbacks) {
84
- if (typeof callback === 'function') {
84
+ if (typeof callback === "function") {
85
85
  callback(...args);
86
86
  }
87
87
  }
@@ -93,12 +93,12 @@ export function chain<T extends (...args: any[]) => any>(
93
93
  * Used for synthetic events where target needs to be modified.
94
94
  */
95
95
  export function setEventTarget<T extends Event>(event: T, target: EventTarget): void {
96
- Object.defineProperty(event, 'target', {
96
+ Object.defineProperty(event, "target", {
97
97
  value: target,
98
98
  writable: false,
99
99
  configurable: true,
100
100
  });
101
- Object.defineProperty(event, 'currentTarget', {
101
+ Object.defineProperty(event, "currentTarget", {
102
102
  value: target,
103
103
  writable: false,
104
104
  configurable: true,
@@ -5,63 +5,63 @@
5
5
  * This is a 1:1 port of @react-aria/utils filterDOMProps.
6
6
  */
7
7
 
8
- const DOMPropNames = new Set(['id']);
8
+ const DOMPropNames = new Set(["id"]);
9
9
 
10
10
  const labelablePropNames = new Set([
11
- 'aria-label',
12
- 'aria-labelledby',
13
- 'aria-describedby',
14
- 'aria-details',
11
+ "aria-label",
12
+ "aria-labelledby",
13
+ "aria-describedby",
14
+ "aria-details",
15
15
  ]);
16
16
 
17
17
  // See LinkDOMProps in dom.d.ts.
18
18
  const linkPropNames = new Set([
19
- 'href',
20
- 'hrefLang',
21
- 'target',
22
- 'rel',
23
- 'download',
24
- 'ping',
25
- 'referrerPolicy',
19
+ "href",
20
+ "hrefLang",
21
+ "target",
22
+ "rel",
23
+ "download",
24
+ "ping",
25
+ "referrerPolicy",
26
26
  ]);
27
27
 
28
- const globalAttrs = new Set(['dir', 'lang', 'hidden', 'inert', 'translate']);
28
+ const globalAttrs = new Set(["dir", "lang", "hidden", "inert", "translate"]);
29
29
 
30
30
  const globalEvents = new Set([
31
- 'onClick',
32
- 'onAuxClick',
33
- 'onContextMenu',
34
- 'onDoubleClick',
35
- 'onMouseDown',
36
- 'onMouseEnter',
37
- 'onMouseLeave',
38
- 'onMouseMove',
39
- 'onMouseOut',
40
- 'onMouseOver',
41
- 'onMouseUp',
42
- 'onTouchCancel',
43
- 'onTouchEnd',
44
- 'onTouchMove',
45
- 'onTouchStart',
46
- 'onPointerDown',
47
- 'onPointerMove',
48
- 'onPointerUp',
49
- 'onPointerCancel',
50
- 'onPointerEnter',
51
- 'onPointerLeave',
52
- 'onPointerOver',
53
- 'onPointerOut',
54
- 'onGotPointerCapture',
55
- 'onLostPointerCapture',
56
- 'onScroll',
57
- 'onWheel',
58
- 'onAnimationStart',
59
- 'onAnimationEnd',
60
- 'onAnimationIteration',
61
- 'onTransitionCancel',
62
- 'onTransitionEnd',
63
- 'onTransitionRun',
64
- 'onTransitionStart',
31
+ "onClick",
32
+ "onAuxClick",
33
+ "onContextMenu",
34
+ "onDoubleClick",
35
+ "onMouseDown",
36
+ "onMouseEnter",
37
+ "onMouseLeave",
38
+ "onMouseMove",
39
+ "onMouseOut",
40
+ "onMouseOver",
41
+ "onMouseUp",
42
+ "onTouchCancel",
43
+ "onTouchEnd",
44
+ "onTouchMove",
45
+ "onTouchStart",
46
+ "onPointerDown",
47
+ "onPointerMove",
48
+ "onPointerUp",
49
+ "onPointerCancel",
50
+ "onPointerEnter",
51
+ "onPointerLeave",
52
+ "onPointerOver",
53
+ "onPointerOut",
54
+ "onGotPointerCapture",
55
+ "onLostPointerCapture",
56
+ "onScroll",
57
+ "onWheel",
58
+ "onAnimationStart",
59
+ "onAnimationEnd",
60
+ "onAnimationIteration",
61
+ "onTransitionCancel",
62
+ "onTransitionEnd",
63
+ "onTransitionRun",
64
+ "onTransitionStart",
65
65
  ]);
66
66
 
67
67
  const propRe = /^(data-.*)$/;
@@ -90,7 +90,7 @@ export interface FilterDOMPropsOptions {
90
90
  */
91
91
  export function filterDOMProps<T extends object>(
92
92
  props: T,
93
- opts: FilterDOMPropsOptions = {}
93
+ opts: FilterDOMPropsOptions = {},
94
94
  ): Partial<T> {
95
95
  const { labelable, isLink, global, events = global, propNames } = opts;
96
96
  const filteredProps: Partial<T> = {};
@@ -104,7 +104,7 @@ export function filterDOMProps<T extends object>(
104
104
  (global && globalAttrs.has(prop)) ||
105
105
  (events &&
106
106
  (globalEvents.has(prop) ||
107
- (prop.endsWith('Capture') && globalEvents.has(prop.slice(0, -7))))) ||
107
+ (prop.endsWith("Capture") && globalEvents.has(prop.slice(0, -7))))) ||
108
108
  propNames?.has(prop) ||
109
109
  propRe.test(prop))
110
110
  ) {
@@ -3,7 +3,7 @@
3
3
  * Based on @react-aria/utils focus utilities.
4
4
  */
5
5
 
6
- import { getOwnerDocument } from './dom';
6
+ import { getEventTarget, getOwnerDocument, getOwnerWindow, isFocusable } from "./dom";
7
7
 
8
8
  /**
9
9
  * Focuses an element without scrolling the page.
@@ -12,12 +12,10 @@ import { getOwnerDocument } from './dom';
12
12
  export function focusWithoutScrolling(element: HTMLElement | null): void {
13
13
  if (!element) return;
14
14
 
15
- // Try using the modern preventScroll option
16
15
  try {
17
16
  element.focus({ preventScroll: true });
18
17
  } catch {
19
18
  // Fallback for browsers that don't support preventScroll
20
- // Save scroll positions and restore after focus
21
19
  const scrollableElements = getScrollableAncestors(element);
22
20
  const scrollPositions = scrollableElements.map((el) => ({
23
21
  element: el,
@@ -27,7 +25,6 @@ export function focusWithoutScrolling(element: HTMLElement | null): void {
27
25
 
28
26
  element.focus();
29
27
 
30
- // Restore scroll positions
31
28
  for (const { element: el, scrollTop, scrollLeft } of scrollPositions) {
32
29
  el.scrollTop = scrollTop;
33
30
  el.scrollLeft = scrollLeft;
@@ -48,10 +45,10 @@ function getScrollableAncestors(element: Element): Element[] {
48
45
  const overflowX = style.overflowX;
49
46
 
50
47
  if (
51
- overflowY === 'auto' ||
52
- overflowY === 'scroll' ||
53
- overflowX === 'auto' ||
54
- overflowX === 'scroll'
48
+ overflowY === "auto" ||
49
+ overflowY === "scroll" ||
50
+ overflowX === "auto" ||
51
+ overflowX === "scroll"
55
52
  ) {
56
53
  ancestors.push(parent);
57
54
  }
@@ -66,82 +63,77 @@ function getScrollableAncestors(element: Element): Element[] {
66
63
  return ancestors;
67
64
  }
68
65
 
69
- // State for preventFocus
70
- let ignoreFocus = false;
71
- let preventFocusTimeout: ReturnType<typeof setTimeout> | null = null;
72
-
73
66
  /**
74
67
  * Prevents focus from moving to a new element temporarily.
75
68
  * Used when clicking on a button that shouldn't steal focus.
76
69
  */
77
- export function preventFocus(target: Element): void {
78
- // Find the closest focusable ancestor
79
- const focusableAncestor = findFocusableAncestor(target);
80
- if (!focusableAncestor) return;
81
-
82
- const document = getOwnerDocument(target);
83
- const activeElement = document.activeElement;
84
-
85
- // Set flag to ignore next focus event
86
- ignoreFocus = true;
87
-
88
- // Capture focus events and prevent them from changing focus
89
- const onFocus = (e: Event) => {
90
- if (ignoreFocus) {
91
- e.stopImmediatePropagation();
92
- // Refocus the original element if focus moved
93
- if (activeElement && activeElement !== document.body) {
94
- (activeElement as HTMLElement).focus();
70
+ export function preventFocus(target: Element | null): (() => void) | undefined {
71
+ while (target && !isFocusable(target)) {
72
+ target = target.parentElement;
73
+ }
74
+
75
+ const ownerWindow = getOwnerWindow(target);
76
+ const activeElement = ownerWindow.document.activeElement as HTMLElement | null;
77
+
78
+ if (!activeElement || activeElement === target) {
79
+ return undefined;
80
+ }
81
+
82
+ let isRefocusing = false;
83
+
84
+ const onBlur = (event: FocusEvent) => {
85
+ if (getEventTarget(event) === activeElement || isRefocusing) {
86
+ event.stopImmediatePropagation();
87
+ }
88
+ };
89
+
90
+ const onFocusOut = (event: FocusEvent) => {
91
+ if (getEventTarget(event) === activeElement || isRefocusing) {
92
+ event.stopImmediatePropagation();
93
+
94
+ if (!target && !isRefocusing) {
95
+ isRefocusing = true;
96
+ focusWithoutScrolling(activeElement);
97
+ cleanup();
95
98
  }
96
99
  }
97
100
  };
98
101
 
99
- const onBlur = (e: Event) => {
100
- if (ignoreFocus) {
101
- e.stopImmediatePropagation();
102
+ const onFocus = (event: FocusEvent) => {
103
+ if (getEventTarget(event) === target || isRefocusing) {
104
+ event.stopImmediatePropagation();
102
105
  }
103
106
  };
104
107
 
105
- // Use capturing to intercept focus before it reaches elements
106
- // Cast to HTMLElement to access focus event listeners
107
- const el = focusableAncestor as HTMLElement;
108
- el.addEventListener('focus', onFocus, true);
109
- el.addEventListener('blur', onBlur, true);
110
- el.addEventListener('focusin', onFocus, true);
111
- el.addEventListener('focusout', onBlur, true);
112
-
113
- // Clean up after the current event cycle
114
- if (preventFocusTimeout != null) {
115
- clearTimeout(preventFocusTimeout);
116
- }
108
+ const onFocusIn = (event: FocusEvent) => {
109
+ if (getEventTarget(event) === target || isRefocusing) {
110
+ event.stopImmediatePropagation();
117
111
 
118
- preventFocusTimeout = setTimeout(() => {
119
- ignoreFocus = false;
120
- el.removeEventListener('focus', onFocus, true);
121
- el.removeEventListener('blur', onBlur, true);
122
- el.removeEventListener('focusin', onFocus, true);
123
- el.removeEventListener('focusout', onBlur, true);
124
- preventFocusTimeout = null;
125
- }, 0);
126
- }
112
+ if (!isRefocusing) {
113
+ isRefocusing = true;
114
+ focusWithoutScrolling(activeElement);
115
+ cleanup();
116
+ }
117
+ }
118
+ };
127
119
 
128
- /**
129
- * Finds the closest focusable ancestor or the element itself.
130
- */
131
- function findFocusableAncestor(element: Element): Element | null {
132
- let current: Element | null = element;
120
+ ownerWindow.addEventListener("blur", onBlur, true);
121
+ ownerWindow.addEventListener("focusout", onFocusOut, true);
122
+ ownerWindow.addEventListener("focusin", onFocusIn, true);
123
+ ownerWindow.addEventListener("focus", onFocus, true);
133
124
 
134
- while (current) {
135
- if (
136
- current.hasAttribute('tabindex') ||
137
- ['INPUT', 'BUTTON', 'SELECT', 'TEXTAREA', 'A'].includes(current.tagName)
138
- ) {
139
- return current;
140
- }
141
- current = current.parentElement;
125
+ const raf = ownerWindow.requestAnimationFrame(cleanup);
126
+
127
+ function cleanup() {
128
+ ownerWindow.cancelAnimationFrame(raf);
129
+ ownerWindow.removeEventListener("blur", onBlur, true);
130
+ ownerWindow.removeEventListener("focusout", onFocusOut, true);
131
+ ownerWindow.removeEventListener("focusin", onFocusIn, true);
132
+ ownerWindow.removeEventListener("focus", onFocus, true);
133
+ isRefocusing = false;
142
134
  }
143
135
 
144
- return element;
136
+ return cleanup;
145
137
  }
146
138
 
147
139
  /**
@@ -23,12 +23,10 @@ export interface EventPoint {
23
23
  * Checks if two rectangles overlap.
24
24
  */
25
25
  export function areRectanglesOverlapping(a: Rect, b: Rect): boolean {
26
- // Check if one rectangle is to the left of the other
27
26
  if (a.left > b.right || b.left > a.right) {
28
27
  return false;
29
28
  }
30
29
 
31
- // Check if one rectangle is above the other
32
30
  if (a.top > b.bottom || b.top > a.bottom) {
33
31
  return false;
34
32
  }
@@ -44,7 +42,6 @@ export function getPointClientRect(point: EventPoint): Rect {
44
42
  let offsetX = 0;
45
43
  let offsetY = 0;
46
44
 
47
- // Use width/height if available (PointerEvent)
48
45
  if (point.width !== undefined && point.width > 0) {
49
46
  offsetX = point.width / 2;
50
47
  } else if (point.radiusX !== undefined && point.radiusX > 0) {
@@ -80,7 +77,7 @@ export function isPointOverTarget(point: EventPoint, target: Element): boolean {
80
77
  bottom: rect.bottom,
81
78
  left: rect.left,
82
79
  },
83
- pointRect
80
+ pointRect,
84
81
  );
85
82
  }
86
83
 
@@ -5,7 +5,7 @@
5
5
  * In SolidJS, we use onCleanup for automatic cleanup instead of useEffect return.
6
6
  */
7
7
 
8
- import { onCleanup } from 'solid-js';
8
+ import { onCleanup } from "solid-js";
9
9
 
10
10
  export interface GlobalListenerOptions extends AddEventListenerOptions {
11
11
  /** Whether to add the listener to the window instead of document */
@@ -31,17 +31,17 @@ export function createGlobalListeners() {
31
31
  function addGlobalListener<K extends keyof DocumentEventMap>(
32
32
  type: K,
33
33
  handler: (ev: DocumentEventMap[K]) => void,
34
- options?: GlobalListenerOptions
34
+ options?: GlobalListenerOptions,
35
35
  ): void;
36
36
  function addGlobalListener<K extends keyof WindowEventMap>(
37
37
  type: K,
38
38
  handler: (ev: WindowEventMap[K]) => void,
39
- options?: GlobalListenerOptions & { isWindow: true }
39
+ options?: GlobalListenerOptions & { isWindow: true },
40
40
  ): void;
41
41
  function addGlobalListener(
42
42
  type: string,
43
43
  handler: EventListener,
44
- options?: GlobalListenerOptions
44
+ options?: GlobalListenerOptions,
45
45
  ): void {
46
46
  const target = options?.isWindow ? window : document;
47
47
  const listenerOptions = options
@@ -62,17 +62,17 @@ export function createGlobalListeners() {
62
62
  function removeGlobalListener<K extends keyof DocumentEventMap>(
63
63
  type: K,
64
64
  handler: (ev: DocumentEventMap[K]) => void,
65
- options?: AddEventListenerOptions
65
+ options?: AddEventListenerOptions,
66
66
  ): void;
67
67
  function removeGlobalListener<K extends keyof WindowEventMap>(
68
68
  type: K,
69
69
  handler: (ev: WindowEventMap[K]) => void,
70
- options?: AddEventListenerOptions & { isWindow: true }
70
+ options?: AddEventListenerOptions & { isWindow: true },
71
71
  ): void;
72
72
  function removeGlobalListener(
73
73
  type: string,
74
74
  handler: EventListener,
75
- options?: AddEventListenerOptions & { isWindow?: boolean }
75
+ options?: AddEventListenerOptions & { isWindow?: boolean },
76
76
  ): void {
77
77
  const target = options?.isWindow ? window : document;
78
78
  const listenerOptions = options
@@ -89,7 +89,7 @@ export function createGlobalListeners() {
89
89
  l.target === target &&
90
90
  l.type === type &&
91
91
  l.handler === handler &&
92
- l.options?.capture === listenerOptions?.capture
92
+ l.options?.capture === listenerOptions?.capture,
93
93
  );
94
94
  if (index !== -1) {
95
95
  listeners.splice(index, 1);
@@ -123,7 +123,7 @@ export function createGlobalListeners() {
123
123
  export function addGlobalListenerOnce<K extends keyof DocumentEventMap>(
124
124
  type: K,
125
125
  handler: (ev: DocumentEventMap[K]) => void,
126
- options?: GlobalListenerOptions
126
+ options?: GlobalListenerOptions,
127
127
  ): () => void {
128
128
  const target = options?.isWindow ? window : document;
129
129
  const listenerOptions = options
@@ -1,10 +1,8 @@
1
- export { mergeProps } from './mergeProps';
2
- export { filterDOMProps, type FilterDOMPropsOptions } from './filterDOMProps';
1
+ export { mergeProps } from "./mergeProps";
2
+ export { filterDOMProps, type FilterDOMPropsOptions } from "./filterDOMProps";
3
3
 
4
- // Reactivity utilities
5
- export { access, isAccessor, type MaybeAccessor, type MaybeAccessorValue } from './reactivity';
4
+ export { access, isAccessor, type MaybeAccessor, type MaybeAccessorValue } from "./reactivity";
6
5
 
7
- // Platform detection
8
6
  export {
9
7
  isMac,
10
8
  isIPhone,
@@ -15,9 +13,8 @@ export {
15
13
  isChrome,
16
14
  isAndroid,
17
15
  isFirefox,
18
- } from './platform';
16
+ } from "./platform";
19
17
 
20
- // DOM utilities
21
18
  export {
22
19
  getOwnerDocument,
23
20
  getOwnerWindow,
@@ -33,9 +30,8 @@ export {
33
30
  isScrollable,
34
31
  getScrollParent,
35
32
  willOpenKeyboard,
36
- } from './dom';
33
+ } from "./dom";
37
34
 
38
- // Geometry utilities
39
35
  export {
40
36
  areRectanglesOverlapping,
41
37
  getPointClientRect,
@@ -44,37 +40,31 @@ export {
44
40
  getTouchById,
45
41
  type Rect,
46
42
  type EventPoint,
47
- } from './geometry';
43
+ } from "./geometry";
48
44
 
49
- // Event utilities
50
45
  export {
51
46
  isVirtualClick,
52
47
  isVirtualPointerEvent,
53
48
  createMouseEvent,
54
49
  chain,
55
50
  setEventTarget,
56
- } from './events';
51
+ } from "./events";
57
52
 
58
- // Text selection management
59
- export { disableTextSelection, restoreTextSelection } from './textSelection';
53
+ export { disableTextSelection, restoreTextSelection } from "./textSelection";
60
54
 
61
- // Focus utilities
62
- export { focusWithoutScrolling, focusSafely, preventFocus } from './focus';
55
+ export { focusWithoutScrolling, focusSafely, preventFocus } from "./focus";
63
56
 
64
- // Global listener management
65
57
  export {
66
58
  createGlobalListeners,
67
59
  addGlobalListenerOnce,
68
60
  type GlobalListenerOptions,
69
- } from './globalListeners';
61
+ } from "./globalListeners";
70
62
 
71
- // Environment detection
72
- export { isTestEnv, isDevEnv, isProdEnv } from './env';
63
+ export { isTestEnv, isDevEnv, isProdEnv } from "./env";
73
64
 
74
- // Description utility for aria-describedby
75
65
  export {
76
66
  createDescription,
77
67
  type DescriptionProps,
78
68
  getDescriptionNodeCount,
79
69
  clearDescriptionNodes,
80
- } from './createDescription';
70
+ } from "./createDescription";
@@ -9,30 +9,57 @@ type Props = { [key: string]: unknown };
9
9
  * @param args - Props objects to merge
10
10
  * @returns Merged props object. Use type parameter R to specify the result type.
11
11
  */
12
- export function mergeProps<R extends object = Record<string, unknown>, T extends object = object>(...args: T[]): R {
12
+ export function mergeProps<R extends object = Record<string, unknown>, T extends object = object>(
13
+ ...args: T[]
14
+ ): R {
13
15
  const result: Props = {};
16
+ const setResultValue = (key: string, value: unknown) => {
17
+ const resultDescriptor = Object.getOwnPropertyDescriptor(result, key);
18
+
19
+ if (resultDescriptor?.get || resultDescriptor?.set) {
20
+ Object.defineProperty(result, key, {
21
+ enumerable: true,
22
+ configurable: true,
23
+ writable: true,
24
+ value,
25
+ });
26
+ return;
27
+ }
28
+
29
+ result[key] = value;
30
+ };
14
31
 
15
32
  for (const props of args) {
16
33
  for (const key in props) {
17
- const value = props[key];
34
+ const descriptor = Object.getOwnPropertyDescriptor(props, key);
35
+ const hasGetter = typeof descriptor?.get === "function";
36
+ const getValue = () => (hasGetter ? descriptor.get!.call(props) : props[key]);
37
+ const value = getValue();
18
38
  const existingValue = result[key];
19
39
 
20
40
  if (
21
- typeof existingValue === 'function' &&
22
- typeof value === 'function' &&
23
- key.startsWith('on') &&
41
+ typeof existingValue === "function" &&
42
+ typeof value === "function" &&
43
+ key.startsWith("on") &&
24
44
  key[2] === key[2]?.toUpperCase()
25
45
  ) {
26
- // Chain event handlers
27
- result[key] = chainHandlers(existingValue as Function, value as Function);
28
- } else if (key === 'class' || key === 'className') {
29
- // Merge class names
30
- result[key] = mergeClassNames(existingValue, value);
31
- } else if (key === 'style' && typeof existingValue === 'object' && typeof value === 'object') {
32
- // Merge style objects
33
- result[key] = { ...(existingValue as object), ...(value as object) };
46
+ setResultValue(key, chainHandlers(existingValue as Function, value as Function));
47
+ } else if (key === "class" || key === "className") {
48
+ setResultValue(key, mergeClassNames(existingValue, value));
49
+ } else if (
50
+ key === "style" &&
51
+ typeof existingValue === "object" &&
52
+ typeof value === "object"
53
+ ) {
54
+ setResultValue(key, { ...(existingValue as object), ...(value as object) });
55
+ } else if (hasGetter && (value !== undefined || !(key in result))) {
56
+ Object.defineProperty(result, key, {
57
+ enumerable: true,
58
+ configurable: true,
59
+ get: getValue,
60
+ });
34
61
  } else if (value !== undefined) {
35
- result[key] = value;
62
+ setResultValue(key, value);
36
63
  }
37
64
  }
38
65
  }
@@ -48,5 +75,5 @@ function chainHandlers(existingHandler: Function, newHandler: Function) {
48
75
  }
49
76
 
50
77
  function mergeClassNames(...classes: unknown[]): string {
51
- return classes.filter(Boolean).join(' ');
78
+ return classes.filter(Boolean).join(" ");
52
79
  }
@@ -3,16 +3,26 @@
3
3
  * Based on @react-aria/utils platform detection.
4
4
  */
5
5
 
6
+ interface NavigatorWithUserAgentData extends Navigator {
7
+ userAgentData?: {
8
+ platform?: string;
9
+ };
10
+ }
11
+
12
+ function getNavigator(): NavigatorWithUserAgentData | null {
13
+ if (typeof window === "undefined" || window.navigator == null) return null;
14
+ return window.navigator as NavigatorWithUserAgentData;
15
+ }
16
+
6
17
  function testPlatform(re: RegExp): boolean {
7
- return typeof window !== 'undefined' && window.navigator != null
8
- ? re.test(window.navigator.platform || (window.navigator as any).userAgentData?.platform || '')
9
- : false;
18
+ const nav = getNavigator();
19
+ if (!nav) return false;
20
+ return re.test(nav.platform || nav.userAgentData?.platform || "");
10
21
  }
11
22
 
12
23
  function testUserAgent(re: RegExp): boolean {
13
- return typeof window !== 'undefined' && window.navigator != null
14
- ? re.test(window.navigator.userAgent)
15
- : false;
24
+ const nav = getNavigator();
25
+ return nav ? re.test(nav.userAgent) : false;
16
26
  }
17
27
 
18
28
  export function isMac(): boolean {