@proyecto-viviana/solidaria 0.2.8 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (548) hide show
  1. package/README.md +31 -236
  2. package/dist/actiongroup/createActionGroup.d.ts +5 -5
  3. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  4. package/dist/actiongroup/index.d.ts +1 -1
  5. package/dist/autocomplete/createAutocomplete.d.ts +10 -10
  6. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  7. package/dist/autocomplete/index.d.ts +1 -1
  8. package/dist/autocomplete/index.d.ts.map +1 -1
  9. package/dist/breadcrumbs/createBreadcrumbs.d.ts +9 -7
  10. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  11. package/dist/breadcrumbs/index.d.ts +1 -1
  12. package/dist/button/createButton.d.ts +1 -1
  13. package/dist/button/createButton.d.ts.map +1 -1
  14. package/dist/button/createToggleButton.d.ts +3 -3
  15. package/dist/button/createToggleButtonGroup.d.ts +7 -7
  16. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  17. package/dist/button/index.d.ts +6 -6
  18. package/dist/button/index.d.ts.map +1 -1
  19. package/dist/button/types.d.ts +18 -12
  20. package/dist/button/types.d.ts.map +1 -1
  21. package/dist/calendar/createCalendar.d.ts +15 -5
  22. package/dist/calendar/createCalendar.d.ts.map +1 -1
  23. package/dist/calendar/createCalendarCell.d.ts +6 -2
  24. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  26. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  27. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  28. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendarCell.d.ts +4 -2
  30. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  31. package/dist/calendar/index.d.ts +5 -5
  32. package/dist/calendar/index.d.ts.map +1 -1
  33. package/dist/calendar/intl/index.d.ts +12 -0
  34. package/dist/calendar/intl/index.d.ts.map +1 -0
  35. package/dist/calendar/utils.d.ts +12 -0
  36. package/dist/calendar/utils.d.ts.map +1 -0
  37. package/dist/checkbox/createCheckbox.d.ts +6 -6
  38. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  39. package/dist/checkbox/createCheckboxGroup.d.ts +7 -7
  40. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  42. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  44. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  45. package/dist/checkbox/index.d.ts +8 -8
  46. package/dist/checkbox/index.d.ts.map +1 -1
  47. package/dist/collections/index.d.ts +3 -3
  48. package/dist/collections/index.d.ts.map +1 -1
  49. package/dist/color/createColorArea.d.ts +3 -3
  50. package/dist/color/createColorArea.d.ts.map +1 -1
  51. package/dist/color/createColorField.d.ts +4 -4
  52. package/dist/color/createColorField.d.ts.map +1 -1
  53. package/dist/color/createColorSlider.d.ts +4 -4
  54. package/dist/color/createColorSlider.d.ts.map +1 -1
  55. package/dist/color/createColorSwatch.d.ts +2 -2
  56. package/dist/color/createColorSwatch.d.ts.map +1 -1
  57. package/dist/color/createColorWheel.d.ts +3 -3
  58. package/dist/color/createColorWheel.d.ts.map +1 -1
  59. package/dist/color/index.d.ts +6 -6
  60. package/dist/color/types.d.ts +98 -16
  61. package/dist/color/types.d.ts.map +1 -1
  62. package/dist/combobox/createComboBox.d.ts +10 -7
  63. package/dist/combobox/createComboBox.d.ts.map +1 -1
  64. package/dist/combobox/index.d.ts +1 -1
  65. package/dist/combobox/intl/index.d.ts +1 -1
  66. package/dist/datepicker/createDateField.d.ts +18 -6
  67. package/dist/datepicker/createDateField.d.ts.map +1 -1
  68. package/dist/datepicker/createDatePicker.d.ts +51 -5
  69. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  71. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  72. package/dist/datepicker/createDateRangePicker.d.ts +8 -6
  73. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  74. package/dist/datepicker/createDateSegment.d.ts +10 -2
  75. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  76. package/dist/datepicker/createTimeField.d.ts +11 -5
  77. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeSegment.d.ts +2 -2
  79. package/dist/datepicker/createTimeSegment.d.ts.map +1 -1
  80. package/dist/datepicker/index.d.ts +7 -6
  81. package/dist/datepicker/index.d.ts.map +1 -1
  82. package/dist/dialog/createDialog.d.ts +5 -5
  83. package/dist/dialog/createDialog.d.ts.map +1 -1
  84. package/dist/dialog/index.d.ts +2 -2
  85. package/dist/dialog/index.d.ts.map +1 -1
  86. package/dist/dialog/types.d.ts +4 -4
  87. package/dist/disclosure/createDisclosure.d.ts +5 -2
  88. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  89. package/dist/disclosure/createDisclosureGroup.d.ts +4 -4
  90. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  91. package/dist/disclosure/index.d.ts +2 -2
  92. package/dist/dnd/createDrag.d.ts +2 -2
  93. package/dist/dnd/createDrag.d.ts.map +1 -1
  94. package/dist/dnd/createDraggableCollection.d.ts +2 -2
  95. package/dist/dnd/createDraggableItem.d.ts +3 -3
  96. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  97. package/dist/dnd/createDrop.d.ts +2 -2
  98. package/dist/dnd/createDrop.d.ts.map +1 -1
  99. package/dist/dnd/createDroppableCollection.d.ts +26 -6
  100. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  101. package/dist/dnd/createDroppableItem.d.ts +3 -3
  102. package/dist/dnd/index.d.ts +12 -12
  103. package/dist/dnd/index.d.ts.map +1 -1
  104. package/dist/dnd/types.d.ts +2 -2
  105. package/dist/dnd/types.d.ts.map +1 -1
  106. package/dist/dnd/utils.d.ts +1 -1
  107. package/dist/dnd/utils.d.ts.map +1 -1
  108. package/dist/focus/FocusScope.d.ts +1 -1
  109. package/dist/focus/FocusScope.d.ts.map +1 -1
  110. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  111. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  112. package/dist/focus/createVirtualFocus.d.ts +4 -4
  113. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  114. package/dist/focus/index.d.ts +4 -4
  115. package/dist/focus/index.d.ts.map +1 -1
  116. package/dist/form/createFormReset.d.ts +1 -1
  117. package/dist/form/createFormValidation.d.ts +3 -3
  118. package/dist/form/createFormValidation.d.ts.map +1 -1
  119. package/dist/form/index.d.ts +2 -2
  120. package/dist/form/index.d.ts.map +1 -1
  121. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  122. package/dist/grid/createGrid.d.ts +3 -3
  123. package/dist/grid/createGridCell.d.ts +3 -3
  124. package/dist/grid/createGridRow.d.ts +3 -3
  125. package/dist/grid/index.d.ts +5 -5
  126. package/dist/grid/types.d.ts +8 -8
  127. package/dist/gridlist/createGridList.d.ts +6 -4
  128. package/dist/gridlist/createGridList.d.ts.map +1 -1
  129. package/dist/gridlist/createGridListItem.d.ts +4 -4
  130. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  131. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  132. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  133. package/dist/gridlist/index.d.ts +4 -4
  134. package/dist/gridlist/types.d.ts +11 -7
  135. package/dist/gridlist/types.d.ts.map +1 -1
  136. package/dist/i18n/createCollator.d.ts.map +1 -1
  137. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  138. package/dist/i18n/createFilter.d.ts.map +1 -1
  139. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  140. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  141. package/dist/i18n/createStringFormatter.d.ts +2 -2
  142. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  143. package/dist/i18n/index.d.ts +8 -8
  144. package/dist/i18n/index.d.ts.map +1 -1
  145. package/dist/i18n/locale.d.ts +2 -2
  146. package/dist/i18n/locale.d.ts.map +1 -1
  147. package/dist/i18n/utils.d.ts.map +1 -1
  148. package/dist/index.d.ts +52 -51
  149. package/dist/index.d.ts.map +1 -1
  150. package/dist/index.js +18012 -16820
  151. package/dist/index.js.map +1 -1
  152. package/dist/index.jsx +18242 -0
  153. package/dist/index.jsx.map +1 -0
  154. package/dist/interactions/FocusableProvider.d.ts +2 -2
  155. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  156. package/dist/interactions/PressEvent.d.ts +2 -2
  157. package/dist/interactions/createFocus.d.ts +1 -1
  158. package/dist/interactions/createFocus.d.ts.map +1 -1
  159. package/dist/interactions/createFocusRing.d.ts +1 -1
  160. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  161. package/dist/interactions/createFocusWithin.d.ts +1 -1
  162. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  163. package/dist/interactions/createFocusable.d.ts +3 -3
  164. package/dist/interactions/createFocusable.d.ts.map +1 -1
  165. package/dist/interactions/createHover.d.ts +5 -5
  166. package/dist/interactions/createHover.d.ts.map +1 -1
  167. package/dist/interactions/createInteractionModality.d.ts +3 -3
  168. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  169. package/dist/interactions/createKeyboard.d.ts +1 -1
  170. package/dist/interactions/createLongPress.d.ts +5 -5
  171. package/dist/interactions/createMove.d.ts +5 -5
  172. package/dist/interactions/createMove.d.ts.map +1 -1
  173. package/dist/interactions/createPress.d.ts +4 -4
  174. package/dist/interactions/createPress.d.ts.map +1 -1
  175. package/dist/interactions/index.d.ts +12 -12
  176. package/dist/interactions/index.d.ts.map +1 -1
  177. package/dist/label/createField.d.ts +4 -4
  178. package/dist/label/createField.d.ts.map +1 -1
  179. package/dist/label/createLabel.d.ts +7 -7
  180. package/dist/label/createLabel.d.ts.map +1 -1
  181. package/dist/label/createLabels.d.ts +1 -1
  182. package/dist/label/createLabels.d.ts.map +1 -1
  183. package/dist/label/index.d.ts +5 -5
  184. package/dist/landmark/createLandmark.d.ts +5 -5
  185. package/dist/landmark/createLandmark.d.ts.map +1 -1
  186. package/dist/landmark/index.d.ts +1 -1
  187. package/dist/link/createLink.d.ts +14 -8
  188. package/dist/link/createLink.d.ts.map +1 -1
  189. package/dist/link/index.d.ts +1 -1
  190. package/dist/listbox/createListBox.d.ts +11 -6
  191. package/dist/listbox/createListBox.d.ts.map +1 -1
  192. package/dist/listbox/createOption.d.ts +21 -4
  193. package/dist/listbox/createOption.d.ts.map +1 -1
  194. package/dist/listbox/index.d.ts +2 -2
  195. package/dist/listbox/index.d.ts.map +1 -1
  196. package/dist/live-announcer/announce.d.ts +2 -2
  197. package/dist/live-announcer/announce.d.ts.map +1 -1
  198. package/dist/live-announcer/index.d.ts +1 -1
  199. package/dist/menu/createMenu.d.ts +7 -7
  200. package/dist/menu/createMenu.d.ts.map +1 -1
  201. package/dist/menu/createMenuItem.d.ts +16 -4
  202. package/dist/menu/createMenuItem.d.ts.map +1 -1
  203. package/dist/menu/createMenuTrigger.d.ts +4 -4
  204. package/dist/menu/index.d.ts +3 -3
  205. package/dist/menu/index.d.ts.map +1 -1
  206. package/dist/meter/createMeter.d.ts +6 -6
  207. package/dist/meter/createMeter.d.ts.map +1 -1
  208. package/dist/meter/index.d.ts +1 -1
  209. package/dist/numberfield/createNumberField.d.ts +9 -8
  210. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  211. package/dist/numberfield/index.d.ts +1 -1
  212. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  213. package/dist/overlays/createModal.d.ts +3 -3
  214. package/dist/overlays/createModal.d.ts.map +1 -1
  215. package/dist/overlays/createOverlay.d.ts +1 -1
  216. package/dist/overlays/createOverlay.d.ts.map +1 -1
  217. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  218. package/dist/overlays/index.d.ts +6 -6
  219. package/dist/overlays/index.d.ts.map +1 -1
  220. package/dist/popover/calculatePosition.d.ts +4 -4
  221. package/dist/popover/calculatePosition.d.ts.map +1 -1
  222. package/dist/popover/createOverlayPosition.d.ts +3 -3
  223. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  224. package/dist/popover/createPopover.d.ts +4 -4
  225. package/dist/popover/createPopover.d.ts.map +1 -1
  226. package/dist/popover/index.d.ts +3 -3
  227. package/dist/progress/createProgressBar.d.ts +7 -5
  228. package/dist/progress/createProgressBar.d.ts.map +1 -1
  229. package/dist/progress/index.d.ts +1 -1
  230. package/dist/radio/createRadio.d.ts +7 -7
  231. package/dist/radio/createRadio.d.ts.map +1 -1
  232. package/dist/radio/createRadioGroup.d.ts +10 -10
  233. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  234. package/dist/radio/createRadioGroupState.d.ts +3 -3
  235. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  236. package/dist/radio/index.d.ts +3 -3
  237. package/dist/radio/index.d.ts.map +1 -1
  238. package/dist/searchfield/createSearchField.d.ts +7 -7
  239. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  240. package/dist/searchfield/index.d.ts +2 -2
  241. package/dist/select/createHiddenSelect.d.ts +4 -4
  242. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  243. package/dist/select/createSelect.d.ts +14 -6
  244. package/dist/select/createSelect.d.ts.map +1 -1
  245. package/dist/select/index.d.ts +2 -2
  246. package/dist/select/index.d.ts.map +1 -1
  247. package/dist/selection/createTypeSelect.d.ts +2 -2
  248. package/dist/selection/index.d.ts +1 -1
  249. package/dist/separator/createSeparator.d.ts +9 -5
  250. package/dist/separator/createSeparator.d.ts.map +1 -1
  251. package/dist/separator/index.d.ts +1 -1
  252. package/dist/slider/createSlider.d.ts +11 -7
  253. package/dist/slider/createSlider.d.ts.map +1 -1
  254. package/dist/slider/index.d.ts +2 -2
  255. package/dist/ssr/index.d.ts +1 -1
  256. package/dist/ssr/index.d.ts.map +1 -1
  257. package/dist/steplist/createStepList.d.ts +36 -0
  258. package/dist/steplist/createStepList.d.ts.map +1 -0
  259. package/dist/steplist/index.d.ts +2 -0
  260. package/dist/steplist/index.d.ts.map +1 -0
  261. package/dist/switch/createSwitch.d.ts +6 -4
  262. package/dist/switch/createSwitch.d.ts.map +1 -1
  263. package/dist/switch/index.d.ts +1 -1
  264. package/dist/table/createTable.d.ts +3 -3
  265. package/dist/table/createTable.d.ts.map +1 -1
  266. package/dist/table/createTableCell.d.ts +3 -3
  267. package/dist/table/createTableCell.d.ts.map +1 -1
  268. package/dist/table/createTableColumnHeader.d.ts +3 -3
  269. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  270. package/dist/table/createTableColumnResize.d.ts +41 -0
  271. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  272. package/dist/table/createTableHeaderRow.d.ts +3 -3
  273. package/dist/table/createTableRow.d.ts +3 -3
  274. package/dist/table/createTableRow.d.ts.map +1 -1
  275. package/dist/table/createTableRowGroup.d.ts +2 -2
  276. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  277. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  278. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  279. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  280. package/dist/table/index.d.ts +11 -9
  281. package/dist/table/index.d.ts.map +1 -1
  282. package/dist/table/types.d.ts +15 -7
  283. package/dist/table/types.d.ts.map +1 -1
  284. package/dist/tabs/createTabs.d.ts +28 -25
  285. package/dist/tabs/createTabs.d.ts.map +1 -1
  286. package/dist/tabs/index.d.ts +1 -1
  287. package/dist/tag/createTag.d.ts +2 -2
  288. package/dist/tag/createTag.d.ts.map +1 -1
  289. package/dist/tag/createTagGroup.d.ts +5 -5
  290. package/dist/tag/createTagGroup.d.ts.map +1 -1
  291. package/dist/tag/index.d.ts +2 -2
  292. package/dist/tag/index.d.ts.map +1 -1
  293. package/dist/textfield/createTextField.d.ts +17 -11
  294. package/dist/textfield/createTextField.d.ts.map +1 -1
  295. package/dist/textfield/index.d.ts +1 -1
  296. package/dist/textfield/index.d.ts.map +1 -1
  297. package/dist/toast/createToast.d.ts +2 -2
  298. package/dist/toast/createToast.d.ts.map +1 -1
  299. package/dist/toast/createToastRegion.d.ts +5 -3
  300. package/dist/toast/createToastRegion.d.ts.map +1 -1
  301. package/dist/toast/index.d.ts +2 -2
  302. package/dist/toast/index.d.ts.map +1 -1
  303. package/dist/toggle/createToggle.d.ts +9 -9
  304. package/dist/toggle/createToggle.d.ts.map +1 -1
  305. package/dist/toggle/createToggleState.d.ts +2 -2
  306. package/dist/toggle/createToggleState.d.ts.map +1 -1
  307. package/dist/toggle/index.d.ts +4 -4
  308. package/dist/toggle/index.d.ts.map +1 -1
  309. package/dist/toolbar/createToolbar.d.ts +9 -9
  310. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  311. package/dist/toolbar/index.d.ts +1 -1
  312. package/dist/toolbar/index.d.ts.map +1 -1
  313. package/dist/tooltip/createTooltip.d.ts +5 -5
  314. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  315. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  316. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  317. package/dist/tooltip/index.d.ts +2 -2
  318. package/dist/tree/createTree.d.ts +3 -3
  319. package/dist/tree/createTree.d.ts.map +1 -1
  320. package/dist/tree/createTreeItem.d.ts +4 -4
  321. package/dist/tree/createTreeItem.d.ts.map +1 -1
  322. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  323. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  324. package/dist/tree/index.d.ts +4 -4
  325. package/dist/tree/types.d.ts +10 -6
  326. package/dist/tree/types.d.ts.map +1 -1
  327. package/dist/utils/createDescription.d.ts +2 -2
  328. package/dist/utils/createDescription.d.ts.map +1 -1
  329. package/dist/utils/dom.d.ts.map +1 -1
  330. package/dist/utils/env.d.ts.map +1 -1
  331. package/dist/utils/focus.d.ts +1 -1
  332. package/dist/utils/focus.d.ts.map +1 -1
  333. package/dist/utils/geometry.d.ts.map +1 -1
  334. package/dist/utils/index.d.ts +12 -12
  335. package/dist/utils/index.d.ts.map +1 -1
  336. package/dist/utils/mergeProps.d.ts.map +1 -1
  337. package/dist/utils/reactivity.d.ts +1 -1
  338. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  339. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  340. package/dist/visually-hidden/index.d.ts +1 -1
  341. package/package.json +32 -32
  342. package/src/actiongroup/createActionGroup.ts +101 -91
  343. package/src/actiongroup/index.ts +1 -1
  344. package/src/autocomplete/createAutocomplete.ts +117 -134
  345. package/src/autocomplete/index.ts +1 -1
  346. package/src/breadcrumbs/createBreadcrumbs.ts +33 -42
  347. package/src/breadcrumbs/index.ts +1 -1
  348. package/src/button/createButton.ts +102 -73
  349. package/src/button/createToggleButton.ts +10 -10
  350. package/src/button/createToggleButtonGroup.ts +25 -32
  351. package/src/button/index.ts +6 -9
  352. package/src/button/types.ts +18 -12
  353. package/src/calendar/createCalendar.ts +62 -29
  354. package/src/calendar/createCalendarCell.ts +98 -46
  355. package/src/calendar/createCalendarGrid.ts +57 -35
  356. package/src/calendar/createRangeCalendar.ts +66 -31
  357. package/src/calendar/createRangeCalendarCell.ts +92 -31
  358. package/src/calendar/index.ts +5 -9
  359. package/src/calendar/intl/index.ts +210 -0
  360. package/src/calendar/utils.ts +227 -0
  361. package/src/checkbox/createCheckbox.ts +13 -21
  362. package/src/checkbox/createCheckboxGroup.ts +68 -44
  363. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  364. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  365. package/src/checkbox/index.ts +8 -10
  366. package/src/collections/index.ts +33 -29
  367. package/src/color/createColorArea.ts +232 -154
  368. package/src/color/createColorField.ts +107 -58
  369. package/src/color/createColorSlider.ts +231 -73
  370. package/src/color/createColorSwatch.ts +38 -13
  371. package/src/color/createColorWheel.ts +208 -83
  372. package/src/color/index.ts +6 -6
  373. package/src/color/types.ts +98 -16
  374. package/src/combobox/createComboBox.ts +157 -100
  375. package/src/combobox/index.ts +1 -1
  376. package/src/combobox/intl/index.ts +5 -5
  377. package/src/datepicker/createDateField.ts +192 -39
  378. package/src/datepicker/createDatePicker.ts +260 -67
  379. package/src/datepicker/createDatePickerGroup.ts +149 -0
  380. package/src/datepicker/createDateRangePicker.ts +105 -57
  381. package/src/datepicker/createDateSegment.ts +183 -96
  382. package/src/datepicker/createTimeField.ts +38 -34
  383. package/src/datepicker/createTimeSegment.ts +67 -85
  384. package/src/datepicker/index.ts +13 -14
  385. package/src/dialog/createDialog.ts +45 -38
  386. package/src/dialog/index.ts +2 -2
  387. package/src/dialog/types.ts +4 -4
  388. package/src/disclosure/createDisclosure.ts +138 -33
  389. package/src/disclosure/createDisclosureGroup.ts +8 -21
  390. package/src/disclosure/index.ts +2 -2
  391. package/src/dnd/createDrag.ts +19 -25
  392. package/src/dnd/createDraggableCollection.ts +4 -4
  393. package/src/dnd/createDraggableItem.ts +20 -19
  394. package/src/dnd/createDrop.ts +42 -51
  395. package/src/dnd/createDroppableCollection.ts +290 -173
  396. package/src/dnd/createDroppableItem.ts +34 -34
  397. package/src/dnd/index.ts +23 -12
  398. package/src/dnd/types.ts +4 -7
  399. package/src/dnd/utils.ts +36 -49
  400. package/src/focus/FocusScope.tsx +155 -164
  401. package/src/focus/createAutoFocus.ts +4 -20
  402. package/src/focus/createFocusRestore.ts +15 -28
  403. package/src/focus/createVirtualFocus.ts +20 -36
  404. package/src/focus/index.ts +4 -8
  405. package/src/form/createFormReset.ts +4 -4
  406. package/src/form/createFormValidation.ts +20 -43
  407. package/src/form/index.ts +2 -5
  408. package/src/grid/GridKeyboardDelegate.ts +30 -30
  409. package/src/grid/createGrid.ts +36 -36
  410. package/src/grid/createGridCell.ts +18 -18
  411. package/src/grid/createGridRow.ts +14 -14
  412. package/src/grid/index.ts +5 -5
  413. package/src/grid/types.ts +8 -8
  414. package/src/gridlist/createGridList.ts +34 -29
  415. package/src/gridlist/createGridListItem.ts +68 -23
  416. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  417. package/src/gridlist/index.ts +4 -4
  418. package/src/gridlist/types.ts +11 -7
  419. package/src/i18n/createCollator.ts +5 -18
  420. package/src/i18n/createDateFormatter.ts +5 -13
  421. package/src/i18n/createFilter.ts +11 -24
  422. package/src/i18n/createNumberFormatter.ts +4 -6
  423. package/src/i18n/createStringFormatter.ts +19 -15
  424. package/src/i18n/index.ts +8 -11
  425. package/src/i18n/locale.tsx +15 -40
  426. package/src/i18n/utils.ts +35 -39
  427. package/src/index.ts +68 -169
  428. package/src/interactions/FocusableProvider.tsx +3 -7
  429. package/src/interactions/PressEvent.ts +4 -4
  430. package/src/interactions/createFocus.ts +12 -8
  431. package/src/interactions/createFocusRing.ts +21 -19
  432. package/src/interactions/createFocusWithin.ts +20 -13
  433. package/src/interactions/createFocusable.ts +15 -16
  434. package/src/interactions/createHover.ts +70 -55
  435. package/src/interactions/createInteractionModality.ts +75 -82
  436. package/src/interactions/createKeyboard.ts +2 -2
  437. package/src/interactions/createLongPress.ts +23 -23
  438. package/src/interactions/createMove.ts +72 -62
  439. package/src/interactions/createPress.ts +164 -87
  440. package/src/interactions/index.ts +24 -16
  441. package/src/label/createField.ts +18 -19
  442. package/src/label/createLabel.ts +18 -30
  443. package/src/label/createLabels.ts +8 -12
  444. package/src/label/index.ts +5 -5
  445. package/src/landmark/createLandmark.ts +30 -51
  446. package/src/landmark/index.ts +1 -1
  447. package/src/link/createLink.ts +83 -56
  448. package/src/link/index.ts +1 -1
  449. package/src/listbox/createListBox.ts +69 -58
  450. package/src/listbox/createOption.ts +83 -37
  451. package/src/listbox/index.ts +2 -6
  452. package/src/live-announcer/announce.ts +44 -71
  453. package/src/live-announcer/index.ts +1 -1
  454. package/src/menu/createMenu.ts +79 -50
  455. package/src/menu/createMenuItem.ts +79 -27
  456. package/src/menu/createMenuTrigger.ts +15 -15
  457. package/src/menu/index.ts +3 -12
  458. package/src/meter/createMeter.ts +7 -15
  459. package/src/meter/index.ts +1 -1
  460. package/src/numberfield/createNumberField.ts +138 -81
  461. package/src/numberfield/index.ts +1 -1
  462. package/src/overlays/ariaHideOutside.ts +14 -10
  463. package/src/overlays/createInteractOutside.ts +21 -18
  464. package/src/overlays/createModal.tsx +17 -17
  465. package/src/overlays/createOverlay.ts +38 -8
  466. package/src/overlays/createOverlayTrigger.ts +16 -16
  467. package/src/overlays/createPreventScroll.ts +46 -24
  468. package/src/overlays/index.ts +6 -17
  469. package/src/popover/calculatePosition.ts +115 -117
  470. package/src/popover/createOverlayPosition.ts +46 -40
  471. package/src/popover/createPopover.ts +42 -17
  472. package/src/popover/index.ts +3 -3
  473. package/src/progress/createProgressBar.ts +31 -32
  474. package/src/progress/index.ts +1 -1
  475. package/src/radio/createRadio.ts +95 -73
  476. package/src/radio/createRadioGroup.ts +83 -77
  477. package/src/radio/createRadioGroupState.ts +7 -31
  478. package/src/radio/index.ts +3 -8
  479. package/src/searchfield/createSearchField.ts +57 -29
  480. package/src/searchfield/index.ts +2 -2
  481. package/src/select/createHiddenSelect.tsx +57 -44
  482. package/src/select/createSelect.ts +128 -71
  483. package/src/select/index.ts +2 -7
  484. package/src/selection/createTypeSelect.ts +11 -11
  485. package/src/selection/index.ts +1 -1
  486. package/src/separator/createSeparator.ts +20 -25
  487. package/src/separator/index.ts +1 -1
  488. package/src/slider/createSlider.ts +93 -124
  489. package/src/slider/index.ts +2 -2
  490. package/src/ssr/index.tsx +8 -47
  491. package/src/steplist/createStepList.ts +106 -0
  492. package/src/steplist/index.ts +8 -0
  493. package/src/switch/createSwitch.ts +9 -14
  494. package/src/switch/index.ts +1 -1
  495. package/src/table/createTable.ts +152 -85
  496. package/src/table/createTableCell.ts +17 -16
  497. package/src/table/createTableColumnHeader.ts +67 -20
  498. package/src/table/createTableColumnResize.ts +256 -0
  499. package/src/table/createTableHeaderRow.ts +7 -7
  500. package/src/table/createTableRow.ts +149 -29
  501. package/src/table/createTableRowGroup.ts +5 -7
  502. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  503. package/src/table/createTableSelectionCheckbox.ts +8 -8
  504. package/src/table/index.ts +14 -9
  505. package/src/table/types.ts +15 -7
  506. package/src/tabs/createTabs.ts +74 -92
  507. package/src/tabs/index.ts +1 -1
  508. package/src/tag/createTag.ts +52 -50
  509. package/src/tag/createTagGroup.ts +47 -41
  510. package/src/tag/index.ts +2 -6
  511. package/src/textfield/createTextField.ts +67 -35
  512. package/src/textfield/index.ts +1 -5
  513. package/src/toast/createToast.ts +28 -26
  514. package/src/toast/createToastRegion.ts +169 -26
  515. package/src/toast/index.ts +2 -6
  516. package/src/toggle/createToggle.ts +95 -53
  517. package/src/toggle/createToggleState.ts +2 -10
  518. package/src/toggle/index.ts +4 -5
  519. package/src/toolbar/createToolbar.ts +193 -210
  520. package/src/toolbar/index.ts +1 -1
  521. package/src/tooltip/createTooltip.ts +11 -24
  522. package/src/tooltip/createTooltipTrigger.ts +61 -49
  523. package/src/tooltip/index.ts +2 -2
  524. package/src/tree/createTree.ts +35 -37
  525. package/src/tree/createTreeItem.ts +29 -29
  526. package/src/tree/createTreeSelectionCheckbox.ts +11 -8
  527. package/src/tree/index.ts +4 -4
  528. package/src/tree/types.ts +10 -6
  529. package/src/utils/createDescription.ts +6 -23
  530. package/src/utils/dom.ts +61 -54
  531. package/src/utils/env.ts +9 -11
  532. package/src/utils/events.ts +7 -7
  533. package/src/utils/filterDOMProps.ts +49 -49
  534. package/src/utils/focus.ts +60 -68
  535. package/src/utils/geometry.ts +1 -4
  536. package/src/utils/globalListeners.ts +9 -9
  537. package/src/utils/index.ts +12 -22
  538. package/src/utils/mergeProps.ts +42 -15
  539. package/src/utils/platform.ts +2 -2
  540. package/src/utils/reactivity.ts +3 -3
  541. package/src/utils/textSelection.ts +16 -16
  542. package/src/visually-hidden/createVisuallyHidden.ts +16 -28
  543. package/src/visually-hidden/index.ts +1 -1
  544. package/dist/i18n/NumberFormatter.d.ts +0 -43
  545. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  546. package/dist/index.ssr.js +0 -17082
  547. package/dist/index.ssr.js.map +0 -1
  548. package/src/i18n/NumberFormatter.ts +0 -266
