@proyecto-viviana/solidaria 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -1,233 +1,282 @@
1
- /**
2
- * createTreeItem - Provides accessibility for a tree item.
3
- * Based on @react-aria/tree/useTreeItem.
4
- */
5
-
6
- import { createMemo, createSignal, type Accessor } from 'solid-js';
7
- import type { JSX } from 'solid-js';
8
- import type { TreeState, TreeCollection } from '@proyecto-viviana/solid-stately';
9
- import type { AriaTreeItemProps, TreeItemAria } from './types';
10
- import { getTreeData } from './createTree';
11
-
12
- /**
13
- * Creates accessibility props for a tree item.
14
- */
15
- export function createTreeItem<T extends object, C extends TreeCollection<T> = TreeCollection<T>>(
16
- props: Accessor<AriaTreeItemProps<T>>,
17
- state: Accessor<TreeState<T, C>>,
18
- _ref: Accessor<HTMLDivElement | null>
19
- ): TreeItemAria {
20
- const [isPressed, setIsPressed] = createSignal(false);
21
-
22
- const isSelected = createMemo(() => {
23
- const s = state();
24
- const p = props();
25
- return s.isSelected(p.node.key);
26
- });
27
-
28
- const isDisabled = createMemo(() => {
29
- const s = state();
30
- const p = props();
31
- return s.isDisabled(p.node.key);
32
- });
33
-
34
- const isFocused = createMemo(() => {
35
- const s = state();
36
- const p = props();
37
- return s.focusedKey === p.node.key;
38
- });
39
-
40
- const isExpanded = createMemo(() => {
41
- const s = state();
42
- const p = props();
43
- return s.isExpanded(p.node.key);
44
- });
45
-
46
- const isExpandable = createMemo(() => {
47
- const p = props();
48
- return p.node.isExpandable ?? false;
49
- });
50
-
51
- const level = createMemo(() => {
52
- const p = props();
53
- return p.node.level;
54
- });
55
-
56
- // Handle click/press for selection and actions
57
- const onClick = (e: MouseEvent) => {
58
- const s = state();
59
- const p = props();
60
-
61
- if (isDisabled()) return;
62
-
63
- // Get tree metadata for actions
64
- const treeData = getTreeData(s);
65
- const onAction = treeData?.actions.onAction;
66
-
67
- // Handle selection
68
- if (s.selectionMode !== 'none') {
69
- if (e.shiftKey && s.selectionMode === 'multiple') {
70
- s.extendSelection(p.node.key);
71
- } else if (e.ctrlKey || e.metaKey) {
72
- s.toggleSelection(p.node.key);
73
- } else {
74
- // Replace selection or toggle if already selected
75
- if (isSelected() && s.selectedKeys !== 'all') {
76
- const selectedKeys = s.selectedKeys as Set<unknown>;
77
- if (selectedKeys.size === 1) {
78
- // Single selection, trigger action
79
- if (onAction) {
80
- onAction(p.node.key);
81
- }
82
- if (p.onAction) {
83
- p.onAction();
84
- }
85
- } else {
86
- s.replaceSelection(p.node.key);
87
- }
88
- } else {
89
- s.replaceSelection(p.node.key);
90
- }
91
- }
92
- } else {
93
- // No selection mode, just trigger action
94
- if (onAction) {
95
- onAction(p.node.key);
96
- }
97
- if (p.onAction) {
98
- p.onAction();
99
- }
100
- }
101
- };
102
-
103
- const onKeyDown = (e: KeyboardEvent) => {
104
- const s = state();
105
- const p = props();
106
-
107
- if (isDisabled()) return;
108
-
109
- if (e.key === 'Enter') {
110
- // Get tree metadata for actions
111
- const treeData = getTreeData(s);
112
- const onAction = treeData?.actions.onAction;
113
-
114
- if (onAction || p.onAction) {
115
- e.preventDefault();
116
-
117
- if (onAction) {
118
- onAction(p.node.key);
119
- }
120
-
121
- if (p.onAction) {
122
- p.onAction();
123
- }
124
- }
125
- } else if (e.key === ' ') {
126
- // Space toggles selection
127
- if (s.selectionMode !== 'none') {
128
- e.preventDefault();
129
- s.toggleSelection(p.node.key);
130
- }
131
- }
132
- };
133
-
134
- const onFocus = () => {
135
- const s = state();
136
- const p = props();
137
- s.setFocusedKey(p.node.key);
138
- };
139
-
140
- const onPointerDown = () => {
141
- setIsPressed(true);
142
- };
143
-
144
- const onPointerUp = () => {
145
- setIsPressed(false);
146
- };
147
-
148
- const rowProps = createMemo(() => {
149
- const s = state();
150
- const p = props();
151
- const node = p.node;
152
-
153
- const baseProps: Record<string, unknown> = {
154
- role: 'row',
155
- 'aria-selected': s.selectionMode !== 'none' ? isSelected() : undefined,
156
- 'aria-disabled': isDisabled() || undefined,
157
- 'aria-expanded': isExpandable() ? isExpanded() : undefined,
158
- 'aria-level': node.level + 1, // 1-based for ARIA
159
- tabIndex: isFocused() ? 0 : -1,
160
- onClick,
161
- onKeyDown,
162
- onFocus,
163
- onPointerDown,
164
- onPointerUp,
165
- };
166
-
167
- // Add aria-rowindex for virtualized trees
168
- if (p.isVirtualized && node.rowIndex != null) {
169
- baseProps['aria-rowindex'] = node.rowIndex + 1; // 1-based
170
- }
171
-
172
- return baseProps as JSX.HTMLAttributes<HTMLDivElement>;
173
- });
174
-
175
- const gridCellProps = createMemo(() => {
176
- return {
177
- role: 'gridcell',
178
- } as JSX.HTMLAttributes<HTMLDivElement>;
179
- });
180
-
181
- // Expand button handler
182
- const onExpandClick = (e: MouseEvent) => {
183
- e.stopPropagation(); // Don't trigger row click
184
- const s = state();
185
- const p = props();
186
-
187
- if (isDisabled()) return;
188
-
189
- s.toggleKey(p.node.key);
190
- };
191
-
192
- const expandButtonProps = createMemo(() => {
193
- const baseProps: Record<string, unknown> = {
194
- type: 'button',
195
- 'aria-label': isExpanded() ? 'Collapse' : 'Expand',
196
- onClick: onExpandClick,
197
- tabIndex: -1, // Not in tab order, use arrow keys
198
- 'aria-hidden': !isExpandable() ? true : undefined,
199
- };
200
-
201
- return baseProps as JSX.ButtonHTMLAttributes<HTMLButtonElement>;
202
- });
203
-
204
- return {
205
- get rowProps() {
206
- return rowProps();
207
- },
208
- get gridCellProps() {
209
- return gridCellProps();
210
- },
211
- get expandButtonProps() {
212
- return expandButtonProps();
213
- },
214
- get isSelected() {
215
- return isSelected();
216
- },
217
- get isDisabled() {
218
- return isDisabled();
219
- },
220
- get isPressed() {
221
- return isPressed();
222
- },
223
- get isExpanded() {
224
- return isExpanded();
225
- },
226
- get isExpandable() {
227
- return isExpandable();
228
- },
229
- get level() {
230
- return level();
231
- },
232
- };
233
- }
1
+ /**
2
+ * createTreeItem - Provides accessibility for a tree item.
3
+ * Based on @react-aria/tree/useTreeItem.
4
+ */
5
+
6
+ import { createMemo, createSignal, type Accessor } from "solid-js";
7
+ import type { JSX } from "solid-js";
8
+ import { createId } from "@proyecto-viviana/solid-stately";
9
+ import type { TreeState, TreeCollection } from "@proyecto-viviana/solid-stately";
10
+ import type { AriaTreeItemProps, TreeItemAria } from "./types";
11
+ import { getTreeData } from "./createTree";
12
+
13
+ /**
14
+ * Creates accessibility props for a tree item.
15
+ */
16
+ export function createTreeItem<T extends object, C extends TreeCollection<T> = TreeCollection<T>>(
17
+ props: Accessor<AriaTreeItemProps<T>>,
18
+ state: Accessor<TreeState<T, C>>,
19
+ _ref: Accessor<HTMLElement | null>,
20
+ ): TreeItemAria {
21
+ const [isPressed, setIsPressed] = createSignal(false);
22
+ const rowId = createId();
23
+ const expandButtonId = createId();
24
+
25
+ const isSelected = createMemo(() => {
26
+ const s = state();
27
+ const p = props();
28
+ return s.isSelected(p.node.key);
29
+ });
30
+
31
+ const isDisabled = createMemo(() => {
32
+ const s = state();
33
+ const p = props();
34
+ return p.isDisabled === true || s.isDisabled(p.node.key);
35
+ });
36
+
37
+ const isFocused = createMemo(() => {
38
+ const s = state();
39
+ const p = props();
40
+ return s.focusedKey === p.node.key;
41
+ });
42
+
43
+ const isExpanded = createMemo(() => {
44
+ const s = state();
45
+ const p = props();
46
+ return s.isExpanded(p.node.key);
47
+ });
48
+
49
+ const isExpandable = createMemo(() => {
50
+ const p = props();
51
+ return p.node.isExpandable ?? false;
52
+ });
53
+
54
+ const level = createMemo(() => {
55
+ const p = props();
56
+ return p.node.level;
57
+ });
58
+
59
+ // Handle click/press for selection and actions
60
+ const onClick = (e: MouseEvent) => {
61
+ const s = state();
62
+ const p = props();
63
+
64
+ if (isDisabled()) return;
65
+
66
+ // Get tree metadata for actions
67
+ const treeData = getTreeData(s);
68
+ const onAction = treeData?.actions.onAction;
69
+
70
+ // Handle selection
71
+ if (s.selectionMode !== "none") {
72
+ if (e.shiftKey && s.selectionMode === "multiple") {
73
+ s.extendSelection(p.node.key);
74
+ } else if (p.selectionBehavior === "toggle" || e.ctrlKey || e.metaKey) {
75
+ s.toggleSelection(p.node.key);
76
+ } else {
77
+ // Replace selection or toggle if already selected
78
+ if (isSelected() && s.selectedKeys !== "all") {
79
+ const selectedKeys = s.selectedKeys as Set<unknown>;
80
+ if (selectedKeys.size === 1) {
81
+ // Single selection, trigger action
82
+ if (onAction) {
83
+ onAction(p.node.key);
84
+ }
85
+ if (p.onAction) {
86
+ p.onAction();
87
+ }
88
+ } else {
89
+ s.replaceSelection(p.node.key);
90
+ }
91
+ } else {
92
+ s.replaceSelection(p.node.key);
93
+ }
94
+ }
95
+ } else {
96
+ // No selection mode, just trigger action
97
+ if (onAction) {
98
+ onAction(p.node.key);
99
+ }
100
+ if (p.onAction) {
101
+ p.onAction();
102
+ }
103
+ }
104
+ };
105
+
106
+ const onKeyDown = (e: KeyboardEvent) => {
107
+ const s = state();
108
+ const p = props();
109
+
110
+ if (isDisabled()) return;
111
+
112
+ if (e.key === "Enter") {
113
+ // Get tree metadata for actions
114
+ const treeData = getTreeData(s);
115
+ const onAction = treeData?.actions.onAction;
116
+
117
+ if (onAction || p.onAction) {
118
+ e.preventDefault();
119
+
120
+ if (onAction) {
121
+ onAction(p.node.key);
122
+ }
123
+
124
+ if (p.onAction) {
125
+ p.onAction();
126
+ }
127
+ }
128
+ } else if (e.key === " " || e.key === "Space" || e.key === "Spacebar") {
129
+ // Space toggles selection
130
+ if (s.selectionMode !== "none") {
131
+ e.preventDefault();
132
+ s.toggleSelection(p.node.key);
133
+ }
134
+ }
135
+ };
136
+
137
+ const onFocus = () => {
138
+ const s = state();
139
+ const p = props();
140
+ s.setFocusedKey(p.node.key);
141
+ };
142
+
143
+ const onPointerDown = () => {
144
+ setIsPressed(true);
145
+ };
146
+
147
+ const onPointerUp = () => {
148
+ setIsPressed(false);
149
+ };
150
+
151
+ // Compute sibling position (aria-posinset/aria-setsize)
152
+ const siblingInfo = createMemo(() => {
153
+ const s = state();
154
+ const p = props();
155
+ const node = p.node;
156
+ const parentKey = node.parentKey;
157
+
158
+ if (parentKey != null) {
159
+ const parentNode = s.collection.getItem(parentKey);
160
+ if (parentNode) {
161
+ return {
162
+ posinset: node.index + 1, // 1-based
163
+ setsize: parentNode.childNodes.length,
164
+ };
165
+ }
166
+ }
167
+
168
+ // Root-level: count root nodes
169
+ const rootNodes = s.collection.rows.filter((n) => n.level === 0);
170
+ const rootIndex = rootNodes.findIndex((n) => n.key === node.key);
171
+ return {
172
+ posinset: rootIndex >= 0 ? rootIndex + 1 : node.index + 1,
173
+ setsize: rootNodes.length,
174
+ };
175
+ });
176
+
177
+ const rowProps = createMemo(() => {
178
+ const s = state();
179
+ const p = props();
180
+ const node = p.node;
181
+ const { posinset, setsize } = siblingInfo();
182
+
183
+ // Use textValue for aria-label (if available), or explicit textValue prop
184
+ const textValue = p.textValue ?? node.textValue;
185
+
186
+ const baseProps: Record<string, unknown> = {
187
+ role: "row",
188
+ id: rowId,
189
+ "aria-label": textValue || undefined,
190
+ "aria-selected": s.selectionMode !== "none" ? isSelected() : undefined,
191
+ "aria-disabled": isDisabled() || undefined,
192
+ "aria-expanded": isExpandable() ? isExpanded() : undefined,
193
+ "aria-level": node.level + 1, // 1-based for ARIA
194
+ "aria-posinset": posinset,
195
+ "aria-setsize": setsize,
196
+ tabIndex: isFocused() ? 0 : -1,
197
+ onClick,
198
+ onKeyDown,
199
+ onFocus,
200
+ onPointerDown,
201
+ onPointerUp,
202
+ };
203
+
204
+ // Add aria-rowindex for virtualized trees
205
+ if (p.isVirtualized && node.rowIndex != null) {
206
+ baseProps["aria-rowindex"] = node.rowIndex + 1; // 1-based
207
+ }
208
+
209
+ return baseProps as JSX.HTMLAttributes<HTMLDivElement>;
210
+ });
211
+
212
+ const gridCellProps = createMemo(() => {
213
+ return {
214
+ role: "gridcell",
215
+ } as JSX.HTMLAttributes<HTMLDivElement>;
216
+ });
217
+
218
+ // Expand button handler
219
+ const onExpandClick = (e: MouseEvent) => {
220
+ e.stopPropagation(); // Don't trigger row click
221
+ const s = state();
222
+ const p = props();
223
+
224
+ if (isDisabled()) return;
225
+
226
+ s.toggleKey(p.node.key);
227
+ };
228
+
229
+ const stopPointerPropagation = (e: Event) => {
230
+ // Prevent row pointer handlers from flipping pressed state and re-rendering
231
+ // before the button click handler can run.
232
+ e.stopPropagation();
233
+ };
234
+
235
+ const expandButtonProps = createMemo(() => {
236
+ const baseProps: Record<string, unknown> = {
237
+ type: "button",
238
+ id: expandButtonId,
239
+ "aria-label": isExpanded() ? "Collapse" : "Expand",
240
+ "aria-labelledby": isExpandable() ? `${expandButtonId} ${rowId}` : undefined,
241
+ onClick: onExpandClick,
242
+ onPointerDown: stopPointerPropagation,
243
+ onPointerUp: stopPointerPropagation,
244
+ onMouseDown: stopPointerPropagation,
245
+ onMouseUp: stopPointerPropagation,
246
+ tabIndex: -1, // Not in tab order, use arrow keys
247
+ "aria-hidden": !isExpandable() ? true : undefined,
248
+ };
249
+
250
+ return baseProps as JSX.ButtonHTMLAttributes<HTMLButtonElement>;
251
+ });
252
+
253
+ return {
254
+ get rowProps() {
255
+ return rowProps();
256
+ },
257
+ get gridCellProps() {
258
+ return gridCellProps();
259
+ },
260
+ get expandButtonProps() {
261
+ return expandButtonProps();
262
+ },
263
+ get isSelected() {
264
+ return isSelected();
265
+ },
266
+ get isDisabled() {
267
+ return isDisabled();
268
+ },
269
+ get isPressed() {
270
+ return isPressed();
271
+ },
272
+ get isExpanded() {
273
+ return isExpanded();
274
+ },
275
+ get isExpandable() {
276
+ return isExpandable();
277
+ },
278
+ get level() {
279
+ return level();
280
+ },
281
+ };
282
+ }
@@ -1,68 +1,71 @@
1
- /**
2
- * createTreeSelectionCheckbox - Provides accessibility for a tree item's selection checkbox.
3
- * Based on @react-aria/gridlist/useGridListSelectionCheckbox.
4
- */
5
-
6
- import { createMemo, type Accessor } from 'solid-js';
7
- import type { JSX } from 'solid-js';
8
- import type { TreeState, TreeCollection } from '@proyecto-viviana/solid-stately';
9
- import type { AriaTreeSelectionCheckboxProps, TreeSelectionCheckboxAria } from './types';
10
-
11
- /**
12
- * Creates accessibility props for a tree selection checkbox.
13
- */
14
- export function createTreeSelectionCheckbox<T extends object, C extends TreeCollection<T> = TreeCollection<T>>(
15
- props: Accessor<AriaTreeSelectionCheckboxProps>,
16
- state: Accessor<TreeState<T, C>>
17
- ): TreeSelectionCheckboxAria {
18
- const isSelected = createMemo(() => {
19
- const s = state();
20
- const p = props();
21
- return s.isSelected(p.key);
22
- });
23
-
24
- const isDisabled = createMemo(() => {
25
- const s = state();
26
- const p = props();
27
- return s.isDisabled(p.key);
28
- });
29
-
30
- const onChange = (e: Event) => {
31
- const s = state();
32
- const p = props();
33
- const target = e.target as HTMLInputElement;
34
-
35
- if (isDisabled()) return;
36
-
37
- if (target.checked) {
38
- s.toggleSelection(p.key);
39
- } else {
40
- s.toggleSelection(p.key);
41
- }
42
- };
43
-
44
- const onClick = (e: MouseEvent) => {
45
- // Stop propagation to prevent row click from also firing
46
- e.stopPropagation();
47
- };
48
-
49
- const checkboxProps = createMemo(() => {
50
- const baseProps: Record<string, unknown> = {
51
- type: 'checkbox',
52
- 'aria-label': 'Select',
53
- checked: isSelected(),
54
- disabled: isDisabled(),
55
- onChange,
56
- onClick,
57
- tabIndex: -1, // Use arrow keys to navigate, not tab
58
- };
59
-
60
- return baseProps as JSX.InputHTMLAttributes<HTMLInputElement>;
61
- });
62
-
63
- return {
64
- get checkboxProps() {
65
- return checkboxProps();
66
- },
67
- };
68
- }
1
+ /**
2
+ * createTreeSelectionCheckbox - Provides accessibility for a tree item's selection checkbox.
3
+ * Based on @react-aria/gridlist/useGridListSelectionCheckbox.
4
+ */
5
+
6
+ import { createMemo, type Accessor } from "solid-js";
7
+ import type { JSX } from "solid-js";
8
+ import type { TreeState, TreeCollection } from "@proyecto-viviana/solid-stately";
9
+ import type { AriaTreeSelectionCheckboxProps, TreeSelectionCheckboxAria } from "./types";
10
+
11
+ /**
12
+ * Creates accessibility props for a tree selection checkbox.
13
+ */
14
+ export function createTreeSelectionCheckbox<
15
+ T extends object,
16
+ C extends TreeCollection<T> = TreeCollection<T>,
17
+ >(
18
+ props: Accessor<AriaTreeSelectionCheckboxProps>,
19
+ state: Accessor<TreeState<T, C>>,
20
+ ): TreeSelectionCheckboxAria {
21
+ const isSelected = createMemo(() => {
22
+ const s = state();
23
+ const p = props();
24
+ return s.isSelected(p.key);
25
+ });
26
+
27
+ const isDisabled = createMemo(() => {
28
+ const s = state();
29
+ const p = props();
30
+ return s.isDisabled(p.key);
31
+ });
32
+
33
+ const onChange = (e: Event) => {
34
+ const s = state();
35
+ const p = props();
36
+ const target = e.target as HTMLInputElement;
37
+
38
+ if (isDisabled()) return;
39
+
40
+ if (target.checked) {
41
+ s.toggleSelection(p.key);
42
+ } else {
43
+ s.toggleSelection(p.key);
44
+ }
45
+ };
46
+
47
+ const onClick = (e: MouseEvent) => {
48
+ // Stop propagation to prevent row click from also firing
49
+ e.stopPropagation();
50
+ };
51
+
52
+ const checkboxProps = createMemo(() => {
53
+ const baseProps: Record<string, unknown> = {
54
+ type: "checkbox",
55
+ "aria-label": "Select",
56
+ checked: isSelected(),
57
+ disabled: isDisabled(),
58
+ onChange,
59
+ onClick,
60
+ tabIndex: -1, // Use arrow keys to navigate, not tab
61
+ };
62
+
63
+ return baseProps as JSX.InputHTMLAttributes<HTMLInputElement>;
64
+ });
65
+
66
+ return {
67
+ get checkboxProps() {
68
+ return checkboxProps();
69
+ },
70
+ };
71
+ }