@proyecto-viviana/solidaria 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/README.md +31 -236
  2. package/dist/actiongroup/createActionGroup.d.ts +5 -5
  3. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  4. package/dist/actiongroup/index.d.ts +1 -1
  5. package/dist/autocomplete/createAutocomplete.d.ts +10 -10
  6. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  7. package/dist/autocomplete/index.d.ts +1 -1
  8. package/dist/autocomplete/index.d.ts.map +1 -1
  9. package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
  10. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  11. package/dist/breadcrumbs/index.d.ts +1 -1
  12. package/dist/button/createButton.d.ts +1 -1
  13. package/dist/button/createButton.d.ts.map +1 -1
  14. package/dist/button/createToggleButton.d.ts +3 -3
  15. package/dist/button/createToggleButtonGroup.d.ts +7 -7
  16. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  17. package/dist/button/index.d.ts +6 -6
  18. package/dist/button/index.d.ts.map +1 -1
  19. package/dist/button/types.d.ts +18 -12
  20. package/dist/button/types.d.ts.map +1 -1
  21. package/dist/calendar/createCalendar.d.ts +15 -5
  22. package/dist/calendar/createCalendar.d.ts.map +1 -1
  23. package/dist/calendar/createCalendarCell.d.ts +6 -2
  24. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  26. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  27. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  28. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
  30. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  31. package/dist/calendar/index.d.ts +5 -5
  32. package/dist/calendar/index.d.ts.map +1 -1
  33. package/dist/calendar/intl/index.d.ts +12 -0
  34. package/dist/calendar/intl/index.d.ts.map +1 -0
  35. package/dist/calendar/utils.d.ts +12 -0
  36. package/dist/calendar/utils.d.ts.map +1 -0
  37. package/dist/checkbox/createCheckbox.d.ts +6 -6
  38. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  39. package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
  40. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  42. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  44. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  45. package/dist/checkbox/index.d.ts +8 -8
  46. package/dist/checkbox/index.d.ts.map +1 -1
  47. package/dist/collections/index.d.ts +3 -3
  48. package/dist/collections/index.d.ts.map +1 -1
  49. package/dist/color/createColorArea.d.ts +3 -3
  50. package/dist/color/createColorArea.d.ts.map +1 -1
  51. package/dist/color/createColorField.d.ts +4 -4
  52. package/dist/color/createColorField.d.ts.map +1 -1
  53. package/dist/color/createColorSlider.d.ts +4 -4
  54. package/dist/color/createColorSlider.d.ts.map +1 -1
  55. package/dist/color/createColorSwatch.d.ts +2 -2
  56. package/dist/color/createColorSwatch.d.ts.map +1 -1
  57. package/dist/color/createColorWheel.d.ts +3 -3
  58. package/dist/color/createColorWheel.d.ts.map +1 -1
  59. package/dist/color/index.d.ts +6 -6
  60. package/dist/color/types.d.ts +98 -16
  61. package/dist/color/types.d.ts.map +1 -1
  62. package/dist/combobox/createComboBox.d.ts +10 -7
  63. package/dist/combobox/createComboBox.d.ts.map +1 -1
  64. package/dist/combobox/index.d.ts +1 -1
  65. package/dist/combobox/intl/index.d.ts +1 -1
  66. package/dist/datepicker/createDateField.d.ts +18 -6
  67. package/dist/datepicker/createDateField.d.ts.map +1 -1
  68. package/dist/datepicker/createDatePicker.d.ts +51 -5
  69. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  71. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  72. package/dist/datepicker/createDateRangePicker.d.ts +8 -6
  73. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  74. package/dist/datepicker/createDateSegment.d.ts +10 -2
  75. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  76. package/dist/datepicker/createTimeField.d.ts +11 -5
  77. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeSegment.d.ts +2 -2
  79. package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
  80. package/dist/datepicker/index.d.ts +7 -6
  81. package/dist/datepicker/index.d.ts.map +1 -1
  82. package/dist/dialog/createDialog.d.ts +5 -5
  83. package/dist/dialog/createDialog.d.ts.map +1 -1
  84. package/dist/dialog/index.d.ts +2 -2
  85. package/dist/dialog/index.d.ts.map +1 -1
  86. package/dist/dialog/types.d.ts +4 -4
  87. package/dist/disclosure/createDisclosure.d.ts +5 -2
  88. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  89. package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
  90. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  91. package/dist/disclosure/index.d.ts +2 -2
  92. package/dist/dnd/createDrag.d.ts +2 -2
  93. package/dist/dnd/createDrag.d.ts.map +1 -1
  94. package/dist/dnd/createDraggableCollection.d.ts +2 -2
  95. package/dist/dnd/createDraggableItem.d.ts +3 -3
  96. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  97. package/dist/dnd/createDrop.d.ts +2 -2
  98. package/dist/dnd/createDrop.d.ts.map +1 -1
  99. package/dist/dnd/createDroppableCollection.d.ts +26 -6
  100. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  101. package/dist/dnd/createDroppableItem.d.ts +3 -3
  102. package/dist/dnd/index.d.ts +12 -12
  103. package/dist/dnd/index.d.ts.map +1 -1
  104. package/dist/dnd/types.d.ts +2 -2
  105. package/dist/dnd/types.d.ts.map +1 -1
  106. package/dist/dnd/utils.d.ts +1 -1
  107. package/dist/dnd/utils.d.ts.map +1 -1
  108. package/dist/focus/FocusScope.d.ts +1 -1
  109. package/dist/focus/FocusScope.d.ts.map +1 -1
  110. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  111. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  112. package/dist/focus/createVirtualFocus.d.ts +4 -4
  113. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  114. package/dist/focus/index.d.ts +4 -4
  115. package/dist/focus/index.d.ts.map +1 -1
  116. package/dist/form/createFormReset.d.ts +1 -1
  117. package/dist/form/createFormValidation.d.ts +3 -3
  118. package/dist/form/createFormValidation.d.ts.map +1 -1
  119. package/dist/form/index.d.ts +2 -2
  120. package/dist/form/index.d.ts.map +1 -1
  121. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  122. package/dist/grid/createGrid.d.ts +3 -3
  123. package/dist/grid/createGridCell.d.ts +3 -3
  124. package/dist/grid/createGridRow.d.ts +3 -3
  125. package/dist/grid/index.d.ts +5 -5
  126. package/dist/grid/types.d.ts +8 -8
  127. package/dist/gridlist/createGridList.d.ts +6 -4
  128. package/dist/gridlist/createGridList.d.ts.map +1 -1
  129. package/dist/gridlist/createGridListItem.d.ts +4 -4
  130. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  131. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  132. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  133. package/dist/gridlist/index.d.ts +4 -4
  134. package/dist/gridlist/types.d.ts +11 -7
  135. package/dist/gridlist/types.d.ts.map +1 -1
  136. package/dist/i18n/createCollator.d.ts.map +1 -1
  137. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  138. package/dist/i18n/createFilter.d.ts.map +1 -1
  139. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  140. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  141. package/dist/i18n/createStringFormatter.d.ts +2 -2
  142. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  143. package/dist/i18n/index.d.ts +8 -8
  144. package/dist/i18n/index.d.ts.map +1 -1
  145. package/dist/i18n/locale.d.ts +2 -2
  146. package/dist/i18n/locale.d.ts.map +1 -1
  147. package/dist/i18n/utils.d.ts.map +1 -1
  148. package/dist/index.d.ts +52 -51
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +18012 -16820
  151. package/dist/index.js.map +1 -1
  152. package/dist/index.jsx +18242 -0
  153. package/dist/index.jsx.map +1 -0
  154. package/dist/interactions/FocusableProvider.d.ts +2 -2
  155. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  156. package/dist/interactions/PressEvent.d.ts +2 -2
  157. package/dist/interactions/createFocus.d.ts +1 -1
  158. package/dist/interactions/createFocus.d.ts.map +1 -1
  159. package/dist/interactions/createFocusRing.d.ts +1 -1
  160. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  161. package/dist/interactions/createFocusWithin.d.ts +1 -1
  162. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  163. package/dist/interactions/createFocusable.d.ts +3 -3
  164. package/dist/interactions/createFocusable.d.ts.map +1 -1
  165. package/dist/interactions/createHover.d.ts +5 -5
  166. package/dist/interactions/createHover.d.ts.map +1 -1
  167. package/dist/interactions/createInteractionModality.d.ts +3 -3
  168. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  169. package/dist/interactions/createKeyboard.d.ts +1 -1
  170. package/dist/interactions/createLongPress.d.ts +5 -5
  171. package/dist/interactions/createMove.d.ts +5 -5
  172. package/dist/interactions/createMove.d.ts.map +1 -1
  173. package/dist/interactions/createPress.d.ts +4 -4
  174. package/dist/interactions/createPress.d.ts.map +1 -1
  175. package/dist/interactions/index.d.ts +12 -12
  176. package/dist/interactions/index.d.ts.map +1 -1
  177. package/dist/label/createField.d.ts +4 -4
  178. package/dist/label/createField.d.ts.map +1 -1
  179. package/dist/label/createLabel.d.ts +7 -7
  180. package/dist/label/createLabel.d.ts.map +1 -1
  181. package/dist/label/createLabels.d.ts +1 -1
  182. package/dist/label/createLabels.d.ts.map +1 -1
  183. package/dist/label/index.d.ts +5 -5
  184. package/dist/landmark/createLandmark.d.ts +5 -5
  185. package/dist/landmark/createLandmark.d.ts.map +1 -1
  186. package/dist/landmark/index.d.ts +1 -1
  187. package/dist/link/createLink.d.ts +14 -8
  188. package/dist/link/createLink.d.ts.map +1 -1
  189. package/dist/link/index.d.ts +1 -1
  190. package/dist/listbox/createListBox.d.ts +11 -6
  191. package/dist/listbox/createListBox.d.ts.map +1 -1
  192. package/dist/listbox/createOption.d.ts +21 -4
  193. package/dist/listbox/createOption.d.ts.map +1 -1
  194. package/dist/listbox/index.d.ts +2 -2
  195. package/dist/listbox/index.d.ts.map +1 -1
  196. package/dist/live-announcer/announce.d.ts +2 -2
  197. package/dist/live-announcer/announce.d.ts.map +1 -1
  198. package/dist/live-announcer/index.d.ts +1 -1
  199. package/dist/menu/createMenu.d.ts +7 -7
  200. package/dist/menu/createMenu.d.ts.map +1 -1
  201. package/dist/menu/createMenuItem.d.ts +16 -4
  202. package/dist/menu/createMenuItem.d.ts.map +1 -1
  203. package/dist/menu/createMenuTrigger.d.ts +4 -4
  204. package/dist/menu/index.d.ts +3 -3
  205. package/dist/menu/index.d.ts.map +1 -1
  206. package/dist/meter/createMeter.d.ts +6 -6
  207. package/dist/meter/createMeter.d.ts.map +1 -1
  208. package/dist/meter/index.d.ts +1 -1
  209. package/dist/numberfield/createNumberField.d.ts +9 -8
  210. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  211. package/dist/numberfield/index.d.ts +1 -1
  212. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  213. package/dist/overlays/createModal.d.ts +3 -3
  214. package/dist/overlays/createModal.d.ts.map +1 -1
  215. package/dist/overlays/createOverlay.d.ts +1 -1
  216. package/dist/overlays/createOverlay.d.ts.map +1 -1
  217. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  218. package/dist/overlays/index.d.ts +6 -6
  219. package/dist/overlays/index.d.ts.map +1 -1
  220. package/dist/popover/calculatePosition.d.ts +4 -4
  221. package/dist/popover/calculatePosition.d.ts.map +1 -1
  222. package/dist/popover/createOverlayPosition.d.ts +3 -3
  223. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  224. package/dist/popover/createPopover.d.ts +4 -4
  225. package/dist/popover/createPopover.d.ts.map +1 -1
  226. package/dist/popover/index.d.ts +3 -3
  227. package/dist/progress/createProgressBar.d.ts +7 -5
  228. package/dist/progress/createProgressBar.d.ts.map +1 -1
  229. package/dist/progress/index.d.ts +1 -1
  230. package/dist/radio/createRadio.d.ts +7 -7
  231. package/dist/radio/createRadio.d.ts.map +1 -1
  232. package/dist/radio/createRadioGroup.d.ts +10 -10
  233. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  234. package/dist/radio/createRadioGroupState.d.ts +3 -3
  235. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  236. package/dist/radio/index.d.ts +3 -3
  237. package/dist/radio/index.d.ts.map +1 -1
  238. package/dist/searchfield/createSearchField.d.ts +7 -7
  239. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  240. package/dist/searchfield/index.d.ts +2 -2
  241. package/dist/select/createHiddenSelect.d.ts +4 -4
  242. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  243. package/dist/select/createSelect.d.ts +14 -6
  244. package/dist/select/createSelect.d.ts.map +1 -1
  245. package/dist/select/index.d.ts +2 -2
  246. package/dist/select/index.d.ts.map +1 -1
  247. package/dist/selection/createTypeSelect.d.ts +2 -2
  248. package/dist/selection/index.d.ts +1 -1
  249. package/dist/separator/createSeparator.d.ts +9 -5
  250. package/dist/separator/createSeparator.d.ts.map +1 -1
  251. package/dist/separator/index.d.ts +1 -1
  252. package/dist/slider/createSlider.d.ts +11 -7
  253. package/dist/slider/createSlider.d.ts.map +1 -1
  254. package/dist/slider/index.d.ts +2 -2
  255. package/dist/ssr/index.d.ts +1 -1
  256. package/dist/ssr/index.d.ts.map +1 -1
  257. package/dist/steplist/createStepList.d.ts +36 -0
  258. package/dist/steplist/createStepList.d.ts.map +1 -0
  259. package/dist/steplist/index.d.ts +2 -0
  260. package/dist/steplist/index.d.ts.map +1 -0
  261. package/dist/switch/createSwitch.d.ts +6 -4
  262. package/dist/switch/createSwitch.d.ts.map +1 -1
  263. package/dist/switch/index.d.ts +1 -1
  264. package/dist/table/createTable.d.ts +3 -3
  265. package/dist/table/createTable.d.ts.map +1 -1
  266. package/dist/table/createTableCell.d.ts +3 -3
  267. package/dist/table/createTableCell.d.ts.map +1 -1
  268. package/dist/table/createTableColumnHeader.d.ts +3 -3
  269. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  270. package/dist/table/createTableColumnResize.d.ts +41 -0
  271. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  272. package/dist/table/createTableHeaderRow.d.ts +3 -3
  273. package/dist/table/createTableRow.d.ts +3 -3
  274. package/dist/table/createTableRow.d.ts.map +1 -1
  275. package/dist/table/createTableRowGroup.d.ts +2 -2
  276. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  277. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  278. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  279. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  280. package/dist/table/index.d.ts +11 -9
  281. package/dist/table/index.d.ts.map +1 -1
  282. package/dist/table/types.d.ts +15 -7
  283. package/dist/table/types.d.ts.map +1 -1
  284. package/dist/tabs/createTabs.d.ts +28 -25
  285. package/dist/tabs/createTabs.d.ts.map +1 -1
  286. package/dist/tabs/index.d.ts +1 -1
  287. package/dist/tag/createTag.d.ts +2 -2
  288. package/dist/tag/createTag.d.ts.map +1 -1
  289. package/dist/tag/createTagGroup.d.ts +5 -5
  290. package/dist/tag/createTagGroup.d.ts.map +1 -1
  291. package/dist/tag/index.d.ts +2 -2
  292. package/dist/tag/index.d.ts.map +1 -1
  293. package/dist/textfield/createTextField.d.ts +17 -11
  294. package/dist/textfield/createTextField.d.ts.map +1 -1
  295. package/dist/textfield/index.d.ts +1 -1
  296. package/dist/textfield/index.d.ts.map +1 -1
  297. package/dist/toast/createToast.d.ts +2 -2
  298. package/dist/toast/createToast.d.ts.map +1 -1
  299. package/dist/toast/createToastRegion.d.ts +5 -3
  300. package/dist/toast/createToastRegion.d.ts.map +1 -1
  301. package/dist/toast/index.d.ts +2 -2
  302. package/dist/toast/index.d.ts.map +1 -1
  303. package/dist/toggle/createToggle.d.ts +9 -9
  304. package/dist/toggle/createToggle.d.ts.map +1 -1
  305. package/dist/toggle/createToggleState.d.ts +2 -2
  306. package/dist/toggle/createToggleState.d.ts.map +1 -1
  307. package/dist/toggle/index.d.ts +4 -4
  308. package/dist/toggle/index.d.ts.map +1 -1
  309. package/dist/toolbar/createToolbar.d.ts +9 -9
  310. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  311. package/dist/toolbar/index.d.ts +1 -1
  312. package/dist/toolbar/index.d.ts.map +1 -1
  313. package/dist/tooltip/createTooltip.d.ts +5 -5
  314. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  315. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  316. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  317. package/dist/tooltip/index.d.ts +2 -2
  318. package/dist/tree/createTree.d.ts +3 -3
  319. package/dist/tree/createTree.d.ts.map +1 -1
  320. package/dist/tree/createTreeItem.d.ts +4 -4
  321. package/dist/tree/createTreeItem.d.ts.map +1 -1
  322. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  323. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  324. package/dist/tree/index.d.ts +4 -4
  325. package/dist/tree/types.d.ts +10 -6
  326. package/dist/tree/types.d.ts.map +1 -1
  327. package/dist/utils/createDescription.d.ts +2 -2
  328. package/dist/utils/createDescription.d.ts.map +1 -1
  329. package/dist/utils/dom.d.ts.map +1 -1
  330. package/dist/utils/env.d.ts.map +1 -1
  331. package/dist/utils/focus.d.ts +1 -1
  332. package/dist/utils/focus.d.ts.map +1 -1
  333. package/dist/utils/geometry.d.ts.map +1 -1
  334. package/dist/utils/index.d.ts +12 -12
  335. package/dist/utils/index.d.ts.map +1 -1
  336. package/dist/utils/mergeProps.d.ts.map +1 -1
  337. package/dist/utils/reactivity.d.ts +1 -1
  338. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  339. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  340. package/dist/visually-hidden/index.d.ts +1 -1
  341. package/package.json +32 -32
  342. package/src/actiongroup/createActionGroup.ts +101 -91
  343. package/src/actiongroup/index.ts +1 -1
  344. package/src/autocomplete/createAutocomplete.ts +117 -134
  345. package/src/autocomplete/index.ts +1 -1
  346. package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
  347. package/src/breadcrumbs/index.ts +1 -1
  348. package/src/button/createButton.ts +102 -73
  349. package/src/button/createToggleButton.ts +10 -10
  350. package/src/button/createToggleButtonGroup.ts +25 -32
  351. package/src/button/index.ts +6 -9
  352. package/src/button/types.ts +18 -12
  353. package/src/calendar/createCalendar.ts +62 -29
  354. package/src/calendar/createCalendarCell.ts +98 -46
  355. package/src/calendar/createCalendarGrid.ts +57 -35
  356. package/src/calendar/createRangeCalendar.ts +66 -31
  357. package/src/calendar/createRangeCalendarCell.ts +92 -31
  358. package/src/calendar/index.ts +5 -9
  359. package/src/calendar/intl/index.ts +210 -0
  360. package/src/calendar/utils.ts +227 -0
  361. package/src/checkbox/createCheckbox.ts +13 -21
  362. package/src/checkbox/createCheckboxGroup.ts +68 -44
  363. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  364. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  365. package/src/checkbox/index.ts +8 -10
  366. package/src/collections/index.ts +33 -29
  367. package/src/color/createColorArea.ts +232 -154
  368. package/src/color/createColorField.ts +107 -58
  369. package/src/color/createColorSlider.ts +231 -73
  370. package/src/color/createColorSwatch.ts +38 -13
  371. package/src/color/createColorWheel.ts +208 -83
  372. package/src/color/index.ts +6 -6
  373. package/src/color/types.ts +98 -16
  374. package/src/combobox/createComboBox.ts +157 -100
  375. package/src/combobox/index.ts +1 -1
  376. package/src/combobox/intl/index.ts +5 -5
  377. package/src/datepicker/createDateField.ts +192 -39
  378. package/src/datepicker/createDatePicker.ts +260 -67
  379. package/src/datepicker/createDatePickerGroup.ts +149 -0
  380. package/src/datepicker/createDateRangePicker.ts +105 -57
  381. package/src/datepicker/createDateSegment.ts +183 -96
  382. package/src/datepicker/createTimeField.ts +38 -34
  383. package/src/datepicker/createTimeSegment.ts +67 -85
  384. package/src/datepicker/index.ts +13 -14
  385. package/src/dialog/createDialog.ts +45 -38
  386. package/src/dialog/index.ts +2 -2
  387. package/src/dialog/types.ts +4 -4
  388. package/src/disclosure/createDisclosure.ts +138 -33
  389. package/src/disclosure/createDisclosureGroup.ts +8 -21
  390. package/src/disclosure/index.ts +2 -2
  391. package/src/dnd/createDrag.ts +19 -25
  392. package/src/dnd/createDraggableCollection.ts +4 -4
  393. package/src/dnd/createDraggableItem.ts +20 -19
  394. package/src/dnd/createDrop.ts +42 -51
  395. package/src/dnd/createDroppableCollection.ts +290 -173
  396. package/src/dnd/createDroppableItem.ts +34 -34
  397. package/src/dnd/index.ts +23 -12
  398. package/src/dnd/types.ts +4 -7
  399. package/src/dnd/utils.ts +36 -49
  400. package/src/focus/FocusScope.tsx +155 -164
  401. package/src/focus/createAutoFocus.ts +4 -20
  402. package/src/focus/createFocusRestore.ts +15 -28
  403. package/src/focus/createVirtualFocus.ts +20 -36
  404. package/src/focus/index.ts +4 -8
  405. package/src/form/createFormReset.ts +4 -4
  406. package/src/form/createFormValidation.ts +20 -43
  407. package/src/form/index.ts +2 -5
  408. package/src/grid/GridKeyboardDelegate.ts +30 -30
  409. package/src/grid/createGrid.ts +36 -36
  410. package/src/grid/createGridCell.ts +18 -18
  411. package/src/grid/createGridRow.ts +14 -14
  412. package/src/grid/index.ts +5 -5
  413. package/src/grid/types.ts +8 -8
  414. package/src/gridlist/createGridList.ts +34 -29
  415. package/src/gridlist/createGridListItem.ts +68 -23
  416. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  417. package/src/gridlist/index.ts +4 -4
  418. package/src/gridlist/types.ts +11 -7
  419. package/src/i18n/createCollator.ts +5 -18
  420. package/src/i18n/createDateFormatter.ts +5 -13
  421. package/src/i18n/createFilter.ts +11 -24
  422. package/src/i18n/createNumberFormatter.ts +4 -6
  423. package/src/i18n/createStringFormatter.ts +19 -15
  424. package/src/i18n/index.ts +8 -11
  425. package/src/i18n/locale.tsx +15 -40
  426. package/src/i18n/utils.ts +35 -39
  427. package/src/index.ts +68 -169
  428. package/src/interactions/FocusableProvider.tsx +3 -7
  429. package/src/interactions/PressEvent.ts +4 -4
  430. package/src/interactions/createFocus.ts +12 -8
  431. package/src/interactions/createFocusRing.ts +21 -19
  432. package/src/interactions/createFocusWithin.ts +20 -13
  433. package/src/interactions/createFocusable.ts +15 -16
  434. package/src/interactions/createHover.ts +70 -55
  435. package/src/interactions/createInteractionModality.ts +75 -82
  436. package/src/interactions/createKeyboard.ts +2 -2
  437. package/src/interactions/createLongPress.ts +23 -23
  438. package/src/interactions/createMove.ts +72 -62
  439. package/src/interactions/createPress.ts +164 -87
  440. package/src/interactions/index.ts +24 -16
  441. package/src/label/createField.ts +18 -19
  442. package/src/label/createLabel.ts +18 -30
  443. package/src/label/createLabels.ts +8 -12
  444. package/src/label/index.ts +5 -5
  445. package/src/landmark/createLandmark.ts +30 -51
  446. package/src/landmark/index.ts +1 -1
  447. package/src/link/createLink.ts +83 -56
  448. package/src/link/index.ts +1 -1
  449. package/src/listbox/createListBox.ts +69 -58
  450. package/src/listbox/createOption.ts +83 -37
  451. package/src/listbox/index.ts +2 -6
  452. package/src/live-announcer/announce.ts +44 -71
  453. package/src/live-announcer/index.ts +1 -1
  454. package/src/menu/createMenu.ts +79 -50
  455. package/src/menu/createMenuItem.ts +79 -27
  456. package/src/menu/createMenuTrigger.ts +15 -15
  457. package/src/menu/index.ts +3 -12
  458. package/src/meter/createMeter.ts +7 -15
  459. package/src/meter/index.ts +1 -1
  460. package/src/numberfield/createNumberField.ts +138 -81
  461. package/src/numberfield/index.ts +1 -1
  462. package/src/overlays/ariaHideOutside.ts +14 -10
  463. package/src/overlays/createInteractOutside.ts +21 -18
  464. package/src/overlays/createModal.tsx +17 -17
  465. package/src/overlays/createOverlay.ts +38 -8
  466. package/src/overlays/createOverlayTrigger.ts +16 -16
  467. package/src/overlays/createPreventScroll.ts +46 -24
  468. package/src/overlays/index.ts +6 -17
  469. package/src/popover/calculatePosition.ts +115 -117
  470. package/src/popover/createOverlayPosition.ts +46 -40
  471. package/src/popover/createPopover.ts +42 -17
  472. package/src/popover/index.ts +3 -3
  473. package/src/progress/createProgressBar.ts +31 -32
  474. package/src/progress/index.ts +1 -1
  475. package/src/radio/createRadio.ts +95 -73
  476. package/src/radio/createRadioGroup.ts +83 -77
  477. package/src/radio/createRadioGroupState.ts +7 -31
  478. package/src/radio/index.ts +3 -8
  479. package/src/searchfield/createSearchField.ts +57 -29
  480. package/src/searchfield/index.ts +2 -2
  481. package/src/select/createHiddenSelect.tsx +57 -44
  482. package/src/select/createSelect.ts +128 -71
  483. package/src/select/index.ts +2 -7
  484. package/src/selection/createTypeSelect.ts +11 -11
  485. package/src/selection/index.ts +1 -1
  486. package/src/separator/createSeparator.ts +20 -25
  487. package/src/separator/index.ts +1 -1
  488. package/src/slider/createSlider.ts +93 -124
  489. package/src/slider/index.ts +2 -2
  490. package/src/ssr/index.tsx +8 -47
  491. package/src/steplist/createStepList.ts +106 -0
  492. package/src/steplist/index.ts +8 -0
  493. package/src/switch/createSwitch.ts +9 -14
  494. package/src/switch/index.ts +1 -1
  495. package/src/table/createTable.ts +152 -85
  496. package/src/table/createTableCell.ts +17 -16
  497. package/src/table/createTableColumnHeader.ts +67 -20
  498. package/src/table/createTableColumnResize.ts +256 -0
  499. package/src/table/createTableHeaderRow.ts +7 -7
  500. package/src/table/createTableRow.ts +149 -29
  501. package/src/table/createTableRowGroup.ts +5 -7
  502. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  503. package/src/table/createTableSelectionCheckbox.ts +8 -8
  504. package/src/table/index.ts +14 -9
  505. package/src/table/types.ts +15 -7
  506. package/src/tabs/createTabs.ts +74 -92
  507. package/src/tabs/index.ts +1 -1
  508. package/src/tag/createTag.ts +52 -50
  509. package/src/tag/createTagGroup.ts +47 -41
  510. package/src/tag/index.ts +2 -6
  511. package/src/textfield/createTextField.ts +67 -35
  512. package/src/textfield/index.ts +1 -5
  513. package/src/toast/createToast.ts +28 -26
  514. package/src/toast/createToastRegion.ts +169 -26
  515. package/src/toast/index.ts +2 -6
  516. package/src/toggle/createToggle.ts +95 -53
  517. package/src/toggle/createToggleState.ts +2 -10
  518. package/src/toggle/index.ts +4 -5
  519. package/src/toolbar/createToolbar.ts +193 -210
  520. package/src/toolbar/index.ts +1 -1
  521. package/src/tooltip/createTooltip.ts +11 -24
  522. package/src/tooltip/createTooltipTrigger.ts +61 -49
  523. package/src/tooltip/index.ts +2 -2
  524. package/src/tree/createTree.ts +35 -37
  525. package/src/tree/createTreeItem.ts +29 -29
  526. package/src/tree/createTreeSelectionCheckbox.ts +11 -8
  527. package/src/tree/index.ts +4 -4
  528. package/src/tree/types.ts +10 -6
  529. package/src/utils/createDescription.ts +6 -23
  530. package/src/utils/dom.ts +61 -54
  531. package/src/utils/env.ts +9 -11
  532. package/src/utils/events.ts +7 -7
  533. package/src/utils/filterDOMProps.ts +49 -49
  534. package/src/utils/focus.ts +60 -68
  535. package/src/utils/geometry.ts +1 -4
  536. package/src/utils/globalListeners.ts +9 -9
  537. package/src/utils/index.ts +12 -22
  538. package/src/utils/mergeProps.ts +42 -15
  539. package/src/utils/platform.ts +2 -2
  540. package/src/utils/reactivity.ts +3 -3
  541. package/src/utils/textSelection.ts +16 -16
  542. package/src/visually-hidden/createVisuallyHidden.ts +16 -28
  543. package/src/visually-hidden/index.ts +1 -1
  544. package/dist/i18n/NumberFormatter.d.ts +0 -43
  545. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  546. package/dist/index.ssr.js +0 -17082
  547. package/dist/index.ssr.js.map +0 -1
  548. package/src/i18n/NumberFormatter.ts +0 -266