@@ -4,10 +4,12 @@
4
4
  * Provides ARIA attributes and keyboard handling for a color slider.
5
5
  */
6
6
 
7
- import { createMemo, type Accessor } from 'solid-js';
8
- import type { ColorSliderState } from '@proyecto-viviana/solid-stately';
9
- import { createId } from '../ssr';
10
- import type { AriaColorSliderOptions, ColorSliderAria } from './types';
7
+ import { createMemo, onCleanup, type Accessor } from "solid-js";
8
+ import type { ColorSliderState } from "@proyecto-viviana/solid-stately";
9
+ import { useLocale } from "../i18n";
10
+ import { createId } from "../ssr";
11
+ import { focusWithoutScrolling } from "../utils/focus";
12
+ import type { AriaColorSliderOptions, ColorSliderAria } from "./types";
11
13
 
12
14
  /**
13
15
  * Creates ARIA props for a color slider.
@@ -15,31 +17,68 @@ import type { AriaColorSliderOptions, ColorSliderAria } from './types';
15
17
  export function createColorSlider(
16
18
  props: Accessor<AriaColorSliderOptions>,
17
19
  state: Accessor<ColorSliderState>,
18
- trackRef: Accessor<HTMLDivElement | null>
20
+ trackRef: Accessor<HTMLDivElement | null>,
21
+ inputRef?: Accessor<HTMLInputElement | null>,
19
22
  ): ColorSliderAria {
20
23
  const getProps = () => props();
21
24
  const getState = () => state();
25
+ const locale = useLocale();
26
+ const isRTL = () => locale().direction === "rtl";
22
27
 
23
28
  // Generate IDs
29
+ const trackId = createId();
24
30
  const inputId = createId();
25
31
  const labelId = createId();
32
+ let cleanupPointerDrag: (() => void) | undefined;
33
+ let cleanupMouseDrag: (() => void) | undefined;
34
+
35
+ const getInput = () =>
36
+ inputRef?.() ?? trackRef()?.querySelector<HTMLInputElement>('input[type="range"]') ?? null;
37
+ const focusInput = () => {
38
+ focusWithoutScrolling(getInput());
39
+ queueMicrotask(() => focusWithoutScrolling(getInput()));
40
+ };
26
41
 
27
42
  // Get channel name for ARIA label
28
43
  const channelName = createMemo(() => {
29
44
  const p = getProps();
30
45
  if (p.channelName) return p.channelName;
31
46
  const s = getState();
32
- return s.value.getChannelName(s.channel, 'en-US');
47
+ return s.value.getChannelName(s.channel, "en-US");
33
48
  });
34
49
 
35
- const updateFromClientX = (clientX: number) => {
50
+ const orientation = () => getProps().orientation ?? "horizontal";
51
+ const hasVisibleLabel = () => getProps().label != null;
52
+ const trackElementId = () => getProps().id ?? trackId;
53
+ const trackLabelledBy = () => {
54
+ const p = getProps();
55
+ return p["aria-labelledby"] ?? (hasVisibleLabel() ? labelId : undefined);
56
+ };
57
+ const inputLabelledBy = () => (hasVisibleLabel() ? labelId : trackElementId());
58
+ const trackAriaLabel = () => {
59
+ const p = getProps();
60
+ if (p["aria-label"]) return p["aria-label"];
61
+ if (p["aria-labelledby"] || hasVisibleLabel()) return undefined;
62
+ return channelName();
63
+ };
64
+
65
+ const updateFromPointer = (clientX: number, clientY: number) => {
36
66
  if (getProps().isDisabled || getState().isDisabled) return;
37
67
 
38
68
  const track = trackRef();
39
69
  if (!track) return;
40
70
 
41
71
  const rect = track.getBoundingClientRect();
42
- const percent = (clientX - rect.left) / rect.width;
72
+ if (rect.width === 0 || rect.height === 0) return;
73
+
74
+ let percent: number;
75
+ if (orientation() === "vertical") {
76
+ percent = 1 - (clientY - rect.top) / rect.height;
77
+ } else {
78
+ const physicalPercent = (clientX - rect.left) / rect.width;
79
+ percent = isRTL() ? 1 - physicalPercent : physicalPercent;
80
+ }
81
+
43
82
  getState().setThumbPercent(Math.max(0, Math.min(1, percent)));
44
83
  };
45
84
 
@@ -47,74 +86,160 @@ export function createColorSlider(
47
86
  const s = getState();
48
87
  if (!s.isDragging) return;
49
88
  s.setDragging(false);
89
+ focusInput();
50
90
  if (pointerId == null) return;
51
- (target as HTMLElement | null)?.releasePointerCapture?.(pointerId);
91
+ try {
92
+ (target as HTMLElement | null)?.releasePointerCapture?.(pointerId);
93
+ } catch {
94
+ // Some synthetic pointer sequences do not have active capture by the time
95
+ // drag end runs. React Aria treats capture as best-effort as well.
96
+ }
97
+ };
98
+
99
+ const installPointerDragListeners = () => {
100
+ if (typeof window === "undefined") return;
101
+ cleanupPointerDrag?.();
102
+
103
+ const onPointerMove = (e: PointerEvent) => {
104
+ if (!getState().isDragging) return;
105
+ updateFromPointer(e.clientX, e.clientY);
106
+ };
107
+ const onPointerEnd = (e: PointerEvent) => {
108
+ cleanupPointerDrag?.();
109
+ cleanupPointerDrag = undefined;
110
+ endDrag(trackRef(), e.pointerId);
111
+ };
112
+
113
+ window.addEventListener("pointermove", onPointerMove);
114
+ window.addEventListener("pointerup", onPointerEnd);
115
+ window.addEventListener("pointercancel", onPointerEnd);
116
+
117
+ cleanupPointerDrag = () => {
118
+ window.removeEventListener("pointermove", onPointerMove);
119
+ window.removeEventListener("pointerup", onPointerEnd);
120
+ window.removeEventListener("pointercancel", onPointerEnd);
121
+ };
122
+ };
123
+
124
+ const installMouseDragListeners = () => {
125
+ if (typeof window === "undefined") return;
126
+ cleanupMouseDrag?.();
127
+
128
+ const onMouseMove = (e: MouseEvent) => {
129
+ if (!getState().isDragging) return;
130
+ updateFromPointer(e.clientX, e.clientY);
131
+ };
132
+ const onMouseEnd = () => {
133
+ cleanupMouseDrag?.();
134
+ cleanupMouseDrag = undefined;
135
+ endDrag(trackRef());
136
+ };
137
+
138
+ window.addEventListener("mousemove", onMouseMove);
139
+ window.addEventListener("mouseup", onMouseEnd);
140
+
141
+ cleanupMouseDrag = () => {
142
+ window.removeEventListener("mousemove", onMouseMove);
143
+ window.removeEventListener("mouseup", onMouseEnd);
144
+ };
52
145
  };
53
146
 
147
+ onCleanup(() => {
148
+ cleanupPointerDrag?.();
149
+ cleanupMouseDrag?.();
150
+ });
151
+
54
152
  // Handle pointer interaction on the track
55
153
  const onTrackPointerDown = (e: PointerEvent) => {
56
154
  if (getProps().isDisabled || getState().isDisabled) return;
57
- updateFromClientX(e.clientX);
155
+ updateFromPointer(e.clientX, e.clientY);
156
+ focusInput();
58
157
  getState().setDragging(true);
59
- (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);
158
+ try {
159
+ (e.currentTarget as HTMLElement).setPointerCapture?.(e.pointerId);
160
+ } catch {
161
+ // Keep drag behavior working in environments where pointer capture is not
162
+ // active for this event, including Playwright's synthetic mouse pointer.
163
+ }
164
+ installPointerDragListeners();
60
165
  e.preventDefault();
61
166
  };
62
167
 
63
168
  const onTrackPointerMove = (e: PointerEvent) => {
64
169
  if (!getState().isDragging) return;
65
- updateFromClientX(e.clientX);
170
+ updateFromPointer(e.clientX, e.clientY);
66
171
  };
67
172
 
68
173
  const onTrackPointerUp = (e: PointerEvent) => {
174
+ cleanupPointerDrag?.();
175
+ cleanupPointerDrag = undefined;
69
176
  endDrag(e.currentTarget, e.pointerId);
70
177
  };
71
178
 
72
179
  const onTrackPointerCancel = (e: PointerEvent) => {
180
+ cleanupPointerDrag?.();
181
+ cleanupPointerDrag = undefined;
73
182
  endDrag(e.currentTarget, e.pointerId);
74
183
  };
75
184
 
76
185
  const onTrackMouseDown = (e: MouseEvent) => {
77
186
  if (getProps().isDisabled || getState().isDisabled) return;
78
- updateFromClientX(e.clientX);
187
+ updateFromPointer(e.clientX, e.clientY);
79
188
  getState().setDragging(true);
189
+ installMouseDragListeners();
80
190
  e.preventDefault();
81
191
  };
82
192
 
83
193
  const onTrackMouseMove = (e: MouseEvent) => {
84
194
  if (!getState().isDragging) return;
85
- updateFromClientX(e.clientX);
195
+ updateFromPointer(e.clientX, e.clientY);
86
196
  };
87
197
 
88
198
  const onTrackMouseUp = (e: MouseEvent) => {
199
+ cleanupMouseDrag?.();
200
+ cleanupMouseDrag = undefined;
89
201
  endDrag(e.currentTarget);
90
202
  };
91
203
 
92
204
  // Handle keyboard
93
205
  const onKeyDown = (e: KeyboardEvent) => {
206
+ if (e.defaultPrevented) return;
94
207
  if (getProps().isDisabled || getState().isDisabled) return;
95
208
 
96
209
  const s = getState();
97
210
  let handled = true;
98
211
 
99
212
  switch (e.key) {
100
- case 'ArrowRight':
101
- case 'ArrowUp':
213
+ case "ArrowUp":
102
214
  s.incrementThumb();
103
215
  break;
104
- case 'ArrowLeft':
105
- case 'ArrowDown':
216
+ case "ArrowDown":
106
217
  s.decrementThumb();
107
218
  break;
108
- case 'PageUp':
219
+ case "ArrowRight":
220
+ if (orientation() === "horizontal" && isRTL()) {
221
+ s.decrementThumb();
222
+ } else {
223
+ s.incrementThumb();
224
+ }
225
+ break;
226
+ case "ArrowLeft":
227
+ if (orientation() === "horizontal" && isRTL()) {
228
+ s.incrementThumb();
229
+ } else {
230
+ s.decrementThumb();
231
+ }
232
+ break;
233
+ case "PageUp":
109
234
  s.incrementThumb(s.pageSize);
110
235
  break;
111
- case 'PageDown':
236
+ case "PageDown":
112
237
  s.decrementThumb(s.pageSize);
113
238
  break;
114
- case 'Home':
239
+ case "Home":
115
240
  s.setThumbValue(s.minValue);
116
241
  break;
117
- case 'End':
242
+ case "End":
118
243
  s.setThumbValue(s.maxValue);
119
244
  break;
120
245
  default:
@@ -130,33 +255,33 @@ export function createColorSlider(
130
255
  // Generate gradient background for the slider track
131
256
  const generateBackground = () => {
132
257
  const s = getState();
133
- const value = s.value;
258
+ const value = s.getDisplayColor();
134
259
  const channel = s.channel;
135
- const to = 'right';
260
+ const to = orientation() === "vertical" ? "top" : isRTL() ? "left" : "right";
136
261
 
137
262
  switch (channel) {
138
- case 'hue': {
263
+ case "hue": {
139
264
  const stops = [0, 60, 120, 180, 240, 300, 360]
140
- .map(hue => value.withChannelValue('hue', hue).toString('css'))
141
- .join(', ');
265
+ .map((hue) => value.withChannelValue("hue", hue).toString("css"))
266
+ .join(", ");
142
267
  return `linear-gradient(to ${to}, ${stops})`;
143
268
  }
144
- case 'lightness': {
269
+ case "lightness": {
145
270
  const min = s.minValue;
146
271
  const max = s.maxValue;
147
- const start = value.withChannelValue(channel, min).toString('css');
148
- const middle = value.withChannelValue(channel, (max - min) / 2).toString('css');
149
- const end = value.withChannelValue(channel, max).toString('css');
272
+ const start = value.withChannelValue(channel, min).toString("css");
273
+ const middle = value.withChannelValue(channel, (max - min) / 2).toString("css");
274
+ const end = value.withChannelValue(channel, max).toString("css");
150
275
  return `linear-gradient(to ${to}, ${start}, ${middle}, ${end})`;
151
276
  }
152
- case 'saturation':
153
- case 'brightness':
154
- case 'red':
155
- case 'green':
156
- case 'blue':
157
- case 'alpha': {
158
- const start = value.withChannelValue(channel, s.minValue).toString('css');
159
- const end = value.withChannelValue(channel, s.maxValue).toString('css');
277
+ case "saturation":
278
+ case "brightness":
279
+ case "red":
280
+ case "green":
281
+ case "blue":
282
+ case "alpha": {
283
+ const start = value.withChannelValue(channel, s.minValue).toString("css");
284
+ const end = value.withChannelValue(channel, s.maxValue).toString("css");
160
285
  return `linear-gradient(to ${to}, ${start}, ${end})`;
161
286
  }
162
287
  default:
@@ -167,9 +292,13 @@ export function createColorSlider(
167
292
  // Track props
168
293
  const trackProps = createMemo(() => {
169
294
  const s = getState();
295
+ const p = getProps();
170
296
  const bg = generateBackground();
171
297
  return {
172
- role: 'presentation' as const,
298
+ id: trackElementId(),
299
+ role: "group" as const,
300
+ "aria-label": trackAriaLabel(),
301
+ "aria-labelledby": trackLabelledBy(),
173
302
  onPointerDown: onTrackPointerDown,
174
303
  onPointerMove: onTrackPointerMove,
175
304
  onPointerUp: onTrackPointerUp,
@@ -178,11 +307,12 @@ export function createColorSlider(
178
307
  onMouseMove: onTrackMouseMove,
179
308
  onMouseUp: onTrackMouseUp,
180
309
  style: {
181
- position: 'relative' as const,
182
- 'touch-action': 'none',
183
- ...(bg ? { background: bg, 'forced-color-adjust': 'none' as const } : {}),
310
+ position: "relative" as const,
311
+ "touch-action": "none",
312
+ "forced-color-adjust": "none" as const,
313
+ ...(bg ? { background: bg } : {}),
184
314
  },
185
- 'data-disabled': s.isDisabled || undefined,
315
+ "data-disabled": s.isDisabled || undefined,
186
316
  };
187
317
  });
188
318
 
@@ -191,39 +321,66 @@ export function createColorSlider(
191
321
  const s = getState();
192
322
  const p = getProps();
193
323
  const percent = s.getThumbPercent();
324
+ const x = orientation() === "horizontal" ? (isRTL() ? 1 - percent : percent) : 0.5;
325
+ const y = orientation() === "horizontal" ? 0.5 : 1 - percent;
194
326
 
195
327
  return {
196
- role: 'presentation' as const,
328
+ role: "presentation" as const,
329
+ onKeyDown,
197
330
  style: {
198
- position: 'absolute' as const,
199
- left: `${percent * 100}%`,
200
- top: '50%',
201
- transform: 'translate(-50%, -50%)',
202
- 'touch-action': 'none',
331
+ position: "absolute" as const,
332
+ left: `${x * 100}%`,
333
+ top: `${y * 100}%`,
334
+ transform: "translate(-50%, -50%)",
335
+ "touch-action": "none",
336
+ "forced-color-adjust": "none" as const,
203
337
  },
204
- 'data-dragging': s.isDragging || undefined,
205
- 'data-disabled': s.isDisabled || p.isDisabled || undefined,
338
+ "data-dragging": s.isDragging || undefined,
339
+ "data-disabled": s.isDisabled || p.isDisabled || undefined,
206
340
  };
207
341
  });
208
342
 
343
+ const ariaValueText = () => {
344
+ const s = getState();
345
+ const loc = locale().locale;
346
+ const displayColor = s.getDisplayColor();
347
+ let valueText = s.getThumbValueLabel();
348
+
349
+ if (s.channel === "hue") {
350
+ valueText += `, ${displayColor.getHueName(loc)}`;
351
+ } else if (s.channel !== "alpha") {
352
+ valueText += `, ${displayColor.getColorName(loc)}`;
353
+ }
354
+
355
+ return valueText;
356
+ };
357
+
209
358
  // Input props (hidden, for accessibility)
210
359
  const inputProps = createMemo(() => {
211
360
  const s = getState();
212
361
  const p = getProps();
213
362
 
214
363
  return {
215
- type: 'range',
364
+ type: "range",
216
365
  id: inputId,
217
366
  min: s.minValue,
218
367
  max: s.maxValue,
219
368
  step: s.step,
220
369
  value: s.getThumbValue(),
370
+ name: p.name,
371
+ form: p.form,
221
372
  disabled: s.isDisabled || p.isDisabled,
222
- 'aria-label': p['aria-label'] ?? channelName(),
223
- 'aria-labelledby': p['aria-labelledby'],
224
- 'aria-describedby': p['aria-describedby'],
225
- 'aria-valuetext': s.getThumbValueLabel(),
373
+ tabIndex: s.isDisabled || p.isDisabled ? undefined : 0,
374
+ "aria-orientation": orientation(),
375
+ "aria-labelledby": inputLabelledBy(),
376
+ "aria-describedby": p["aria-describedby"] ?? "",
377
+ "aria-details": p["aria-details"] ?? "",
378
+ "aria-valuetext": ariaValueText(),
226
379
  onKeyDown,
380
+ onInput: (e: Event) => {
381
+ const target = e.target as HTMLInputElement;
382
+ s.setThumbValue(parseFloat(target.value));
383
+ },
227
384
  onChange: (e: Event) => {
228
385
  const target = e.target as HTMLInputElement;
229
386
  s.setThumbValue(parseFloat(target.value));
@@ -231,21 +388,18 @@ export function createColorSlider(
231
388
  onFocus: () => {
232
389
  // Focus handling
233
390
  },
234
- onBlur: () => {
235
- if (s.isDragging) {
236
- s.setDragging(false);
237
- }
238
- },
239
391
  style: {
240
- position: 'absolute' as const,
241
- width: '1px',
242
- height: '1px',
243
- padding: '0',
244
- margin: '-1px',
245
- overflow: 'hidden',
246
- clip: 'rect(0, 0, 0, 0)',
247
- 'white-space': 'nowrap',
248
- border: '0',
392
+ position: "absolute" as const,
393
+ opacity: "0.0001",
394
+ width: "100%",
395
+ height: "100%",
396
+ padding: "0",
397
+ margin: "-1px",
398
+ overflow: "hidden",
399
+ clip: "rect(0, 0, 0, 0)",
400
+ "white-space": "nowrap",
401
+ border: "0",
402
+ "pointer-events": "none" as const,
249
403
  },
250
404
  };
251
405
  });
@@ -253,7 +407,7 @@ export function createColorSlider(
253
407
  // Output props
254
408
  const outputProps = createMemo(() => {
255
409
  return {
256
- 'aria-live': 'off' as const,
410
+ "aria-live": "off" as const,
257
411
  for: inputId,
258
412
  };
259
413
  });
@@ -262,7 +416,11 @@ export function createColorSlider(
262
416
  const labelProps = createMemo(() => {
263
417
  return {
264
418
  id: labelId,
265
- for: inputId,
419
+ onClick: () => {
420
+ if (typeof document !== "undefined") {
421
+ document.getElementById(inputId)?.focus();
422
+ }
423
+ },
266
424
  };
267
425
  });
268
426
 
@@ -4,30 +4,52 @@
4
4
  * Provides ARIA attributes for a color swatch display.
5
5
  */
