@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
package/src/tree/index.ts CHANGED
@@ -1,16 +1,16 @@
1
- /**
2
- * Tree ARIA layer exports.
3
- */
4
-
5
- export { createTree, getTreeData } from './createTree';
6
- export { createTreeItem } from './createTreeItem';
7
- export { createTreeSelectionCheckbox } from './createTreeSelectionCheckbox';
8
-
9
- export type {
10
- AriaTreeProps,
11
- TreeAria,
12
- AriaTreeItemProps,
13
- TreeItemAria,
14
- AriaTreeSelectionCheckboxProps,
15
- TreeSelectionCheckboxAria,
16
- } from './types';
1
+ /**
2
+ * Tree ARIA layer exports.
3
+ */
4
+
5
+ export { createTree, getTreeData } from "./createTree";
6
+ export { createTreeItem } from "./createTreeItem";
7
+ export { createTreeSelectionCheckbox } from "./createTreeSelectionCheckbox";
8
+
9
+ export type {
10
+ AriaTreeProps,
11
+ TreeAria,
12
+ AriaTreeItemProps,
13
+ TreeItemAria,
14
+ AriaTreeSelectionCheckboxProps,
15
+ TreeSelectionCheckboxAria,
16
+ } from "./types";
package/src/tree/types.ts CHANGED
@@ -1,87 +1,95 @@
1
- /**
2
- * Tree ARIA types.
3
- * Based on @react-aria/tree.
4
- */
5
-
6
- import type { JSX } from 'solid-js';
7
- import type { Key, TreeNode } from '@proyecto-viviana/solid-stately';
8
-
9
- /**
10
- * Props for createTree.
11
- */
12
- export interface AriaTreeProps {
13
- /** The unique id for the tree. */
14
- id?: string;
15
- /** Label for accessibility. */
16
- 'aria-label'?: string;
17
- /** ID of an element that labels the tree. */
18
- 'aria-labelledby'?: string;
19
- /** ID of an element that describes the tree. */
20
- 'aria-describedby'?: string;
21
- /** Whether the tree is virtualized. */
22
- isVirtualized?: boolean;
23
- /** Handler called when an item action is triggered. */
24
- onAction?: (key: Key) => void;
25
- /** Whether the tree is disabled. */
26
- isDisabled?: boolean;
27
- }
28
-
29
- /**
30
- * Return value for createTree.
31
- */
32
- export interface TreeAria {
33
- /** Props for the tree container (role="treegrid"). */
34
- treeProps: JSX.HTMLAttributes<HTMLDivElement>;
35
- }
36
-
37
- /**
38
- * Props for createTreeItem.
39
- */
40
- export interface AriaTreeItemProps<T = unknown> {
41
- /** The tree node this item represents. */
42
- node: TreeNode<T>;
43
- /** Whether the item is rendered in a virtualized list. */
44
- isVirtualized?: boolean;
45
- /** Handler called when this item's action is triggered. */
46
- onAction?: () => void;
47
- }
48
-
49
- /**
50
- * Return value for createTreeItem.
51
- */
52
- export interface TreeItemAria {
53
- /** Props for the row element. */
54
- rowProps: JSX.HTMLAttributes<HTMLDivElement>;
55
- /** Props for the grid cell content wrapper. */
56
- gridCellProps: JSX.HTMLAttributes<HTMLDivElement>;
57
- /** Props for the expand button (if the item is expandable). */
58
- expandButtonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;
59
- /** Whether the item is selected. */
60
- isSelected: boolean;
61
- /** Whether the item is disabled. */
62
- isDisabled: boolean;
63
- /** Whether the item is being pressed. */
64
- isPressed: boolean;
65
- /** Whether the item is expanded. */
66
- isExpanded: boolean;
67
- /** Whether the item is expandable (has children). */
68
- isExpandable: boolean;
69
- /** The nesting level of the item (0 for root). */
70
- level: number;
71
- }
72
-
73
- /**
74
- * Props for createTreeSelectionCheckbox.
75
- */
76
- export interface AriaTreeSelectionCheckboxProps {
77
- /** The key of the tree item this checkbox belongs to. */
78
- key: Key;
79
- }
80
-
81
- /**
82
- * Return value for createTreeSelectionCheckbox.
83
- */
84
- export interface TreeSelectionCheckboxAria {
85
- /** Props for the checkbox input element. */
86
- checkboxProps: JSX.InputHTMLAttributes<HTMLInputElement>;
87
- }
1
+ /**
2
+ * Tree ARIA types.
3
+ * Based on @react-aria/tree.
4
+ */
5
+
6
+ import type { JSX } from "solid-js";
7
+ import type { Key, TreeNode } from "@proyecto-viviana/solid-stately";
8
+
9
+ /**
10
+ * Props for createTree.
11
+ */
12
+ export interface AriaTreeProps {
13
+ /** The unique id for the tree. */
14
+ id?: string;
15
+ /** Label for accessibility. */
16
+ "aria-label"?: string;
17
+ /** ID of an element that labels the tree. */
18
+ "aria-labelledby"?: string;
19
+ /** ID of an element that describes the tree. */
20
+ "aria-describedby"?: string;
21
+ /** Whether the tree is virtualized. */
22
+ isVirtualized?: boolean;
23
+ /** Handler called when an item action is triggered. */
24
+ onAction?: (key: Key) => void;
25
+ /** Whether the tree is disabled. */
26
+ isDisabled?: boolean;
27
+ /** The writing direction for the tree. Determines expand/collapse key mapping. */
28
+ direction?: "ltr" | "rtl";
29
+ }
30
+
31
+ /**
32
+ * Return value for createTree.
33
+ */
34
+ export interface TreeAria {
35
+ /** Props for the tree container (role="treegrid"). */
36
+ treeProps: JSX.HTMLAttributes<HTMLDivElement>;
37
+ }
38
+
39
+ /**
40
+ * Props for createTreeItem.
41
+ */
42
+ export interface AriaTreeItemProps<T = unknown> {
43
+ /** The tree node this item represents. */
44
+ node: TreeNode<T>;
45
+ /** Whether the item is rendered in a virtualized list. */
46
+ isVirtualized?: boolean;
47
+ /** How selection should behave when pressing an item. */
48
+ selectionBehavior?: "replace" | "toggle";
49
+ /** Handler called when this item's action is triggered. */
50
+ onAction?: () => void;
51
+ /** Whether this item is disabled. */
52
+ isDisabled?: boolean;
53
+ /** The text value for the item (used for aria-label on the row). */
54
+ textValue?: string;
55
+ }
56
+
57
+ /**
58
+ * Return value for createTreeItem.
59
+ */
60
+ export interface TreeItemAria {
61
+ /** Props for the row element. */
62
+ rowProps: JSX.HTMLAttributes<HTMLDivElement>;
63
+ /** Props for the grid cell content wrapper. */
64
+ gridCellProps: JSX.HTMLAttributes<HTMLDivElement>;
65
+ /** Props for the expand button (if the item is expandable). */
66
+ expandButtonProps: JSX.ButtonHTMLAttributes<HTMLButtonElement>;
67
+ /** Whether the item is selected. */
68
+ isSelected: boolean;
69
+ /** Whether the item is disabled. */
70
+ isDisabled: boolean;
71
+ /** Whether the item is being pressed. */
72
+ isPressed: boolean;
73
+ /** Whether the item is expanded. */
74
+ isExpanded: boolean;
75
+ /** Whether the item is expandable (has children). */
76
+ isExpandable: boolean;
77
+ /** The nesting level of the item (0 for root). */
78
+ level: number;
79
+ }
80
+
81
+ /**
82
+ * Props for createTreeSelectionCheckbox.
83
+ */
84
+ export interface AriaTreeSelectionCheckboxProps {
85
+ /** The key of the tree item this checkbox belongs to. */
86
+ key: Key;
87
+ }
88
+
89
+ /**
90
+ * Return value for createTreeSelectionCheckbox.
91
+ */
92
+ export interface TreeSelectionCheckboxAria {
93
+ /** Props for the checkbox input element. */
94
+ checkboxProps: JSX.InputHTMLAttributes<HTMLInputElement>;
95
+ }
@@ -23,28 +23,16 @@
23
23
  * ```
24
24
  */
25
25
 
26
- import { createSignal, createEffect, onCleanup, type Accessor } from 'solid-js';
27
- import { isServer } from 'solid-js/web';
28
-
29
- // ============================================
30
- // TYPES
31
- // ============================================
26
+ import { createSignal, createEffect, onCleanup, type Accessor } from "solid-js";
27
+ import { isServer } from "solid-js/web";
32
28
 
33
29
  export interface DescriptionProps {
34
- 'aria-describedby'?: string;
30
+ "aria-describedby"?: string;
35
31
  }
36
32
 
37
- // ============================================
38
- // STATE
39
- // ============================================
40
-
41
33
  let descriptionId = 0;
42
34
  const descriptionNodes = new Map<string, { refCount: number; element: Element }>();
43
35
 
44
- // ============================================
45
- // IMPLEMENTATION
46
- // ============================================
47
-
48
36
  /**
49
37
  * Creates an invisible description element and returns aria-describedby props.
50
38
  *
@@ -62,7 +50,6 @@ const descriptionNodes = new Map<string, { refCount: number; element: Element }>
62
50
  * ```
