@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
@@ -7,100 +7,103 @@
7
7
  * Based on @react-aria/autocomplete useAutocomplete.
8
8
  */
9
9
 
10
- import {
11
- createSignal,
12
- createEffect,
13
- onCleanup,
14
- type Accessor,
15
- } from 'solid-js'
16
- import { createId, getOwnerDocument } from '../ssr'
17
- import { type AutocompleteState } from '@proyecto-viviana/solid-stately'
18
-
19
- // ============================================
20
- // TYPES
21
- // ============================================
10
+ import { createSignal, createEffect, onCleanup, type Accessor } from "solid-js";
11
+ import { createId, getOwnerDocument } from "../ssr";
12
+ import { type AutocompleteState } from "@proyecto-viviana/solid-stately";
22
13
 
23
14
  export interface CollectionOptions {
24
15
  /** The id of the collection element. */
25
- id?: string
16
+ id?: string;
26
17
  /** Accessible label for the collection. */
27
- 'aria-label'?: string
18
+ "aria-label"?: string;
28
19
  /** Whether the collection items should use virtual focus instead of being focused directly. */
29
- shouldUseVirtualFocus: boolean
20
+ shouldUseVirtualFocus: boolean;
30
21
  /** Whether typeahead is disabled. */
31
- disallowTypeAhead: boolean
22
+ disallowTypeAhead: boolean;
32
23
  }
33
24
 
34
25
  export interface AutocompleteInputProps {
35
26
  /** Current input value. */
36
- value: Accessor<string>
27
+ value: Accessor<string>;
37
28
  /** Handler for input value changes. */
38
- onChange: (value: string) => void
29
+ onChange: (value: string) => void;
39
30
  /** Handler for key events. */
40
- onKeyDown: (e: KeyboardEvent) => void
31
+ onKeyDown: (e: KeyboardEvent) => void;
41
32
  /** Handler for focus events. */
42
- onFocus: (e: FocusEvent) => void
33
+ onFocus: (e: FocusEvent) => void;
43
34
  /** Handler for blur events. */
44
- onBlur: (e: FocusEvent) => void
35
+ onBlur: (e: FocusEvent) => void;
45
36
  /** The id of the currently focused item for aria-activedescendant. */
46
- 'aria-activedescendant': Accessor<string | undefined>
37
+ "aria-activedescendant": Accessor<string | undefined>;
47
38
  /** The id of the controlled collection. */
48
- 'aria-controls': string
39
+ "aria-controls": string;
49
40
  /** Autocomplete type. */
50
- 'aria-autocomplete': 'list' | 'none' | 'inline' | 'both'
41
+ "aria-autocomplete": "list" | "none" | "inline" | "both";
51
42
  /** Enter key hint for mobile keyboards. */
52
- enterKeyHint: 'go'
43
+ enterKeyHint: "go";
53
44
  /** Disable autocorrect. */
54
- autoCorrect: 'off'
45
+ autoCorrect: "off";
55
46
  /** Disable spell check. */
56
- spellCheck: 'false'
47
+ spellCheck: "false";
57
48
  /** Disable browser autocomplete. */
58
- autoComplete: 'off'
49
+ autoComplete: "off";
59
50
  }
60
51
 
