@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,149 +1,201 @@
1
- /**
2
- * Provides the behavior and accessibility implementation for a menu item.
3
- * Based on @react-aria/menu useMenuItem.
4
- */
5
-
6
- import { type JSX, type Accessor } from 'solid-js';
7
- import { createPress } from '../interactions/createPress';
8
- import { createHover } from '../interactions/createHover';
9
- import { createFocusRing } from '../interactions/createFocusRing';
10
- import { mergeProps } from '../utils/mergeProps';
11
- import { access, type MaybeAccessor } from '../utils/reactivity';
12
- import { getMenuData } from './createMenu';
13
- import type { MenuState, Key } from '@proyecto-viviana/solid-stately';
14
-
15
- export interface AriaMenuItemProps {
16
- /** The unique key for the menu item. */
17
- key: Key;
18
- /** Whether the menu item is disabled. */
19
- isDisabled?: boolean;
20
- /** An accessible label for the menu item. */
21
- 'aria-label'?: string;
22
- /** Handler called when the menu item is selected. */
23
- onAction?: () => void;
24
- /** Whether to close the menu when this item is selected. */
25
- closeOnSelect?: boolean;
26
- }
27
-
28
- export interface MenuItemAria {
29
- /** Props for the menu item element. */
30
- menuItemProps: JSX.HTMLAttributes<HTMLElement>;
31
- /** Props for the label text inside the menu item. */
32
- labelProps: JSX.HTMLAttributes<HTMLElement>;
33
- /** Props for the description text inside the menu item. */
34
- descriptionProps: JSX.HTMLAttributes<HTMLElement>;
35
- /** Props for the keyboard shortcut inside the menu item. */
36
- keyboardShortcutProps: JSX.HTMLAttributes<HTMLElement>;
37
- /** Whether the menu item is currently focused. */
38
- isFocused: Accessor<boolean>;
39
- /** Whether the menu item is keyboard focused. */
40
- isFocusVisible: Accessor<boolean>;
41
- /** Whether the menu item is currently pressed. */
42
- isPressed: Accessor<boolean>;
43
- /** Whether the menu item is disabled. */
44
- isDisabled: Accessor<boolean>;
45
- }
46
-
47
- /**
48
- * Provides the behavior and accessibility implementation for a menu item.
49
- */
50
- export function createMenuItem<T>(
51
- props: MaybeAccessor<AriaMenuItemProps>,
52
- state: MenuState<T>,
53
- _ref?: () => HTMLElement | null
54
- ): MenuItemAria {
55
- const getProps = () => access(props);
56
-
57
- // Get shared data from menu
58
- const getData = () => getMenuData(state);
59
-
60
- // Computed states
61
- const isDisabled: Accessor<boolean> = () => {
62
- return getProps().isDisabled ?? state.isDisabled(getProps().key);
63
- };
64
-
65
- const isFocused: Accessor<boolean> = () => {
66
- return state.focusedKey() === getProps().key;
67
- };
68
-
69
- // Handle press
70
- const { pressProps, isPressed } = createPress({
71
- get isDisabled() {
72
- return isDisabled();
73
- },
74
- onPress() {
75
- const p = getProps();
76
- const key = p.key;
77
- const data = getData();
78
-
79
- // Call item-specific onAction
80
- p.onAction?.();
81
-
82
- // Call menu-level onAction
83
- data?.onAction?.(key);
84
-
85
- // Close menu if closeOnSelect is not explicitly false
86
- if (p.closeOnSelect !== false) {
87
- data?.onClose?.();
88
- }
89
- },
90
- });
91
-
92
- // Handle hover
93
- const { hoverProps } = createHover({
94
- get isDisabled() {
95
- return isDisabled();
96
- },
97
- onHoverStart() {
98
- state.setFocusedKey(getProps().key);
99
- },
100
- });
101
-
102
- // Handle focus ring
103
- const { isFocusVisible, focusProps } = createFocusRing();
104
-
105
- // Generate unique IDs for label and description
106
- const labelId = `${getProps().key}-label`;
107
- const descriptionId = `${getProps().key}-desc`;
108
- const keyboardId = `${getProps().key}-kbd`;
109
-
110
- return {
111
- get menuItemProps() {
112
- const key = getProps().key;
113
- const ariaLabel = getProps()['aria-label'];
114
-
115
- return mergeProps(
116
- pressProps as Record<string, unknown>,
117
- hoverProps as Record<string, unknown>,
118
- focusProps as Record<string, unknown>,
119
- {
120
- role: 'menuitem',
121
- id: String(key),
122
- 'aria-disabled': isDisabled() || undefined,
123
- 'aria-label': ariaLabel,
124
- 'aria-labelledby': !ariaLabel ? labelId : undefined,
125
- 'aria-describedby': descriptionId,
126
- tabIndex: isFocused() ? 0 : -1,
127
- 'data-focused': isFocused() || undefined,
128
- 'data-focus-visible': isFocusVisible() || undefined,
129
- 'data-pressed': isPressed() || undefined,
130
- 'data-disabled': isDisabled() || undefined,
131
- } as Record<string, unknown>
132
- ) as JSX.HTMLAttributes<HTMLElement>;
133
- },
134
- labelProps: {
135
- id: labelId,
136
- },
137
- descriptionProps: {
138
- id: descriptionId,
139
- },
140
- keyboardShortcutProps: {
141
- id: keyboardId,
142
- 'aria-hidden': true,
143
- },
144
- isFocused,
145
- isFocusVisible: () => isFocused() && isFocusVisible(),
146
- isPressed,
147
- isDisabled,
148
- };
149
- }
1
+ /**
2
+ * Provides the behavior and accessibility implementation for a menu item.
3
+ * Based on @react-aria/menu useMenuItem.
4
+ */
5
+
6
+ import { type JSX, type Accessor } from "solid-js";
7
+ import { createPress } from "../interactions/createPress";
8
+ import { createHover } from "../interactions/createHover";
9
+ import { createFocusRing } from "../interactions/createFocusRing";
10
+ import { mergeProps } from "../utils/mergeProps";
11
+ import { access, type MaybeAccessor } from "../utils/reactivity";
12
+ import { getMenuData } from "./createMenu";
13
+ import type { MenuState, Key, SelectionMode } from "@proyecto-viviana/solid-stately";
14
+
15
+ export interface AriaMenuItemProps {
16
+ /** The unique key for the menu item. */
17
+ key: Key;
18
+ /** Whether the menu item is disabled. */
19
+ isDisabled?: boolean;
20
+ /** An accessible label for the menu item. */
21
+ "aria-label"?: string;
22
+ /** Handler called when the menu item is selected. */
23
+ onAction?: () => void;
24
+ /** Whether to close the menu when this item is selected. */
25
+ closeOnSelect?: boolean;
26
+ /** A URL to link to. Turns the menu item into a link. */
27
+ href?: string;
28
+ /** The target window for the link. */
29
+ target?: string;
30
+ /** The relationship between the linked resource and the current page. */
31
+ rel?: string;
32
+ /** Causes the browser to download the linked URL. A string may be provided to suggest a file name. */
33
+ download?: boolean | string;
34
+ }
35
+
36
+ export interface MenuItemAria {
37
+ /** Props for the menu item element. */
38
+ menuItemProps: JSX.HTMLAttributes<HTMLElement>;
39
+ /** Props for the label text inside the menu item. */
40
+ labelProps: JSX.HTMLAttributes<HTMLElement>;
41
+ /** Props for the description text inside the menu item. */
42
+ descriptionProps: JSX.HTMLAttributes<HTMLElement>;
43
+ /** Props for the keyboard shortcut inside the menu item. */
44
+ keyboardShortcutProps: JSX.HTMLAttributes<HTMLElement>;
45
+ /** Whether the menu item is currently focused. */
46
+ isFocused: Accessor<boolean>;
47
+ /** Whether the menu item is keyboard focused. */
48
+ isFocusVisible: Accessor<boolean>;
49
+ /** Whether the menu item is currently pressed. */
50
+ isPressed: Accessor<boolean>;
51
+ /** Whether the menu item is disabled. */
52
+ isDisabled: Accessor<boolean>;
53
+ /** Whether the menu item is selected. */
54
+ isSelected: Accessor<boolean>;
55
+ /** The parent menu selection mode. */
56
+ selectionMode: Accessor<SelectionMode>;
57
+ }
58
+
59
+ /**
60
+ * Provides the behavior and accessibility implementation for a menu item.
61
+ */
62
+ export function createMenuItem<T>(
63
+ props: MaybeAccessor<AriaMenuItemProps>,
64
+ state: MenuState<T>,
65
+ _ref?: () => HTMLElement | null,
66
+ ): MenuItemAria {
67
+ const getProps = () => access(props);
68
+
69
+ // Get shared data from menu
70
+ const getData = () => getMenuData(state);
71
+
72
+ // Computed states
73
+ const isDisabled: Accessor<boolean> = () => {
74
+ return Boolean(
75
+ getData()?.isDisabled || getProps().isDisabled || state.isDisabled(getProps().key),
76
+ );
77
+ };
78
+
79
+ const isFocused: Accessor<boolean> = () => {
80
+ return state.focusedKey() === getProps().key;
81
+ };
82
+
83
+ const isSelected: Accessor<boolean> = () => {
84
+ return selectionMode() !== "none" && state.isSelected(getProps().key);
85
+ };
86
+
87
+ const selectionMode: Accessor<SelectionMode> = () => {
88
+ return state.selectionMode();
89
+ };
90
+
91
+ // Whether this is a link item
92
+ const isLink = () => !!getProps().href;
93
+
94
+ // Handle press
95
+ const { pressProps, isPressed } = createPress({
96
+ get isDisabled() {
97
+ return isDisabled();
98
+ },
99
+ onPress() {
100
+ const p = getProps();
101
+ const key = p.key;
102
+ const data = getData();
103
+
104
+ state.select(key, undefined, state.collection());
105
+
106
+ // Call item-specific onAction
107
+ p.onAction?.();
108
+
109
+ // Call menu-level onAction
110
+ data?.onAction?.(key);
111
+
112
+ // Close menu if closeOnSelect is not explicitly false
113
+ // For link items, default to closing the menu
114
+ if (p.closeOnSelect !== false) {
115
+ data?.onClose?.();
116
+ }
117
+ },
118
+ });
119
+
120
+ // Handle hover
121
+ const { hoverProps } = createHover({
122
+ get isDisabled() {
123
+ return isDisabled();
124
+ },
125
+ onHoverStart() {
126
+ state.setFocusedKey(getProps().key);
127
+ },
128
+ });
129
+
130
+ // Handle focus ring
131
+ const { isFocusVisible, focusProps } = createFocusRing();
132
+
133
+ // Generate unique IDs for label and description
134
+ const labelId = `${getProps().key}-label`;
135
+ const descriptionId = `${getProps().key}-desc`;
136
+ const keyboardId = `${getProps().key}-kbd`;
137
+
138
+ return {
139
+ get menuItemProps() {
140
+ const p = getProps();
141
+ const key = p.key;
142
+ const ariaLabel = p["aria-label"];
143
+ const mode = selectionMode();
144
+ const selected = isSelected();
145
+
146
+ const baseProps: Record<string, unknown> = {
147
+ role:
148
+ mode === "single"
149
+ ? "menuitemradio"
150
+ : mode === "multiple"
151
+ ? "menuitemcheckbox"
152
+ : "menuitem",
153
+ id: String(key),
154
+ "aria-disabled": isDisabled() || undefined,
155
+ "aria-checked": mode !== "none" ? selected : undefined,
156
+ "aria-label": ariaLabel,
157
+ "aria-labelledby": !ariaLabel ? labelId : undefined,
158
+ "aria-describedby": descriptionId,
159
+ tabIndex: isFocused() ? 0 : -1,
160
+ "data-selected": selected || undefined,
161
+ "data-focused": isFocused() || undefined,
162
+ "data-focus-visible": isFocusVisible() || undefined,
163
+ "data-pressed": isPressed() || undefined,
164
+ "data-disabled": isDisabled() || undefined,
165
+ };
166
+
167
+ // Add link props when href is present
168
+ if (isLink()) {
169
+ baseProps.href = isDisabled() ? undefined : p.href;
170
+ if (p.target) baseProps.target = p.target;
171
+ if (p.rel) baseProps.rel = p.rel;
172
+ if (p.download != null && p.download !== false) {
173
+ baseProps.download = p.download === true ? "" : p.download;
174
+ }
175
+ }
176
+
177
+ return mergeProps(
178
+ pressProps as Record<string, unknown>,
179
+ hoverProps as Record<string, unknown>,
180
+ focusProps as Record<string, unknown>,
181
+ baseProps,
182
+ ) as JSX.HTMLAttributes<HTMLElement>;
183
+ },
184
+ labelProps: {
185
+ id: labelId,
186
+ },
187
+ descriptionProps: {
188
+ id: descriptionId,
189
+ },
190
+ keyboardShortcutProps: {
191
+ id: keyboardId,
192
+ "aria-hidden": true,
193
+ },
194
+ isFocused,
195
+ isFocusVisible: () => isFocused() && isFocusVisible(),
196
+ isPressed,
197
+ isDisabled,
198
+ isSelected,
199
+ selectionMode,
200
+ };
201
+ }
@@ -1,88 +1,88 @@
1
- /**
2
- * Provides the behavior and accessibility implementation for a menu trigger.
3
- * Based on @react-aria/menu useMenuTrigger.
4
- */
5
-
6
- import { type JSX } from 'solid-js';
7
- import { createId } from '../ssr';
8
- import { access, type MaybeAccessor } from '../utils/reactivity';
9
- import type { OverlayTriggerState } from '@proyecto-viviana/solid-stately';
10
-
11
- export interface AriaMenuTriggerProps {
12
- /** The type of menu that the menu trigger opens. */
13
- type?: 'menu' | 'listbox';
14
- /** Whether the menu trigger is disabled. */
15
- isDisabled?: boolean;
16
- /** An ID for the menu. */
17
- id?: string;
18
- }
19
-
20
- export interface MenuTriggerAria {
21
- /** Props for the menu trigger button. */
22
- menuTriggerProps: JSX.HTMLAttributes<HTMLElement> & {
23
- onPress: () => void;
24
- onKeyDown: (e: KeyboardEvent) => void;
25
- };
26
- /** Props for the menu element. */
27
- menuProps: JSX.HTMLAttributes<HTMLElement>;
28
- }
29
-
30
- /**
31
- * Provides the behavior and accessibility implementation for a menu trigger.
32
- */
33
- export function createMenuTrigger(
34
- props: MaybeAccessor<AriaMenuTriggerProps>,
35
- state: OverlayTriggerState
36
- ): MenuTriggerAria {
37
- const getProps = () => access(props);
38
- const menuId = createId(getProps().id);
39
-
40
- const onPress = () => {
41
- if (!getProps().isDisabled) {
42
- state.toggle();
43
- }
44
- };
45
-
46
- const onKeyDown = (e: KeyboardEvent) => {
47
- if (getProps().isDisabled) return;
48
-
49
- switch (e.key) {
50
- case 'Enter':
51
- case ' ':
52
- case 'ArrowDown': {
53
- e.preventDefault();
54
- if (!state.isOpen()) {
55
- state.open();
56
- }
57
- break;
58
- }
59
- case 'ArrowUp': {
60
- e.preventDefault();
61
- if (!state.isOpen()) {
62
- state.open();
63
- }
64
- break;
65
- }
66
- }
67
- };
68
-
69
- return {
70
- get menuTriggerProps() {
71
- const p = getProps();
72
- const type = p.type ?? 'menu';
73
- const isOpen = state.isOpen();
74
-
75
- return {
76
- 'aria-haspopup': type,
77
- 'aria-expanded': isOpen,
78
- 'aria-controls': isOpen ? menuId : undefined,
79
- 'aria-disabled': p.isDisabled || undefined,
80
- onPress,
81
- onKeyDown,
82
- };
83
- },
84
- menuProps: {
85
- id: menuId,
86
- },
87
- };
88
- }
1
+ /**
2
+ * Provides the behavior and accessibility implementation for a menu trigger.
3
+ * Based on @react-aria/menu useMenuTrigger.
4
+ */
5
+
6
+ import { type JSX } from "solid-js";
7
+ import { createId } from "../ssr";
8
+ import { access, type MaybeAccessor } from "../utils/reactivity";
9
+ import type { OverlayTriggerState } from "@proyecto-viviana/solid-stately";
10
+
11
+ export interface AriaMenuTriggerProps {
12
+ /** The type of menu that the menu trigger opens. */
13
+ type?: "menu" | "listbox";
14
+ /** Whether the menu trigger is disabled. */
15
+ isDisabled?: boolean;
16
+ /** An ID for the menu. */
17
+ id?: string;
18
+ }
19
+
20
+ export interface MenuTriggerAria {
21
+ /** Props for the menu trigger button. */
22
+ menuTriggerProps: JSX.HTMLAttributes<HTMLElement> & {
23
+ onPress: () => void;
24
+ onKeyDown: (e: KeyboardEvent) => void;
25
+ };
26
+ /** Props for the menu element. */
27
+ menuProps: JSX.HTMLAttributes<HTMLElement>;
28
+ }
29
+
30
+ /**
31
+ * Provides the behavior and accessibility implementation for a menu trigger.
32
+ */
33
+ export function createMenuTrigger(
34
+ props: MaybeAccessor<AriaMenuTriggerProps>,
35
+ state: OverlayTriggerState,
36
+ ): MenuTriggerAria {
37
+ const getProps = () => access(props);
38
+ const menuId = createId(getProps().id);
39
+
40
+ const onPress = () => {
41
+ if (!getProps().isDisabled) {
42
+ state.toggle();
43
+ }
44
+ };
45
+
46
+ const onKeyDown = (e: KeyboardEvent) => {
47
+ if (getProps().isDisabled) return;
48
+
49
+ switch (e.key) {
50
+ case "Enter":
51
+ case " ":
52
+ case "ArrowDown": {
53
+ e.preventDefault();
54
+ if (!state.isOpen()) {
55
+ state.open();
56
+ }
57
+ break;
58
+ }
59
+ case "ArrowUp": {
60
+ e.preventDefault();
61
+ if (!state.isOpen()) {
62
+ state.open();
63
+ }
64
+ break;
65
+ }
66
+ }
67
+ };
68
+
69
+ return {
70
+ get menuTriggerProps() {
71
+ const p = getProps();
72
+ const type = p.type ?? "menu";
73
+ const isOpen = state.isOpen();
74
+
75
+ return {
76
+ "aria-haspopup": type,
77
+ "aria-expanded": isOpen,
78
+ "aria-controls": isOpen ? menuId : undefined,
79
+ "aria-disabled": p.isDisabled || undefined,
80
+ onPress,
81
+ onKeyDown,
82
+ };
83
+ },
84
+ menuProps: {
85
+ id: menuId,
86
+ },
87
+ };
88
+ }
package/src/menu/index.ts CHANGED
@@ -1,18 +1,9 @@
1
- export {
2
- createMenu,
3
- getMenuData,
4
- type AriaMenuProps,
5
- type MenuAria,
6
- } from './createMenu';
7
-
8
- export {
9
- createMenuItem,
10
- type AriaMenuItemProps,
11
- type MenuItemAria,
12
- } from './createMenuItem';
13
-
14
- export {
15
- createMenuTrigger,
16
- type AriaMenuTriggerProps,
17
- type MenuTriggerAria,
18
- } from './createMenuTrigger';
1
+ export { createMenu, getMenuData, type AriaMenuProps, type MenuAria } from "./createMenu";
2
+
3
+ export { createMenuItem, type AriaMenuItemProps, type MenuItemAria } from "./createMenuItem";
4
+
5
+ export {
6
+ createMenuTrigger,
7
+ type AriaMenuTriggerProps,
8
+ type MenuTriggerAria,
9
+ } from "./createMenuTrigger";
@@ -8,13 +8,9 @@
8
8
  * This is a port of @react-aria/meter's useMeter hook.