63
51
  */
64
52
  export function createDescription(description: Accessor<string | undefined>): DescriptionProps {
65
- // SSR: return empty object
66
53
  if (isServer) {
67
54
  return {};
68
55
  }
@@ -80,26 +67,23 @@ export function createDescription(description: Accessor<string | undefined>): De
80
67
  let node = descriptionNodes.get(desc);
81
68
 
82
69
  if (!node) {
83
- // Create new description element
84
70
  const newId = `solidaria-description-${descriptionId++}`;
85
71
  setId(newId);
86
72
 
87
- const element = document.createElement('div');
73
+ const element = document.createElement("div");
88
74
  element.id = newId;
89
- element.style.display = 'none';
75
+ element.style.display = "none";
90
76
  element.textContent = desc;
91
77
  document.body.appendChild(element);
92
78
 
93
79
  node = { refCount: 0, element };
94
80
  descriptionNodes.set(desc, node);
95
81
  } else {
96
- // Reuse existing element
97
82
  setId(node.element.id);
98
83
  }
99
84
 
100
85
  node.refCount++;
101
86
 
102
- // Cleanup when description changes or component unmounts
103
87
  onCleanup(() => {
104
88
  if (node && --node.refCount === 0) {
105
89
  node.element.remove();
@@ -108,9 +92,8 @@ export function createDescription(description: Accessor<string | undefined>): De
108
92
  });
109
93
  });