61
- export interface AriaAutocompleteOptions<T = unknown> {
52
+ export interface AriaAutocompleteOptions<_T = unknown> {
62
53
  /** Ref accessor for the input element. */
63
- inputRef: Accessor<HTMLInputElement | undefined>
54
+ inputRef: Accessor<HTMLInputElement | undefined>;
64
55
  /** Ref accessor for the collection element. */
65
- collectionRef: Accessor<HTMLElement | undefined>
56
+ collectionRef: Accessor<HTMLElement | undefined>;
57
+ /** Optional id override for the controlled collection element. */
58
+ collectionId?: string;
59
+ /** Optional accessible name for the controlled collection element. */
60
+ collectionAriaLabel?: string;
66
61
  /**
67
62
  * An optional filter function used to determine if an option should be included.
68
63
  * @param textValue - The text value of the item
69
64
  * @param inputValue - The current input value
70
65
  */
71
- filter?: (textValue: string, inputValue: string) => boolean
66
+ filter?: (textValue: string, inputValue: string) => boolean;
72
67
  /**
73
68
  * Whether to focus the first item after filtering.
74
69
  * @default false
75
70
  */
76
- disableAutoFocusFirst?: boolean
71
+ disableAutoFocusFirst?: boolean;
77
72
  /**
78
73
  * Whether to disable virtual focus (aria-activedescendant).
79
74
  * @default false
80
75
  */
81
- disableVirtualFocus?: boolean
76
+ disableVirtualFocus?: boolean;
82
77
  }
83
78
 
84
- export interface AutocompleteAria<T = unknown> {
79
+ export interface AutocompleteAria<_T = unknown> {
85
80
  /** Props for the autocomplete input element. */
86
- inputProps: AutocompleteInputProps
81
+ inputProps: AutocompleteInputProps;
87
82
  /** Props for the collection (ListBox/Menu). */
88
- collectionProps: CollectionOptions
83
+ collectionProps: CollectionOptions;
89
84
  /** A filter function that returns if the item should be shown. */
90
- filter?: (textValue: string) => boolean
85
+ filter?: (textValue: string) => boolean;
91
86
  }
92
87
 
93
- // ============================================
94
- // CONSTANTS
95
- // ============================================
88
+ function toKeyboardEventInit(e: KeyboardEvent): KeyboardEventInit {
89
+ return {
90
+ key: e.key,
91
+ code: e.code,
92
+ location: e.location,
93
+ repeat: e.repeat,
94
+ isComposing: e.isComposing,
95
+ ctrlKey: e.ctrlKey,
96
+ shiftKey: e.shiftKey,
97
+ altKey: e.altKey,
98
+ metaKey: e.metaKey,
99
+ bubbles: e.bubbles,
100
+ cancelable: e.cancelable,
101
+ };
102
+ }
96
103
 
97
104
  // Custom event names for collection communication
98
- export const AUTOCOMPLETE_FOCUS_EVENT = 'autocomplete:focus'
99
- export const AUTOCOMPLETE_CLEAR_FOCUS_EVENT = 'autocomplete:clearfocus'
100
-
101
- // ============================================
102
- // CREATE AUTOCOMPLETE HOOK
103
- // ============================================
105
+ export const AUTOCOMPLETE_FOCUS_EVENT = "autocomplete:focus";
106
+ export const AUTOCOMPLETE_CLEAR_FOCUS_EVENT = "autocomplete:clearfocus";
104
107
 
105
108
  /**
106
109
  * Provides the behavior and accessibility implementation for an autocomplete component.
@@ -133,116 +136,119 @@ export const AUTOCOMPLETE_CLEAR_FOCUS_EVENT = 'autocomplete:clearfocus'
133
136
  */
134
137
  export function createAutocomplete<T = unknown>(
135
138
  props: AriaAutocompleteOptions<T>,
136
- state: AutocompleteState
139
+ state: AutocompleteState,
137
140
  ): AutocompleteAria<T> {
138
141
  const {
139
142
  inputRef,
140
143
  collectionRef,
141
144
  filter,
145
+ collectionId: collectionIdProp,
146
+ collectionAriaLabel,
142
147
  disableAutoFocusFirst = false,
143
148
  disableVirtualFocus = false,
144
- } = props
149
+ } = props;
145
150
 
146
- const collectionId = createId()
147
- const [shouldUseVirtualFocus] = createSignal(!disableVirtualFocus)
148
- let lastInputType = ''
151
+ const collectionId = collectionIdProp ?? createId();
152
+ const [shouldUseVirtualFocus] = createSignal(!disableVirtualFocus);
153
+ let lastInputType = "";
149
154
 
150
155
  // Track the input type for determining focus behavior
151
156
  const handleInput = (e: Event) => {
152
- const inputEvent = e as InputEvent
153
- lastInputType = inputEvent.inputType || ''
154
- }
157
+ const inputEvent = e as InputEvent;
158
+ lastInputType = inputEvent.inputType || "";
159
+ };
155
160
 
156
161
  // Set up input event listener
157
162
  createEffect(() => {
158
- const input = inputRef()
163
+ const input = inputRef();
159
164
  if (input) {
160
- input.addEventListener('input', handleInput)
165
+ input.addEventListener("input", handleInput);
161
166
  onCleanup(() => {
162
- input.removeEventListener('input', handleInput)
163
- })
167
+ input.removeEventListener("input", handleInput);
168
+ });
164
169
  }
165
- })
170
+ });
166
171
 