9
9
  */
10
10
 
11
- import { createProgressBar, type AriaProgressBarProps } from '../progress/createProgressBar';
11
+ import { createProgressBar, type AriaProgressBarProps } from "../progress/createProgressBar";
12
12
 
13
- // ============================================
14
- // TYPES
15
- // ============================================
16
-
17
- export interface AriaMeterProps extends Omit<AriaProgressBarProps, 'isIndeterminate'> {
13
+ export interface AriaMeterProps extends Omit<AriaProgressBarProps, "isIndeterminate"> {
18
14
  /** The current value (controlled). */
19
15
  value?: number;
20
16
  /** The smallest value allowed for the input. @default 0 */
@@ -28,13 +24,13 @@ export interface AriaMeterProps extends Omit<AriaProgressBarProps, 'isIndetermin
28
24
  /** The content to display as the label. */
29
25
  label?: string;
30
26
  /** An accessibility label for this item. */
31
- 'aria-label'?: string;
27
+ "aria-label"?: string;
32
28
  /** Identifies the element (or elements) that labels the current element. */
33
- 'aria-labelledby'?: string;
29
+ "aria-labelledby"?: string;
34
30
  /** Identifies the element (or elements) that describes the object. */
35
- 'aria-describedby'?: string;
31
+ "aria-describedby"?: string;
36
32
  /** Identifies the element (or elements) that provide a detailed, extended description for the object. */
37
- 'aria-details'?: string;
33
+ "aria-details"?: string;
38
34
  }
39
35
 
40
36
  export interface MeterAria {
@@ -44,10 +40,6 @@ export interface MeterAria {
44
40
  labelProps: Record<string, unknown>;
45
41
  }
46
42
 
47
- // ============================================
48
- // IMPLEMENTATION
49
- // ============================================
50
-
51
43
  /**
52
44
  * Provides the accessibility implementation for a meter component.
53
45
  * Meters represent a quantity within a known range, or a fractional value.
@@ -60,12 +52,7 @@ export function createMeter(props: AriaMeterProps = {}): MeterAria {
60
52
  get meterProps() {
61
53
  return {
62
54
  ...progressBarProps,
63
- // Use the meter role if available, but fall back to progressbar if not
64
- // Chrome currently falls back from meter automatically, and Firefox
65
- // does not support meter at all. Safari 13+ seems to support meter properly.
66
- // https://bugs.chromium.org/p/chromium/issues/detail?id=944542
67
- // https://bugzilla.mozilla.org/show_bug.cgi?id=1460378
68
- role: 'meter progressbar',
55
+ role: "meter",
69
56
  };
70
57
  },
71
58
  get labelProps() {
@@ -1 +1 @@
1
- export { createMeter, type AriaMeterProps, type MeterAria } from './createMeter';
1
+ export { createMeter, type AriaMeterProps, type MeterAria } from "./createMeter";