110
94
 
111
- // Return reactive props object
112
95
  return {
113
- get 'aria-describedby'() {
96
+ get "aria-describedby"() {
114
97
  const desc = description();
115
98
  return desc ? id() : undefined;
116
99
  },
package/src/utils/dom.ts CHANGED
@@ -54,7 +54,7 @@ export function nodeContains(parent: Node | null, child: Node | null): boolean {
54
54
  */
55
55
  export function getEventTarget<T extends EventTarget>(event: Event): T | null {
56
56
  // Use composedPath to get the real target when using Shadow DOM
57
- if (typeof event.composedPath === 'function') {
57
+ if (typeof event.composedPath === "function") {
58
58
  const path = event.composedPath();
59
59
  if (path.length > 0) {
60
60
  return path[0] as T;
@@ -74,22 +74,26 @@ export function isFocusable(element: Element): boolean {
74
74
 
75
75
  // Check native focusable elements
76
76
  const tagName = element.tagName.toLowerCase();
77
- if (['input', 'select', 'textarea', 'button', 'a', 'area'].includes(tagName)) {
77
+ if (["input", "select", "textarea", "button", "a", "area"].includes(tagName)) {
78
78
  // For anchor elements, they must have href to be focusable
79
- if (tagName === 'a' || tagName === 'area') {
80
- return element.hasAttribute('href');
79
+ if (tagName === "a" || tagName === "area") {
80
+ return element.hasAttribute("href");
81
81
  }
82
82
  return true;
83
83
  }
84
84
 
85
- // Check for tabIndex
86
- const tabIndex = element.getAttribute('tabindex');
87
- if (tabIndex != null && tabIndex !== '-1') {
85
+ // A negative tabIndex is not tabbable, but it is still programmatically focusable.
86
+ // React Aria's focusable selector includes all tabindex values for this reason.
87
+ const tabIndex = element.getAttribute("tabindex");
88
+ if (tabIndex != null) {
88
89
  return true;
89
90
  }
90
91
 
91
92
  // Check for contenteditable
92
- if (element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') !== 'false') {
93
+ if (
94
+ element.hasAttribute("contenteditable") &&
95
+ element.getAttribute("contenteditable") !== "false"
96
+ ) {
93
97
  return true;
94
98
  }
95
99
 
@@ -103,16 +107,16 @@ export function isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Elemen
103
107
  const { key, code } = event;
104
108
  const element = currentTarget as HTMLElement;
105
109
  const tagName = element.tagName.toLowerCase();
106
- const role = element.getAttribute('role');
110
+ const role = element.getAttribute("role");
107
111
 
108
112
  // Only accept Enter and Space
109
- const isActivationKey = key === 'Enter' || key === ' ' || key === 'Spacebar' || code === 'Space';
113
+ const isActivationKey = key === "Enter" || key === " " || key === "Spacebar" || code === "Space";
110
114
  if (!isActivationKey) {
111
115
  return false;
112
116
  }
113
117
 
114
118
  // Text inputs should handle their own keyboard events
115
- if (tagName === 'textarea') {
119
+ if (tagName === "textarea") {
116
120
  return false;
117
121
  }
118
122
 
@@ -122,13 +126,13 @@ export function isValidKeyboardEvent(event: KeyboardEvent, currentTarget: Elemen
122
126
  }
123
127
 
124
128
  // Links should only respond to Enter, not Space
125
- const isLink = role === 'link' || (!role && isHTMLAnchorLink(element));
126
- if (isLink && key !== 'Enter') {
129
+ const isLink = role === "link" || (!role && isHTMLAnchorLink(element));
130
+ if (isLink && key !== "Enter") {
127
131
  return false;
128
132
  }
129
133
 
130
134
  // Input elements have specific key handling
131
- if (tagName === 'input') {
135
+ if (tagName === "input") {
132
136
  return isValidInputKey(element as HTMLInputElement, key);
133
137
  }
134
138
 
@@ -142,14 +146,24 @@ export function isValidInputKey(target: HTMLInputElement, key: string): boolean
142
146
  const type = target.type.toLowerCase();
143
147
 
144
148
  // Checkbox and radio only respond to Space
145
- if (type === 'checkbox' || type === 'radio') {
146
- return key === ' ' || key === 'Spacebar';
149
+ if (type === "checkbox" || type === "radio") {
150
+ return key === " " || key === "Spacebar";
147
151
  }
148
152
 
149
153
  // Text-like inputs handle their own keyboard events
150
154
  const textInputTypes = [
151
- 'text', 'search', 'url', 'tel', 'email', 'password',
152
- 'date', 'month', 'week', 'time', 'datetime-local', 'number'
155
+ "text",
156
+ "search",
157
+ "url",
158
+ "tel",
159
+ "email",
160
+ "password",
161
+ "date",
162
+ "month",
163
+ "week",
164
+ "time",
165
+ "datetime-local",
166
+ "number",
153
167
  ];
154
168
  if (textInputTypes.includes(type)) {
155
169
  return false;
@@ -162,34 +176,18 @@ export function isValidInputKey(target: HTMLInputElement, key: string): boolean
162
176
  * Checks if an element is an HTML anchor link (has href attribute).
163
177
  */
164
178
  export function isHTMLAnchorLink(target: Element): boolean {
165
- return target.tagName === 'A' && target.hasAttribute('href');
179
+ return target.tagName === "A" && target.hasAttribute("href");
166
180
  }
167
181
 
168
182
  /**
169
183
  * Whether to prevent default on keyboard events for this element.
170
184
  */
171
185
  export function shouldPreventDefaultKeyboard(target: Element, key: string): boolean {
172
- const tagName = target.tagName.toLowerCase();
173
-
174
- // Never prevent default on inputs - they handle their own behavior
175
- if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {
176
- return false;
177
- }
178
-
179
- // Don't prevent default on links for Enter (native navigation)
180
- if ((tagName === 'a' || target.getAttribute('role') === 'link') && key === 'Enter') {
181
- return false;
182
- }
183
-
184
- // Buttons with submit/reset type should not prevent default
185
- if (tagName === 'button') {
186
- const type = (target as HTMLButtonElement).type;
187
- if (type === 'submit' || type === 'reset') {
188
- return false;
189
- }
186
+ if (target instanceof HTMLInputElement) {
187
+ return !isValidInputKey(target, key);
190
188
  }
191
189
 
192
- return true;
190
+ return shouldPreventDefaultUp(target);
193
191
  }
194
192
 
195
193
  /**
@@ -199,19 +197,19 @@ export function shouldPreventDefaultUp(target: Element): boolean {
199
197
  const tagName = target.tagName.toLowerCase();
200
198
 
201
199
  // Never prevent default on form elements
202
- if (tagName === 'input' || tagName === 'textarea' || tagName === 'select') {
200
+ if (tagName === "input" || tagName === "textarea" || tagName === "select") {
203
201
  return false;
204
202
  }
205
203
 
206
204
  // Don't prevent default on links
207
- if (tagName === 'a' || target.getAttribute('role') === 'link') {
205
+ if (tagName === "a" || target.getAttribute("role") === "link") {
208
206
  return false;
209
207
  }
210
208
 
211
209
  // Buttons with submit/reset type should not prevent default
212
- if (tagName === 'button') {
210
+ if (tagName === "button") {
213
211
  const type = (target as HTMLButtonElement).type;
214
- if (type === 'submit' || type === 'reset') {
212
+ if (type === "submit" || type === "reset") {
215
213
  return false;
216
214
  }
217
215
  }
@@ -230,15 +228,15 @@ export function openLink(target: HTMLAnchorElement, event: Event, allowOpener =
230
228
  // Handle modifier keys for open-in-new-tab behavior
231
229
  const keyEvent = event as KeyboardEvent;
232
230
  const shouldOpenInNewTab =
233
- linkTarget === '_blank' ||
231
+ linkTarget === "_blank" ||
234
232
  keyEvent?.metaKey ||
235
233
  keyEvent?.ctrlKey ||
236
234
  keyEvent?.shiftKey ||
237
235
  keyEvent?.altKey;
238
236
 
239
237
  if (shouldOpenInNewTab) {
240
- const features = !allowOpener && rel?.includes('noopener') ? 'noopener' : undefined;
241
- window.open(href, linkTarget || '_blank', features);
238
+ const features = !allowOpener && rel?.includes("noopener") ? "noopener" : undefined;
239
+ window.open(href, linkTarget || "_blank", features);
242
240
  } else {
243
241
  window.location.href = href;
244
242
  }
@@ -248,10 +246,6 @@ export function openLink(target: HTMLAnchorElement, event: Event, allowOpener =
248
246
 
249
247
  (openLink as { isOpening?: boolean }).isOpening = false;
250
248
 
251
- // ============================================
252
- // Scroll utilities
253
- // ============================================
254
-
255
249
  /**
256
250
  * Checks if an element is scrollable based on its overflow style.
257
251
  * @param node - The element to check
@@ -303,23 +297,36 @@ export function willOpenKeyboard(target: Element | null): boolean {
303
297
  const tagName = target.tagName.toLowerCase();
304
298
 
305
299
  // Inputs that open keyboard (not all input types do)
306
- if (tagName === 'input') {
300
+ if (tagName === "input") {
307
301
  const type = (target as HTMLInputElement).type.toLowerCase();
308
302
  // These input types open the keyboard
309
303
  const keyboardTypes = [
310
- 'text', 'search', 'url', 'tel', 'email', 'password',
311
- 'date', 'month', 'week', 'time', 'datetime-local', 'number'
304
+ "text",
305
+ "search",
306
+ "url",
307
+ "tel",
308
+ "email",
309
+ "password",
310
+ "date",
311
+ "month",
312
+ "week",
313
+ "time",
314
+ "datetime-local",
315
+ "number",
312
316
  ];
313
317
  return keyboardTypes.includes(type);
314
318
  }
315
319
 
316
320
  // Textareas always open keyboard
317
- if (tagName === 'textarea') {
321
+ if (tagName === "textarea") {
318
322
  return true;
319
323
  }
320
324
 
321
325
  // Contenteditable elements open keyboard
322
- if (target.hasAttribute('contenteditable') && target.getAttribute('contenteditable') !== 'false') {
326
+ if (
327
+ target.hasAttribute("contenteditable") &&
328
+ target.getAttribute("contenteditable") !== "false"
329
+ ) {
323
330
  return true;
324
331
  }
325
332
 
package/src/utils/env.ts CHANGED
@@ -1,54 +1,53 @@
1
- /**
2
- * Environment detection utilities.
3
- * These avoid direct references to process.env which can cause TypeScript issues in browser environments.
4
- * Compatible with Node.js, Deno, and Vite environments.
5
- */
6
-
7
- // Type-safe access to import.meta.env (Vite) and Deno.env
8
- declare const Deno: { env?: { get(key: string): string | undefined } } | undefined;
9
-
10
- function getEnvVar(key: string): string | undefined {
11
- // Check Vite's import.meta.env
12
- if (typeof import.meta !== 'undefined' && (import.meta as any).env) {
13
- return (import.meta as any).env[key];
14
- }
15
- // Check Deno
16
- if (typeof Deno !== 'undefined' && Deno.env) {
17
- return Deno.env.get(key);
18
- }
19
- // Check Node.js process.env via globalThis
20
- if (typeof globalThis !== 'undefined' && (globalThis as any).process?.env) {
21
- return (globalThis as any).process.env[key];
22
- }
23
- return undefined;
24
- }
25
-
26
- /**
27
- * Check if we're running in a test environment.
28
- */
29
- export function isTestEnv(): boolean {
30
- return getEnvVar('NODE_ENV') === 'test';
31
- }
32
-
33
- /**
34
- * Check if we're running in a development environment (not production).
35
- */
36
- export function isDevEnv(): boolean {
37
- // Check Vite's DEV flag
38
- if (typeof import.meta !== 'undefined' && (import.meta as any).env?.DEV) {
39
- return true;
40
- }
41
- const nodeEnv = getEnvVar('NODE_ENV');
42
- return nodeEnv !== 'production';
43
- }
44
-
45
- /**
46
- * Check if we're running in production.
47
- */
48
- export function isProdEnv(): boolean {
49
- // Check Vite's PROD flag
50
- if (typeof import.meta !== 'undefined' && (import.meta as any).env?.PROD) {
51
- return true;
52
- }
53
- return getEnvVar('NODE_ENV') === 'production';
54
- }
1
+ /**
2
+ * Environment detection utilities.
3
+ * These avoid direct references to process.env which can cause TypeScript issues in browser environments.
4
+ * Compatible with Node.js and Vite environments.
5
+ */
6
+
7
+ type ImportMetaWithEnv = ImportMeta & {
8
+ env?: Record<string, unknown> & { DEV?: boolean; PROD?: boolean };
9
+ };
10
+ type ProcessLike = { env?: Record<string, string | undefined> };
11
+
12
+ function getEnvVar(key: string): string | undefined {
13
+ const importMetaEnv = (import.meta as ImportMetaWithEnv).env;
14
+ if (importMetaEnv && typeof importMetaEnv[key] === "string") {
15
+ return importMetaEnv[key] as string;
16
+ }
17
+
18
+ const processEnv = (globalThis as typeof globalThis & { process?: ProcessLike }).process?.env;
19
+ if (processEnv) {
20
+ return processEnv[key];
21
+ }
22
+ return undefined;
23
+ }
24
+
25
+ /**
26
+ * Check if we're running in a test environment.
27
+ */
28
+ export function isTestEnv(): boolean {
29
+ return getEnvVar("NODE_ENV") === "test";
30
+ }
31
+
32
+ /**
33
+ * Check if we're running in a development environment (not production).
34
+ */
35
+ export function isDevEnv(): boolean {
36
+ const importMetaEnv = (import.meta as ImportMetaWithEnv).env;
37
+ if (importMetaEnv?.DEV === true) {
38
+ return true;
39
+ }
40
+ const nodeEnv = getEnvVar("NODE_ENV");
41
+ return nodeEnv !== "production";
42
+ }
43
+
44
+ /**
45
+ * Check if we're running in production.
46
+ */
47
+ export function isProdEnv(): boolean {
48
+ const importMetaEnv = (import.meta as ImportMetaWithEnv).env;
49
+ if (importMetaEnv?.PROD === true) {
50
+ return true;
51
+ }
52
+ return getEnvVar("NODE_ENV") === "production";
53
+ }