@proyecto-viviana/solidaria 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/README.md +31 -236
  2. package/dist/actiongroup/createActionGroup.d.ts +5 -5
  3. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  4. package/dist/actiongroup/index.d.ts +1 -1
  5. package/dist/autocomplete/createAutocomplete.d.ts +10 -10
  6. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  7. package/dist/autocomplete/index.d.ts +1 -1
  8. package/dist/autocomplete/index.d.ts.map +1 -1
  9. package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
  10. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  11. package/dist/breadcrumbs/index.d.ts +1 -1
  12. package/dist/button/createButton.d.ts +1 -1
  13. package/dist/button/createButton.d.ts.map +1 -1
  14. package/dist/button/createToggleButton.d.ts +3 -3
  15. package/dist/button/createToggleButtonGroup.d.ts +7 -7
  16. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  17. package/dist/button/index.d.ts +6 -6
  18. package/dist/button/index.d.ts.map +1 -1
  19. package/dist/button/types.d.ts +18 -12
  20. package/dist/button/types.d.ts.map +1 -1
  21. package/dist/calendar/createCalendar.d.ts +15 -5
  22. package/dist/calendar/createCalendar.d.ts.map +1 -1
  23. package/dist/calendar/createCalendarCell.d.ts +6 -2
  24. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  26. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  27. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  28. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
  30. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  31. package/dist/calendar/index.d.ts +5 -5
  32. package/dist/calendar/index.d.ts.map +1 -1
  33. package/dist/calendar/intl/index.d.ts +12 -0
  34. package/dist/calendar/intl/index.d.ts.map +1 -0
  35. package/dist/calendar/utils.d.ts +12 -0
  36. package/dist/calendar/utils.d.ts.map +1 -0
  37. package/dist/checkbox/createCheckbox.d.ts +6 -6
  38. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  39. package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
  40. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  42. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  44. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  45. package/dist/checkbox/index.d.ts +8 -8
  46. package/dist/checkbox/index.d.ts.map +1 -1
  47. package/dist/collections/index.d.ts +3 -3
  48. package/dist/collections/index.d.ts.map +1 -1
  49. package/dist/color/createColorArea.d.ts +3 -3
  50. package/dist/color/createColorArea.d.ts.map +1 -1
  51. package/dist/color/createColorField.d.ts +4 -4
  52. package/dist/color/createColorField.d.ts.map +1 -1
  53. package/dist/color/createColorSlider.d.ts +4 -4
  54. package/dist/color/createColorSlider.d.ts.map +1 -1
  55. package/dist/color/createColorSwatch.d.ts +2 -2
  56. package/dist/color/createColorSwatch.d.ts.map +1 -1
  57. package/dist/color/createColorWheel.d.ts +3 -3
  58. package/dist/color/createColorWheel.d.ts.map +1 -1
  59. package/dist/color/index.d.ts +6 -6
  60. package/dist/color/types.d.ts +98 -16
  61. package/dist/color/types.d.ts.map +1 -1
  62. package/dist/combobox/createComboBox.d.ts +10 -7
  63. package/dist/combobox/createComboBox.d.ts.map +1 -1
  64. package/dist/combobox/index.d.ts +1 -1
  65. package/dist/combobox/intl/index.d.ts +1 -1
  66. package/dist/datepicker/createDateField.d.ts +18 -6
  67. package/dist/datepicker/createDateField.d.ts.map +1 -1
  68. package/dist/datepicker/createDatePicker.d.ts +51 -5
  69. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  71. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  72. package/dist/datepicker/createDateRangePicker.d.ts +8 -6
  73. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  74. package/dist/datepicker/createDateSegment.d.ts +10 -2
  75. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  76. package/dist/datepicker/createTimeField.d.ts +11 -5
  77. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeSegment.d.ts +2 -2
  79. package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
  80. package/dist/datepicker/index.d.ts +7 -6
  81. package/dist/datepicker/index.d.ts.map +1 -1
  82. package/dist/dialog/createDialog.d.ts +5 -5
  83. package/dist/dialog/createDialog.d.ts.map +1 -1
  84. package/dist/dialog/index.d.ts +2 -2
  85. package/dist/dialog/index.d.ts.map +1 -1
  86. package/dist/dialog/types.d.ts +4 -4
  87. package/dist/disclosure/createDisclosure.d.ts +5 -2
  88. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  89. package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
  90. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  91. package/dist/disclosure/index.d.ts +2 -2
  92. package/dist/dnd/createDrag.d.ts +2 -2
  93. package/dist/dnd/createDrag.d.ts.map +1 -1
  94. package/dist/dnd/createDraggableCollection.d.ts +2 -2
  95. package/dist/dnd/createDraggableItem.d.ts +3 -3
  96. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  97. package/dist/dnd/createDrop.d.ts +2 -2
  98. package/dist/dnd/createDrop.d.ts.map +1 -1
  99. package/dist/dnd/createDroppableCollection.d.ts +26 -6
  100. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  101. package/dist/dnd/createDroppableItem.d.ts +3 -3
  102. package/dist/dnd/index.d.ts +12 -12
  103. package/dist/dnd/index.d.ts.map +1 -1
  104. package/dist/dnd/types.d.ts +2 -2
  105. package/dist/dnd/types.d.ts.map +1 -1
  106. package/dist/dnd/utils.d.ts +1 -1
  107. package/dist/dnd/utils.d.ts.map +1 -1
  108. package/dist/focus/FocusScope.d.ts +1 -1
  109. package/dist/focus/FocusScope.d.ts.map +1 -1
  110. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  111. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  112. package/dist/focus/createVirtualFocus.d.ts +4 -4
  113. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  114. package/dist/focus/index.d.ts +4 -4
  115. package/dist/focus/index.d.ts.map +1 -1
  116. package/dist/form/createFormReset.d.ts +1 -1
  117. package/dist/form/createFormValidation.d.ts +3 -3
  118. package/dist/form/createFormValidation.d.ts.map +1 -1
  119. package/dist/form/index.d.ts +2 -2
  120. package/dist/form/index.d.ts.map +1 -1
  121. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  122. package/dist/grid/createGrid.d.ts +3 -3
  123. package/dist/grid/createGridCell.d.ts +3 -3
  124. package/dist/grid/createGridRow.d.ts +3 -3
  125. package/dist/grid/index.d.ts +5 -5
  126. package/dist/grid/types.d.ts +8 -8
  127. package/dist/gridlist/createGridList.d.ts +6 -4
  128. package/dist/gridlist/createGridList.d.ts.map +1 -1
  129. package/dist/gridlist/createGridListItem.d.ts +4 -4
  130. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  131. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  132. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  133. package/dist/gridlist/index.d.ts +4 -4
  134. package/dist/gridlist/types.d.ts +11 -7
  135. package/dist/gridlist/types.d.ts.map +1 -1
  136. package/dist/i18n/createCollator.d.ts.map +1 -1
  137. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  138. package/dist/i18n/createFilter.d.ts.map +1 -1
  139. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  140. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  141. package/dist/i18n/createStringFormatter.d.ts +2 -2
  142. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  143. package/dist/i18n/index.d.ts +8 -8
  144. package/dist/i18n/index.d.ts.map +1 -1
  145. package/dist/i18n/locale.d.ts +2 -2
  146. package/dist/i18n/locale.d.ts.map +1 -1
  147. package/dist/i18n/utils.d.ts.map +1 -1
  148. package/dist/index.d.ts +52 -51
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +18012 -16820
  151. package/dist/index.js.map +1 -1
  152. package/dist/index.jsx +18242 -0
  153. package/dist/index.jsx.map +1 -0
  154. package/dist/interactions/FocusableProvider.d.ts +2 -2
  155. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  156. package/dist/interactions/PressEvent.d.ts +2 -2
  157. package/dist/interactions/createFocus.d.ts +1 -1
  158. package/dist/interactions/createFocus.d.ts.map +1 -1
  159. package/dist/interactions/createFocusRing.d.ts +1 -1
  160. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  161. package/dist/interactions/createFocusWithin.d.ts +1 -1
  162. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  163. package/dist/interactions/createFocusable.d.ts +3 -3
  164. package/dist/interactions/createFocusable.d.ts.map +1 -1
  165. package/dist/interactions/createHover.d.ts +5 -5
  166. package/dist/interactions/createHover.d.ts.map +1 -1
  167. package/dist/interactions/createInteractionModality.d.ts +3 -3
  168. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  169. package/dist/interactions/createKeyboard.d.ts +1 -1
  170. package/dist/interactions/createLongPress.d.ts +5 -5
  171. package/dist/interactions/createMove.d.ts +5 -5
  172. package/dist/interactions/createMove.d.ts.map +1 -1
  173. package/dist/interactions/createPress.d.ts +4 -4
  174. package/dist/interactions/createPress.d.ts.map +1 -1
  175. package/dist/interactions/index.d.ts +12 -12
  176. package/dist/interactions/index.d.ts.map +1 -1
  177. package/dist/label/createField.d.ts +4 -4
  178. package/dist/label/createField.d.ts.map +1 -1
  179. package/dist/label/createLabel.d.ts +7 -7
  180. package/dist/label/createLabel.d.ts.map +1 -1
  181. package/dist/label/createLabels.d.ts +1 -1
  182. package/dist/label/createLabels.d.ts.map +1 -1
  183. package/dist/label/index.d.ts +5 -5
  184. package/dist/landmark/createLandmark.d.ts +5 -5
  185. package/dist/landmark/createLandmark.d.ts.map +1 -1
  186. package/dist/landmark/index.d.ts +1 -1
  187. package/dist/link/createLink.d.ts +14 -8
  188. package/dist/link/createLink.d.ts.map +1 -1
  189. package/dist/link/index.d.ts +1 -1
  190. package/dist/listbox/createListBox.d.ts +11 -6
  191. package/dist/listbox/createListBox.d.ts.map +1 -1
  192. package/dist/listbox/createOption.d.ts +21 -4
  193. package/dist/listbox/createOption.d.ts.map +1 -1
  194. package/dist/listbox/index.d.ts +2 -2
  195. package/dist/listbox/index.d.ts.map +1 -1
  196. package/dist/live-announcer/announce.d.ts +2 -2
  197. package/dist/live-announcer/announce.d.ts.map +1 -1
  198. package/dist/live-announcer/index.d.ts +1 -1
  199. package/dist/menu/createMenu.d.ts +7 -7
  200. package/dist/menu/createMenu.d.ts.map +1 -1
  201. package/dist/menu/createMenuItem.d.ts +16 -4
  202. package/dist/menu/createMenuItem.d.ts.map +1 -1
  203. package/dist/menu/createMenuTrigger.d.ts +4 -4
  204. package/dist/menu/index.d.ts +3 -3
  205. package/dist/menu/index.d.ts.map +1 -1
  206. package/dist/meter/createMeter.d.ts +6 -6
  207. package/dist/meter/createMeter.d.ts.map +1 -1
  208. package/dist/meter/index.d.ts +1 -1
  209. package/dist/numberfield/createNumberField.d.ts +9 -8
  210. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  211. package/dist/numberfield/index.d.ts +1 -1
  212. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  213. package/dist/overlays/createModal.d.ts +3 -3
  214. package/dist/overlays/createModal.d.ts.map +1 -1
  215. package/dist/overlays/createOverlay.d.ts +1 -1
  216. package/dist/overlays/createOverlay.d.ts.map +1 -1
  217. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  218. package/dist/overlays/index.d.ts +6 -6
  219. package/dist/overlays/index.d.ts.map +1 -1
  220. package/dist/popover/calculatePosition.d.ts +4 -4
  221. package/dist/popover/calculatePosition.d.ts.map +1 -1
  222. package/dist/popover/createOverlayPosition.d.ts +3 -3
  223. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  224. package/dist/popover/createPopover.d.ts +4 -4
  225. package/dist/popover/createPopover.d.ts.map +1 -1
  226. package/dist/popover/index.d.ts +3 -3
  227. package/dist/progress/createProgressBar.d.ts +7 -5
  228. package/dist/progress/createProgressBar.d.ts.map +1 -1
  229. package/dist/progress/index.d.ts +1 -1
  230. package/dist/radio/createRadio.d.ts +7 -7
  231. package/dist/radio/createRadio.d.ts.map +1 -1
  232. package/dist/radio/createRadioGroup.d.ts +10 -10
  233. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  234. package/dist/radio/createRadioGroupState.d.ts +3 -3
  235. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  236. package/dist/radio/index.d.ts +3 -3
  237. package/dist/radio/index.d.ts.map +1 -1
  238. package/dist/searchfield/createSearchField.d.ts +7 -7
  239. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  240. package/dist/searchfield/index.d.ts +2 -2
  241. package/dist/select/createHiddenSelect.d.ts +4 -4
  242. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  243. package/dist/select/createSelect.d.ts +14 -6
  244. package/dist/select/createSelect.d.ts.map +1 -1
  245. package/dist/select/index.d.ts +2 -2
  246. package/dist/select/index.d.ts.map +1 -1
  247. package/dist/selection/createTypeSelect.d.ts +2 -2
  248. package/dist/selection/index.d.ts +1 -1
  249. package/dist/separator/createSeparator.d.ts +9 -5
  250. package/dist/separator/createSeparator.d.ts.map +1 -1
  251. package/dist/separator/index.d.ts +1 -1
  252. package/dist/slider/createSlider.d.ts +11 -7
  253. package/dist/slider/createSlider.d.ts.map +1 -1
  254. package/dist/slider/index.d.ts +2 -2
  255. package/dist/ssr/index.d.ts +1 -1
  256. package/dist/ssr/index.d.ts.map +1 -1
  257. package/dist/steplist/createStepList.d.ts +36 -0
  258. package/dist/steplist/createStepList.d.ts.map +1 -0
  259. package/dist/steplist/index.d.ts +2 -0
  260. package/dist/steplist/index.d.ts.map +1 -0
  261. package/dist/switch/createSwitch.d.ts +6 -4
  262. package/dist/switch/createSwitch.d.ts.map +1 -1
  263. package/dist/switch/index.d.ts +1 -1
  264. package/dist/table/createTable.d.ts +3 -3
  265. package/dist/table/createTable.d.ts.map +1 -1
  266. package/dist/table/createTableCell.d.ts +3 -3
  267. package/dist/table/createTableCell.d.ts.map +1 -1
  268. package/dist/table/createTableColumnHeader.d.ts +3 -3
  269. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  270. package/dist/table/createTableColumnResize.d.ts +41 -0
  271. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  272. package/dist/table/createTableHeaderRow.d.ts +3 -3
  273. package/dist/table/createTableRow.d.ts +3 -3
  274. package/dist/table/createTableRow.d.ts.map +1 -1
  275. package/dist/table/createTableRowGroup.d.ts +2 -2
  276. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  277. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  278. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  279. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  280. package/dist/table/index.d.ts +11 -9
  281. package/dist/table/index.d.ts.map +1 -1
  282. package/dist/table/types.d.ts +15 -7
  283. package/dist/table/types.d.ts.map +1 -1
  284. package/dist/tabs/createTabs.d.ts +28 -25
  285. package/dist/tabs/createTabs.d.ts.map +1 -1
  286. package/dist/tabs/index.d.ts +1 -1
  287. package/dist/tag/createTag.d.ts +2 -2
  288. package/dist/tag/createTag.d.ts.map +1 -1
  289. package/dist/tag/createTagGroup.d.ts +5 -5
  290. package/dist/tag/createTagGroup.d.ts.map +1 -1
  291. package/dist/tag/index.d.ts +2 -2
  292. package/dist/tag/index.d.ts.map +1 -1
  293. package/dist/textfield/createTextField.d.ts +17 -11
  294. package/dist/textfield/createTextField.d.ts.map +1 -1
  295. package/dist/textfield/index.d.ts +1 -1
  296. package/dist/textfield/index.d.ts.map +1 -1
  297. package/dist/toast/createToast.d.ts +2 -2
  298. package/dist/toast/createToast.d.ts.map +1 -1
  299. package/dist/toast/createToastRegion.d.ts +5 -3
  300. package/dist/toast/createToastRegion.d.ts.map +1 -1
  301. package/dist/toast/index.d.ts +2 -2
  302. package/dist/toast/index.d.ts.map +1 -1
  303. package/dist/toggle/createToggle.d.ts +9 -9
  304. package/dist/toggle/createToggle.d.ts.map +1 -1
  305. package/dist/toggle/createToggleState.d.ts +2 -2
  306. package/dist/toggle/createToggleState.d.ts.map +1 -1
  307. package/dist/toggle/index.d.ts +4 -4
  308. package/dist/toggle/index.d.ts.map +1 -1
  309. package/dist/toolbar/createToolbar.d.ts +9 -9
  310. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  311. package/dist/toolbar/index.d.ts +1 -1
  312. package/dist/toolbar/index.d.ts.map +1 -1
  313. package/dist/tooltip/createTooltip.d.ts +5 -5
  314. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  315. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  316. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  317. package/dist/tooltip/index.d.ts +2 -2
  318. package/dist/tree/createTree.d.ts +3 -3
  319. package/dist/tree/createTree.d.ts.map +1 -1
  320. package/dist/tree/createTreeItem.d.ts +4 -4
  321. package/dist/tree/createTreeItem.d.ts.map +1 -1
  322. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  323. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  324. package/dist/tree/index.d.ts +4 -4
  325. package/dist/tree/types.d.ts +10 -6
  326. package/dist/tree/types.d.ts.map +1 -1
  327. package/dist/utils/createDescription.d.ts +2 -2
  328. package/dist/utils/createDescription.d.ts.map +1 -1
  329. package/dist/utils/dom.d.ts.map +1 -1
  330. package/dist/utils/env.d.ts.map +1 -1
  331. package/dist/utils/focus.d.ts +1 -1
  332. package/dist/utils/focus.d.ts.map +1 -1
  333. package/dist/utils/geometry.d.ts.map +1 -1
  334. package/dist/utils/index.d.ts +12 -12
  335. package/dist/utils/index.d.ts.map +1 -1
  336. package/dist/utils/mergeProps.d.ts.map +1 -1
  337. package/dist/utils/reactivity.d.ts +1 -1
  338. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  339. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  340. package/dist/visually-hidden/index.d.ts +1 -1
  341. package/package.json +32 -32
  342. package/src/actiongroup/createActionGroup.ts +101 -91
  343. package/src/actiongroup/index.ts +1 -1
  344. package/src/autocomplete/createAutocomplete.ts +117 -134
  345. package/src/autocomplete/index.ts +1 -1
  346. package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
  347. package/src/breadcrumbs/index.ts +1 -1
  348. package/src/button/createButton.ts +102 -73
  349. package/src/button/createToggleButton.ts +10 -10
  350. package/src/button/createToggleButtonGroup.ts +25 -32
  351. package/src/button/index.ts +6 -9
  352. package/src/button/types.ts +18 -12
  353. package/src/calendar/createCalendar.ts +62 -29
  354. package/src/calendar/createCalendarCell.ts +98 -46
  355. package/src/calendar/createCalendarGrid.ts +57 -35
  356. package/src/calendar/createRangeCalendar.ts +66 -31
  357. package/src/calendar/createRangeCalendarCell.ts +92 -31
  358. package/src/calendar/index.ts +5 -9
  359. package/src/calendar/intl/index.ts +210 -0
  360. package/src/calendar/utils.ts +227 -0
  361. package/src/checkbox/createCheckbox.ts +13 -21
  362. package/src/checkbox/createCheckboxGroup.ts +68 -44
  363. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  364. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  365. package/src/checkbox/index.ts +8 -10
  366. package/src/collections/index.ts +33 -29
  367. package/src/color/createColorArea.ts +232 -154
  368. package/src/color/createColorField.ts +107 -58
  369. package/src/color/createColorSlider.ts +231 -73
  370. package/src/color/createColorSwatch.ts +38 -13
  371. package/src/color/createColorWheel.ts +208 -83
  372. package/src/color/index.ts +6 -6
  373. package/src/color/types.ts +98 -16
  374. package/src/combobox/createComboBox.ts +157 -100
  375. package/src/combobox/index.ts +1 -1
  376. package/src/combobox/intl/index.ts +5 -5
  377. package/src/datepicker/createDateField.ts +192 -39
  378. package/src/datepicker/createDatePicker.ts +260 -67
  379. package/src/datepicker/createDatePickerGroup.ts +149 -0
  380. package/src/datepicker/createDateRangePicker.ts +105 -57
  381. package/src/datepicker/createDateSegment.ts +183 -96
  382. package/src/datepicker/createTimeField.ts +38 -34
  383. package/src/datepicker/createTimeSegment.ts +67 -85
  384. package/src/datepicker/index.ts +13 -14
  385. package/src/dialog/createDialog.ts +45 -38
  386. package/src/dialog/index.ts +2 -2
  387. package/src/dialog/types.ts +4 -4
  388. package/src/disclosure/createDisclosure.ts +138 -33
  389. package/src/disclosure/createDisclosureGroup.ts +8 -21
  390. package/src/disclosure/index.ts +2 -2
  391. package/src/dnd/createDrag.ts +19 -25
  392. package/src/dnd/createDraggableCollection.ts +4 -4
  393. package/src/dnd/createDraggableItem.ts +20 -19
  394. package/src/dnd/createDrop.ts +42 -51
  395. package/src/dnd/createDroppableCollection.ts +290 -173
  396. package/src/dnd/createDroppableItem.ts +34 -34
  397. package/src/dnd/index.ts +23 -12
  398. package/src/dnd/types.ts +4 -7
  399. package/src/dnd/utils.ts +36 -49
  400. package/src/focus/FocusScope.tsx +155 -164
  401. package/src/focus/createAutoFocus.ts +4 -20
  402. package/src/focus/createFocusRestore.ts +15 -28
  403. package/src/focus/createVirtualFocus.ts +20 -36
  404. package/src/focus/index.ts +4 -8
  405. package/src/form/createFormReset.ts +4 -4
  406. package/src/form/createFormValidation.ts +20 -43
  407. package/src/form/index.ts +2 -5
  408. package/src/grid/GridKeyboardDelegate.ts +30 -30
  409. package/src/grid/createGrid.ts +36 -36
  410. package/src/grid/createGridCell.ts +18 -18
  411. package/src/grid/createGridRow.ts +14 -14
  412. package/src/grid/index.ts +5 -5
  413. package/src/grid/types.ts +8 -8
  414. package/src/gridlist/createGridList.ts +34 -29
  415. package/src/gridlist/createGridListItem.ts +68 -23
  416. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  417. package/src/gridlist/index.ts +4 -4
  418. package/src/gridlist/types.ts +11 -7
  419. package/src/i18n/createCollator.ts +5 -18
  420. package/src/i18n/createDateFormatter.ts +5 -13
  421. package/src/i18n/createFilter.ts +11 -24
  422. package/src/i18n/createNumberFormatter.ts +4 -6
  423. package/src/i18n/createStringFormatter.ts +19 -15
  424. package/src/i18n/index.ts +8 -11
  425. package/src/i18n/locale.tsx +15 -40
  426. package/src/i18n/utils.ts +35 -39
  427. package/src/index.ts +68 -169
  428. package/src/interactions/FocusableProvider.tsx +3 -7
  429. package/src/interactions/PressEvent.ts +4 -4
  430. package/src/interactions/createFocus.ts +12 -8
  431. package/src/interactions/createFocusRing.ts +21 -19
  432. package/src/interactions/createFocusWithin.ts +20 -13
  433. package/src/interactions/createFocusable.ts +15 -16
  434. package/src/interactions/createHover.ts +70 -55
  435. package/src/interactions/createInteractionModality.ts +75 -82
  436. package/src/interactions/createKeyboard.ts +2 -2
  437. package/src/interactions/createLongPress.ts +23 -23
  438. package/src/interactions/createMove.ts +72 -62
  439. package/src/interactions/createPress.ts +164 -87
  440. package/src/interactions/index.ts +24 -16
  441. package/src/label/createField.ts +18 -19
  442. package/src/label/createLabel.ts +18 -30
  443. package/src/label/createLabels.ts +8 -12
  444. package/src/label/index.ts +5 -5
  445. package/src/landmark/createLandmark.ts +30 -51
  446. package/src/landmark/index.ts +1 -1
  447. package/src/link/createLink.ts +83 -56
  448. package/src/link/index.ts +1 -1
  449. package/src/listbox/createListBox.ts +69 -58
  450. package/src/listbox/createOption.ts +83 -37
  451. package/src/listbox/index.ts +2 -6
  452. package/src/live-announcer/announce.ts +44 -71
  453. package/src/live-announcer/index.ts +1 -1
  454. package/src/menu/createMenu.ts +79 -50
  455. package/src/menu/createMenuItem.ts +79 -27
  456. package/src/menu/createMenuTrigger.ts +15 -15
  457. package/src/menu/index.ts +3 -12
  458. package/src/meter/createMeter.ts +7 -15
  459. package/src/meter/index.ts +1 -1
  460. package/src/numberfield/createNumberField.ts +138 -81
  461. package/src/numberfield/index.ts +1 -1
  462. package/src/overlays/ariaHideOutside.ts +14 -10
  463. package/src/overlays/createInteractOutside.ts +21 -18
  464. package/src/overlays/createModal.tsx +17 -17
  465. package/src/overlays/createOverlay.ts +38 -8
  466. package/src/overlays/createOverlayTrigger.ts +16 -16
  467. package/src/overlays/createPreventScroll.ts +46 -24
  468. package/src/overlays/index.ts +6 -17
  469. package/src/popover/calculatePosition.ts +115 -117
  470. package/src/popover/createOverlayPosition.ts +46 -40
  471. package/src/popover/createPopover.ts +42 -17
  472. package/src/popover/index.ts +3 -3
  473. package/src/progress/createProgressBar.ts +31 -32
  474. package/src/progress/index.ts +1 -1
  475. package/src/radio/createRadio.ts +95 -73
  476. package/src/radio/createRadioGroup.ts +83 -77
  477. package/src/radio/createRadioGroupState.ts +7 -31
  478. package/src/radio/index.ts +3 -8
  479. package/src/searchfield/createSearchField.ts +57 -29
  480. package/src/searchfield/index.ts +2 -2
  481. package/src/select/createHiddenSelect.tsx +57 -44
  482. package/src/select/createSelect.ts +128 -71
  483. package/src/select/index.ts +2 -7
  484. package/src/selection/createTypeSelect.ts +11 -11
  485. package/src/selection/index.ts +1 -1
  486. package/src/separator/createSeparator.ts +20 -25
  487. package/src/separator/index.ts +1 -1
  488. package/src/slider/createSlider.ts +93 -124
  489. package/src/slider/index.ts +2 -2
  490. package/src/ssr/index.tsx +8 -47
  491. package/src/steplist/createStepList.ts +106 -0
  492. package/src/steplist/index.ts +8 -0
  493. package/src/switch/createSwitch.ts +9 -14
  494. package/src/switch/index.ts +1 -1
  495. package/src/table/createTable.ts +152 -85
  496. package/src/table/createTableCell.ts +17 -16
  497. package/src/table/createTableColumnHeader.ts +67 -20
  498. package/src/table/createTableColumnResize.ts +256 -0
  499. package/src/table/createTableHeaderRow.ts +7 -7
  500. package/src/table/createTableRow.ts +149 -29
  501. package/src/table/createTableRowGroup.ts +5 -7
  502. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  503. package/src/table/createTableSelectionCheckbox.ts +8 -8
  504. package/src/table/index.ts +14 -9
  505. package/src/table/types.ts +15 -7
  506. package/src/tabs/createTabs.ts +74 -92
  507. package/src/tabs/index.ts +1 -1
  508. package/src/tag/createTag.ts +52 -50
  509. package/src/tag/createTagGroup.ts +47 -41
  510. package/src/tag/index.ts +2 -6
  511. package/src/textfield/createTextField.ts +67 -35
  512. package/src/textfield/index.ts +1 -5
  513. package/src/toast/createToast.ts +28 -26
  514. package/src/toast/createToastRegion.ts +169 -26
  515. package/src/toast/index.ts +2 -6
  516. package/src/toggle/createToggle.ts +95 -53
  517. package/src/toggle/createToggleState.ts +2 -10
  518. package/src/toggle/index.ts +4 -5
  519. package/src/toolbar/createToolbar.ts +193 -210
  520. package/src/toolbar/index.ts +1 -1
  521. package/src/tooltip/createTooltip.ts +11 -24
  522. package/src/tooltip/createTooltipTrigger.ts +61 -49
  523. package/src/tooltip/index.ts +2 -2
  524. package/src/tree/createTree.ts +35 -37
  525. package/src/tree/createTreeItem.ts +29 -29
  526. package/src/tree/createTreeSelectionCheckbox.ts +11 -8
  527. package/src/tree/index.ts +4 -4
  528. package/src/tree/types.ts +10 -6
  529. package/src/utils/createDescription.ts +6 -23
  530. package/src/utils/dom.ts +61 -54
  531. package/src/utils/env.ts +9 -11
  532. package/src/utils/events.ts +7 -7
  533. package/src/utils/filterDOMProps.ts +49 -49
  534. package/src/utils/focus.ts +60 -68
  535. package/src/utils/geometry.ts +1 -4
  536. package/src/utils/globalListeners.ts +9 -9
  537. package/src/utils/index.ts +12 -22
  538. package/src/utils/mergeProps.ts +42 -15
  539. package/src/utils/platform.ts +2 -2
  540. package/src/utils/reactivity.ts +3 -3
  541. package/src/utils/textSelection.ts +16 -16
  542. package/src/visually-hidden/createVisuallyHidden.ts +16 -28
  543. package/src/visually-hidden/index.ts +1 -1
  544. package/dist/i18n/NumberFormatter.d.ts +0 -43
  545. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  546. package/dist/index.ssr.js +0 -17082
  547. package/dist/index.ssr.js.map +0 -1
  548. package/src/i18n/NumberFormatter.ts +0 -266