6
6
 
7
- import { createMemo, type Accessor } from 'solid-js';
8
- import { normalizeColor } from '@proyecto-viviana/solid-stately';
9
- import type { AriaColorSwatchOptions, ColorSwatchAria } from './types';
7
+ import { createMemo, type Accessor } from "solid-js";
8
+ import { normalizeColor } from "@proyecto-viviana/solid-stately";
9
+ import { useLocale } from "../i18n";
10
+ import { createId } from "../ssr";
11
+ import { filterDOMProps } from "../utils/filterDOMProps";
12
+ import type { AriaColorSwatchOptions, ColorSwatchAria } from "./types";
10
13
 
11
14
  /**
12
15
  * Creates ARIA props for a color swatch.
13
16
  */
14
- export function createColorSwatch(
15
- props: Accessor<AriaColorSwatchOptions>
16
- ): ColorSwatchAria {
17
+ export function createColorSwatch(props: Accessor<AriaColorSwatchOptions>): ColorSwatchAria {
17
18
  const getProps = () => props();
19
+ const locale = useLocale();
20
+ const generatedId = createId();
21
+ const id = () => getProps().id ?? generatedId;
22
+
23
+ const color = createMemo(() => normalizeColor(getProps().color ?? "#fff0"));
24
+
25
+ const colorName = createMemo(() => {
26
+ const p = getProps();
27
+ if (p.colorName) return p.colorName;
28
+
29
+ const resolvedColor = color();
30
+ if (resolvedColor.getChannelValue("alpha") === 0) {
31
+ return "transparent";
32
+ }
33
+
34
+ return resolvedColor.getColorName(locale().locale);
35
+ });
18
36
 
19
- // Swatch props
20
37
  const swatchProps = createMemo(() => {
21
38
  const p = getProps();
22
- const color = normalizeColor(p.color);
23
- const colorName = color.getColorName('en-US');
39
+ const domProps = filterDOMProps(p as Record<string, unknown>, { labelable: true });
40
+ const ariaLabel = [colorName(), p["aria-label"] || ""].filter(Boolean).join(", ");
24
41
 
25
42
  return {
26
- role: 'img' as const,
27
- 'aria-label': p['aria-label'] ?? colorName,
28
- 'aria-roledescription': 'color swatch',
43
+ ...domProps,
44
+ id: id(),
45
+ slot: p.slot,
46
+ role: "img" as const,
47
+ "aria-roledescription": "color swatch",
48
+ "aria-label": ariaLabel,
49
+ "aria-labelledby": p["aria-labelledby"] ? `${id()} ${p["aria-labelledby"]}` : undefined,
29
50
  style: {
30
- 'background-color': color.toString('css'),
51
+ "background-color": color().toString("css"),
52
+ "forced-color-adjust": "none" as const,
31
53
  },
32
54
  };
33
55
  });
@@ -36,5 +58,8 @@ export function createColorSwatch(
36
58
  get swatchProps() {
37
59
  return swatchProps();
38
60
  },
61
+ get color() {
62
+ return color();
63
+ },
39
64
  };
40
65
  }