@proyecto-viviana/solidaria 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -5,8 +5,8 @@
5
5
  * All behaviors, edge cases, and platform-specific handling are preserved.
6
6
  */
7
7
 
8
- import { createSignal, JSX, Accessor, onCleanup } from 'solid-js';
9
- import { PressEvent, PointerType, createPressEvent, type PressEventSource } from './PressEvent';
8
+ import { createSignal, JSX, Accessor, onCleanup } from "solid-js";
9
+ import { PressEvent, PointerType, createPressEvent, type PressEventSource } from "./PressEvent";
10
10
  import {
11
11
  nodeContains,
12
12
  getEventTarget,
@@ -25,11 +25,10 @@ import {
25
25
  isMac,
26
26
  createGlobalListeners,
27
27
  setEventTarget,
28
- } from '../utils';
28
+ } from "../utils";
29
29
 
30
- // Re-export PressEvent types
31
- export { PressEvent, type PointerType } from './PressEvent';
32
- export type { IPressEvent, PressEventType } from './PressEvent';
30
+ export { PressEvent, type PointerType } from "./PressEvent";
31
+ export type { IPressEvent, PressEventType } from "./PressEvent";
33
32
 
34
33
  export interface CreatePressProps {
35
34
  /** Whether the target is currently disabled. */
@@ -71,29 +70,29 @@ export interface PressResult {
71
70
  }
72
71
 
73
72
  function isDisabledValue(isDisabled: Accessor<boolean> | boolean | undefined): boolean {
74
- if (typeof isDisabled === 'function') {
73
+ if (typeof isDisabled === "function") {
75
74
  return isDisabled();
76
75
  }
77
76
  return isDisabled ?? false;
78
77
  }
79
78
 
80
79
  function isPressedValue(isPressed: Accessor<boolean> | boolean | undefined): boolean {
81
- if (typeof isPressed === 'function') {
80
+ if (typeof isPressed === "function") {
82
81
  return isPressed();
83
82
  }
84
83
  return isPressed ?? false;
85
84
  }
86
85
 
87
- // Symbol to track if a link click was handled by us
88
- const LINK_CLICKED = Symbol('linkClicked');
86
+ // Track which links have been programmatically clicked to avoid double activation
87
+ const linkClickedSet = new WeakSet<HTMLElement>();
89
88
 
90
89
  // CSS for preventing double-tap zoom delay
91
90
  let pressableCSSInjected = false;
92
91
  function injectPressableCSS(): void {
93
- if (pressableCSSInjected || typeof document === 'undefined') return;
92
+ if (pressableCSSInjected || typeof document === "undefined") return;
94
93
 
95
- const style = document.createElement('style');
96
- style.id = 'solidaria-pressable-style';
94
+ const style = document.createElement("style");
95
+ style.id = "solidaria-pressable-style";
97
96
  style.textContent = `
98
97
  [data-solidaria-pressable] {
99
98
  touch-action: pan-x pan-y pinch-zoom;
@@ -136,6 +135,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
136
135
  userSelect: undefined as string | undefined,
137
136
  metaKeyEvents: null as Map<string, KeyboardEvent> | null,
138
137
  clickCleanup: null as (() => void) | null,
138
+ focusCleanup: null as (() => void) | null,
139
139
  };
140
140
 
141
141
  // Global listeners manager
@@ -146,7 +146,10 @@ export function createPress(props: CreatePressProps = {}): PressResult {
146
146
 
147
147
  // --- Event Triggers ---
148
148
 
149
- const triggerPressStart = (originalEvent: PressEventSource, pointerType: PointerType): boolean => {
149
+ const triggerPressStart = (
150
+ originalEvent: PressEventSource,
151
+ pointerType: PointerType,
152
+ ): boolean => {
150
153
  if (isDisabledValue(props.isDisabled) || pressState.didFirePressStart) {
151
154
  return false;
152
155
  }
@@ -155,7 +158,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
155
158
  pressState.isTriggeringEvent = true;
156
159
 
157
160
  if (props.onPressStart) {
158
- const event = createPressEvent('pressstart', pointerType, originalEvent, pressState.target!);
161
+ const event = createPressEvent("pressstart", pointerType, originalEvent, pressState.target!);
159
162
  props.onPressStart(event);
160
163
  shouldStopPropagation = event.shouldStopPropagation;
161
164
  }
@@ -171,9 +174,13 @@ export function createPress(props: CreatePressProps = {}): PressResult {
171
174
  return shouldStopPropagation;
172
175
  };
173
176
 
174
- const triggerPressEnd = (originalEvent: PressEventSource, pointerType: PointerType, wasPressed = true): boolean => {
177
+ const triggerPressEnd = (
178
+ originalEvent: PressEventSource,
179
+ pointerType: PointerType,
180
+ wasPressed = true,
181
+ ): boolean => {
175
182
  if (!pressState.didFirePressStart) {
176
- return true;
183
+ return false;
177
184
  }
178
185
 
179
186
  pressState.didFirePressStart = false;
@@ -181,7 +188,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
181
188
 
182
189
  let shouldStopPropagation = true;
183
190
  if (props.onPressEnd) {
184
- const event = createPressEvent('pressend', pointerType, originalEvent, pressState.target!);
191
+ const event = createPressEvent("pressend", pointerType, originalEvent, pressState.target!);
185
192
  props.onPressEnd(event);
186
193
  shouldStopPropagation = event.shouldStopPropagation;
187
194
  }
@@ -194,8 +201,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
194
201
 
195
202
  if (wasPressed && !isDisabledValue(props.isDisabled)) {
196
203
  if (props.onPress) {
197
- const event = createPressEvent('press', pointerType, originalEvent, pressState.target!);
204
+ const event = createPressEvent("press", pointerType, originalEvent, pressState.target!);
198
205
  props.onPress(event);
206
+ shouldStopPropagation = shouldStopPropagation && event.shouldStopPropagation;
199
207
  }
200
208
  }
201
209
 
@@ -206,12 +214,12 @@ export function createPress(props: CreatePressProps = {}): PressResult {
206
214
 
207
215
  const triggerPressUp = (originalEvent: PressEventSource, pointerType: PointerType): boolean => {
208
216
  if (isDisabledValue(props.isDisabled)) {
209
- return true;
217
+ return false;
210
218
  }
211
219
 
212
220
  if (props.onPressUp) {
213
221
  pressState.isTriggeringEvent = true;
214
- const event = createPressEvent('pressup', pointerType, originalEvent, pressState.target!);
222
+ const event = createPressEvent("pressup", pointerType, originalEvent, pressState.target!);
215
223
  props.onPressUp(event);
216
224
  pressState.isTriggeringEvent = false;
217
225
  return event.shouldStopPropagation;
@@ -220,13 +228,16 @@ export function createPress(props: CreatePressProps = {}): PressResult {
220
228
  return true;
221
229
  };
222
230
 
223
- const triggerSyntheticClick = (originalEvent: KeyboardEvent | TouchEvent, target: HTMLElement): void => {
231
+ const triggerSyntheticClick = (
232
+ originalEvent: KeyboardEvent | TouchEvent,
233
+ target: HTMLElement,
234
+ ): void => {
224
235
  if (isDisabledValue(props.isDisabled)) {
225
236
  return;
226
237
  }
227
238
 
228
239
  if (props.onClick) {
229
- const event = new MouseEvent('click', originalEvent as MouseEventInit);
240
+ const event = new MouseEvent("click", originalEvent as MouseEventInit);
230
241
  setEventTarget(event, target);
231
242
  props.onClick(event);
232
243
  }
@@ -254,6 +265,11 @@ export function createPress(props: CreatePressProps = {}): PressResult {
254
265
  pressState.clickCleanup = null;
255
266
  }
256
267
 
268
+ if (pressState.focusCleanup) {
269
+ pressState.focusCleanup();
270
+ pressState.focusCleanup = null;
271
+ }
272
+
257
273
  if (!props.allowTextSelectionOnPress) {
258
274
  restoreTextSelection(pressState.target as HTMLElement);
259
275
  }
@@ -271,7 +287,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
271
287
  // iOS VoiceOver bug: fires pointer events with incorrect coordinates
272
288
  // Let the click handler deal with it instead
273
289
  if (isVirtualPointerEvent(e)) {
274
- pressState.pointerType = 'virtual';
290
+ pressState.pointerType = "virtual";
275
291
  return;
276
292
  }
277
293
 
@@ -293,8 +309,8 @@ export function createPress(props: CreatePressProps = {}): PressResult {
293
309
  }
294
310
 
295
311
  // Set up global listeners for pointer events
296
- addGlobalListener('pointerup', onPointerUp);
297
- addGlobalListener('pointercancel', onPointerCancel);
312
+ addGlobalListener("pointerup", onPointerUp);
313
+ addGlobalListener("pointercancel", onPointerCancel);
298
314
  }
299
315
  };
300
316
 
@@ -305,9 +321,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
305
321
  }
306
322
 
307
323
  if (e.button === 0) {
308
- // Prevent focus if requested
309
324
  if (props.preventFocusOnPress) {
310
- preventFocus(e.currentTarget);
325
+ pressState.focusCleanup?.();
326
+ pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;
311
327
  }
312
328
  e.stopPropagation();
313
329
  }
@@ -316,12 +332,17 @@ export function createPress(props: CreatePressProps = {}): PressResult {
316
332
  const onPointerUp = (e: PointerEvent): void => {
317
333
  // Only handle events for our active pointer
318
334
  const button = e.button ?? 0;
319
- if (e.pointerId !== pressState.activePointerId || !pressState.isPressed || button !== 0 || !pressState.target) {
335
+ if (
336
+ e.pointerId !== pressState.activePointerId ||
337
+ !pressState.isPressed ||
338
+ button !== 0 ||
339
+ !pressState.target
340
+ ) {
320
341
  return;
321
342
  }
322
343
 
323
344
  const isOverTarget = nodeContains(pressState.target, getEventTarget(e) as Element);
324
- if (isOverTarget && pressState.pointerType != null && pressState.pointerType !== 'virtual') {
345
+ if (isOverTarget && pressState.pointerType != null && pressState.pointerType !== "virtual") {
325
346
  // Pointer released over target - wait for onClick to complete the press sequence.
326
347
  // This matches React-Aria's behavior for compatibility with DOM mutations and third-party libraries.
327
348
  // https://github.com/adobe/react-spectrum/issues/1513
@@ -336,7 +357,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
336
357
  let clickFired = false;
337
358
  const timeout = setTimeout(() => {
338
359
  // Guard for SSR/test environments where the element may no longer exist
339
- if (typeof HTMLElement === 'undefined') {
360
+ if (typeof HTMLElement === "undefined") {
340
361
  return;
341
362
  }
342
363
  if (pressState.isPressed && pressState.target instanceof HTMLElement) {
@@ -357,12 +378,12 @@ export function createPress(props: CreatePressProps = {}): PressResult {
357
378
  const clickListener = () => {
358
379
  clickFired = true;
359
380
  };
360
- doc.addEventListener('click', clickListener, true);
381
+ doc.addEventListener("click", clickListener, true);
361
382
 
362
383
  // Store cleanup function
363
384
  pressState.clickCleanup = () => {
364
385
  clearTimeout(timeout);
365
- doc.removeEventListener('click', clickListener, true);
386
+ doc.removeEventListener("click", clickListener, true);
366
387
  };
367
388
 
368
389
  pressState.isOverTarget = false;
@@ -378,15 +399,35 @@ export function createPress(props: CreatePressProps = {}): PressResult {
378
399
  }
379
400
  };
380
401
 
402
+ const onPointerUpTarget: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
403
+ if (!nodeContains(e.currentTarget, getEventTarget(e)) || pressState.pointerType === "virtual") {
404
+ return;
405
+ }
406
+
407
+ if (e.button === 0 && !pressState.isPressed) {
408
+ triggerPressUp(e, (pressState.pointerType || e.pointerType || "mouse") as PointerType);
409
+ }
410
+ };
411
+
381
412
  const onPointerEnter: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
382
- if (e.pointerId === pressState.activePointerId && pressState.target && !pressState.isOverTarget && pressState.pointerType != null) {
413
+ if (
414
+ e.pointerId === pressState.activePointerId &&
415
+ pressState.target &&
416
+ !pressState.isOverTarget &&
417
+ pressState.pointerType != null
418
+ ) {
383
419
  pressState.isOverTarget = true;
384
420
  triggerPressStart(e, pressState.pointerType);
385
421
  }
386
422
  };
387
423
 
388
424
  const onPointerLeave: JSX.EventHandler<HTMLElement, PointerEvent> = (e) => {
389
- if (e.pointerId === pressState.activePointerId && pressState.target && pressState.isOverTarget && pressState.pointerType != null) {
425
+ if (
426
+ e.pointerId === pressState.activePointerId &&
427
+ pressState.target &&
428
+ pressState.isOverTarget &&
429
+ pressState.pointerType != null
430
+ ) {
390
431
  pressState.isOverTarget = false;
391
432
  triggerPressEnd(e, pressState.pointerType, false);
392
433
 
@@ -438,18 +479,21 @@ export function createPress(props: CreatePressProps = {}): PressResult {
438
479
  pressState.isOverTarget = true;
439
480
  pressState.isPressed = true;
440
481
  pressState.target = e.currentTarget;
441
- pressState.pointerType = 'touch';
482
+ pressState.pointerType = "touch";
442
483
 
443
484
  if (!props.allowTextSelectionOnPress) {
444
485
  disableTextSelection(pressState.target as HTMLElement);
445
486
  }
446
487
 
447
- const shouldStopPropagation = triggerPressStart(createTouchEvent(pressState.target, e), 'touch');
488
+ const shouldStopPropagation = triggerPressStart(
489
+ createTouchEvent(pressState.target, e),
490
+ "touch",
491
+ );
448
492
  if (shouldStopPropagation) {
449
493
  e.stopPropagation();
450
494
  }
451
495
 
452
- addGlobalListener('scroll', onScroll, { capture: true, isWindow: true });
496
+ addGlobalListener("scroll", onScroll, { capture: true, isWindow: true });
453
497
  };
454
498
 
455
499
  const onTouchMove: JSX.EventHandler<HTMLElement, TouchEvent> = (e) => {
@@ -468,9 +512,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
468
512
  if (isOverTarget !== pressState.isOverTarget) {
469
513
  pressState.isOverTarget = isOverTarget;
470
514
  if (isOverTarget) {
471
- triggerPressStart(createTouchEvent(target, e), 'touch');
515
+ triggerPressStart(createTouchEvent(target, e), "touch");
472
516
  } else {
473
- triggerPressEnd(createTouchEvent(target, e), 'touch', false);
517
+ triggerPressEnd(createTouchEvent(target, e), "touch", false);
474
518
 
475
519
  if (props.shouldCancelOnPointerExit) {
476
520
  cancel(createTouchEvent(target, e));
@@ -493,11 +537,19 @@ export function createPress(props: CreatePressProps = {}): PressResult {
493
537
  const isOverTarget = isPointOverTarget(touch, target);
494
538
 
495
539
  if (isOverTarget) {
496
- triggerPressUp(createTouchEvent(target, e), 'touch');
540
+ triggerPressUp(createTouchEvent(target, e), "touch");
541
+ triggerPressEnd(
542
+ createTouchEvent(target, e),
543
+ "touch",
544
+ isOverTarget && pressState.isOverTarget,
545
+ );
546
+ if (target instanceof HTMLElement) {
547
+ triggerSyntheticClick(e, target);
548
+ }
549
+ } else {
550
+ triggerPressEnd(createTouchEvent(target, e), "touch", false);
497
551
  }
498
552
 
499
- triggerPressEnd(createTouchEvent(target, e), 'touch', isOverTarget && pressState.isOverTarget);
500
-
501
553
  pressState.isPressed = false;
502
554
  pressState.isOverTarget = false;
503
555
  pressState.activePointerId = null;
@@ -541,14 +593,19 @@ export function createPress(props: CreatePressProps = {}): PressResult {
541
593
  pressState.isPressed = true;
542
594
  pressState.isOverTarget = true;
543
595
  pressState.target = e.currentTarget;
544
- pressState.pointerType = isVirtualClick(e) ? 'virtual' : 'mouse';
596
+ pressState.pointerType = isVirtualClick(e) ? "virtual" : "mouse";
545
597
 
546
598
  const shouldStopPropagation = triggerPressStart(e, pressState.pointerType);
547
599
  if (shouldStopPropagation) {
548
600
  e.stopPropagation();
549
601
  }
550
602
 
551
- addGlobalListener('mouseup', onMouseUpFallback);
603
+ if (props.preventFocusOnPress) {
604
+ pressState.focusCleanup?.();
605
+ pressState.focusCleanup = preventFocus(getEventTarget(e) as Element | null) ?? null;
606
+ }
607
+
608
+ addGlobalListener("mouseup", onMouseUpFallback);
552
609
  };
553
610
 
554
611
  const onMouseUpFallback = (e: MouseEvent): void => {
@@ -557,7 +614,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
557
614
  }
558
615
 
559
616
  if (!pressState.ignoreEmulatedMouseEvents && e.button === 0 && !pressState.isPressed) {
560
- triggerPressUp(e, pressState.pointerType || 'mouse');
617
+ triggerPressUp(e, pressState.pointerType || "mouse");
561
618
  }
562
619
  };
563
620
 
@@ -566,7 +623,11 @@ export function createPress(props: CreatePressProps = {}): PressResult {
566
623
  return;
567
624
  }
568
625
 
569
- if (pressState.isPressed && !pressState.ignoreEmulatedMouseEvents && pressState.pointerType != null) {
626
+ if (
627
+ pressState.isPressed &&
628
+ !pressState.ignoreEmulatedMouseEvents &&
629
+ pressState.pointerType != null
630
+ ) {
570
631
  pressState.isOverTarget = true;
571
632
  triggerPressStart(e, pressState.pointerType);
572
633
  }
@@ -577,7 +638,11 @@ export function createPress(props: CreatePressProps = {}): PressResult {
577
638
  return;
578
639
  }
579
640
 
580
- if (pressState.isPressed && !pressState.ignoreEmulatedMouseEvents && pressState.pointerType != null) {
641
+ if (
642
+ pressState.isPressed &&
643
+ !pressState.ignoreEmulatedMouseEvents &&
644
+ pressState.pointerType != null
645
+ ) {
581
646
  pressState.isOverTarget = false;
582
647
  triggerPressEnd(e, pressState.pointerType, false);
583
648
 
@@ -595,10 +660,6 @@ export function createPress(props: CreatePressProps = {}): PressResult {
595
660
  }
596
661
 
597
662
  if (!isValidKeyboardEvent(e, e.currentTarget)) {
598
- // Allow event to propagate for invalid keys
599
- if (e.key === 'Enter') {
600
- e.stopPropagation();
601
- }
602
663
  return;
603
664
  }
604
665
 
@@ -611,9 +672,9 @@ export function createPress(props: CreatePressProps = {}): PressResult {
611
672
  pressState.target = e.currentTarget;
612
673
  pressState.isPressed = true;
613
674
  pressState.isOverTarget = true;
614
- pressState.pointerType = 'keyboard';
675
+ pressState.pointerType = "keyboard";
615
676
 
616
- const shouldStopPropagation = triggerPressStart(e, 'keyboard');
677
+ const shouldStopPropagation = triggerPressStart(e, "keyboard");
617
678
  if (shouldStopPropagation) {
618
679
  e.stopPropagation();
619
680
  }
@@ -632,16 +693,16 @@ export function createPress(props: CreatePressProps = {}): PressResult {
632
693
 
633
694
  // For Enter key on native buttons, the click fires on keydown
634
695
  // Set flag to ignore it
635
- if (e.key === 'Enter') {
696
+ if (e.key === "Enter") {
636
697
  pressState.ignoreClickAfterPress = true;
637
698
  }
638
699
 
639
700
  // Set up global keyup listener
640
- addGlobalListener('keyup', onKeyUp, { capture: true });
701
+ addGlobalListener("keyup", onKeyUp, { capture: true });
641
702
  };
642
703
 
643
704
  const onKeyUp = (e: KeyboardEvent): void => {
644
- if (!pressState.isPressed || pressState.pointerType !== 'keyboard') {
705
+ if (!pressState.isPressed || pressState.pointerType !== "keyboard") {
645
706
  return;
646
707
  }
647
708
 
@@ -650,16 +711,16 @@ export function createPress(props: CreatePressProps = {}): PressResult {
650
711
  }
651
712
 
652
713
  // Handle macOS Meta key bug
653
- if (isMac() && e.key === 'Meta' && pressState.metaKeyEvents?.size) {
714
+ if (isMac() && e.key === "Meta" && pressState.metaKeyEvents?.size) {
654
715
  // When Meta releases, dispatch keyup for any keys that were pressed during
655
716
  for (const [key, event] of pressState.metaKeyEvents) {
656
717
  pressState.target?.dispatchEvent(
657
- new KeyboardEvent('keyup', {
718
+ new KeyboardEvent("keyup", {
658
719
  key,
659
720
  code: event.code,
660
721
  bubbles: true,
661
722
  cancelable: true,
662
- })
723
+ }),
663
724
  );
664
725
  }
665
726
  pressState.metaKeyEvents.clear();
@@ -667,37 +728,48 @@ export function createPress(props: CreatePressProps = {}): PressResult {
667
728
  }
668
729
 
669
730
  const target = pressState.target!;
670
- const shouldStopPropagation = triggerPressUp(e, 'keyboard');
671
- const shouldStopPropagationEnd = triggerPressEnd(e, 'keyboard', pressState.isOverTarget);
731
+ const eventTarget = getEventTarget(e) as Element;
732
+ const wasPressed = nodeContains(target, eventTarget);
733
+ const shouldStopPropagation = wasPressed ? triggerPressUp(e, "keyboard") : true;
734
+ const shouldStopPropagationEnd = triggerPressEnd(e, "keyboard", wasPressed);
672
735
 
673
736
  pressState.isPressed = false;
674
737
  pressState.pointerType = null;
675
738
 
676
739
  removeAllGlobalListeners();
677
740
 
678
- // Prevent default to avoid triggering native action
679
- e.preventDefault();
741
+ // Prevent default for non-native interactive elements, but preserve native
742
+ // input behavior such as checkbox Space toggling.
743
+ if (shouldPreventDefaultKeyboard(getEventTarget(e) as Element, e.key)) {
744
+ e.preventDefault();
745
+ }
680
746
 
681
- // Fire synthetic click for keyboard activation
682
- if (pressState.isOverTarget && pressState.target) {
683
- triggerSyntheticClick(e, pressState.target as HTMLElement);
747
+ if (wasPressed && target instanceof HTMLElement) {
748
+ triggerSyntheticClick(e, target);
684
749
  }
685
750
 
686
- // Handle link activation with non-Enter keys (Space)
687
- // Native links only respond to Enter, but we want Space to work too
688
- if (e.key === ' ' && isHTMLAnchorLink(target) && !(target as any)[LINK_CLICKED]) {
689
- (target as any)[LINK_CLICKED] = true;
751
+ // Handle link activation with non-Enter keys. Native links only respond to
752
+ // Enter, but role-overridden links should also work with Space.
753
+ if (
754
+ e.key !== "Enter" &&
755
+ isHTMLAnchorLink(target) &&
756
+ wasPressed &&
757
+ !linkClickedSet.has(target as HTMLElement)
758
+ ) {
759
+ linkClickedSet.add(target as HTMLElement);
690
760
  openLink(target as HTMLAnchorElement, e);
691
761
  // Clean up the marker
692
762
  setTimeout(() => {
693
- delete (target as any)[LINK_CLICKED];
763
+ linkClickedSet.delete(target as HTMLElement);
694
764
  }, 0);
695
765
  }
696
766
 
697
- // For Space key, the click fires after keyup
698
- // Set flag to ignore it
699
- if (e.key === ' ') {
767
+ // For Space key on non-native targets, the click fires after keyup.
768
+ // Set flag to ignore it when we already synthesized the click.
769
+ if (e.key === " " && wasPressed && shouldPreventDefaultKeyboard(target, e.key)) {
700
770
  pressState.ignoreClickAfterPress = true;
771
+ } else if (e.key === "Enter") {
772
+ pressState.ignoreClickAfterPress = false;
701
773
  }
702
774
 
703
775
  if (shouldStopPropagation && shouldStopPropagationEnd) {
@@ -725,10 +797,6 @@ export function createPress(props: CreatePressProps = {}): PressResult {
725
797
  return;
726
798
  }
727
799
 
728
- // Call user's onClick handler if provided
729
- // This matches React-Aria's behavior for third-party library compatibility
730
- props.onClick?.(e);
731
-
732
800
  // If triggered from a screen reader or by using element.click(),
733
801
  // trigger as if it were a keyboard/virtual click.
734
802
  let shouldStopPropagation = true;
@@ -736,21 +804,25 @@ export function createPress(props: CreatePressProps = {}): PressResult {
736
804
  if (
737
805
  !pressState.ignoreEmulatedMouseEvents &&
738
806
  !pressState.isPressed &&
739
- (pressState.pointerType === 'virtual' || isVirtualClick(e))
807
+ (pressState.pointerType === "virtual" || isVirtualClick(e))
740
808
  ) {
741
809
  pressState.target = e.currentTarget;
742
- shouldStopPropagation = triggerPressStart(e, 'virtual');
743
- shouldStopPropagation = triggerPressUp(e, 'virtual') && shouldStopPropagation;
744
- shouldStopPropagation = triggerPressEnd(e, 'virtual', true) && shouldStopPropagation;
745
- } else if (pressState.isPressed && pressState.pointerType !== 'keyboard') {
810
+ const stopPressStart = triggerPressStart(e, "virtual");
811
+ const stopPressUp = triggerPressUp(e, "virtual");
812
+ const stopPressEnd = triggerPressEnd(e, "virtual", true);
813
+ props.onClick?.(e);
814
+ shouldStopPropagation = stopPressStart && stopPressUp && stopPressEnd;
815
+ } else if (pressState.isPressed && pressState.pointerType !== "keyboard") {
746
816
  // Complete the press sequence for pointer/touch/mouse events
747
817
  const pointerType =
748
818
  pressState.pointerType ||
749
819
  ((e as unknown as PointerEvent).pointerType as PointerType) ||
750
- 'virtual';
751
- shouldStopPropagation = triggerPressUp(e, pointerType);
752
- shouldStopPropagation = triggerPressEnd(e, pointerType, true) && shouldStopPropagation;
820
+ "virtual";
821
+ const stopPressUp = triggerPressUp(e, pointerType);
822
+ const stopPressEnd = triggerPressEnd(e, pointerType, true);
823
+ shouldStopPropagation = stopPressUp && stopPressEnd;
753
824
  pressState.isOverTarget = false;
825
+ props.onClick?.(e);
754
826
  cancel(e);
755
827
  }
756
828
 
@@ -775,8 +847,8 @@ export function createPress(props: CreatePressProps = {}): PressResult {
775
847
  // Conditionally use pointer events or mouse events based on browser support
776
848
  // This matches React-Aria's approach exactly
777
849
 
778
- const pressProps: JSX.HTMLAttributes<HTMLElement> & { 'data-solidaria-pressable': string } =
779
- typeof PointerEvent !== 'undefined'
850
+ const pressProps: JSX.HTMLAttributes<HTMLElement> & { "data-solidaria-pressable": string } =
851
+ typeof PointerEvent !== "undefined"
780
852
  ? {
781
853
  // Keyboard events
782
854
  onKeyDown,
@@ -785,6 +857,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
785
857
  onDragStart,
786
858
  // Pointer events (preferred when available)
787
859
  onPointerDown,
860
+ onPointerUp: onPointerUpTarget,
788
861
  onPointerEnter,
789
862
  onPointerLeave,
790
863
  // Mouse down only for focus prevention when using pointer events
@@ -795,7 +868,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
795
868
  onTouchEnd,
796
869
  onTouchCancel,
797
870
  // Attribute for CSS touch-action
798
- 'data-solidaria-pressable': '',
871
+ "data-solidaria-pressable": "",
799
872
  }
800
873
  : {
801
874
  // Keyboard events
@@ -814,7 +887,7 @@ export function createPress(props: CreatePressProps = {}): PressResult {
814
887
  onTouchEnd,
815
888
  onTouchCancel,
816
889
  // Attribute for CSS touch-action
817
- 'data-solidaria-pressable': '',
890
+ "data-solidaria-pressable": "",
818
891
  };
819
892
 
820
893
  // Clean up on unmount
@@ -825,6 +898,10 @@ export function createPress(props: CreatePressProps = {}): PressResult {
825
898
  pressState.clickCleanup();
826
899
  pressState.clickCleanup = null;
827
900
  }
901
+ if (pressState.focusCleanup) {
902
+ pressState.focusCleanup();
903
+ pressState.focusCleanup = null;
904
+ }
828
905
  });
829
906
 
830
907
  return {