@@ -4,16 +4,16 @@
4
4
  * Based on @react-aria/menu useMenu.
5
5
  */
6
6
 
7
- import { createEffect, onCleanup, type JSX, type Accessor } from 'solid-js';
8
- import { createFocusWithin } from '../interactions/createFocusWithin';
9
- import { createLabel } from '../label/createLabel';
10
- import { createTypeSelect } from '../selection/createTypeSelect';
11
- import { filterDOMProps } from '../utils/filterDOMProps';
12
- import { mergeProps } from '../utils/mergeProps';
13
- import { createId } from '../ssr';
14
- import { access, type MaybeAccessor } from '../utils/reactivity';
15
- import { isDevEnv } from '../utils/env';
16
- import type { MenuState, Key, Collection } from '@proyecto-viviana/solid-stately';
7
+ import { createEffect, onCleanup, type JSX, type Accessor } from "solid-js";
8
+ import { createFocusWithin } from "../interactions/createFocusWithin";
9
+ import { createLabel } from "../label/createLabel";
10
+ import { createTypeSelect } from "../selection/createTypeSelect";
11
+ import { filterDOMProps } from "../utils/filterDOMProps";
12
+ import { mergeProps } from "../utils/mergeProps";
13
+ import { createId } from "../ssr";
14
+ import { access, type MaybeAccessor } from "../utils/reactivity";
15
+ import { isDevEnv } from "../utils/env";
16
+ import type { MenuState, Key, Collection } from "@proyecto-viviana/solid-stately";
17
17
 