167
172
  // Focus first item in collection
168
173
  const focusFirstItem = () => {
169
- const collection = collectionRef()
174
+ const collection = collectionRef();
170
175
  if (collection) {
171
176
  collection.dispatchEvent(
172
177
  new CustomEvent(AUTOCOMPLETE_FOCUS_EVENT, {
173
178
  cancelable: true,
174
179
  bubbles: true,
175
- detail: { focusStrategy: 'first' },
176
- })
177
- )
180
+ detail: { focusStrategy: "first" },
181
+ }),
182
+ );
178
183
  }
179
- }
184
+ };
180
185
 
181
186
  // Clear virtual focus
182
187
  const clearVirtualFocus = (clearFocusKey = false) => {
183
- state.setFocusedNodeId(null)
184
- const collection = collectionRef()
188
+ state.setFocusedNodeId(null);
189
+ const collection = collectionRef();
185
190
  if (collection) {
186
191
  collection.dispatchEvent(
187
192
  new CustomEvent(AUTOCOMPLETE_CLEAR_FOCUS_EVENT, {
188
193
  cancelable: true,
189
194
  bubbles: true,
190
195
  detail: { clearFocusKey },
191
- })
192
- )
196
+ }),
197
+ );
193
198
  }
194
- }
199
+ };
195
200
 
196
201
  // Handle input value changes
197
202
  const onChange = (value: string) => {
198
203
  // Focus first item when typing forward, clear when backspacing/pasting
199
- if (lastInputType === 'insertText' && !disableAutoFocusFirst) {
200
- focusFirstItem()
204
+ if (lastInputType === "insertText" && !disableAutoFocusFirst) {
205
+ focusFirstItem();
201
206
  } else if (
202
207
  lastInputType &&
203
- (lastInputType.includes('insert') ||
204
- lastInputType.includes('delete') ||
205
- lastInputType.includes('history'))
208
+ (lastInputType.includes("insert") ||
209
+ lastInputType.includes("delete") ||
210
+ lastInputType.includes("history"))
206
211
  ) {
207
- clearVirtualFocus(true)
212
+ clearVirtualFocus(true);
208
213
  }
209
214
 
210
- state.setInputValue(value)
211
- }
215
+ state.setInputValue(value);
216
+ };
212
217
 
213
218
  // Handle keyboard navigation
214
219
  const onKeyDown = (e: KeyboardEvent) => {
215
- if ((e as any).isComposing) {
216
- return
220
+ if ("isComposing" in e && e.isComposing) {
221
+ return;
217
222
  }
218
223
 
219
- const focusedNodeId = state.focusedNodeId()
220
- const collection = collectionRef()
224
+ const focusedNodeId = state.focusedNodeId();
225
+ const collection = collectionRef();
226
+ const ownerDocument = getOwnerDocument(inputRef() ?? collection);
221
227
 
222
228
  switch (e.key) {
223
- case 'Escape':
229
+ case "Escape":
224
230
  // Let the input handle Escape (e.g., clear value)
225
231
  if (e.defaultPrevented) {
226
- return
232
+ return;
227
233
  }
228
- break
234
+ break;
229
235
 
230
- case ' ':
236
+ case " ":
231
237
  // Space shouldn't trigger item action
232
- return
238
+ return;
233
239
 
234
- case 'Tab':
240
+ case "Tab":
235
241
  // Let Tab propagate normally for focus management
236
- return
237
-
238
- case 'ArrowUp':
239
- case 'ArrowDown':
240
- case 'Home':
241
- case 'End':
242
- case 'PageUp':
243
- case 'PageDown': {
242
+ return;
243
+
244
+ case "ArrowUp":
245
+ case "ArrowDown":
246
+ case "Home":
247
+ case "End":
248
+ case "PageUp":
249
+ case "PageDown": {
244
250
  // Prevent cursor movement in input
245
- e.preventDefault()
251
+ e.preventDefault();
246
252
 
247
253
  // Dispatch focus event to collection
248
254
  if (collection) {
@@ -250,68 +256,68 @@ export function createAutocomplete<T = unknown>(
250
256
  new CustomEvent(AUTOCOMPLETE_FOCUS_EVENT, {
251
257
  cancelable: true,
252
258
  bubbles: true,
253
- })
254
- )
259
+ }),
260
+ );
255
261
  }
256
- break
262
+ break;
257
263
  }
258
264
 
259
- case 'ArrowLeft':
260
- case 'ArrowRight':
265
+ case "ArrowLeft":
266
+ case "ArrowRight":
261
267
  // Clear activedescendant so screen reader announces cursor movement
262
- clearVirtualFocus()
263
- return
268
+ clearVirtualFocus();
269
+ return;
264
270
 
265
- case 'Enter':
271
+ case "Enter":
266
272
  // Trigger click on focused item
267
273
  if (focusedNodeId) {
268
- const item = document.getElementById(focusedNodeId)
274
+ const item = ownerDocument?.getElementById(focusedNodeId);
269
275
  if (item) {
270
- item.click()
271
- e.preventDefault()
276
+ item.click();
277
+ e.preventDefault();
272
278
  }
273
279
  }
274
- return
280
+ return;
275
281
  }
