@proyecto-viviana/solidaria 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -1,79 +1,66 @@
1
- /**
2
- * createTooltip hook for Solidaria
3
- *
4
- * Provides the accessibility implementation for a Tooltip component.
5
- *
6
- * Port of @react-aria/tooltip useTooltip.
7
- */
8
-
9
- import { type JSX } from 'solid-js';
10
- import { type TooltipTriggerState } from '@proyecto-viviana/solid-stately';
11
- import { createHover } from '../interactions/createHover';
12
- import { filterDOMProps, mergeProps } from '../utils';
13
-
14
- // ============================================
15
- // TYPES
16
- // ============================================
17
-
18
- export interface TooltipProps {
19
- /** Whether the tooltip is disabled. */
20
- isDisabled?: boolean;
21
- /** Custom aria-label for the tooltip. */
22
- 'aria-label'?: string;
23
- /** ID of an element that labels the tooltip. */
24
- 'aria-labelledby'?: string;
25
- /** ID of an element that describes the tooltip. */
26
- 'aria-describedby'?: string;
27
- }
28
-
29
- export interface TooltipAria {
30
- /** Props to spread on the tooltip element. */
31
- tooltipProps: JSX.HTMLAttributes<HTMLElement>;
32
- }
33
-
34
- // ============================================
35
- // IMPLEMENTATION
36
- // ============================================
37
-
38
- /**
39
- * Provides the accessibility implementation for a Tooltip component.
40
- *
41
- * When hovering over the tooltip itself, it stays open. When the mouse leaves
42
- * the tooltip, it closes.
43
- *
44
- * @example
45
- * ```tsx
46
- * import { createTooltip } from 'solidaria';
47
- * import { createTooltipTriggerState } from 'solid-stately';
48
- *
49
- * function Tooltip(props) {
50
- * const state = props.state;
51
- * const { tooltipProps } = createTooltip(props, state);
52
- *
53
- * return (
54
- * <div {...tooltipProps} role="tooltip">
55
- * {props.children}
56
- * </div>
57
- * );
58
- * }
59
- * ```
60
- */
61
- export function createTooltip(
62
- props: TooltipProps = {},
63
- state?: TooltipTriggerState
64
- ): TooltipAria {
65
- const domProps = filterDOMProps(props, { labelable: true });
66
-
67
- const { hoverProps } = createHover({
68
- onHoverStart: () => state?.open(true),
69
- onHoverEnd: () => state?.close(),
70
- });
71
-
72
- return {
73
- tooltipProps: mergeProps<JSX.HTMLAttributes<HTMLElement>>(
74
- domProps,
75
- hoverProps,
76
- { role: 'tooltip' }
77
- ),
78
- };
79
- }
1
+ /**
2
+ * createTooltip hook for Solidaria
3
+ *
4
+ * Provides the accessibility implementation for a Tooltip component.
5
+ *
6
+ * Port of @react-aria/tooltip useTooltip.
7
+ */
8
+
9
+ import { type JSX } from "solid-js";
10
+ import { type TooltipTriggerState } from "@proyecto-viviana/solid-stately";
11
+ import { createHover } from "../interactions/createHover";
12
+ import { filterDOMProps, mergeProps } from "../utils";
13
+
14
+ export interface TooltipProps {
15
+ /** Whether the tooltip is disabled. */
16
+ isDisabled?: boolean;
17
+ /** Custom aria-label for the tooltip. */
18
+ "aria-label"?: string;
19
+ /** ID of an element that labels the tooltip. */
20
+ "aria-labelledby"?: string;
21
+ /** ID of an element that describes the tooltip. */
22
+ "aria-describedby"?: string;
23
+ }
24
+
25
+ export interface TooltipAria {
26
+ /** Props to spread on the tooltip element. */
27
+ tooltipProps: JSX.HTMLAttributes<HTMLElement>;
28
+ }
29
+
30
+ /**
31
+ * Provides the accessibility implementation for a Tooltip component.
32
+ *
33
+ * When hovering over the tooltip itself, it stays open. When the mouse leaves
34
+ * the tooltip, it closes.
35
+ *
36
+ * @example
37
+ * ```tsx
38
+ * import { createTooltip } from 'solidaria';
39
+ * import { createTooltipTriggerState } from 'solid-stately';
40
+ *
41
+ * function Tooltip(props) {
42
+ * const state = props.state;
43
+ * const { tooltipProps } = createTooltip(props, state);
44
+ *
45
+ * return (
46
+ * <div {...tooltipProps} role="tooltip">
47
+ * {props.children}
48
+ * </div>
49
+ * );
50
+ * }
51
+ * ```
52
+ */
53
+ export function createTooltip(props: TooltipProps = {}, state?: TooltipTriggerState): TooltipAria {
54
+ const domProps = filterDOMProps(props, { labelable: true });
55
+
56
+ const { hoverProps } = createHover({
57
+ onHoverStart: () => state?.open(true),
58
+ onHoverEnd: () => state?.close(),
59
+ });
60
+
61
+ return {
62
+ tooltipProps: mergeProps<JSX.HTMLAttributes<HTMLElement>>(domProps, hoverProps, {
63
+ role: "tooltip",
64
+ }),
65
+ };
66
+ }
@@ -1,222 +1,238 @@
1
- /**
2
- * createTooltipTrigger hook for Solidaria
3
- *
4
- * Provides the behavior and accessibility implementation for a tooltip trigger,
5
- * e.g. a button that shows a description when focused or hovered.
6
- *
7
- * Port of @react-aria/tooltip useTooltipTrigger.
8
- */
9
-
10
- import { type JSX, createEffect, onCleanup } from 'solid-js';
11
- import { type TooltipTriggerState } from '@proyecto-viviana/solid-stately';
12
- import { createHover } from '../interactions/createHover';
13
- import { createFocusable } from '../interactions/createFocusable';
14
- import { mergeProps } from '../utils';
15
- import { createId } from '../ssr';
16
-
17
- // ============================================
18
- // TYPES
19
- // ============================================
20
-
21
- export interface TooltipTriggerProps {
22
- /** Whether the tooltip should be disabled. */
23
- isDisabled?: boolean;
24
- /**
25
- * The trigger mechanism for the tooltip.
26
- * @default 'focus'
27
- */
28
- trigger?: 'focus';
29
- /**
30
- * Whether the tooltip should close when the trigger is pressed.
31
- * @default true
32
- */
33
- shouldCloseOnPress?: boolean;
34
- }
35
-
36
- export interface TooltipTriggerAria {
37
- /** Props to spread on the trigger element. */
38
- triggerProps: JSX.HTMLAttributes<HTMLElement>;
39
- /** Props to spread on the tooltip element (id for accessibility). */
40
- tooltipProps: { id: string };
41
- }
42
-
43
- // ============================================
44
- // GLOBAL STATE
45
- // ============================================
46
-
47
- type Modality = 'keyboard' | 'pointer' | 'virtual';
48
- let currentModality: Modality | null = null;
49
-
50
- // Track interaction modality (pointer vs keyboard)
51
- if (typeof document !== 'undefined') {
52
- document.addEventListener('keydown', () => {
53
- currentModality = 'keyboard';
54
- }, true);
55
- document.addEventListener('pointerdown', () => {
56
- currentModality = 'pointer';
57
- }, true);
58
- document.addEventListener('pointermove', () => {
59
- currentModality = 'pointer';
60
- }, true);
61
- }
62
-
63
- function isFocusVisible(): boolean {
64
- return currentModality === 'keyboard';
65
- }
66
-
67
- // ============================================
68
- // IMPLEMENTATION
69
- // ============================================
70
-
71
- /**
72
- * Provides the behavior and accessibility implementation for a tooltip trigger.
73
- *
74
- * @example
75
- * ```tsx
76
- * import { createTooltipTrigger } from 'solidaria';
77
- * import { createTooltipTriggerState } from 'solid-stately';
78
- *
79
- * function TooltipButton(props) {
80
- * let ref;
81
- * const state = createTooltipTriggerState({ delay: 500 });
82
- * const { triggerProps, tooltipProps } = createTooltipTrigger(
83
- * { isDisabled: props.isDisabled },
84
- * state,
85
- * () => ref
86
- * );
87
- *
88
- * return (
89
- * <>
90
- * <button ref={ref} {...triggerProps}>
91
- * Hover me
92
- * </button>
93
- * <Show when={state.isOpen()}>
94
- * <div {...tooltipProps}>Tooltip content</div>
95
- * </Show>
96
- * </>
97
- * );
98
- * }
99
- * ```
100
- */
101
- export function createTooltipTrigger(
102
- props: TooltipTriggerProps,
103
- state: TooltipTriggerState,
104
- ref: () => HTMLElement | null | undefined
105
- ): TooltipTriggerAria {
106
- const {
107
- isDisabled = false,
108
- trigger,
109
- shouldCloseOnPress = true,
110
- } = props;
111
-
112
- const tooltipId = createId();
113
-
114
- // Track hover and focus state
115
- let isHovered = false;
116
- let isFocused = false;
117
-
118
- const handleShow = () => {
119
- if (isHovered || isFocused) {
120
- state.open(isFocused);
121
- }
122
- };
123
-
124
- const handleHide = (immediate?: boolean) => {
125
- if (!isHovered && !isFocused) {
126
- state.close(immediate);
127
- }
128
- };
129
-
130
- // Handle Escape key to dismiss tooltip
131
- createEffect(() => {
132
- if (!state.isOpen()) return;
133
-
134
- const onKeyDown = (e: KeyboardEvent) => {
135
- const element = ref();
136
- if (element) {
137
- if (e.key === 'Escape') {
138
- e.stopPropagation();
139
- state.close(true);
140
- }
141
- }
142
- };
143
-
144
- document.addEventListener('keydown', onKeyDown, true);
145
- onCleanup(() => {
146
- document.removeEventListener('keydown', onKeyDown, true);
147
- });
148
- });
149
-
150
- const onHoverStart = () => {
151
- if (trigger === 'focus') {
152
- return;
153
- }
154
- // Hover events (onPointerEnter) only fire from pointer interactions,
155
- // so we can always set isHovered to true here
156
- isHovered = true;
157
- handleShow();
158
- };
159
-
160
- const onHoverEnd = () => {
161
- if (trigger === 'focus') {
162
- return;
163
- }
164
- isFocused = false;
165
- isHovered = false;
166
- handleHide();
167
- };
168
-
169
- const onPressStart = () => {
170
- if (!shouldCloseOnPress) {
171
- return;
172
- }
173
- isFocused = false;
174
- isHovered = false;
175
- handleHide(true);
176
- };
177
-
178
- const onFocus = () => {
179
- const visible = isFocusVisible();
180
- if (visible) {
181
- isFocused = true;
182
- handleShow();
183
- }
184
- };
185
-
186
- const onBlur = () => {
187
- isFocused = false;
188
- isHovered = false;
189
- handleHide(true);
190
- };
191
-
192
- const { hoverProps } = createHover({
193
- isDisabled,
194
- onHoverStart,
195
- onHoverEnd,
196
- });
197
-
198
- const { focusableProps } = createFocusable({
199
- isDisabled,
200
- onFocus,
201
- onBlur,
202
- });
203
-
204
- const triggerProps = {
205
- ...focusableProps,
206
- ...hoverProps,
207
- get 'aria-describedby'() {
208
- return state.isOpen() ? tooltipId : undefined;
209
- },
210
- onPointerDown: onPressStart,
211
- onKeyDown: onPressStart,
212
- // Remove tabIndex set by focusableProps to avoid overriding
213
- tabIndex: undefined,
214
- };
215
-
216
- return {
217
- triggerProps: triggerProps as JSX.HTMLAttributes<HTMLElement>,
218
- tooltipProps: {
219
- id: tooltipId,
220
- },
221
- };
222
- }
1
+ /**
2
+ * createTooltipTrigger hook for Solidaria
3
+ *
4
+ * Provides the behavior and accessibility implementation for a tooltip trigger,
5
+ * e.g. a button that shows a description when focused or hovered.
6
+ *
7
+ * Port of @react-aria/tooltip useTooltipTrigger.
8
+ */
9
+
10
+ import { type JSX, createEffect, onCleanup } from "solid-js";
11
+ import { type TooltipTriggerState } from "@proyecto-viviana/solid-stately";
12
+ import { createHover } from "../interactions/createHover";
13
+ import { createFocusable } from "../interactions/createFocusable";
14
+ import { createId } from "../ssr";
15
+
16
+ export interface TooltipTriggerProps {
17
+ /** Whether the tooltip should be disabled. */
18
+ isDisabled?: boolean;
19
+ /**
20
+ * The trigger mechanism for the tooltip.
21
+ * @default 'hover'
22
+ */
23
+ trigger?: "focus" | "hover";
24
+ /**
25
+ * Whether the tooltip should close when the trigger is pressed.
26
+ * @default true
27
+ */
28
+ shouldCloseOnPress?: boolean;
29
+ /**
30
+ * ID of the tooltip element.
31
+ * @internal Used by component wrappers to merge explicit tooltip ids with trigger aria-describedby.
32
+ */
33
+ tooltipId?: string;
34
+ }
35
+
36
+ export interface TooltipTriggerAria {
37
+ /** Props to spread on the trigger element. */
38
+ triggerProps: JSX.HTMLAttributes<HTMLElement>;
39
+ /** Props to spread on the tooltip element (id for accessibility). */
40
+ tooltipProps: { readonly id: string };
41
+ }
42
+
43
+ type Modality = "keyboard" | "pointer" | "virtual";
44
+ let currentModality: Modality | null = null;
45
+
46
+ // Track interaction modality (pointer vs keyboard)
47
+ if (typeof document !== "undefined") {
48
+ document.addEventListener(
49
+ "keydown",
50
+ () => {
51
+ currentModality = "keyboard";
52
+ },
53
+ true,
54
+ );
55
+ document.addEventListener(
56
+ "pointerdown",
57
+ () => {
58
+ currentModality = "pointer";
59
+ },
60
+ true,
61
+ );
62
+ document.addEventListener(
63
+ "pointermove",
64
+ () => {
65
+ currentModality = "pointer";
66
+ },
67
+ true,
68
+ );
69
+ }
70
+
71
+ function isFocusVisible(): boolean {
72
+ return currentModality === "keyboard";
73
+ }
74
+
75
+ /**
76
+ * Provides the behavior and accessibility implementation for a tooltip trigger.
77
+ *
78
+ * @example
79
+ * ```tsx
80
+ * import { createTooltipTrigger } from 'solidaria';
81
+ * import { createTooltipTriggerState } from 'solid-stately';
82
+ *
83
+ * function TooltipButton(props) {
84
+ * let ref;
85
+ * const state = createTooltipTriggerState({ delay: 500 });
86
+ * const { triggerProps, tooltipProps } = createTooltipTrigger(
87
+ * { isDisabled: props.isDisabled },
88
+ * state,
89
+ * () => ref
90
+ * );
91
+ *
92
+ * return (
93
+ * <>
94
+ * <button ref={ref} {...triggerProps}>
95
+ * Hover me
96
+ * </button>
97
+ * <Show when={state.isOpen()}>
98
+ * <div {...tooltipProps}>Tooltip content</div>
99
+ * </Show>
100
+ * </>
101
+ * );
102
+ * }
103
+ * ```
104
+ */
105
+ export function createTooltipTrigger(
106
+ props: TooltipTriggerProps,
107
+ state: TooltipTriggerState,
108
+ ref: () => HTMLElement | null | undefined,
109
+ ): TooltipTriggerAria {
110
+ const isDisabled = () => props.isDisabled ?? false;
111
+ const trigger = () => props.trigger ?? "hover";
112
+ const shouldCloseOnPress = () => props.shouldCloseOnPress ?? true;
113
+
114
+ const generatedTooltipId = createId();
115
+ const tooltipId = () => props.tooltipId ?? generatedTooltipId;
116
+
117
+ // Track hover and focus state
118
+ let isHovered = false;
119
+ let isFocused = false;
120
+
121
+ const handleShow = () => {
122
+ if (!isDisabled() && (isHovered || isFocused)) {
123
+ state.open(isFocused);
124
+ }
125
+ };
126
+
127
+ const handleHide = (immediate?: boolean) => {
128
+ if (!isHovered && !isFocused) {
129
+ state.close(immediate);
130
+ }
131
+ };
132
+
133
+ // Handle Escape key to dismiss tooltip
134
+ createEffect(() => {
135
+ if (!state.isOpen()) return;
136
+
137
+ const onKeyDown = (e: KeyboardEvent) => {
138
+ const element = ref();
139
+ if (element) {
140
+ if (e.key === "Escape") {
141
+ e.stopPropagation();
142
+ state.close(true);
143
+ }
144
+ }
145
+ };
146
+
147
+ document.addEventListener("keydown", onKeyDown, true);
148
+ onCleanup(() => {
149
+ document.removeEventListener("keydown", onKeyDown, true);
150
+ });
151
+ });
152
+
153
+ const onHoverStart = () => {
154
+ if (isDisabled() || trigger() === "focus") {
155
+ return;
156
+ }
157
+ // Hover events (onPointerEnter) only fire from pointer interactions,
158
+ // so we can always set isHovered to true here
159
+ isHovered = true;
160
+ handleShow();
161
+ };
162
+
163
+ const onHoverEnd = () => {
164
+ if (isDisabled() || trigger() === "focus") {
165
+ return;
166
+ }
167
+ isFocused = false;
168
+ isHovered = false;
169
+ handleHide();
170
+ };
171
+
172
+ const closeOnPress = () => {
173
+ if (isDisabled() || !shouldCloseOnPress()) {
174
+ return;
175
+ }
176
+ isFocused = false;
177
+ isHovered = false;
178
+ handleHide(true);
179
+ };
180
+
181
+ const onKeyDownPress = (event: KeyboardEvent) => {
182
+ if (event.key !== "Enter" && event.key !== " " && event.key !== "Spacebar") {
183
+ return;
184
+ }
185
+ closeOnPress();
186
+ };
187
+
188
+ const onFocus = () => {
189
+ if (isDisabled()) {
190
+ return;
191
+ }
192
+
193
+ const visible = isFocusVisible();
194
+ if (visible) {
195
+ isFocused = true;
196
+ handleShow();
197
+ }
198
+ };
199
+
200
+ const onBlur = () => {
201
+ isFocused = false;
202
+ isHovered = false;
203
+ handleHide(true);
204
+ };
205
+
206
+ const { hoverProps } = createHover(() => ({
207
+ isDisabled: isDisabled(),
208
+ onHoverStart,
209
+ onHoverEnd,
210
+ }));
211
+
212
+ const { focusableProps } = createFocusable({
213
+ isDisabled,
214
+ onFocus,
215
+ onBlur,
216
+ });
217
+
218
+ const triggerProps = {
219
+ ...focusableProps,
220
+ ...hoverProps,
221
+ get "aria-describedby"() {
222
+ return !isDisabled() && state.isOpen() ? tooltipId() : undefined;
223
+ },
224
+ onPointerDown: closeOnPress,
225
+ onKeyDown: onKeyDownPress,
226
+ // Remove tabIndex set by focusableProps to avoid overriding
227
+ tabIndex: undefined,
228
+ };
229
+
230
+ return {
231
+ triggerProps: triggerProps as JSX.HTMLAttributes<HTMLElement>,
232
+ tooltipProps: {
233
+ get id() {
234
+ return tooltipId();
235
+ },
236
+ },
237
+ };
238
+ }
@@ -1,6 +1,6 @@
1
- export { createTooltip, type TooltipProps, type TooltipAria } from './createTooltip';
2
- export {
3
- createTooltipTrigger,
4
- type TooltipTriggerProps,
5
- type TooltipTriggerAria,
6
- } from './createTooltipTrigger';
1
+ export { createTooltip, type TooltipProps, type TooltipAria } from "./createTooltip";
2
+ export {
3
+ createTooltipTrigger,
4
+ type TooltipTriggerProps,
5
+ type TooltipTriggerAria,
6
+ } from "./createTooltipTrigger";