18
18
  /**
19
19
  * Default number of items to skip for page up/down when DOM measurement is not available.
@@ -26,17 +26,17 @@ const DEFAULT_PAGE_SIZE = 10;
26
26
  function findNextNonDisabledKey<T>(
27
27
  collection: Collection<T>,
28
28
  currentKey: Key | null,
29
- direction: 'next' | 'prev',
29
+ direction: "next" | "prev",
30
30
  isDisabled: (key: Key) => boolean,
31
- wrap: boolean
31
+ wrap: boolean,
32
32
  ): Key | null {
33
- const getNextKey = direction === 'next'
34
- ? (key: Key) => collection.getKeyAfter(key)
35
- : (key: Key) => collection.getKeyBefore(key);
33
+ const getNextKey =
34
+ direction === "next"
35
+ ? (key: Key) => collection.getKeyAfter(key)
36
+ : (key: Key) => collection.getKeyBefore(key);
36
37
 
37
- const getFirstKey = direction === 'next'
38
- ? () => collection.getFirstKey()
39
- : () => collection.getLastKey();
38
+ const getFirstKey =
39
+ direction === "next" ? () => collection.getFirstKey() : () => collection.getLastKey();
40
40
 
41
41
  let nextKey = currentKey != null ? getNextKey(currentKey) : getFirstKey();
42
42
 
@@ -65,11 +65,11 @@ export interface AriaMenuProps {
65
65
  /** The label for the menu. */