276
282
 
277
283
  // Forward keyboard events to collection/focused item
278
284
  if (!e.defaultPrevented && collection) {
279
- e.stopPropagation()
285
+ e.stopPropagation();
280
286
 
281
287
  if (focusedNodeId) {
282
- const item = document.getElementById(focusedNodeId)
288
+ const item = ownerDocument?.getElementById(focusedNodeId);
283
289
  if (item) {
284
- item.dispatchEvent(new KeyboardEvent(e.type, e))
290
+ item.dispatchEvent(new KeyboardEvent(e.type, toKeyboardEventInit(e)));
285
291
  }
286
292
  } else {
287
- collection.dispatchEvent(new KeyboardEvent(e.type, e))
293
+ collection.dispatchEvent(new KeyboardEvent(e.type, toKeyboardEventInit(e)));
288
294
  }
289
295
  }
290
- }
296
+ };
291
297
 
292
298
  // Handle focus events
293
299
  const onFocus = (e: FocusEvent) => {
294
- if (!e.isTrusted) return
300
+ if (!e.isTrusted) return;
295
301
 
296
302
  // Restore virtual focus when refocusing input
297
- const focusedNodeId = state.focusedNodeId()
303
+ const focusedNodeId = state.focusedNodeId();
298
304
  if (focusedNodeId) {
299
- const item = document.getElementById(focusedNodeId)
305
+ const item = document.getElementById(focusedNodeId);
300
306
  if (item) {
301
307
  // Item still exists, keep focus on it
302
308
  }
303
309
  }
304
- }
310
+ };
305
311
 
306
312
  const onBlur = (e: FocusEvent) => {
307
- if (!e.isTrusted) return
313
+ if (!e.isTrusted) return;
308
314
  // Virtual focus blur handling would go here
309
- }
315
+ };
310
316
 
311
317
  // Create filter function
312
318
  const filterFn = filter
313
319
  ? (textValue: string) => filter(textValue, state.inputValue())
314
- : undefined
320
+ : undefined;
315
321
 
316
322
  return {
317
323
  inputProps: {
@@ -320,22 +326,22 @@ export function createAutocomplete<T = unknown>(
320
326
  onKeyDown,
321
327
  onFocus,
322
328
  onBlur,
323
- get 'aria-activedescendant'() {
324
- return () => (shouldUseVirtualFocus() ? state.focusedNodeId() ?? undefined : undefined)
329
+ get "aria-activedescendant"() {
330
+ return () => (shouldUseVirtualFocus() ? (state.focusedNodeId() ?? undefined) : undefined);
325
331
  },
326
- 'aria-controls': collectionId,
327
- 'aria-autocomplete': 'list',
328
- enterKeyHint: 'go',
329
- autoCorrect: 'off',
330
- spellCheck: 'false',
331
- autoComplete: 'off',
332
+ "aria-controls": collectionId,
333
+ "aria-autocomplete": "list",
334
+ enterKeyHint: "go",
335
+ autoCorrect: "off",
336
+ spellCheck: "false",
337
+ autoComplete: "off",
332
338
  },
333
339
  collectionProps: {
334
340
  id: collectionId,
335
- 'aria-label': 'Suggestions',
341
+ "aria-label": collectionAriaLabel,
336
342
  shouldUseVirtualFocus: shouldUseVirtualFocus(),
337
343
  disallowTypeAhead: shouldUseVirtualFocus(),
338
344
  },
339
345
  filter: filterFn,
340
- }
346
+ };
341
347
  }
