@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
@@ -3,19 +3,16 @@
3
3
  * Based on @react-aria/tabs.
4
4
  */
5
5
 
6
- import { type Accessor, createMemo, onMount } from 'solid-js';
7
- import { createFocusRing } from '../interactions';
8
- import { createPress } from '../interactions';
9
- import { createHover } from '../interactions';
10
- import { createId } from '../ssr';
11
- import type { Key, Collection, CollectionNode } from '@proyecto-viviana/solid-stately';
6
+ import { type Accessor, createEffect, createMemo } from "solid-js";
7
+ import { createFocusRing } from "../interactions";
8
+ import { createPress } from "../interactions";
9
+ import { createHover } from "../interactions";
10
+ import { createId } from "../ssr";
11
+ import { useLocale } from "../i18n";
12
+ import type { Key, Collection, CollectionNode } from "@proyecto-viviana/solid-stately";
12
13
 
13
- // ============================================
14
- // TYPES
15
- // ============================================
16
-
17
- export type TabOrientation = 'horizontal' | 'vertical';
18
- export type KeyboardActivation = 'automatic' | 'manual';
14
+ export type TabOrientation = "horizontal" | "vertical";
15
+ export type KeyboardActivation = "automatic" | "manual";
19
16
 
20
17
  export interface TabListState<T = unknown> {
21
18
  collection: Accessor<Collection<T>>;
@@ -41,21 +38,21 @@ export interface AriaTabListProps {
41
38
  /** Whether the tab list is disabled. */
42
39
  isDisabled?: boolean;
43
40
  /** Label for the tab list. */
44
- 'aria-label'?: string;
41
+ "aria-label"?: string;
45
42
  /** ID of element that labels the tab list. */
46
- 'aria-labelledby'?: string;
43
+ "aria-labelledby"?: string;
47
44
  /** ID of element that describes the tab list. */
48
- 'aria-describedby'?: string;
45
+ "aria-describedby"?: string;
49
46
  }
50
47
 
51
48
  export interface TabListAria {
52
49
  /** Props for the tab list container element. */
53
50
  tabListProps: {
54
- role: 'tablist';
55
- 'aria-orientation': TabOrientation;
56
- 'aria-label'?: string;
57
- 'aria-labelledby'?: string;
58
- 'aria-describedby'?: string;
51
+ role: "tablist";
52
+ "aria-orientation": TabOrientation;
53
+ "aria-label"?: string;
54
+ "aria-labelledby"?: string;
55
+ "aria-describedby"?: string;
59
56
  onKeyDown: (e: KeyboardEvent) => void;
60
57
  onFocus: (e: FocusEvent) => void;
61
58
  onBlur: (e: FocusEvent) => void;
@@ -68,18 +65,21 @@ export interface AriaTabProps {
68
65
  /** Whether the tab is disabled. */
69
66
  isDisabled?: boolean;
70
67
  /** Label for the tab. */
71
- 'aria-label'?: string;
68
+ "aria-label"?: string;
69
+ /** ID reference for the tab label. */
70
+ "aria-labelledby"?: string;
72
71
  }
73
72
 
74
73
  export interface TabAria {
75
74
  /** Props for the tab element. */
76
75
  tabProps: {
77
76
  id: string;
78
- role: 'tab';
79
- 'aria-selected': boolean;
80
- 'aria-disabled': boolean | undefined;
81
- 'aria-controls': string | undefined;
82
- 'aria-label'?: string;
77
+ role: "tab";
78
+ "aria-selected": boolean;
79
+ "aria-disabled": boolean | undefined;
80
+ "aria-controls": string | undefined;
81
+ "aria-label"?: string;
82
+ "aria-labelledby"?: string;
83
83
  tabIndex: number;
84
84
  onKeyDown: (e: KeyboardEvent) => void;
85
85
  onMouseDown: (e: MouseEvent) => void;
@@ -105,31 +105,27 @@ export interface AriaTabPanelProps {
105
105
  /** The key of the associated tab. */
106
106
  id?: Key;
107
107
  /** Label for the tab panel. */
108
- 'aria-label'?: string;
108
+ "aria-label"?: string;
109
109
  /** ID of element that labels the tab panel. */
110
- 'aria-labelledby'?: string;
110
+ "aria-labelledby"?: string;
111
111
  /** ID of element that describes the tab panel. */
112
- 'aria-describedby'?: string;
112
+ "aria-describedby"?: string;
113
113
  }
114
114
 
115
115
  export interface TabPanelAria {
116
116
  /** Props for the tab panel element. */
117
117
  tabPanelProps: {
118
118
  id: string;
119
- role: 'tabpanel';
120
- 'aria-labelledby': string;
121
- 'aria-label'?: string;
122
- 'aria-describedby'?: string;
119
+ role: "tabpanel";
120
+ "aria-labelledby"?: string;
121
+ "aria-label"?: string;
122
+ "aria-describedby"?: string;
123
123
  tabIndex: number;
124
124
  };
125
125
  /** Whether this panel is the selected one. */
126
126
  isSelected: Accessor<boolean>;
127
127
  }
128
128
 
129
- // ============================================
130
- // ID MANAGEMENT
131
- // ============================================
132
-
133
129
  const tabListIds = new WeakMap<TabListState<unknown>, string>();
134
130
 
135
131
  function getTabListId<T>(state: TabListState<T>): string {
@@ -143,23 +139,19 @@ function getTabListId<T>(state: TabListState<T>): string {
143
139
 
144
140
  function generateTabId<T>(state: TabListState<T>, key: Key): string {
145
141
  const baseId = getTabListId(state);
146
- const keyStr = String(key).replace(/\s+/g, '-');
142
+ const keyStr = String(key).replace(/\s+/g, "-");
147
143
  return `${baseId}-tab-${keyStr}`;
148
144
  }
149
145
 
150
146
  function generateTabPanelId<T>(state: TabListState<T>, key: Key): string {
151
147
  const baseId = getTabListId(state);
152
- const keyStr = String(key).replace(/\s+/g, '-');
148
+ const keyStr = String(key).replace(/\s+/g, "-");
153
149
  return `${baseId}-tabpanel-${keyStr}`;
154
150
  }
155
151
 
156
- // ============================================
157
- // KEYBOARD DELEGATE
158
- // ============================================
159
-
160
152
  function getNextKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
161
153
  const coll = state.collection();
162
- const keys = [...coll].map(node => node.key);
154
+ const keys = [...coll].map((node) => node.key);
163
155
  const currentIndex = keys.indexOf(currentKey);
164
156
 
165
157
  if (currentIndex === -1) return keys[0] ?? null;
@@ -178,7 +170,7 @@ function getNextKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
178
170
 
179
171
  function getPreviousKey<T>(state: TabListState<T>, currentKey: Key): Key | null {
180
172
  const coll = state.collection();
181
- const keys = [...coll].map(node => node.key);
173
+ const keys = [...coll].map((node) => node.key);
182
174
  const currentIndex = keys.indexOf(currentKey);
183
175
 
184
176
  if (currentIndex === -1) return keys[keys.length - 1] ?? null;
@@ -207,7 +199,7 @@ function getFirstKey<T>(state: TabListState<T>): Key | null {
207
199
 
208
200
  function getLastKey<T>(state: TabListState<T>): Key | null {
209
201
  const coll = state.collection();
210
- const keys = [...coll].map(node => node.key).reverse();
202
+ const keys = [...coll].map((node) => node.key).reverse();
211
203
  for (const key of keys) {
212
204
  if (!state.isKeyDisabled(key)) {
213
205
  return key;
@@ -216,19 +208,14 @@ function getLastKey<T>(state: TabListState<T>): Key | null {
216
208
  return null;
217
209
  }
218
210
 
219
- // ============================================
220
- // HOOKS
221
- // ============================================
222
-
223
211
  /**
224
212
  * Creates ARIA props for a tab list container.
225
213
  */
226
- export function createTabList<T>(
227
- props: AriaTabListProps,
228
- state: TabListState<T>
229
- ): TabListAria {
230
- const orientation = () => props.orientation ?? state.orientation() ?? 'horizontal';
231
- const keyboardActivation = () => props.keyboardActivation ?? state.keyboardActivation() ?? 'automatic';
214
+ export function createTabList<T>(props: AriaTabListProps, state: TabListState<T>): TabListAria {
215
+ const locale = useLocale();
216
+ const orientation = () => props.orientation ?? state.orientation() ?? "horizontal";
217
+ const keyboardActivation = () =>
218
+ props.keyboardActivation ?? state.keyboardActivation() ?? "automatic";
232
219
 
233
220
  const handleKeyDown = (e: KeyboardEvent) => {
234
221
  if (state.isDisabled()) return;
@@ -237,40 +224,40 @@ export function createTabList<T>(
237
224
  if (currentKey === null) return;
238
225
 
239
226
  let nextKey: Key | null = null;
240
- const isHorizontal = orientation() === 'horizontal';
227
+ const isHorizontal = orientation() === "horizontal";
228
+ const isRTL = locale().direction === "rtl";
241
229
 
242
230
  switch (e.key) {
243
- case 'ArrowLeft':
231
+ case "ArrowLeft":
244
232
  if (isHorizontal) {
245
- // TODO: RTL support
246
- nextKey = getPreviousKey(state, currentKey);
233
+ nextKey = isRTL ? getNextKey(state, currentKey) : getPreviousKey(state, currentKey);
247
234
  }
248
235
  break;
249
- case 'ArrowRight':
236
+ case "ArrowRight":
250
237
  if (isHorizontal) {
251
- nextKey = getNextKey(state, currentKey);
238
+ nextKey = isRTL ? getPreviousKey(state, currentKey) : getNextKey(state, currentKey);
252
239
  }
253
240
  break;
254
- case 'ArrowUp':
241
+ case "ArrowUp":
255
242
  if (!isHorizontal) {
256
243
  nextKey = getPreviousKey(state, currentKey);
257
244
  }
258
245
  break;
259
- case 'ArrowDown':
246
+ case "ArrowDown":
260
247
  if (!isHorizontal) {
261
248
  nextKey = getNextKey(state, currentKey);
262
249
  }
263
250
  break;
264
- case 'Home':
251
+ case "Home":
265
252
  nextKey = getFirstKey(state);
266
253
  break;
267
- case 'End':
254
+ case "End":
268
255
  nextKey = getLastKey(state);
269
256
  break;
270
- case 'Enter':
271
- case ' ':
257
+ case "Enter":
258
+ case " ":
272
259
  // In manual mode, Enter/Space activates the focused tab
273
- if (keyboardActivation() === 'manual' && state.focusedKey()) {
260
+ if (keyboardActivation() === "manual" && state.focusedKey()) {
274
261
  state.setSelectedKey(state.focusedKey()!);
275
262
  e.preventDefault();
276
263
  }
@@ -282,11 +269,6 @@ export function createTabList<T>(
282
269
  if (nextKey !== null) {
283
270
  e.preventDefault();
284
271
  state.setFocusedKey(nextKey);
285
-
286
- // In automatic mode, selection follows focus
287
- if (keyboardActivation() === 'automatic') {
288
- state.setSelectedKey(nextKey);
289
- }
290
272
  }
291
273
  };
292
274
 
@@ -309,11 +291,11 @@ export function createTabList<T>(
309
291
 
310
292
  return {
311
293
  tabListProps: {
312
- role: 'tablist',
313
- 'aria-orientation': orientation(),
314
- 'aria-label': props['aria-label'],
315
- 'aria-labelledby': props['aria-labelledby'],
316
- 'aria-describedby': props['aria-describedby'],
294
+ role: "tablist",
295
+ "aria-orientation": orientation(),
296
+ "aria-label": props["aria-label"],
297
+ "aria-labelledby": props["aria-labelledby"],
298
+ "aria-describedby": props["aria-describedby"],
317
299
  onKeyDown: handleKeyDown,
318
300
  onFocus: handleFocus,
319
301
  onBlur: handleBlur,
@@ -327,7 +309,7 @@ export function createTabList<T>(
327
309
  export function createTab<T>(
328
310
  props: AriaTabProps,
329
311
  state: TabListState<T>,
330
- ref?: Accessor<HTMLElement | null>
312
+ ref?: Accessor<HTMLElement | null>,
331
313
  ): TabAria {
332
314
  const key = () => props.key;
333
315
 
@@ -348,8 +330,14 @@ export function createTab<T>(
348
330
  return isDisabled();
349
331
  },
350
332
  onPress: () => {
351
- state.setSelectedKey(key());
352
- state.setFocusedKey(key());
333
+ const tabKey = key();
334
+ const wasSelected = state.selectedKey() === tabKey;
335
+
336
+ state.setFocusedKey(tabKey);
337
+
338
+ if (state.keyboardActivation() === "manual" || wasSelected) {
339
+ state.setSelectedKey(tabKey);
340
+ }
353
341
  },
354
342
  });
355
343
 
@@ -365,60 +353,68 @@ export function createTab<T>(
365
353
  const tabPanelId = generateTabPanelId(state, key());
366
354
 
367
355
  // Helper to safely call event handlers that may be bound tuples
368
- const callHandler = <E extends Event>(
369
- handler: ((e: E) => void) | [object, (e: E) => void] | undefined,
370
- event: E
371
- ) => {
372
- if (!handler) return;
373
- if (Array.isArray(handler)) {
374
- handler[1].call(handler[0], event);
375
- } else {
376
- handler(event);
356
+ const callHandler = <E extends Event>(handler: unknown, event: E) => {
357
+ if (typeof handler === "function") {
358
+ (handler as (e: E) => void)(event);
359
+ return;
360
+ }
361
+ if (Array.isArray(handler) && handler.length >= 2 && typeof handler[1] === "function") {
362
+ (handler[1] as (this: unknown, e: E) => void).call(handler[0], event);
377
363
  }
378
364
  };
379
365
 
380
366
  // Focus management
381
367
  const handleFocus = (e: FocusEvent) => {
382
368
  state.setFocusedKey(key());
383
- callHandler(focusProps.onFocus as any, e);
369
+ callHandler(focusProps.onFocus, e);
384
370
  };
385
371
 
386
372
  // Combine all handlers
387
373
  const handleKeyDown = (e: KeyboardEvent) => {
388
- callHandler(pressProps.onKeyDown as any, e);
374
+ callHandler(pressProps.onKeyDown, e);
389
375
  };
390
376
 
391
377
  const handleMouseDown = (e: MouseEvent) => {
392
- callHandler(pressProps.onMouseDown as any, e);
378
+ callHandler(pressProps.onMouseDown, e);
393
379
  };
394
380
 
395
381
  const handlePointerDown = (e: PointerEvent) => {
396
- callHandler(pressProps.onPointerDown as any, e);
382
+ callHandler(pressProps.onPointerDown, e);
397
383
  };
398
384
 
399
385
  const handleClick = (e: MouseEvent) => {
400
- callHandler(pressProps.onClick as any, e);
386
+ callHandler(pressProps.onClick, e);
401
387
  };
402
388
 
403
- // Focus this tab when it becomes selected and focused
404
- onMount(() => {
405
- const cleanup = createMemo(() => {
406
- if (isFocused() && ref?.()) {
407
- ref()?.focus();
408
- }
409
- });
410
- return cleanup;
389
+ // Keep DOM focus aligned with focusedKey updates from keyboard delegate.
390
+ createEffect(() => {
391
+ const element = ref?.();
392
+ if (!isFocused() || !element) return;
393
+
394
+ const activeElement = element.ownerDocument?.activeElement;
395
+ if (activeElement !== element) {
396
+ element.focus();
397
+ }
411
398
  });
412
399
 
413
400
  return {
414
401
  tabProps: {
415
402
  id: tabId,
416
- role: 'tab',
417
- 'aria-selected': isSelected(),
418
- 'aria-disabled': isDisabled() || undefined,
419
- 'aria-controls': isSelected() ? tabPanelId : undefined,
420
- 'aria-label': props['aria-label'],
421
- tabIndex: isSelected() && !isDisabled() ? 0 : -1,
403
+ role: "tab",
404
+ get "aria-selected"() {
405
+ return isSelected();
406
+ },
407
+ get "aria-disabled"() {
408
+ return isDisabled() || undefined;
409
+ },
410
+ get "aria-controls"() {
411
+ return isSelected() ? tabPanelId : undefined;
412
+ },
413
+ "aria-label": props["aria-label"],
414
+ "aria-labelledby": props["aria-labelledby"],
415
+ get tabIndex() {
416
+ return isSelected() && !isDisabled() ? 0 : -1;
417
+ },
422
418
  onKeyDown: handleKeyDown,
423
419
  onMouseDown: handleMouseDown,
424
420
  onPointerDown: handlePointerDown,
@@ -439,31 +435,46 @@ export function createTab<T>(
439
435
  */
440
436
  export function createTabPanel<T>(
441
437
  props: AriaTabPanelProps,
442
- state: TabListState<T> | null
438
+ state: TabListState<T> | null,
443
439
  ): TabPanelAria {
444
- // If state is null, the panel is always visible (for SSR scenarios)
440
+ const fallbackId = createId();
441
+
442
+ // Shared panel pattern: if no explicit id is provided, associate the panel
443
+ // with the currently selected tab.
444
+ const associatedKey = createMemo<Key | null>(() => {
445
+ if (state === null) return null;
446
+ return props.id ?? state.selectedKey();
447
+ });
448
+
449
+ // If state is null, the panel is always visible (SSR fallback).
445
450
  const isSelected = createMemo(() => {
446
451
  if (state === null) return true;
447
- if (props.id === undefined) return false;
452
+ if (props.id === undefined) {
453
+ return state.selectedKey() !== null;
454
+ }
448
455
  return state.selectedKey() === props.id;
449
456
  });
450
457
 
451
- // Generate IDs based on the associated tab key
452
- const tabPanelId = state && props.id !== undefined
453
- ? generateTabPanelId(state, props.id)
454
- : createId();
455
-
456
- const tabId = state && props.id !== undefined
457
- ? generateTabId(state, props.id)
458
- : '';
459
-
460
458
  return {
461
459
  tabPanelProps: {
462
- id: tabPanelId,
463
- role: 'tabpanel',
464
- 'aria-labelledby': props['aria-labelledby'] ?? tabId,
465
- 'aria-label': props['aria-label'],
466
- 'aria-describedby': props['aria-describedby'],
460
+ get id() {
461
+ const key = associatedKey();
462
+ if (state && key !== null) {
463
+ return generateTabPanelId(state, key);
464
+ }
465
+ return fallbackId;
466
+ },
467
+ role: "tabpanel",
468
+ get "aria-labelledby"() {
469
+ if (props["aria-labelledby"]) return props["aria-labelledby"];
470
+ const key = associatedKey();
471
+ if (state && key !== null) {
472
+ return generateTabId(state, key);
473
+ }
474
+ return undefined;
475
+ },
476
+ "aria-label": props["aria-label"],
477
+ "aria-describedby": props["aria-describedby"],
467
478
  // Make panel focusable if no tabbable children
468
479
  tabIndex: 0,
469
480
  },
package/src/tabs/index.ts CHANGED
@@ -11,4 +11,4 @@ export {
11
11
  type TabAria,
12
12
  type AriaTabPanelProps,
13
13
  type TabPanelAria,
14
- } from './createTabs';
14
+ } from "./createTabs";