66
66
  label?: JSX.Element;
67
67
  /** An accessible label for the menu when no visible label is provided. */
68
- 'aria-label'?: string;
68
+ "aria-label"?: string;
69
69
  /** The ID of an element that labels the menu. */
70
- 'aria-labelledby'?: string;
70
+ "aria-labelledby"?: string;
71
71
  /** The ID of an element that describes the menu. */
72
- 'aria-describedby'?: string;
72
+ "aria-describedby"?: string;
73
73
  /** Handler called when focus moves into the menu. */
74
74
  onFocus?: (e: FocusEvent) => void;
75
75
  /** Handler called when focus moves out of the menu. */
@@ -83,7 +83,7 @@ export interface AriaMenuProps {
83
83
  /** Whether focus should automatically wrap around. */
84
84
  shouldFocusWrap?: boolean;
85
85
  /** Whether to auto-focus the first item when the menu opens. */
86
- autoFocus?: boolean | 'first' | 'last';
86
+ autoFocus?: boolean | "first" | "last";
87
87
  /** Whether type-to-select is disabled. @default false */
88
88
  disallowTypeAhead?: boolean;
89
89
  }
@@ -116,7 +116,7 @@ export function getMenuData(state: MenuState): MenuData | undefined {
116
116
  export function createMenu<T>(
117
117
  props: MaybeAccessor<AriaMenuProps>,
118
118
  state: MenuState<T>,
119
- ref?: Accessor<HTMLElement | null>
119
+ ref?: Accessor<HTMLElement | null>,
120
120
  ): MenuAria {
121
121
  const getProps = () => access(props);
122
122
  const id = createId(getProps().id);
@@ -124,15 +124,16 @@ export function createMenu<T>(
124
124
  // Development-time warning for missing accessibility labels
125
125
  if (isDevEnv()) {
126
126
  const p = getProps();
127
- if (!p.label && !p['aria-label'] && !p['aria-labelledby']) {
127
+ if (!p.label && !p["aria-label"] && !p["aria-labelledby"]) {
128
128
  console.warn(
129
- '[solidaria] A Menu requires an aria-label or aria-labelledby attribute for accessibility.'
129
+ "[solidaria] A Menu requires an aria-label or aria-labelledby attribute for accessibility.",
130
130
  );
131
131
  }
132
132
  }
133
133
 
134
134
  // Filter DOM props
135
- const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
135
+ const domProps = () =>
136
+ filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });
136
137
 
137
138
  const updateSharedData = () => {
138
139
  const p = getProps();
@@ -174,13 +175,13 @@ export function createMenu<T>(
174
175
  get label() {
175
176
  return getProps().label;
176
177
  },
177
- get 'aria-label'() {
178
- return getProps()['aria-label'];
178
+ get "aria-label"() {
179
+ return getProps()["aria-label"];
179
180
  },
180
- get 'aria-labelledby'() {
181
- return getProps()['aria-labelledby'];
181
+ get "aria-labelledby"() {
182
+ return getProps()["aria-labelledby"];
182
183
  },
183
- labelElementType: 'span',
184
+ labelElementType: "span",
184
185
  });
185
186
 
186
187
  // Type-to-select
@@ -206,25 +207,25 @@ export function createMenu<T>(
206
207
  const isDisabled = (key: Key) => state.isDisabled(key);
207
208
 
208
209
  switch (e.key) {
209
- case 'ArrowDown': {
210
+ case "ArrowDown": {
210
211
  e.preventDefault();
211
212
  const currentKey = state.focusedKey();
212
- const nextKey = findNextNonDisabledKey(collection, currentKey, 'next', isDisabled, wrap);
213
+ const nextKey = findNextNonDisabledKey(collection, currentKey, "next", isDisabled, wrap);
213
214
  if (nextKey != null) {
214
215
  state.setFocusedKey(nextKey);
215
216
  }
216
217
  break;
217
218
  }
218
- case 'ArrowUp': {
219
+ case "ArrowUp": {
219
220
  e.preventDefault();
220
221
  const currentKey = state.focusedKey();
221
- const prevKey = findNextNonDisabledKey(collection, currentKey, 'prev', isDisabled, wrap);
222
+ const prevKey = findNextNonDisabledKey(collection, currentKey, "prev", isDisabled, wrap);
222
223
  if (prevKey != null) {
223
224
  state.setFocusedKey(prevKey);
224
225
  }
225
226
  break;
226
227
  }
227
- case 'Home': {
228
+ case "Home": {
228
229
  e.preventDefault();
229
230
  // Find first non-disabled key
230
231
  let firstKey = collection.getFirstKey();
@@ -236,7 +237,7 @@ export function createMenu<T>(
236
237
  }
237
238
  break;
238
239
  }
239
- case 'End': {
240
+ case "End": {
240
241
  e.preventDefault();
241
242
  // Find last non-disabled key
242
243
  let lastKey = collection.getLastKey();
@@ -248,23 +249,24 @@ export function createMenu<T>(
248
249
  }
249
250
  break;
250
251
  }
251
- case ' ':
252
- case 'Enter': {
252
+ case " ":
253
+ case "Enter": {
253
254
  e.preventDefault();
254
255
  const focusedKey = state.focusedKey();
255
256
  // Don't activate disabled items
256
257
  if (focusedKey != null && !isDisabled(focusedKey)) {
258
+ state.select(focusedKey, e, collection);
257
259
  p.onAction?.(focusedKey);
258
260
  p.onClose?.();
259
261
  }
260
262
  break;
261
263
  }
262
- case 'Escape': {
264
+ case "Escape": {
263
265
  e.preventDefault();
264
266
  p.onClose?.();
265
267
  break;
266
268
  }
267
- case 'PageDown': {
269
+ case "PageDown": {
268
270
  e.preventDefault();
269
271
  const currentKey = state.focusedKey();
270
272
  const el = ref?.();
@@ -288,7 +290,13 @@ export function createMenu<T>(
288
290
  targetKey = nextKey;
289
291
  } else {
290
292
  // Skip over disabled items without counting them
291
- const afterDisabled = findNextNonDisabledKey(collection, nextKey, 'next', isDisabled, false);
293
+ const afterDisabled = findNextNonDisabledKey(
294
+ collection,
295
+ nextKey,
296
+ "next",
297
+ isDisabled,
298
+ false,
299
+ );
292
300
  if (afterDisabled != null) {
293
301
  targetKey = afterDisabled;
294
302
  } else {
@@ -306,7 +314,13 @@ export function createMenu<T>(
306
314
  let targetKey = currentKey;
307
315
 
308
316
  while (count > 0 && targetKey != null) {
309
- const nextKey = findNextNonDisabledKey(collection, targetKey, 'next', isDisabled, false);
317
+ const nextKey = findNextNonDisabledKey(
318
+ collection,
319
+ targetKey,
320
+ "next",
321
+ isDisabled,
322
+ false,
323
+ );
310
324
  if (nextKey == null) break;
311
325
  targetKey = nextKey;
312
326
  count--;
@@ -318,7 +332,7 @@ export function createMenu<T>(
318
332
  }
319
333
  break;
320
334
  }
321
- case 'PageUp': {
335
+ case "PageUp": {
322
336
  e.preventDefault();
323
337
  const currentKey = state.focusedKey();
324
338
  const el = ref?.();
@@ -342,7 +356,13 @@ export function createMenu<T>(
342
356
  targetKey = prevKey;
343
357
  } else {
344
358
  // Skip over disabled items without counting them
345
- const beforeDisabled = findNextNonDisabledKey(collection, prevKey, 'prev', isDisabled, false);
359
+ const beforeDisabled = findNextNonDisabledKey(
360
+ collection,
361
+ prevKey,
362
+ "prev",
363
+ isDisabled,
364
+ false,
365
+ );
346
366
  if (beforeDisabled != null) {
347
367
  targetKey = beforeDisabled;
348
368
  } else {
@@ -360,7 +380,13 @@ export function createMenu<T>(
360
380
  let targetKey = currentKey;
361
381
 
362
382
  while (count > 0 && targetKey != null) {
363
- const prevKey = findNextNonDisabledKey(collection, targetKey, 'prev', isDisabled, false);
383
+ const prevKey = findNextNonDisabledKey(
384
+ collection,
385
+ targetKey,
386
+ "prev",
387
+ isDisabled,
388
+ false,
389
+ );
364
390
  if (prevKey == null) break;
365
391
  targetKey = prevKey;
366
392
  count--;
@@ -387,16 +413,19 @@ export function createMenu<T>(
387
413
  focusWithinProps as Record<string, unknown>,
388
414
  fieldProps as Record<string, unknown>,
389
415
  {
390
- role: 'menu',
416
+ role: "menu",
391
417
  tabIndex: p.isDisabled ? undefined : 0,
392
- 'aria-disabled': p.isDisabled || undefined,
418
+ "aria-disabled": p.isDisabled || undefined,
393
419
  onKeyDown,
394
- } as Record<string, unknown>
420
+ } as Record<string, unknown>,
395
421
  );
396
422
 
397
423
  // Add type-select props if enabled
398
424
  if (!p.disallowTypeAhead) {
399
- return mergeProps(baseProps, typeSelectProps as Record<string, unknown>) as JSX.HTMLAttributes<HTMLElement>;
425
+ return mergeProps(
426
+ baseProps,
427
+ typeSelectProps as Record<string, unknown>,
428
+ ) as JSX.HTMLAttributes<HTMLElement>;
400
429
  }
401
430
 
402
431
  return baseProps as JSX.HTMLAttributes<HTMLElement>;
@@ -3,14 +3,14 @@
3
3
  * Based on @react-aria/menu useMenuItem.
4
4
  */
5
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';
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
14
 
15
15
  export interface AriaMenuItemProps {
16
16
  /** The unique key for the menu item. */
@@ -18,11 +18,19 @@ export interface AriaMenuItemProps {
18
18
  /** Whether the menu item is disabled. */
19
19
  isDisabled?: boolean;
20
20
  /** An accessible label for the menu item. */
21
- 'aria-label'?: string;
21
+ "aria-label"?: string;
22
22
  /** Handler called when the menu item is selected. */
23
23
  onAction?: () => void;
24
24
  /** Whether to close the menu when this item is selected. */
25
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;
26
34
  }
27
35
 
28
36
  export interface MenuItemAria {
@@ -42,6 +50,10 @@ export interface MenuItemAria {
42
50
  isPressed: Accessor<boolean>;
43
51
  /** Whether the menu item is disabled. */
44
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>;
45
57
  }
46
58
 
47
59
  /**
@@ -50,7 +62,7 @@ export interface MenuItemAria {
50
62
  export function createMenuItem<T>(
51
63
  props: MaybeAccessor<AriaMenuItemProps>,
52
64
  state: MenuState<T>,
53
- _ref?: () => HTMLElement | null
65
+ _ref?: () => HTMLElement | null,
54
66
  ): MenuItemAria {
55
67
  const getProps = () => access(props);
56
68
 
@@ -59,13 +71,26 @@ export function createMenuItem<T>(
59
71
 
60
72
  // Computed states
61
73
  const isDisabled: Accessor<boolean> = () => {
62
- return Boolean(getData()?.isDisabled || getProps().isDisabled || state.isDisabled(getProps().key));
74
+ return Boolean(
75
+ getData()?.isDisabled || getProps().isDisabled || state.isDisabled(getProps().key),
76
+ );
63
77
  };
64
78
 
65
79
  const isFocused: Accessor<boolean> = () => {
66
80
  return state.focusedKey() === getProps().key;
67
81
  };
68
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
+
69
94
  // Handle press
70
95
  const { pressProps, isPressed } = createPress({
71
96
  get isDisabled() {
@@ -76,6 +101,8 @@ export function createMenuItem<T>(
76
101
  const key = p.key;
77
102
  const data = getData();
78
103
 
104
+ state.select(key, undefined, state.collection());
105
+
79
106
  // Call item-specific onAction
80
107
  p.onAction?.();
81
108
 
@@ -83,6 +110,7 @@ export function createMenuItem<T>(
83
110
  data?.onAction?.(key);
84
111
 
85
112
  // Close menu if closeOnSelect is not explicitly false
113
+ // For link items, default to closing the menu
86
114
  if (p.closeOnSelect !== false) {
87
115
  data?.onClose?.();
88
116
  }
@@ -109,26 +137,48 @@ export function createMenuItem<T>(
109
137
 
110
138
  return {
111
139
  get menuItemProps() {
112
- const key = getProps().key;
113
- const ariaLabel = getProps()['aria-label'];
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
+ }
114
176
 
115
177
  return mergeProps(
116
178
  pressProps as Record<string, unknown>,
117
179
  hoverProps as Record<string, unknown>,
118
180
  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>
181
+ baseProps,
132
182
  ) as JSX.HTMLAttributes<HTMLElement>;
133
183
  },
134
184
  labelProps: {
@@ -139,11 +189,13 @@ export function createMenuItem<T>(
139
189
  },
140
190
  keyboardShortcutProps: {
141
191
  id: keyboardId,
142
- 'aria-hidden': true,
192
+ "aria-hidden": true,
143
193
  },
144
194
  isFocused,
145
195
  isFocusVisible: () => isFocused() && isFocusVisible(),
146
196
  isPressed,
147
197
  isDisabled,
198
+ isSelected,
199
+ selectionMode,
148
200
  };
149
201
  }
@@ -3,14 +3,14 @@
3
3
  * Based on @react-aria/menu useMenuTrigger.
4
4
  */
5
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';
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
10
 
11
11
  export interface AriaMenuTriggerProps {
12
12
  /** The type of menu that the menu trigger opens. */
13
- type?: 'menu' | 'listbox';
13
+ type?: "menu" | "listbox";
14
14
  /** Whether the menu trigger is disabled. */
15
15
  isDisabled?: boolean;
16
16
  /** An ID for the menu. */
@@ -32,7 +32,7 @@ export interface MenuTriggerAria {
32
32
  */
33
33
  export function createMenuTrigger(
34
34
  props: MaybeAccessor<AriaMenuTriggerProps>,
35
- state: OverlayTriggerState
35
+ state: OverlayTriggerState,
36
36
  ): MenuTriggerAria {
37
37
  const getProps = () => access(props);
38
38
  const menuId = createId(getProps().id);
@@ -47,16 +47,16 @@ export function createMenuTrigger(
47
47
  if (getProps().isDisabled) return;
48
48
 
49
49
  switch (e.key) {
50
- case 'Enter':
51
- case ' ':
52
- case 'ArrowDown': {
50
+ case "Enter":
51
+ case " ":
52
+ case "ArrowDown": {
53
53
  e.preventDefault();
54
54
  if (!state.isOpen()) {
55
55
  state.open();
56
56
  }
57
57
  break;
58
58
  }
59
- case 'ArrowUp': {
59
+ case "ArrowUp": {
60
60
  e.preventDefault();
61
61
  if (!state.isOpen()) {
62
62
  state.open();
@@ -69,14 +69,14 @@ export function createMenuTrigger(
69
69
  return {
70
70
  get menuTriggerProps() {
71
71
  const p = getProps();
72
- const type = p.type ?? 'menu';
72
+ const type = p.type ?? "menu";
73
73
  const isOpen = state.isOpen();
74
74
 
75
75
  return {
76
- 'aria-haspopup': type,
77
- 'aria-expanded': isOpen,
78
- 'aria-controls': isOpen ? menuId : undefined,
79
- 'aria-disabled': p.isDisabled || undefined,
76
+ "aria-haspopup": type,
77
+ "aria-expanded": isOpen,
78
+ "aria-controls": isOpen ? menuId : undefined,
79
+ "aria-disabled": p.isDisabled || undefined,
80
80
  onPress,
81
81
  onKeyDown,
82
82
  };
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';
1
+ export { createMenu, getMenuData, type AriaMenuProps, type MenuAria } from "./createMenu";
7
2
 
8
- export {
9
- createMenuItem,
10
- type AriaMenuItemProps,
11
- type MenuItemAria,
12
- } from './createMenuItem';
3
+ export { createMenuItem, type AriaMenuItemProps, type MenuItemAria } from "./createMenuItem";
13
4
 
14
5
  export {
15
6
  createMenuTrigger,
16
7
  type AriaMenuTriggerProps,
17
8
  type MenuTriggerAria,
18
- } from './createMenuTrigger';
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,7 +52,7 @@ export function createMeter(props: AriaMeterProps = {}): MeterAria {
60
52
  get meterProps() {
61
53
  return {
62
54
  ...progressBarProps,
63
- role: 'meter',
55
+ role: "meter",
64
56
  };
65
57
  },
66
58
  get labelProps() {
@@ -1 +1 @@
1
- export { createMeter, type AriaMeterProps, type MeterAria } from './createMeter';
1
+ export { createMeter, type AriaMeterProps, type MeterAria } from "./createMeter";