@@ -6,4 +6,4 @@ export {
6
6
  type AutocompleteAria,
7
7
  type AutocompleteInputProps,
8
8
  type CollectionOptions,
9
- } from './createAutocomplete'
9
+ } from "./createAutocomplete";
@@ -5,22 +5,20 @@
5
5
  * Port of @react-aria/breadcrumbs.
6
6
  */
7
7
 
8
- import { createLink, type AriaLinkProps, type LinkAria } from '../link';
9
- import { filterDOMProps } from '../utils/filterDOMProps';
10
- import { mergeProps } from '../utils/mergeProps';
11
- import { type MaybeAccessor, access } from '../utils/reactivity';
12
-
13
- // ============================================
14
- // TYPES
15
- // ============================================
8
+ import { createLink, type AriaLinkProps, type LinkAria } from "../link";
9
+ import { filterDOMProps } from "../utils/filterDOMProps";
10
+ import { mergeProps } from "../utils/mergeProps";
11
+ import { type MaybeAccessor, access } from "../utils/reactivity";
16
12
 
17
13
  export interface AriaBreadcrumbsProps {
18
14
  /** Provides a label for the breadcrumbs navigation. */
19
- 'aria-label'?: string;
15
+ "aria-label"?: string;
20
16
  /** Identifies the element (or elements) that labels the breadcrumbs. */
21
- 'aria-labelledby'?: string;
17
+ "aria-labelledby"?: string;
22
18
  /** Identifies the element (or elements) that describes the breadcrumbs. */
23
- 'aria-describedby'?: string;
19
+ "aria-describedby"?: string;
20
+ /** Identifies the element (or elements) that provide a detailed description. */
21
+ "aria-details"?: string;
24
22
  /** Whether the breadcrumbs are disabled. */
25
23
  isDisabled?: boolean;
26
24
  }
@@ -30,11 +28,13 @@ export interface BreadcrumbsAria {
30
28
  navProps: Record<string, unknown>;
31
29
  }
32
30
 