@@ -3,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
  }
@@ -10,14 +10,14 @@ interface NavigatorWithUserAgentData extends Navigator {
10
10
  }
11
11
 
12
12
  function getNavigator(): NavigatorWithUserAgentData | null {
13
- if (typeof window === 'undefined' || window.navigator == null) return null;
13
+ if (typeof window === "undefined" || window.navigator == null) return null;
14
14
  return window.navigator as NavigatorWithUserAgentData;
15
15
  }
16
16
 
17
17
  function testPlatform(re: RegExp): boolean {
18
18
  const nav = getNavigator();
19
19
  if (!nav) return false;
20
- return re.test(nav.platform || nav.userAgentData?.platform || '');
20
+ return re.test(nav.platform || nav.userAgentData?.platform || "");
21
21
  }
22
22
 
23
23
  function testUserAgent(re: RegExp): boolean {
@@ -4,7 +4,7 @@
4
4
  * Provides type-safe utilities for working with SolidJS reactivity patterns.
5
5
  */
6
6
 
7
- import { Accessor } from 'solid-js';
7
+ import { Accessor } from "solid-js";
8
8
 
9
9
  /**
10
10
  * A value that may be either a raw value or an accessor function.
@@ -20,7 +20,7 @@ export type MaybeAccessor<T> = T | Accessor<T>;
20
20
  * @param value - The value or accessor to unwrap.
21
21
  */
22
22
  export function access<T>(value: MaybeAccessor<T>): T {
23
- return typeof value === 'function' ? (value as Accessor<T>)() : value;
23
+ return typeof value === "function" ? (value as Accessor<T>)() : value;
24
24
  }
25
25
 
26
26
  /**
@@ -32,5 +32,5 @@ export type MaybeAccessorValue<T> = T | undefined | Accessor<T | undefined>;
32
32
  * Checks if a value is an accessor function.
33
33
  */
34
34
  export function isAccessor<T>(value: MaybeAccessor<T>): value is Accessor<T> {
35
- return typeof value === 'function';
35
+ return typeof value === "function";
36
36
  }
@@ -7,14 +7,14 @@
7
7
  * we can just set it on the target element.
8
8
  */
9
9
 
10
- import { isIOS } from './platform';
11
- import { getOwnerDocument } from './dom';
10
+ import { isIOS } from "./platform";
11
+ import { getOwnerDocument } from "./dom";
12
12
 
13
- type State = 'default' | 'disabled' | 'restoring';
13
+ type State = "default" | "disabled" | "restoring";
14
14
 
15
15
  // Global state to manage text selection across multiple press interactions
16
- let state: State = 'default';
17
- let savedUserSelect = '';
16
+ let state: State = "default";
17
+ let savedUserSelect = "";
18
18
  let modifiedElementMap = new WeakMap<HTMLElement, string>();
19
19
 
20
20
  /**
@@ -24,18 +24,18 @@ let modifiedElementMap = new WeakMap<HTMLElement, string>();
24
24
  export function disableTextSelection(target?: HTMLElement): void {
25
25
  if (isIOS()) {
26
26
  // iOS requires disabling selection on the entire page
27
- if (state === 'default') {
27
+ if (state === "default") {
28
28
  const documentElement = getOwnerDocument(target).documentElement;
29
29
  savedUserSelect = documentElement.style.webkitUserSelect;
30
- documentElement.style.webkitUserSelect = 'none';
30
+ documentElement.style.webkitUserSelect = "none";
31
31
  }
32
- state = 'disabled';
32
+ state = "disabled";
33
33
  } else if (target) {
34
34
  // On other platforms, just disable on the target
35
35
  const element = target as HTMLElement;
36
36
  if (!modifiedElementMap.has(element)) {
37
37
  modifiedElementMap.set(element, element.style.userSelect);
38
- element.style.userSelect = 'none';
38
+ element.style.userSelect = "none";
39
39
  }
40
40
  }
41
41
  }
@@ -47,11 +47,11 @@ export function disableTextSelection(target?: HTMLElement): void {
47
47
  export function restoreTextSelection(target?: HTMLElement): void {
48
48
  if (isIOS()) {
49
49
  // Don't restore if another press is active
50
- if (state !== 'disabled') {
50
+ if (state !== "disabled") {
51
51
  return;
52
52
  }
53
53
 
54
- state = 'restoring';
54
+ state = "restoring";
55
55
 
56
56
  // Wait for iOS to finish any pending selection actions
57
57
  // 300ms is the iOS long-press delay
@@ -59,15 +59,15 @@ export function restoreTextSelection(target?: HTMLElement): void {
59
59
  // Use runAfterTransition to avoid CSS recomputation during animation
60
60
  runAfterTransition(() => {
61
61
  // Only restore if still in 'restoring' state (no new press started)
62
- if (state === 'restoring') {
62
+ if (state === "restoring") {
63
63
  const documentElement = getOwnerDocument(target).documentElement;
64
64
  if (savedUserSelect) {
65
65
  documentElement.style.webkitUserSelect = savedUserSelect;
66
66
  } else {
67
- documentElement.style.removeProperty('-webkit-user-select');
67
+ documentElement.style.removeProperty("-webkit-user-select");
68
68
  }
69
- savedUserSelect = '';
70
- state = 'default';
69
+ savedUserSelect = "";
70
+ state = "default";
71
71
  }
72
72
  });
73
73
  }, 300);
@@ -79,7 +79,7 @@ export function restoreTextSelection(target?: HTMLElement): void {
79
79
  if (savedValue) {
80
80
  element.style.userSelect = savedValue;
81
81
  } else {
82
- element.style.removeProperty('user-select');
82
+ element.style.removeProperty("user-select");
83
83
  }
84
84
  modifiedElementMap.delete(element);
85
85
  }
@@ -7,14 +7,10 @@
7
7
  * Port of react-aria's useVisuallyHidden.
8
8
  */
9
9
 
10
- import { type Accessor, type JSX, createMemo, createSignal } from 'solid-js';
11
- import { createFocusWithin } from '../interactions/createFocusWithin';
12
- import { access, type MaybeAccessor } from '../utils';
13
- import { mergeProps } from '../utils/mergeProps';
14
-
15
- // ============================================
16
- // TYPES
17
- // ============================================
10
+ import { type Accessor, type JSX, createMemo, createSignal } from "solid-js";
11
+ import { createFocusWithin } from "../interactions/createFocusWithin";
12
+ import { access, type MaybeAccessor } from "../utils";
13
+ import { mergeProps } from "../utils/mergeProps";
18
14
 
19
15
  export interface AriaVisuallyHiddenProps {
20
16
  /** Inline styles to merge with the visually hidden styles. */
@@ -28,31 +24,23 @@ export interface VisuallyHiddenAria {
28
24
  visuallyHiddenProps: Accessor<JSX.HTMLAttributes<HTMLElement>>;
29
25
  }
30
26
 
31
- // ============================================
32
- // STYLES
33
- // ============================================
34
-
35
27
  /**
36
28
  * CSS styles that visually hide an element while keeping it accessible.
37
29
  * These styles ensure the element is read by screen readers but not visible on screen.
38
30
  */
39
31
  export const visuallyHiddenStyles: JSX.CSSProperties = {
40
- border: '0',
41
- clip: 'rect(0 0 0 0)',
42
- 'clip-path': 'inset(50%)',
43
- height: '1px',
44
- margin: '-1px',
45
- overflow: 'hidden',
46
- padding: '0',
47
- position: 'absolute',
48
- width: '1px',
49
- 'white-space': 'nowrap',
32
+ border: "0",
33
+ clip: "rect(0 0 0 0)",
34
+ "clip-path": "inset(50%)",
35
+ height: "1px",
36
+ margin: "-1px",
37
+ overflow: "hidden",
38
+ padding: "0",
39
+ position: "absolute",
40
+ width: "1px",
41
+ "white-space": "nowrap",
50
42
  };
51
43
 
52
- // ============================================
53
- // HOOK
54
- // ============================================
55
-
56
44
  /**
57
45
  * Provides props for an element that hides its children visually
58
46
  * but keeps content visible to assistive technology.
@@ -87,7 +75,7 @@ export const visuallyHiddenStyles: JSX.CSSProperties = {
87
75
  * ```
88
76
  */
89
77
  export function createVisuallyHidden(
90
- props: MaybeAccessor<AriaVisuallyHiddenProps> = {}
78
+ props: MaybeAccessor<AriaVisuallyHiddenProps> = {},
91
79
  ): VisuallyHiddenAria {
92
80
  const [isFocused, setIsFocused] = createSignal(false);
93
81
 
@@ -129,7 +117,7 @@ export function createVisuallyHidden(
129
117
  },
130
118
  }
131
119
  : {},
132
- { style: combinedStyles() }
120
+ { style: combinedStyles() },
133
121
  ),
134
122
  }));
135
123
 
@@ -3,4 +3,4 @@ export {
3
3
  visuallyHiddenStyles,
4
4
  type AriaVisuallyHiddenProps,
5
5
  type VisuallyHiddenAria,
6
- } from './createVisuallyHidden';
6
+ } from "./createVisuallyHidden";