33
- export interface AriaBreadcrumbItemProps extends Omit<AriaLinkProps, 'aria-current'> {
31
+ export interface AriaBreadcrumbItemProps extends Omit<AriaLinkProps, "aria-current"> {
32
+ /** The DOM id for the breadcrumb item. */
33
+ id?: string;
34
34
  /** Whether this is the current/last item in the breadcrumb trail. */
35
35
  isCurrent?: boolean;
36
36
  /** The type of current location for aria-current. @default 'page' */
37
- 'aria-current'?: 'page' | 'step' | 'location' | 'date' | 'time' | boolean;
37
+ "aria-current"?: "page" | "step" | "location" | "date" | "time" | boolean;
38
38
  /** The HTML element type. @default 'a' */
39
39
  elementType?: string;
40
40
  }
@@ -44,30 +44,24 @@ export interface BreadcrumbItemAria extends LinkAria {
44
44
  itemProps: Record<string, unknown>;
45
45
  }
46
46
 
47
- // ============================================
48
- // IMPLEMENTATION
49
- // ============================================
50
-
51
47
  /**
52
48
  * Provides accessibility implementation for the breadcrumbs navigation container.
53
49
  */
54
50
  export function createBreadcrumbs(
55
- props: MaybeAccessor<AriaBreadcrumbsProps> = {}
51
+ props: MaybeAccessor<AriaBreadcrumbsProps> = {},
56
52
  ): BreadcrumbsAria {
57
53
  const getProps = () => access(props);
58
54
 
59
55
  const getNavProps = (): Record<string, unknown> => {
60
56
  const p = getProps();
61
57
 
62
- // Default aria-label to "Breadcrumbs" if not provided
63
- const ariaLabel = p['aria-label'] ?? 'Breadcrumbs';
58
+ // Only apply a default label when no other label source exists.
59
+ const ariaLabel = p["aria-label"] ?? (p["aria-labelledby"] ? undefined : "Breadcrumbs");
64
60
 
65
- return mergeProps(
66
- filterDOMProps(p as Record<string, unknown>, { labelable: true }),
67
- {
68
- 'aria-label': ariaLabel,
69
- }
70
- );
61
+ return mergeProps(filterDOMProps(p as Record<string, unknown>, { labelable: true }), {
62
+ "aria-label": ariaLabel,
63
+ "aria-details": p["aria-details"],
64
+ });
71
65
  };
72
66
 
73
67
  return {
@@ -81,16 +75,13 @@ export function createBreadcrumbs(
81
75
  * Provides accessibility implementation for an individual breadcrumb item.
82
76
  */
83
77
  export function createBreadcrumbItem(
84
- props: MaybeAccessor<AriaBreadcrumbItemProps> = {}
78
+ props: MaybeAccessor<AriaBreadcrumbItemProps> = {},
85
79
  ): BreadcrumbItemAria {
86
80
  const getProps = () => access(props);
87
81
 
88
82
  const isCurrent = () => getProps().isCurrent ?? false;
89
83
  const isDisabled = () => getProps().isDisabled ?? false;
90
- const elementType = () => getProps().elementType ?? 'a';
91
-
92
- // Check if element is a heading
93
- const isHeading = () => /^h[1-6]$/.test(elementType());
84
+ const elementType = () => getProps().elementType ?? "a";
94
85
 
95
86
  // Use createLink for base link behavior
96
87
  // Current items are treated as disabled (can't navigate to current page)
@@ -102,7 +93,7 @@ export function createBreadcrumbItem(
102
93
  return elementType();
103
94
  },
104
95
  get href() {
105
- return getProps().href;
96
+ return isCurrent() ? undefined : getProps().href;
106
97
  },
107
98
  get target() {
108
99
  return getProps().target;
@@ -140,14 +131,17 @@ export function createBreadcrumbItem(
140
131
  get autoFocus() {
141
132
  return getProps().autoFocus;
142
133
  },
143
- get 'aria-label'() {
144
- return getProps()['aria-label'];
134
+ get "aria-label"() {
135
+ return getProps()["aria-label"];
145
136
  },
146
- get 'aria-labelledby'() {
147
- return getProps()['aria-labelledby'];
137
+ get "aria-labelledby"() {
138
+ return getProps()["aria-labelledby"];
148
139
  },
149
- get 'aria-describedby'() {
150
- return getProps()['aria-describedby'];
140
+ get "aria-describedby"() {
141
+ return getProps()["aria-describedby"];
142
+ },
143
+ get "aria-details"() {
144
+ return getProps()["aria-details"];
151
145
  },
152
146
  });
153
147
 
@@ -155,29 +149,21 @@ export function createBreadcrumbItem(
155
149
  const p = getProps();
156
150
  const current = isCurrent();
157
151
 
158
- // Start with link props (unless it's a heading)
159
- let baseProps: Record<string, unknown> = isHeading() ? {} : linkProps;
152
+ // Start with link props, forwarding id if provided
153
+ let baseProps: Record<string, unknown> = p.id ? mergeProps(linkProps, { id: p.id }) : linkProps;
160
154
 
161
155
  // Add aria-current for current page
162
156
  if (current) {
163
- const ariaCurrent = p['aria-current'] ?? 'page';
157
+ const ariaCurrent = p["aria-current"] ?? "page";
164
158
  baseProps = mergeProps(baseProps, {
165
- 'aria-current': ariaCurrent,
159
+ "aria-current": ariaCurrent,
166
160
  });
167
-
168
- // Adjust tabIndex for current item
169
- // If autoFocus is true, we want the item focusable
170
- if (p.autoFocus) {
171
- baseProps = mergeProps(baseProps, {
172
- tabIndex: -1,
173
- });
174
- }
175
161
  }
176
162
 
177
163
  // Add aria-disabled for disabled items
178
164
  if (isDisabled()) {
179
165
  baseProps = mergeProps(baseProps, {
180
- 'aria-disabled': true,
166
+ "aria-disabled": true,
181
167
  });
182
168
  }
183
169
 
@@ -5,4 +5,4 @@ export {
5
5
  type BreadcrumbsAria,
6
6
  type AriaBreadcrumbItemProps,
7
7
  type BreadcrumbItemAria,
8
- } from './createBreadcrumbs';
8
+ } from "./createBreadcrumbs";