@proyecto-viviana/solidaria 0.4.3 → 0.6.0-rc.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 (1374) hide show
  1. package/LICENSE-APACHE-2.0 +201 -0
  2. package/NOTICE +91 -0
  3. package/dist/_chunk/DragManager.js +71 -25
  4. package/dist/_chunk/DragManager.js.map +1 -1
  5. package/dist/_chunk/DragManager.jsx +71 -25
  6. package/dist/_chunk/DragManager.jsx.map +1 -1
  7. package/dist/_chunk/FocusScope.js +281 -66
  8. package/dist/_chunk/FocusScope.js.map +1 -1
  9. package/dist/_chunk/FocusScope.jsx +274 -55
  10. package/dist/_chunk/FocusScope.jsx.map +1 -1
  11. package/dist/_chunk/actiongroup.js +43 -19
  12. package/dist/_chunk/actiongroup.js.map +1 -1
  13. package/dist/_chunk/actiongroup.jsx +43 -19
  14. package/dist/_chunk/actiongroup.jsx.map +1 -1
  15. package/dist/_chunk/announce.js +19 -6
  16. package/dist/_chunk/announce.js.map +1 -1
  17. package/dist/_chunk/announce.jsx +19 -6
  18. package/dist/_chunk/announce.jsx.map +1 -1
  19. package/dist/_chunk/ariaHideOutside.js +212 -10
  20. package/dist/_chunk/ariaHideOutside.js.map +1 -1
  21. package/dist/_chunk/ariaHideOutside.jsx +212 -10
  22. package/dist/_chunk/ariaHideOutside.jsx.map +1 -1
  23. package/dist/_chunk/autocomplete.js +26 -7
  24. package/dist/_chunk/autocomplete.js.map +1 -1
  25. package/dist/_chunk/autocomplete.jsx +26 -7
  26. package/dist/_chunk/autocomplete.jsx.map +1 -1
  27. package/dist/_chunk/breadcrumbs.js +17 -2
  28. package/dist/_chunk/breadcrumbs.js.map +1 -1
  29. package/dist/_chunk/breadcrumbs.jsx +17 -2
  30. package/dist/_chunk/breadcrumbs.jsx.map +1 -1
  31. package/dist/_chunk/button.js +53 -20
  32. package/dist/_chunk/button.js.map +1 -1
  33. package/dist/_chunk/button.jsx +53 -20
  34. package/dist/_chunk/button.jsx.map +1 -1
  35. package/dist/_chunk/calendar.js +341 -56
  36. package/dist/_chunk/calendar.js.map +1 -1
  37. package/dist/_chunk/calendar.jsx +341 -56
  38. package/dist/_chunk/calendar.jsx.map +1 -1
  39. package/dist/_chunk/checkbox.js +69 -26
  40. package/dist/_chunk/checkbox.js.map +1 -1
  41. package/dist/_chunk/checkbox.jsx +69 -26
  42. package/dist/_chunk/checkbox.jsx.map +1 -1
  43. package/dist/_chunk/color.js +307 -48
  44. package/dist/_chunk/color.js.map +1 -1
  45. package/dist/_chunk/color.jsx +307 -48
  46. package/dist/_chunk/color.jsx.map +1 -1
  47. package/dist/_chunk/combobox.js +193 -103
  48. package/dist/_chunk/combobox.js.map +1 -1
  49. package/dist/_chunk/combobox.jsx +193 -103
  50. package/dist/_chunk/combobox.jsx.map +1 -1
  51. package/dist/_chunk/constants.js +12 -0
  52. package/dist/_chunk/constants.js.map +1 -1
  53. package/dist/_chunk/constants.jsx +12 -0
  54. package/dist/_chunk/constants.jsx.map +1 -1
  55. package/dist/_chunk/createCollator.js +12 -0
  56. package/dist/_chunk/createCollator.js.map +1 -1
  57. package/dist/_chunk/createCollator.jsx +12 -0
  58. package/dist/_chunk/createCollator.jsx.map +1 -1
  59. package/dist/_chunk/createCollectionRowInteraction.js +50 -13
  60. package/dist/_chunk/createCollectionRowInteraction.js.map +1 -1
  61. package/dist/_chunk/createCollectionRowInteraction.jsx +50 -13
  62. package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -1
  63. package/dist/_chunk/createField.js +35 -25
  64. package/dist/_chunk/createField.js.map +1 -1
  65. package/dist/_chunk/createField.jsx +35 -25
  66. package/dist/_chunk/createField.jsx.map +1 -1
  67. package/dist/_chunk/createFocus.js +18 -5
  68. package/dist/_chunk/createFocus.js.map +1 -1
  69. package/dist/_chunk/createFocus.jsx +18 -5
  70. package/dist/_chunk/createFocus.jsx.map +1 -1
  71. package/dist/_chunk/createFocusRing.js +16 -7
  72. package/dist/_chunk/createFocusRing.js.map +1 -1
  73. package/dist/_chunk/createFocusRing.jsx +16 -7
  74. package/dist/_chunk/createFocusRing.jsx.map +1 -1
  75. package/dist/_chunk/createFocusWithin.js +16 -4
  76. package/dist/_chunk/createFocusWithin.js.map +1 -1
  77. package/dist/_chunk/createFocusWithin.jsx +16 -4
  78. package/dist/_chunk/createFocusWithin.jsx.map +1 -1
  79. package/dist/_chunk/createFocusable.js +39 -53
  80. package/dist/_chunk/createFocusable.js.map +1 -1
  81. package/dist/_chunk/createFocusable.jsx +39 -53
  82. package/dist/_chunk/createFocusable.jsx.map +1 -1
  83. package/dist/_chunk/createFormReset.js +24 -12
  84. package/dist/_chunk/createFormReset.js.map +1 -1
  85. package/dist/_chunk/createFormReset.jsx +24 -12
  86. package/dist/_chunk/createFormReset.jsx.map +1 -1
  87. package/dist/_chunk/createFormValidation.js +41 -17
  88. package/dist/_chunk/createFormValidation.js.map +1 -1
  89. package/dist/_chunk/createFormValidation.jsx +41 -17
  90. package/dist/_chunk/createFormValidation.jsx.map +1 -1
  91. package/dist/_chunk/createHover.js +56 -42
  92. package/dist/_chunk/createHover.js.map +1 -1
  93. package/dist/_chunk/createHover.jsx +56 -42
  94. package/dist/_chunk/createHover.jsx.map +1 -1
  95. package/dist/_chunk/createKeyboard.js +205 -0
  96. package/dist/_chunk/createKeyboard.js.map +1 -0
  97. package/dist/_chunk/createKeyboard.jsx +205 -0
  98. package/dist/_chunk/createKeyboard.jsx.map +1 -0
  99. package/dist/_chunk/createLabel.js +17 -4
  100. package/dist/_chunk/createLabel.js.map +1 -1
  101. package/dist/_chunk/createLabel.jsx +17 -4
  102. package/dist/_chunk/createLabel.jsx.map +1 -1
  103. package/dist/_chunk/createLabels.js +14 -2
  104. package/dist/_chunk/createLabels.js.map +1 -1
  105. package/dist/_chunk/createLabels.jsx +14 -2
  106. package/dist/_chunk/createLabels.jsx.map +1 -1
  107. package/dist/_chunk/createLandmark.js +19 -3
  108. package/dist/_chunk/createLandmark.js.map +1 -1
  109. package/dist/_chunk/createLandmark.jsx +19 -3
  110. package/dist/_chunk/createLandmark.jsx.map +1 -1
  111. package/dist/_chunk/createLongPress.js +105 -0
  112. package/dist/_chunk/createLongPress.js.map +1 -0
  113. package/dist/_chunk/createLongPress.jsx +105 -0
  114. package/dist/_chunk/createLongPress.jsx.map +1 -0
  115. package/dist/_chunk/createOverlay.js +220 -111
  116. package/dist/_chunk/createOverlay.js.map +1 -1
  117. package/dist/_chunk/createOverlay.jsx +220 -111
  118. package/dist/_chunk/createOverlay.jsx.map +1 -1
  119. package/dist/_chunk/createOverlayTrigger.js +58 -0
  120. package/dist/_chunk/createOverlayTrigger.js.map +1 -0
  121. package/dist/_chunk/createOverlayTrigger.jsx +58 -0
  122. package/dist/_chunk/createOverlayTrigger.jsx.map +1 -0
  123. package/dist/_chunk/createPress.js +38 -28
  124. package/dist/_chunk/createPress.js.map +1 -1
  125. package/dist/_chunk/createPress.jsx +38 -28
  126. package/dist/_chunk/createPress.jsx.map +1 -1
  127. package/dist/_chunk/createProgressBar.js +17 -4
  128. package/dist/_chunk/createProgressBar.js.map +1 -1
  129. package/dist/_chunk/createProgressBar.jsx +17 -4
  130. package/dist/_chunk/createProgressBar.jsx.map +1 -1
  131. package/dist/_chunk/createSelectableItem.js +58 -20
  132. package/dist/_chunk/createSelectableItem.js.map +1 -1
  133. package/dist/_chunk/createSelectableItem.jsx +58 -20
  134. package/dist/_chunk/createSelectableItem.jsx.map +1 -1
  135. package/dist/_chunk/createSelectableList.js +776 -0
  136. package/dist/_chunk/createSelectableList.js.map +1 -0
  137. package/dist/_chunk/createSelectableList.jsx +776 -0
  138. package/dist/_chunk/createSelectableList.jsx.map +1 -0
  139. package/dist/_chunk/createStringFormatter.js +350 -5
  140. package/dist/_chunk/createStringFormatter.js.map +1 -1
  141. package/dist/_chunk/createStringFormatter.jsx +350 -5
  142. package/dist/_chunk/createStringFormatter.jsx.map +1 -1
  143. package/dist/_chunk/createToggle.js +68 -19
  144. package/dist/_chunk/createToggle.js.map +1 -1
  145. package/dist/_chunk/createToggle.jsx +68 -19
  146. package/dist/_chunk/createToggle.jsx.map +1 -1
  147. package/dist/_chunk/createTypeSelect.js +15 -3
  148. package/dist/_chunk/createTypeSelect.js.map +1 -1
  149. package/dist/_chunk/createTypeSelect.jsx +15 -3
  150. package/dist/_chunk/createTypeSelect.jsx.map +1 -1
  151. package/dist/_chunk/{visually-hidden.js → createVisuallyHidden.js} +16 -4
  152. package/dist/_chunk/createVisuallyHidden.js.map +1 -0
  153. package/dist/_chunk/{visually-hidden.jsx → createVisuallyHidden.jsx} +16 -4
  154. package/dist/_chunk/createVisuallyHidden.jsx.map +1 -0
  155. package/dist/_chunk/datepicker.js +143 -58
  156. package/dist/_chunk/datepicker.js.map +1 -1
  157. package/dist/_chunk/datepicker.jsx +143 -58
  158. package/dist/_chunk/datepicker.jsx.map +1 -1
  159. package/dist/_chunk/dialog.js +49 -19
  160. package/dist/_chunk/dialog.js.map +1 -1
  161. package/dist/_chunk/dialog.jsx +49 -19
  162. package/dist/_chunk/dialog.jsx.map +1 -1
  163. package/dist/_chunk/disclosure.js +48 -28
  164. package/dist/_chunk/disclosure.js.map +1 -1
  165. package/dist/_chunk/disclosure.jsx +48 -28
  166. package/dist/_chunk/disclosure.jsx.map +1 -1
  167. package/dist/_chunk/dnd.js +1340 -1172
  168. package/dist/_chunk/dnd.js.map +1 -1
  169. package/dist/_chunk/dnd.jsx +1340 -1172
  170. package/dist/_chunk/dnd.jsx.map +1 -1
  171. package/dist/_chunk/dom.js +1200 -0
  172. package/dist/_chunk/dom.js.map +1 -0
  173. package/dist/_chunk/dom.jsx +1200 -0
  174. package/dist/_chunk/dom.jsx.map +1 -0
  175. package/dist/_chunk/env.js +1 -57
  176. package/dist/_chunk/env.js.map +1 -1
  177. package/dist/_chunk/env.jsx +1 -57
  178. package/dist/_chunk/env.jsx.map +1 -1
  179. package/dist/_chunk/filterDOMProps.js +32 -7
  180. package/dist/_chunk/filterDOMProps.js.map +1 -1
  181. package/dist/_chunk/filterDOMProps.jsx +32 -7
  182. package/dist/_chunk/filterDOMProps.jsx.map +1 -1
  183. package/dist/_chunk/focus.js +570 -338
  184. package/dist/_chunk/focus.js.map +1 -1
  185. package/dist/_chunk/focus.jsx +570 -338
  186. package/dist/_chunk/focus.jsx.map +1 -1
  187. package/dist/_chunk/grid.js +62 -8
  188. package/dist/_chunk/grid.js.map +1 -1
  189. package/dist/_chunk/grid.jsx +62 -8
  190. package/dist/_chunk/grid.jsx.map +1 -1
  191. package/dist/_chunk/gridlist.js +192 -53
  192. package/dist/_chunk/gridlist.js.map +1 -1
  193. package/dist/_chunk/gridlist.jsx +192 -53
  194. package/dist/_chunk/gridlist.jsx.map +1 -1
  195. package/dist/_chunk/i18n.js +68 -1
  196. package/dist/_chunk/i18n.js.map +1 -1
  197. package/dist/_chunk/i18n.jsx +68 -1
  198. package/dist/_chunk/i18n.jsx.map +1 -1
  199. package/dist/_chunk/interactions.js +38 -102
  200. package/dist/_chunk/interactions.js.map +1 -1
  201. package/dist/_chunk/interactions.jsx +38 -100
  202. package/dist/_chunk/interactions.jsx.map +1 -1
  203. package/dist/_chunk/intl.js +280 -0
  204. package/dist/_chunk/intl.js.map +1 -0
  205. package/dist/_chunk/intl.jsx +280 -0
  206. package/dist/_chunk/intl.jsx.map +1 -0
  207. package/dist/_chunk/link.js +15 -4
  208. package/dist/_chunk/link.js.map +1 -1
  209. package/dist/_chunk/link.jsx +15 -4
  210. package/dist/_chunk/link.jsx.map +1 -1
  211. package/dist/_chunk/listbox.js +99 -175
  212. package/dist/_chunk/listbox.js.map +1 -1
  213. package/dist/_chunk/listbox.jsx +99 -175
  214. package/dist/_chunk/listbox.jsx.map +1 -1
  215. package/dist/_chunk/locale.js +58 -12
  216. package/dist/_chunk/locale.js.map +1 -1
  217. package/dist/_chunk/locale.jsx +57 -11
  218. package/dist/_chunk/locale.jsx.map +1 -1
  219. package/dist/_chunk/menu.js +298 -57
  220. package/dist/_chunk/menu.js.map +1 -1
  221. package/dist/_chunk/menu.jsx +298 -57
  222. package/dist/_chunk/menu.jsx.map +1 -1
  223. package/dist/_chunk/mergeProps.js +216 -0
  224. package/dist/_chunk/mergeProps.js.map +1 -0
  225. package/dist/_chunk/mergeProps.jsx +216 -0
  226. package/dist/_chunk/mergeProps.jsx.map +1 -0
  227. package/dist/_chunk/meter.js +16 -4
  228. package/dist/_chunk/meter.js.map +1 -1
  229. package/dist/_chunk/meter.jsx +16 -4
  230. package/dist/_chunk/meter.jsx.map +1 -1
  231. package/dist/_chunk/numberfield.js +167 -22
  232. package/dist/_chunk/numberfield.js.map +1 -1
  233. package/dist/_chunk/numberfield.jsx +167 -22
  234. package/dist/_chunk/numberfield.jsx.map +1 -1
  235. package/dist/_chunk/overlays.js +87 -74
  236. package/dist/_chunk/overlays.js.map +1 -1
  237. package/dist/_chunk/overlays.jsx +71 -57
  238. package/dist/_chunk/overlays.jsx.map +1 -1
  239. package/dist/_chunk/owner.js +23 -0
  240. package/dist/_chunk/owner.js.map +1 -0
  241. package/dist/_chunk/owner.jsx +23 -0
  242. package/dist/_chunk/owner.jsx.map +1 -0
  243. package/dist/_chunk/popover.js +180 -42
  244. package/dist/_chunk/popover.js.map +1 -1
  245. package/dist/_chunk/popover.jsx +180 -42
  246. package/dist/_chunk/popover.jsx.map +1 -1
  247. package/dist/_chunk/radio.js +92 -32
  248. package/dist/_chunk/radio.js.map +1 -1
  249. package/dist/_chunk/radio.jsx +92 -32
  250. package/dist/_chunk/radio.jsx.map +1 -1
  251. package/dist/_chunk/reactivity.js.map +1 -1
  252. package/dist/_chunk/reactivity.jsx.map +1 -1
  253. package/dist/_chunk/refs.js +41 -0
  254. package/dist/_chunk/refs.js.map +1 -0
  255. package/dist/_chunk/refs.jsx +41 -0
  256. package/dist/_chunk/refs.jsx.map +1 -0
  257. package/dist/_chunk/searchfield.js +69 -3
  258. package/dist/_chunk/searchfield.js.map +1 -1
  259. package/dist/_chunk/searchfield.jsx +69 -3
  260. package/dist/_chunk/searchfield.jsx.map +1 -1
  261. package/dist/_chunk/select.js +220 -78
  262. package/dist/_chunk/select.js.map +1 -1
  263. package/dist/_chunk/select.jsx +156 -68
  264. package/dist/_chunk/select.jsx.map +1 -1
  265. package/dist/_chunk/selection.js +20 -638
  266. package/dist/_chunk/selection.js.map +1 -1
  267. package/dist/_chunk/selection.jsx +20 -638
  268. package/dist/_chunk/selection.jsx.map +1 -1
  269. package/dist/_chunk/separator.js +12 -0
  270. package/dist/_chunk/separator.js.map +1 -1
  271. package/dist/_chunk/separator.jsx +12 -0
  272. package/dist/_chunk/separator.jsx.map +1 -1
  273. package/dist/_chunk/slider.js +25 -16
  274. package/dist/_chunk/slider.js.map +1 -1
  275. package/dist/_chunk/slider.jsx +25 -16
  276. package/dist/_chunk/slider.jsx.map +1 -1
  277. package/dist/_chunk/spinbutton.js +18 -8
  278. package/dist/_chunk/spinbutton.js.map +1 -1
  279. package/dist/_chunk/spinbutton.jsx +18 -8
  280. package/dist/_chunk/spinbutton.jsx.map +1 -1
  281. package/dist/_chunk/steplist.js +14 -1
  282. package/dist/_chunk/steplist.js.map +1 -1
  283. package/dist/_chunk/steplist.jsx +14 -1
  284. package/dist/_chunk/steplist.jsx.map +1 -1
  285. package/dist/_chunk/switch.js +21 -3
  286. package/dist/_chunk/switch.js.map +1 -1
  287. package/dist/_chunk/switch.jsx +21 -3
  288. package/dist/_chunk/switch.jsx.map +1 -1
  289. package/dist/_chunk/table.js +666 -88
  290. package/dist/_chunk/table.js.map +1 -1
  291. package/dist/_chunk/table.jsx +666 -88
  292. package/dist/_chunk/table.jsx.map +1 -1
  293. package/dist/_chunk/tabs.js +115 -17
  294. package/dist/_chunk/tabs.js.map +1 -1
  295. package/dist/_chunk/tabs.jsx +115 -17
  296. package/dist/_chunk/tabs.jsx.map +1 -1
  297. package/dist/_chunk/tag.js +240 -39
  298. package/dist/_chunk/tag.js.map +1 -1
  299. package/dist/_chunk/tag.jsx +240 -39
  300. package/dist/_chunk/tag.jsx.map +1 -1
  301. package/dist/_chunk/textfield.js +83 -12
  302. package/dist/_chunk/textfield.js.map +1 -1
  303. package/dist/_chunk/textfield.jsx +83 -12
  304. package/dist/_chunk/textfield.jsx.map +1 -1
  305. package/dist/_chunk/toast.js +61 -28
  306. package/dist/_chunk/toast.js.map +1 -1
  307. package/dist/_chunk/toast.jsx +61 -28
  308. package/dist/_chunk/toast.jsx.map +1 -1
  309. package/dist/_chunk/tokenfield.js +567 -0
  310. package/dist/_chunk/tokenfield.js.map +1 -0
  311. package/dist/_chunk/tokenfield.jsx +567 -0
  312. package/dist/_chunk/tokenfield.jsx.map +1 -0
  313. package/dist/_chunk/toolbar.js +25 -8
  314. package/dist/_chunk/toolbar.js.map +1 -1
  315. package/dist/_chunk/toolbar.jsx +25 -8
  316. package/dist/_chunk/toolbar.jsx.map +1 -1
  317. package/dist/_chunk/tooltip.js +379 -6
  318. package/dist/_chunk/tooltip.js.map +1 -1
  319. package/dist/_chunk/tooltip.jsx +379 -6
  320. package/dist/_chunk/tooltip.jsx.map +1 -1
  321. package/dist/_chunk/tree.js +280 -69
  322. package/dist/_chunk/tree.js.map +1 -1
  323. package/dist/_chunk/tree.jsx +280 -69
  324. package/dist/_chunk/tree.jsx.map +1 -1
  325. package/dist/_chunk/utils.js +192 -150
  326. package/dist/_chunk/utils.js.map +1 -1
  327. package/dist/_chunk/utils.jsx +192 -150
  328. package/dist/_chunk/utils.jsx.map +1 -1
  329. package/dist/_chunk/virtualFocus.js +54 -0
  330. package/dist/_chunk/virtualFocus.js.map +1 -0
  331. package/dist/_chunk/virtualFocus.jsx +54 -0
  332. package/dist/_chunk/virtualFocus.jsx.map +1 -0
  333. package/dist/_chunk/virtualizer.js +202 -0
  334. package/dist/_chunk/virtualizer.js.map +1 -0
  335. package/dist/_chunk/virtualizer.jsx +202 -0
  336. package/dist/_chunk/virtualizer.jsx.map +1 -0
  337. package/dist/actiongroup/createActionGroup.d.ts +2 -1
  338. package/dist/actiongroup/createActionGroup.d.ts.map +1 -1
  339. package/dist/autocomplete/createAutocomplete.d.ts +1 -9
  340. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  341. package/dist/autocomplete/intl/index.d.ts +13 -0
  342. package/dist/autocomplete/intl/index.d.ts.map +1 -0
  343. package/dist/breadcrumbs/createBreadcrumbs.d.ts +3 -1
  344. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  345. package/dist/breadcrumbs/intl/index.d.ts +13 -0
  346. package/dist/breadcrumbs/intl/index.d.ts.map +1 -0
  347. package/dist/button/createButton.d.ts.map +1 -1
  348. package/dist/button/createToggleButton.d.ts.map +1 -1
  349. package/dist/button/createToggleButtonGroup.d.ts +1 -1
  350. package/dist/button/createToggleButtonGroup.d.ts.map +1 -1
  351. package/dist/button/types.d.ts +14 -0
  352. package/dist/button/types.d.ts.map +1 -1
  353. package/dist/calendar/createCalendar.d.ts +1 -7
  354. package/dist/calendar/createCalendar.d.ts.map +1 -1
  355. package/dist/calendar/createCalendarCell.d.ts +0 -6
  356. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  357. package/dist/calendar/createCalendarGrid.d.ts +1 -7
  358. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  359. package/dist/calendar/createCalendarMonthPicker.d.ts +0 -8
  360. package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -1
  361. package/dist/calendar/createCalendarYearPicker.d.ts +0 -8
  362. package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -1
  363. package/dist/calendar/createRangeCalendar.d.ts +13 -7
  364. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  365. package/dist/calendar/createRangeCalendarCell.d.ts +2 -6
  366. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  367. package/dist/calendar/intl/index.d.ts.map +1 -1
  368. package/dist/calendar/utils.d.ts.map +1 -1
  369. package/dist/checkbox/createCheckbox.d.ts +2 -1
  370. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  371. package/dist/checkbox/createCheckboxGroup.d.ts +1 -9
  372. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  373. package/dist/checkbox/createCheckboxGroupItem.d.ts +0 -8
  374. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  375. package/dist/collections/index.d.ts +1 -1
  376. package/dist/collections/index.d.ts.map +1 -1
  377. package/dist/collections/index.js +18 -2
  378. package/dist/collections/index.js.map +1 -1
  379. package/dist/collections/index.jsx +18 -2
  380. package/dist/collections/index.jsx.map +1 -1
  381. package/dist/color/createColorArea.d.ts +2 -7
  382. package/dist/color/createColorArea.d.ts.map +1 -1
  383. package/dist/color/createColorField.d.ts +2 -7
  384. package/dist/color/createColorField.d.ts.map +1 -1
  385. package/dist/color/createColorSlider.d.ts +1 -6
  386. package/dist/color/createColorSlider.d.ts.map +1 -1
  387. package/dist/color/createColorSwatch.d.ts +1 -6
  388. package/dist/color/createColorSwatch.d.ts.map +1 -1
  389. package/dist/color/createColorWheel.d.ts +1 -6
  390. package/dist/color/createColorWheel.d.ts.map +1 -1
  391. package/dist/color/intl/index.d.ts.map +1 -1
  392. package/dist/color/types.d.ts +47 -1
  393. package/dist/color/types.d.ts.map +1 -1
  394. package/dist/combobox/createComboBox.d.ts +17 -8
  395. package/dist/combobox/createComboBox.d.ts.map +1 -1
  396. package/dist/combobox/intl/generated-locales.d.ts +3 -0
  397. package/dist/combobox/intl/generated-locales.d.ts.map +1 -1
  398. package/dist/combobox/intl/index.d.ts +3 -2
  399. package/dist/combobox/intl/index.d.ts.map +1 -1
  400. package/dist/datepicker/createDateField.d.ts +0 -10
  401. package/dist/datepicker/createDateField.d.ts.map +1 -1
  402. package/dist/datepicker/createDatePicker.d.ts +0 -16
  403. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  404. package/dist/datepicker/createDatePickerGroup.d.ts +1 -1
  405. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -1
  406. package/dist/datepicker/createDateRangePicker.d.ts +0 -21
  407. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -1
  408. package/dist/datepicker/createDateSegment.d.ts +0 -9
  409. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  410. package/dist/datepicker/createDisplayNames.d.ts +1 -9
  411. package/dist/datepicker/createDisplayNames.d.ts.map +1 -1
  412. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  413. package/dist/datepicker/intl.d.ts.map +1 -1
  414. package/dist/dialog/createDialog.d.ts +2 -4
  415. package/dist/dialog/createDialog.d.ts.map +1 -1
  416. package/dist/dialog/types.d.ts +14 -0
  417. package/dist/dialog/types.d.ts.map +1 -1
  418. package/dist/disclosure/createDisclosure.d.ts +1 -8
  419. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  420. package/dist/disclosure/createDisclosureGroup.d.ts +3 -4
  421. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  422. package/dist/dnd/DragManager.d.ts +1 -16
  423. package/dist/dnd/DragManager.d.ts.map +1 -1
  424. package/dist/dnd/DropTargetKeyboardNavigation.d.ts +2 -2
  425. package/dist/dnd/createDrag.d.ts +1 -7
  426. package/dist/dnd/createDrag.d.ts.map +1 -1
  427. package/dist/dnd/createDraggableCollection.d.ts +1 -7
  428. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  429. package/dist/dnd/createDraggableItem.d.ts +2 -7
  430. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  431. package/dist/dnd/createDrop.d.ts +1 -7
  432. package/dist/dnd/createDrop.d.ts.map +1 -1
  433. package/dist/dnd/createDropIndicator.d.ts +27 -0
  434. package/dist/dnd/createDropIndicator.d.ts.map +1 -0
  435. package/dist/dnd/createDroppableCollection.d.ts +6 -8
  436. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  437. package/dist/dnd/createDroppableItem.d.ts +12 -10
  438. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  439. package/dist/dnd/index.d.ts +3 -1
  440. package/dist/dnd/index.d.ts.map +1 -1
  441. package/dist/dnd/index.js +2 -2
  442. package/dist/dnd/index.jsx +2 -2
  443. package/dist/dnd/intl/index.d.ts +6 -4
  444. package/dist/dnd/intl/index.d.ts.map +1 -1
  445. package/dist/dnd/types.d.ts +20 -1
  446. package/dist/dnd/types.d.ts.map +1 -1
  447. package/dist/dnd/utils.d.ts +4 -0
  448. package/dist/dnd/utils.d.ts.map +1 -1
  449. package/dist/focus/FocusScope.d.ts +9 -5
  450. package/dist/focus/FocusScope.d.ts.map +1 -1
  451. package/dist/focus/createAutoFocus.d.ts +3 -0
  452. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  453. package/dist/focus/createFocusRestore.d.ts +3 -0
  454. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  455. package/dist/focus/createHasTabbableChild.d.ts +13 -0
  456. package/dist/focus/createHasTabbableChild.d.ts.map +1 -0
  457. package/dist/focus/createVirtualFocus.d.ts +4 -1
  458. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  459. package/dist/focus/index.js +3 -2
  460. package/dist/focus/index.jsx +3 -2
  461. package/dist/focus/virtualFocus.d.ts +1 -1
  462. package/dist/form/createFormReset.d.ts +1 -7
  463. package/dist/form/createFormReset.d.ts.map +1 -1
  464. package/dist/form/createFormValidation.d.ts +1 -9
  465. package/dist/form/createFormValidation.d.ts.map +1 -1
  466. package/dist/grid/GridKeyboardDelegate.d.ts.map +1 -1
  467. package/dist/grid/createGrid.d.ts +1 -5
  468. package/dist/grid/createGrid.d.ts.map +1 -1
  469. package/dist/grid/createGridCell.d.ts +1 -5
  470. package/dist/grid/createGridCell.d.ts.map +1 -1
  471. package/dist/grid/createGridRow.d.ts +1 -5
  472. package/dist/grid/createGridRow.d.ts.map +1 -1
  473. package/dist/grid/index.d.ts +2 -2
  474. package/dist/grid/intl/index.d.ts +18 -0
  475. package/dist/grid/intl/index.d.ts.map +1 -0
  476. package/dist/grid/types.d.ts +25 -2
  477. package/dist/grid/types.d.ts.map +1 -1
  478. package/dist/gridlist/createGridList.d.ts +3 -5
  479. package/dist/gridlist/createGridList.d.ts.map +1 -1
  480. package/dist/gridlist/createGridListItem.d.ts +1 -5
  481. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  482. package/dist/gridlist/createGridListSection.d.ts +0 -4
  483. package/dist/gridlist/createGridListSection.d.ts.map +1 -1
  484. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +1 -5
  485. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  486. package/dist/gridlist/intl/index.d.ts +14 -0
  487. package/dist/gridlist/intl/index.d.ts.map +1 -0
  488. package/dist/gridlist/types.d.ts +56 -2
  489. package/dist/gridlist/types.d.ts.map +1 -1
  490. package/dist/i18n/compileIcu.d.ts +24 -0
  491. package/dist/i18n/compileIcu.d.ts.map +1 -0
  492. package/dist/i18n/createCollator.d.ts +0 -7
  493. package/dist/i18n/createCollator.d.ts.map +1 -1
  494. package/dist/i18n/createDateFormatter.d.ts +0 -7
  495. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  496. package/dist/i18n/createFilter.d.ts +0 -7
  497. package/dist/i18n/createFilter.d.ts.map +1 -1
  498. package/dist/i18n/createListFormatter.d.ts +9 -0
  499. package/dist/i18n/createListFormatter.d.ts.map +1 -0
  500. package/dist/i18n/createNumberFormatter.d.ts +0 -7
  501. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  502. package/dist/i18n/createStringFormatter.d.ts +14 -4
  503. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  504. package/dist/i18n/index.d.ts +1 -0
  505. package/dist/i18n/index.d.ts.map +1 -1
  506. package/dist/i18n/index.js +2 -2
  507. package/dist/i18n/index.jsx +2 -2
  508. package/dist/i18n/locale.d.ts +2 -8
  509. package/dist/i18n/locale.d.ts.map +1 -1
  510. package/dist/i18n/utils.d.ts +0 -7
  511. package/dist/i18n/utils.d.ts.map +1 -1
  512. package/dist/index.d.ts +10 -7
  513. package/dist/index.d.ts.map +1 -1
  514. package/dist/index.js +27 -21
  515. package/dist/index.jsx +27 -21
  516. package/dist/interactions/FocusableProvider.d.ts +3 -2
  517. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  518. package/dist/interactions/PressEvent.d.ts +2 -1
  519. package/dist/interactions/PressEvent.d.ts.map +1 -1
  520. package/dist/interactions/createContextMenu.d.ts +24 -0
  521. package/dist/interactions/createContextMenu.d.ts.map +1 -0
  522. package/dist/interactions/createFocus.d.ts +3 -2
  523. package/dist/interactions/createFocus.d.ts.map +1 -1
  524. package/dist/interactions/createFocusRing.d.ts +2 -1
  525. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  526. package/dist/interactions/createFocusWithin.d.ts +1 -6
  527. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  528. package/dist/interactions/createFocusable.d.ts +2 -6
  529. package/dist/interactions/createFocusable.d.ts.map +1 -1
  530. package/dist/interactions/createHover.d.ts +3 -10
  531. package/dist/interactions/createHover.d.ts.map +1 -1
  532. package/dist/interactions/createInteractionModality.d.ts +12 -10
  533. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  534. package/dist/interactions/createKeyboard.d.ts +12 -3
  535. package/dist/interactions/createKeyboard.d.ts.map +1 -1
  536. package/dist/interactions/createKeyboardShortcutHandler.d.ts +24 -0
  537. package/dist/interactions/createKeyboardShortcutHandler.d.ts.map +1 -0
  538. package/dist/interactions/createLongPress.d.ts +4 -7
  539. package/dist/interactions/createLongPress.d.ts.map +1 -1
  540. package/dist/interactions/createMove.d.ts +1 -6
  541. package/dist/interactions/createMove.d.ts.map +1 -1
  542. package/dist/interactions/createPress.d.ts +2 -7
  543. package/dist/interactions/createPress.d.ts.map +1 -1
  544. package/dist/interactions/index.d.ts +1 -1
  545. package/dist/interactions/index.d.ts.map +1 -1
  546. package/dist/interactions/index.js +5 -3
  547. package/dist/interactions/index.jsx +5 -3
  548. package/dist/label/createField.d.ts +7 -1
  549. package/dist/label/createField.d.ts.map +1 -1
  550. package/dist/label/createLabel.d.ts +1 -1
  551. package/dist/label/createLabel.d.ts.map +1 -1
  552. package/dist/label/createLabels.d.ts +0 -7
  553. package/dist/label/createLabels.d.ts.map +1 -1
  554. package/dist/landmark/createLandmark.d.ts +4 -1
  555. package/dist/landmark/createLandmark.d.ts.map +1 -1
  556. package/dist/link/createLink.d.ts +1 -1
  557. package/dist/link/createLink.d.ts.map +1 -1
  558. package/dist/listbox/createListBox.d.ts +8 -7
  559. package/dist/listbox/createListBox.d.ts.map +1 -1
  560. package/dist/listbox/createOption.d.ts +7 -1
  561. package/dist/listbox/createOption.d.ts.map +1 -1
  562. package/dist/live-announcer/announce.d.ts +2 -13
  563. package/dist/live-announcer/announce.d.ts.map +1 -1
  564. package/dist/menu/createMenu.d.ts +3 -7
  565. package/dist/menu/createMenu.d.ts.map +1 -1
  566. package/dist/menu/createMenuItem.d.ts +2 -1
  567. package/dist/menu/createMenuItem.d.ts.map +1 -1
  568. package/dist/menu/createMenuTrigger.d.ts +24 -20
  569. package/dist/menu/createMenuTrigger.d.ts.map +1 -1
  570. package/dist/menu/index.d.ts +1 -1
  571. package/dist/menu/index.d.ts.map +1 -1
  572. package/dist/menu/intl/index.d.ts +4 -0
  573. package/dist/menu/intl/index.d.ts.map +1 -0
  574. package/dist/meter/createMeter.d.ts +2 -1
  575. package/dist/meter/createMeter.d.ts.map +1 -1
  576. package/dist/numberfield/createNumberField.d.ts +29 -6
  577. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  578. package/dist/overlays/ariaHideOutside.d.ts +0 -4
  579. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  580. package/dist/overlays/createInteractOutside.d.ts +2 -5
  581. package/dist/overlays/createInteractOutside.d.ts.map +1 -1
  582. package/dist/overlays/createModal.d.ts +3 -6
  583. package/dist/overlays/createModal.d.ts.map +1 -1
  584. package/dist/overlays/createOverlay.d.ts +1 -5
  585. package/dist/overlays/createOverlay.d.ts.map +1 -1
  586. package/dist/overlays/createOverlayTrigger.d.ts +2 -6
  587. package/dist/overlays/createOverlayTrigger.d.ts.map +1 -1
  588. package/dist/overlays/createPreventScroll.d.ts +0 -4
  589. package/dist/overlays/createPreventScroll.d.ts.map +1 -1
  590. package/dist/overlays/index.d.ts +1 -0
  591. package/dist/overlays/index.d.ts.map +1 -1
  592. package/dist/overlays/index.js +3 -2
  593. package/dist/overlays/index.jsx +3 -2
  594. package/dist/overlays/intl/index.d.ts +13 -0
  595. package/dist/overlays/intl/index.d.ts.map +1 -0
  596. package/dist/popover/calculatePosition.d.ts +1 -1
  597. package/dist/popover/calculatePosition.d.ts.map +1 -1
  598. package/dist/popover/createOverlayPosition.d.ts +1 -7
  599. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  600. package/dist/popover/createPopover.d.ts +6 -7
  601. package/dist/popover/createPopover.d.ts.map +1 -1
  602. package/dist/progress/createProgressBar.d.ts +2 -10
  603. package/dist/progress/createProgressBar.d.ts.map +1 -1
  604. package/dist/radio/createRadio.d.ts +8 -1
  605. package/dist/radio/createRadio.d.ts.map +1 -1
  606. package/dist/radio/createRadioGroup.d.ts +1 -9
  607. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  608. package/dist/searchfield/createSearchField.d.ts +1 -1
  609. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  610. package/dist/searchfield/intl/index.d.ts +13 -0
  611. package/dist/searchfield/intl/index.d.ts.map +1 -0
  612. package/dist/select/createHiddenSelect.d.ts +3 -10
  613. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  614. package/dist/select/createSelect.d.ts +10 -6
  615. package/dist/select/createSelect.d.ts.map +1 -1
  616. package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -1
  617. package/dist/selection/ListKeyboardDelegate.d.ts +2 -1
  618. package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -1
  619. package/dist/selection/constants.d.ts.map +1 -1
  620. package/dist/selection/createCollectionRowInteraction.d.ts +12 -1
  621. package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -1
  622. package/dist/selection/createScrollIntoViewOnFocus.d.ts +0 -11
  623. package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -1
  624. package/dist/selection/createSelectableCollection.d.ts +1 -23
  625. package/dist/selection/createSelectableCollection.d.ts.map +1 -1
  626. package/dist/selection/createSelectableItem.d.ts +2 -29
  627. package/dist/selection/createSelectableItem.d.ts.map +1 -1
  628. package/dist/selection/createSelectableList.d.ts +4 -17
  629. package/dist/selection/createSelectableList.d.ts.map +1 -1
  630. package/dist/selection/createTypeSelect.d.ts +2 -8
  631. package/dist/selection/createTypeSelect.d.ts.map +1 -1
  632. package/dist/selection/index.js +3 -2
  633. package/dist/selection/index.jsx +3 -2
  634. package/dist/selection/selectItem.d.ts.map +1 -1
  635. package/dist/selection/utils.d.ts +1 -1
  636. package/dist/selection/utils.d.ts.map +1 -1
  637. package/dist/separator/createSeparator.d.ts +3 -1
  638. package/dist/separator/createSeparator.d.ts.map +1 -1
  639. package/dist/slider/createSlider.d.ts +1 -6
  640. package/dist/slider/createSlider.d.ts.map +1 -1
  641. package/dist/spinbutton/createSpinButton.d.ts +0 -9
  642. package/dist/spinbutton/createSpinButton.d.ts.map +1 -1
  643. package/dist/spinbutton/intl.d.ts.map +1 -1
  644. package/dist/ssr/index.d.ts +3 -9
  645. package/dist/ssr/index.d.ts.map +1 -1
  646. package/dist/ssr/index.js +47 -26
  647. package/dist/ssr/index.js.map +1 -1
  648. package/dist/ssr/index.jsx +47 -26
  649. package/dist/ssr/index.jsx.map +1 -1
  650. package/dist/steplist/createStepList.d.ts +1 -1
  651. package/dist/steplist/createStepList.d.ts.map +1 -1
  652. package/dist/switch/createSwitch.d.ts +2 -1
  653. package/dist/switch/createSwitch.d.ts.map +1 -1
  654. package/dist/table/createTable.d.ts +1 -5
  655. package/dist/table/createTable.d.ts.map +1 -1
  656. package/dist/table/createTableCell.d.ts +1 -5
  657. package/dist/table/createTableCell.d.ts.map +1 -1
  658. package/dist/table/createTableColumnHeader.d.ts +1 -5
  659. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  660. package/dist/table/createTableColumnResize.d.ts +2 -8
  661. package/dist/table/createTableColumnResize.d.ts.map +1 -1
  662. package/dist/table/createTableHeaderRow.d.ts +1 -5
  663. package/dist/table/createTableHeaderRow.d.ts.map +1 -1
  664. package/dist/table/createTableRow.d.ts +1 -5
  665. package/dist/table/createTableRow.d.ts.map +1 -1
  666. package/dist/table/createTableRowGroup.d.ts +1 -5
  667. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  668. package/dist/table/createTableSelectAllCheckbox.d.ts +1 -5
  669. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  670. package/dist/table/createTableSelectionCheckbox.d.ts +1 -5
  671. package/dist/table/createTableSelectionCheckbox.d.ts.map +1 -1
  672. package/dist/table/index.d.ts +2 -2
  673. package/dist/table/intl/index.d.ts +23 -0
  674. package/dist/table/intl/index.d.ts.map +1 -0
  675. package/dist/table/types.d.ts +44 -2
  676. package/dist/table/types.d.ts.map +1 -1
  677. package/dist/table/utils.d.ts.map +1 -1
  678. package/dist/tabs/createTabs.d.ts +5 -9
  679. package/dist/tabs/createTabs.d.ts.map +1 -1
  680. package/dist/tag/createTag.d.ts +4 -8
  681. package/dist/tag/createTag.d.ts.map +1 -1
  682. package/dist/tag/createTagGroup.d.ts +0 -9
  683. package/dist/tag/createTagGroup.d.ts.map +1 -1
  684. package/dist/tag/intl/index.d.ts +14 -0
  685. package/dist/tag/intl/index.d.ts.map +1 -0
  686. package/dist/textfield/createTextField.d.ts +6 -8
  687. package/dist/textfield/createTextField.d.ts.map +1 -1
  688. package/dist/toast/createToast.d.ts +1 -8
  689. package/dist/toast/createToast.d.ts.map +1 -1
  690. package/dist/toast/createToastRegion.d.ts +7 -18
  691. package/dist/toast/createToastRegion.d.ts.map +1 -1
  692. package/dist/toast/intl/index.d.ts +14 -0
  693. package/dist/toast/intl/index.d.ts.map +1 -0
  694. package/dist/toggle/createToggle.d.ts +8 -1
  695. package/dist/toggle/createToggle.d.ts.map +1 -1
  696. package/dist/tokenfield/createToken.d.ts +15 -0
  697. package/dist/tokenfield/createToken.d.ts.map +1 -0
  698. package/dist/tokenfield/createTokenField.d.ts +52 -0
  699. package/dist/tokenfield/createTokenField.d.ts.map +1 -0
  700. package/dist/tokenfield/index.d.ts +3 -0
  701. package/dist/tokenfield/index.d.ts.map +1 -0
  702. package/dist/tokenfield/index.js +2 -0
  703. package/dist/tokenfield/index.jsx +2 -0
  704. package/dist/toolbar/createToolbar.d.ts +1 -1
  705. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  706. package/dist/tooltip/createPreviewTrigger.d.ts +23 -0
  707. package/dist/tooltip/createPreviewTrigger.d.ts.map +1 -0
  708. package/dist/tooltip/createSafeArea.d.ts +20 -0
  709. package/dist/tooltip/createSafeArea.d.ts.map +1 -0
  710. package/dist/tooltip/createTooltip.d.ts +1 -1
  711. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  712. package/dist/tooltip/createTooltipTrigger.d.ts +1 -9
  713. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  714. package/dist/tooltip/index.d.ts +2 -0
  715. package/dist/tooltip/index.d.ts.map +1 -1
  716. package/dist/tooltip/index.js +2 -2
  717. package/dist/tooltip/index.jsx +2 -2
  718. package/dist/tooltip/intl/index.d.ts +4 -0
  719. package/dist/tooltip/intl/index.d.ts.map +1 -0
  720. package/dist/tree/createTree.d.ts +1 -5
  721. package/dist/tree/createTree.d.ts.map +1 -1
  722. package/dist/tree/createTreeItem.d.ts +1 -5
  723. package/dist/tree/createTreeItem.d.ts.map +1 -1
  724. package/dist/tree/createTreeSelectionCheckbox.d.ts +1 -5
  725. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  726. package/dist/tree/intl/index.d.ts +14 -0
  727. package/dist/tree/intl/index.d.ts.map +1 -0
  728. package/dist/tree/types.d.ts +35 -2
  729. package/dist/tree/types.d.ts.map +1 -1
  730. package/dist/utils/ShadowTreeWalker.d.ts +30 -0
  731. package/dist/utils/ShadowTreeWalker.d.ts.map +1 -0
  732. package/dist/utils/animation.d.ts +1 -29
  733. package/dist/utils/animation.d.ts.map +1 -1
  734. package/dist/utils/capture.d.ts +14 -0
  735. package/dist/utils/capture.d.ts.map +1 -0
  736. package/dist/utils/createDescription.d.ts +1 -25
  737. package/dist/utils/createDescription.d.ts.map +1 -1
  738. package/dist/utils/dom.d.ts +45 -11
  739. package/dist/utils/dom.d.ts.map +1 -1
  740. package/dist/utils/domAttrs.d.ts +16 -0
  741. package/dist/utils/domAttrs.d.ts.map +1 -0
  742. package/dist/utils/env.d.ts +2 -0
  743. package/dist/utils/env.d.ts.map +1 -1
  744. package/dist/utils/events.d.ts +0 -4
  745. package/dist/utils/events.d.ts.map +1 -1
  746. package/dist/utils/filterDOMProps.d.ts +0 -6
  747. package/dist/utils/filterDOMProps.d.ts.map +1 -1
  748. package/dist/utils/focus.d.ts +19 -6
  749. package/dist/utils/focus.d.ts.map +1 -1
  750. package/dist/utils/geometry.d.ts +1 -1
  751. package/dist/utils/geometry.d.ts.map +1 -1
  752. package/dist/utils/getMetaValue.d.ts +13 -0
  753. package/dist/utils/getMetaValue.d.ts.map +1 -0
  754. package/dist/utils/getNonce.d.ts +9 -0
  755. package/dist/utils/getNonce.d.ts.map +1 -0
  756. package/dist/utils/globalListeners.d.ts +0 -6
  757. package/dist/utils/globalListeners.d.ts.map +1 -1
  758. package/dist/utils/index.d.ts +6 -1
  759. package/dist/utils/index.d.ts.map +1 -1
  760. package/dist/utils/index.js +7 -4
  761. package/dist/utils/index.jsx +7 -4
  762. package/dist/utils/keyboard.d.ts +0 -4
  763. package/dist/utils/keyboard.d.ts.map +1 -1
  764. package/dist/utils/mergeProps.d.ts +5 -2
  765. package/dist/utils/mergeProps.d.ts.map +1 -1
  766. package/dist/utils/owner.d.ts +14 -0
  767. package/dist/utils/owner.d.ts.map +1 -0
  768. package/dist/utils/platform.d.ts +0 -4
  769. package/dist/utils/platform.d.ts.map +1 -1
  770. package/dist/utils/reactivity.d.ts +2 -0
  771. package/dist/utils/reactivity.d.ts.map +1 -1
  772. package/dist/utils/refs.d.ts +20 -0
  773. package/dist/utils/refs.d.ts.map +1 -0
  774. package/dist/utils/runAfterTransition.d.ts +2 -0
  775. package/dist/utils/runAfterTransition.d.ts.map +1 -0
  776. package/dist/utils/scrollIntoView.d.ts +0 -4
  777. package/dist/utils/scrollIntoView.d.ts.map +1 -1
  778. package/dist/utils/splitProps.d.ts +17 -0
  779. package/dist/utils/splitProps.d.ts.map +1 -0
  780. package/dist/utils/textSelection.d.ts +0 -8
  781. package/dist/utils/textSelection.d.ts.map +1 -1
  782. package/dist/virtualizer/ScrollView.d.ts +38 -0
  783. package/dist/virtualizer/ScrollView.d.ts.map +1 -0
  784. package/dist/virtualizer/index.d.ts +3 -0
  785. package/dist/virtualizer/index.d.ts.map +1 -0
  786. package/dist/virtualizer/index.js +2 -0
  787. package/dist/virtualizer/index.jsx +2 -0
  788. package/dist/virtualizer/utils.d.ts +10 -0
  789. package/dist/virtualizer/utils.d.ts.map +1 -0
  790. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -9
  791. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  792. package/dist/visually-hidden/index.js +1 -1
  793. package/dist/visually-hidden/index.jsx +1 -1
  794. package/package.json +28 -11
  795. package/src/actiongroup/createActionGroup.ts +48 -23
  796. package/src/autocomplete/createAutocomplete.ts +32 -5
  797. package/src/autocomplete/intl/ar-AE.json +3 -0
  798. package/src/autocomplete/intl/bg-BG.json +3 -0
  799. package/src/autocomplete/intl/cs-CZ.json +3 -0
  800. package/src/autocomplete/intl/da-DK.json +3 -0
  801. package/src/autocomplete/intl/de-DE.json +3 -0
  802. package/src/autocomplete/intl/el-GR.json +3 -0
  803. package/src/autocomplete/intl/en-US.json +3 -0
  804. package/src/autocomplete/intl/es-ES.json +3 -0
  805. package/src/autocomplete/intl/et-EE.json +3 -0
  806. package/src/autocomplete/intl/fi-FI.json +3 -0
  807. package/src/autocomplete/intl/fr-FR.json +3 -0
  808. package/src/autocomplete/intl/he-IL.json +3 -0
  809. package/src/autocomplete/intl/hr-HR.json +3 -0
  810. package/src/autocomplete/intl/hu-HU.json +3 -0
  811. package/src/autocomplete/intl/index.ts +122 -0
  812. package/src/autocomplete/intl/it-IT.json +3 -0
  813. package/src/autocomplete/intl/ja-JP.json +3 -0
  814. package/src/autocomplete/intl/ko-KR.json +3 -0
  815. package/src/autocomplete/intl/lt-LT.json +3 -0
  816. package/src/autocomplete/intl/lv-LV.json +3 -0
  817. package/src/autocomplete/intl/nb-NO.json +3 -0
  818. package/src/autocomplete/intl/nl-NL.json +3 -0
  819. package/src/autocomplete/intl/pl-PL.json +3 -0
  820. package/src/autocomplete/intl/pt-BR.json +3 -0
  821. package/src/autocomplete/intl/pt-PT.json +3 -0
  822. package/src/autocomplete/intl/ro-RO.json +3 -0
  823. package/src/autocomplete/intl/ru-RU.json +3 -0
  824. package/src/autocomplete/intl/sk-SK.json +3 -0
  825. package/src/autocomplete/intl/sl-SI.json +3 -0
  826. package/src/autocomplete/intl/sr-SP.json +3 -0
  827. package/src/autocomplete/intl/sv-SE.json +3 -0
  828. package/src/autocomplete/intl/tr-TR.json +3 -0
  829. package/src/autocomplete/intl/uk-UA.json +3 -0
  830. package/src/autocomplete/intl/zh-CN.json +3 -0
  831. package/src/autocomplete/intl/zh-TW.json +3 -0
  832. package/src/breadcrumbs/createBreadcrumbs.ts +18 -1
  833. package/src/breadcrumbs/intl/ar-AE.json +3 -0
  834. package/src/breadcrumbs/intl/bg-BG.json +3 -0
  835. package/src/breadcrumbs/intl/cs-CZ.json +3 -0
  836. package/src/breadcrumbs/intl/da-DK.json +3 -0
  837. package/src/breadcrumbs/intl/de-DE.json +3 -0
  838. package/src/breadcrumbs/intl/el-GR.json +3 -0
  839. package/src/breadcrumbs/intl/en-US.json +3 -0
  840. package/src/breadcrumbs/intl/es-ES.json +3 -0
  841. package/src/breadcrumbs/intl/et-EE.json +3 -0
  842. package/src/breadcrumbs/intl/fi-FI.json +3 -0
  843. package/src/breadcrumbs/intl/fr-FR.json +3 -0
  844. package/src/breadcrumbs/intl/he-IL.json +3 -0
  845. package/src/breadcrumbs/intl/hr-HR.json +3 -0
  846. package/src/breadcrumbs/intl/hu-HU.json +3 -0
  847. package/src/breadcrumbs/intl/index.ts +122 -0
  848. package/src/breadcrumbs/intl/it-IT.json +3 -0
  849. package/src/breadcrumbs/intl/ja-JP.json +3 -0
  850. package/src/breadcrumbs/intl/ko-KR.json +3 -0
  851. package/src/breadcrumbs/intl/lt-LT.json +3 -0
  852. package/src/breadcrumbs/intl/lv-LV.json +3 -0
  853. package/src/breadcrumbs/intl/nb-NO.json +3 -0
  854. package/src/breadcrumbs/intl/nl-NL.json +3 -0
  855. package/src/breadcrumbs/intl/pl-PL.json +3 -0
  856. package/src/breadcrumbs/intl/pt-BR.json +3 -0
  857. package/src/breadcrumbs/intl/pt-PT.json +3 -0
  858. package/src/breadcrumbs/intl/ro-RO.json +3 -0
  859. package/src/breadcrumbs/intl/ru-RU.json +3 -0
  860. package/src/breadcrumbs/intl/sk-SK.json +3 -0
  861. package/src/breadcrumbs/intl/sl-SI.json +3 -0
  862. package/src/breadcrumbs/intl/sr-SP.json +3 -0
  863. package/src/breadcrumbs/intl/sv-SE.json +3 -0
  864. package/src/breadcrumbs/intl/tr-TR.json +3 -0
  865. package/src/breadcrumbs/intl/uk-UA.json +3 -0
  866. package/src/breadcrumbs/intl/zh-CN.json +3 -0
  867. package/src/breadcrumbs/intl/zh-TW.json +3 -0
  868. package/src/button/createButton.ts +15 -1
  869. package/src/button/createToggleButton.ts +18 -5
  870. package/src/button/createToggleButtonGroup.ts +23 -8
  871. package/src/button/types.ts +16 -0
  872. package/src/calendar/createCalendar.ts +22 -3
  873. package/src/calendar/createCalendarCell.ts +104 -15
  874. package/src/calendar/createCalendarGrid.ts +37 -13
  875. package/src/calendar/createCalendarMonthPicker.ts +14 -0
  876. package/src/calendar/createCalendarYearPicker.ts +14 -0
  877. package/src/calendar/createRangeCalendar.ts +124 -1
  878. package/src/calendar/createRangeCalendarCell.ts +179 -40
  879. package/src/calendar/intl/index.ts +37 -0
  880. package/src/calendar/utils.ts +14 -0
  881. package/src/checkbox/createCheckbox.ts +32 -17
  882. package/src/checkbox/createCheckboxGroup.ts +31 -13
  883. package/src/checkbox/createCheckboxGroupItem.ts +15 -1
  884. package/src/collections/index.ts +21 -3
  885. package/src/color/createColorArea.ts +226 -29
  886. package/src/color/createColorField.ts +98 -22
  887. package/src/color/createColorSlider.ts +24 -3
  888. package/src/color/createColorSwatch.ts +18 -1
  889. package/src/color/createColorWheel.ts +27 -5
  890. package/src/color/intl/index.ts +35 -0
  891. package/src/color/types.ts +47 -1
  892. package/src/combobox/createComboBox.ts +303 -152
  893. package/src/combobox/intl/generated-locales.ts +38 -1
  894. package/src/combobox/intl/index.ts +38 -2
  895. package/src/datepicker/createDateField.ts +35 -21
  896. package/src/datepicker/createDatePicker.ts +14 -0
  897. package/src/datepicker/createDatePickerGroup.ts +19 -11
  898. package/src/datepicker/createDateRangePicker.ts +14 -0
  899. package/src/datepicker/createDateSegment.ts +68 -12
  900. package/src/datepicker/createDisplayNames.ts +16 -1
  901. package/src/datepicker/createTimeField.ts +14 -0
  902. package/src/datepicker/intl.ts +36 -0
  903. package/src/dialog/createDialog.ts +57 -30
  904. package/src/dialog/types.ts +14 -0
  905. package/src/disclosure/createDisclosure.ts +28 -6
  906. package/src/disclosure/createDisclosureGroup.ts +3 -4
  907. package/src/dnd/DragManager.ts +55 -4
  908. package/src/dnd/DropTargetKeyboardNavigation.ts +2 -2
  909. package/src/dnd/createDrag.ts +18 -1
  910. package/src/dnd/createDraggableCollection.ts +96 -32
  911. package/src/dnd/createDraggableItem.ts +70 -30
  912. package/src/dnd/createDrop.ts +18 -1
  913. package/src/dnd/createDropIndicator.ts +92 -0
  914. package/src/dnd/createDroppableCollection.ts +106 -40
  915. package/src/dnd/createDroppableItem.ts +161 -13
  916. package/src/dnd/index.ts +3 -0
  917. package/src/dnd/intl/index.ts +77 -66
  918. package/src/dnd/types.ts +20 -1
  919. package/src/dnd/utils.ts +19 -0
  920. package/src/focus/FocusScope.tsx +542 -157
  921. package/src/focus/createAutoFocus.ts +94 -68
  922. package/src/focus/createFocusRestore.ts +16 -12
  923. package/src/focus/createHasTabbableChild.ts +78 -0
  924. package/src/focus/createVirtualFocus.ts +21 -5
  925. package/src/focus/virtualFocus.ts +1 -1
  926. package/src/form/createFormReset.ts +40 -17
  927. package/src/form/createFormValidation.ts +128 -86
  928. package/src/grid/GridKeyboardDelegate.ts +14 -0
  929. package/src/grid/createGrid.ts +17 -2
  930. package/src/grid/createGridCell.ts +17 -2
  931. package/src/grid/createGridRow.ts +17 -2
  932. package/src/grid/index.ts +2 -2
  933. package/src/grid/intl/ar-AE.json +8 -0
  934. package/src/grid/intl/bg-BG.json +8 -0
  935. package/src/grid/intl/cs-CZ.json +8 -0
  936. package/src/grid/intl/da-DK.json +8 -0
  937. package/src/grid/intl/de-DE.json +8 -0
  938. package/src/grid/intl/el-GR.json +8 -0
  939. package/src/grid/intl/en-US.json +8 -0
  940. package/src/grid/intl/es-ES.json +8 -0
  941. package/src/grid/intl/et-EE.json +8 -0
  942. package/src/grid/intl/fi-FI.json +8 -0
  943. package/src/grid/intl/fr-FR.json +8 -0
  944. package/src/grid/intl/he-IL.json +8 -0
  945. package/src/grid/intl/hr-HR.json +8 -0
  946. package/src/grid/intl/hu-HU.json +8 -0
  947. package/src/grid/intl/index.ts +127 -0
  948. package/src/grid/intl/it-IT.json +8 -0
  949. package/src/grid/intl/ja-JP.json +8 -0
  950. package/src/grid/intl/ko-KR.json +8 -0
  951. package/src/grid/intl/lt-LT.json +8 -0
  952. package/src/grid/intl/lv-LV.json +8 -0
  953. package/src/grid/intl/nb-NO.json +8 -0
  954. package/src/grid/intl/nl-NL.json +8 -0
  955. package/src/grid/intl/pl-PL.json +8 -0
  956. package/src/grid/intl/pt-BR.json +8 -0
  957. package/src/grid/intl/pt-PT.json +8 -0
  958. package/src/grid/intl/ro-RO.json +8 -0
  959. package/src/grid/intl/ru-RU.json +8 -0
  960. package/src/grid/intl/sk-SK.json +8 -0
  961. package/src/grid/intl/sl-SI.json +8 -0
  962. package/src/grid/intl/sr-SP.json +8 -0
  963. package/src/grid/intl/sv-SE.json +8 -0
  964. package/src/grid/intl/tr-TR.json +8 -0
  965. package/src/grid/intl/uk-UA.json +8 -0
  966. package/src/grid/intl/zh-CN.json +8 -0
  967. package/src/grid/intl/zh-TW.json +8 -0
  968. package/src/grid/types.ts +25 -2
  969. package/src/gridlist/createGridList.ts +172 -42
  970. package/src/gridlist/createGridListItem.ts +51 -13
  971. package/src/gridlist/createGridListSection.ts +14 -0
  972. package/src/gridlist/createGridListSelectionCheckbox.ts +31 -4
  973. package/src/gridlist/intl/ar-AE.json +4 -0
  974. package/src/gridlist/intl/bg-BG.json +4 -0
  975. package/src/gridlist/intl/cs-CZ.json +4 -0
  976. package/src/gridlist/intl/da-DK.json +4 -0
  977. package/src/gridlist/intl/de-DE.json +4 -0
  978. package/src/gridlist/intl/el-GR.json +4 -0
  979. package/src/gridlist/intl/en-US.json +4 -0
  980. package/src/gridlist/intl/es-ES.json +4 -0
  981. package/src/gridlist/intl/et-EE.json +4 -0
  982. package/src/gridlist/intl/fi-FI.json +4 -0
  983. package/src/gridlist/intl/fr-FR.json +4 -0
  984. package/src/gridlist/intl/he-IL.json +4 -0
  985. package/src/gridlist/intl/hr-HR.json +4 -0
  986. package/src/gridlist/intl/hu-HU.json +4 -0
  987. package/src/gridlist/intl/index.ts +123 -0
  988. package/src/gridlist/intl/it-IT.json +4 -0
  989. package/src/gridlist/intl/ja-JP.json +4 -0
  990. package/src/gridlist/intl/ko-KR.json +4 -0
  991. package/src/gridlist/intl/lt-LT.json +4 -0
  992. package/src/gridlist/intl/lv-LV.json +4 -0
  993. package/src/gridlist/intl/nb-NO.json +4 -0
  994. package/src/gridlist/intl/nl-NL.json +4 -0
  995. package/src/gridlist/intl/pl-PL.json +4 -0
  996. package/src/gridlist/intl/pt-BR.json +4 -0
  997. package/src/gridlist/intl/pt-PT.json +4 -0
  998. package/src/gridlist/intl/ro-RO.json +4 -0
  999. package/src/gridlist/intl/ru-RU.json +4 -0
  1000. package/src/gridlist/intl/sk-SK.json +4 -0
  1001. package/src/gridlist/intl/sl-SI.json +4 -0
  1002. package/src/gridlist/intl/sr-SP.json +4 -0
  1003. package/src/gridlist/intl/sv-SE.json +4 -0
  1004. package/src/gridlist/intl/tr-TR.json +4 -0
  1005. package/src/gridlist/intl/uk-UA.json +4 -0
  1006. package/src/gridlist/intl/zh-CN.json +4 -0
  1007. package/src/gridlist/intl/zh-TW.json +4 -0
  1008. package/src/gridlist/types.ts +54 -2
  1009. package/src/i18n/compileIcu.ts +440 -0
  1010. package/src/i18n/createCollator.ts +14 -0
  1011. package/src/i18n/createDateFormatter.ts +14 -0
  1012. package/src/i18n/createFilter.ts +14 -0
  1013. package/src/i18n/createListFormatter.ts +38 -0
  1014. package/src/i18n/createNumberFormatter.ts +14 -0
  1015. package/src/i18n/createStringFormatter.ts +64 -8
  1016. package/src/i18n/index.ts +3 -0
  1017. package/src/i18n/locale.tsx +60 -19
  1018. package/src/i18n/utils.ts +14 -0
  1019. package/src/index.ts +49 -1
  1020. package/src/interactions/FocusableProvider.tsx +28 -11
  1021. package/src/interactions/PressEvent.ts +16 -1
  1022. package/src/interactions/createContextMenu.ts +108 -0
  1023. package/src/interactions/createFocus.ts +26 -6
  1024. package/src/interactions/createFocusRing.ts +28 -13
  1025. package/src/interactions/createFocusWithin.ts +23 -3
  1026. package/src/interactions/createFocusable.ts +45 -28
  1027. package/src/interactions/createHover.ts +102 -81
  1028. package/src/interactions/createInteractionModality.ts +135 -45
  1029. package/src/interactions/createKeyboard.ts +85 -9
  1030. package/src/interactions/createKeyboardShortcutHandler.ts +157 -0
  1031. package/src/interactions/createLongPress.ts +31 -9
  1032. package/src/interactions/createMove.ts +24 -3
  1033. package/src/interactions/createPress.ts +85 -41
  1034. package/src/interactions/index.ts +1 -0
  1035. package/src/label/createField.ts +58 -63
  1036. package/src/label/createLabel.ts +21 -4
  1037. package/src/label/createLabels.ts +25 -1
  1038. package/src/landmark/createLandmark.ts +27 -4
  1039. package/src/link/createLink.ts +20 -12
  1040. package/src/listbox/createListBox.ts +86 -310
  1041. package/src/listbox/createOption.ts +50 -14
  1042. package/src/live-announcer/announce.ts +21 -6
  1043. package/src/menu/createMenu.ts +92 -5
  1044. package/src/menu/createMenuItem.ts +40 -23
  1045. package/src/menu/createMenuTrigger.ts +179 -51
  1046. package/src/menu/index.ts +2 -0
  1047. package/src/menu/intl/index.ts +130 -0
  1048. package/src/meter/createMeter.ts +20 -5
  1049. package/src/numberfield/createNumberField.ts +254 -14
  1050. package/src/overlays/ariaHideOutside.ts +76 -11
  1051. package/src/overlays/createInteractOutside.ts +74 -47
  1052. package/src/overlays/createModal.tsx +42 -27
  1053. package/src/overlays/createOverlay.ts +107 -66
  1054. package/src/overlays/createOverlayTrigger.ts +21 -6
  1055. package/src/overlays/createPreventScroll.ts +92 -62
  1056. package/src/overlays/index.ts +2 -0
  1057. package/src/overlays/intl/ar-AE.json +3 -0
  1058. package/src/overlays/intl/bg-BG.json +3 -0
  1059. package/src/overlays/intl/cs-CZ.json +3 -0
  1060. package/src/overlays/intl/da-DK.json +3 -0
  1061. package/src/overlays/intl/de-DE.json +3 -0
  1062. package/src/overlays/intl/el-GR.json +3 -0
  1063. package/src/overlays/intl/en-US.json +3 -0
  1064. package/src/overlays/intl/es-ES.json +3 -0
  1065. package/src/overlays/intl/et-EE.json +3 -0
  1066. package/src/overlays/intl/fi-FI.json +3 -0
  1067. package/src/overlays/intl/fr-FR.json +3 -0
  1068. package/src/overlays/intl/he-IL.json +3 -0
  1069. package/src/overlays/intl/hr-HR.json +3 -0
  1070. package/src/overlays/intl/hu-HU.json +3 -0
  1071. package/src/overlays/intl/index.ts +122 -0
  1072. package/src/overlays/intl/it-IT.json +3 -0
  1073. package/src/overlays/intl/ja-JP.json +3 -0
  1074. package/src/overlays/intl/ko-KR.json +3 -0
  1075. package/src/overlays/intl/lt-LT.json +3 -0
  1076. package/src/overlays/intl/lv-LV.json +3 -0
  1077. package/src/overlays/intl/nb-NO.json +3 -0
  1078. package/src/overlays/intl/nl-NL.json +3 -0
  1079. package/src/overlays/intl/pl-PL.json +3 -0
  1080. package/src/overlays/intl/pt-BR.json +3 -0
  1081. package/src/overlays/intl/pt-PT.json +3 -0
  1082. package/src/overlays/intl/ro-RO.json +3 -0
  1083. package/src/overlays/intl/ru-RU.json +3 -0
  1084. package/src/overlays/intl/sk-SK.json +3 -0
  1085. package/src/overlays/intl/sl-SI.json +3 -0
  1086. package/src/overlays/intl/sr-SP.json +3 -0
  1087. package/src/overlays/intl/sv-SE.json +3 -0
  1088. package/src/overlays/intl/tr-TR.json +3 -0
  1089. package/src/overlays/intl/uk-UA.json +3 -0
  1090. package/src/overlays/intl/zh-CN.json +3 -0
  1091. package/src/overlays/intl/zh-TW.json +3 -0
  1092. package/src/popover/calculatePosition.ts +21 -3
  1093. package/src/popover/createOverlayPosition.ts +149 -41
  1094. package/src/popover/createPopover.ts +88 -23
  1095. package/src/progress/createProgressBar.ts +19 -4
  1096. package/src/radio/createRadio.ts +80 -25
  1097. package/src/radio/createRadioGroup.ts +47 -13
  1098. package/src/searchfield/createSearchField.ts +31 -2
  1099. package/src/searchfield/intl/ar-AE.json +3 -0
  1100. package/src/searchfield/intl/bg-BG.json +3 -0
  1101. package/src/searchfield/intl/cs-CZ.json +3 -0
  1102. package/src/searchfield/intl/da-DK.json +3 -0
  1103. package/src/searchfield/intl/de-DE.json +3 -0
  1104. package/src/searchfield/intl/el-GR.json +3 -0
  1105. package/src/searchfield/intl/en-US.json +3 -0
  1106. package/src/searchfield/intl/es-ES.json +3 -0
  1107. package/src/searchfield/intl/et-EE.json +3 -0
  1108. package/src/searchfield/intl/fi-FI.json +3 -0
  1109. package/src/searchfield/intl/fr-FR.json +3 -0
  1110. package/src/searchfield/intl/he-IL.json +3 -0
  1111. package/src/searchfield/intl/hr-HR.json +3 -0
  1112. package/src/searchfield/intl/hu-HU.json +3 -0
  1113. package/src/searchfield/intl/index.ts +122 -0
  1114. package/src/searchfield/intl/it-IT.json +3 -0
  1115. package/src/searchfield/intl/ja-JP.json +3 -0
  1116. package/src/searchfield/intl/ko-KR.json +3 -0
  1117. package/src/searchfield/intl/lt-LT.json +3 -0
  1118. package/src/searchfield/intl/lv-LV.json +3 -0
  1119. package/src/searchfield/intl/nb-NO.json +3 -0
  1120. package/src/searchfield/intl/nl-NL.json +3 -0
  1121. package/src/searchfield/intl/pl-PL.json +3 -0
  1122. package/src/searchfield/intl/pt-BR.json +3 -0
  1123. package/src/searchfield/intl/pt-PT.json +3 -0
  1124. package/src/searchfield/intl/ro-RO.json +3 -0
  1125. package/src/searchfield/intl/ru-RU.json +3 -0
  1126. package/src/searchfield/intl/sk-SK.json +3 -0
  1127. package/src/searchfield/intl/sl-SI.json +3 -0
  1128. package/src/searchfield/intl/sr-SP.json +3 -0
  1129. package/src/searchfield/intl/sv-SE.json +3 -0
  1130. package/src/searchfield/intl/tr-TR.json +3 -0
  1131. package/src/searchfield/intl/uk-UA.json +3 -0
  1132. package/src/searchfield/intl/zh-CN.json +3 -0
  1133. package/src/searchfield/intl/zh-TW.json +3 -0
  1134. package/src/select/createHiddenSelect.tsx +166 -69
  1135. package/src/select/createSelect.ts +61 -18
  1136. package/src/selection/DOMLayoutDelegate.ts +14 -0
  1137. package/src/selection/ListKeyboardDelegate.ts +16 -1
  1138. package/src/selection/constants.ts +14 -0
  1139. package/src/selection/createCollectionRowInteraction.ts +75 -6
  1140. package/src/selection/createScrollIntoViewOnFocus.ts +23 -8
  1141. package/src/selection/createSelectableCollection.ts +352 -226
  1142. package/src/selection/createSelectableItem.ts +51 -12
  1143. package/src/selection/createSelectableList.ts +21 -1
  1144. package/src/selection/createTypeSelect.ts +21 -5
  1145. package/src/selection/selectItem.ts +14 -0
  1146. package/src/selection/utils.ts +15 -1
  1147. package/src/separator/createSeparator.ts +17 -1
  1148. package/src/slider/createSlider.ts +24 -18
  1149. package/src/spinbutton/createSpinButton.ts +16 -2
  1150. package/src/spinbutton/intl.ts +36 -0
  1151. package/src/ssr/index.tsx +79 -48
  1152. package/src/steplist/createStepList.ts +17 -2
  1153. package/src/switch/createSwitch.ts +25 -4
  1154. package/src/table/createTable.ts +102 -49
  1155. package/src/table/createTableCell.ts +17 -2
  1156. package/src/table/createTableColumnHeader.ts +21 -3
  1157. package/src/table/createTableColumnResize.ts +19 -3
  1158. package/src/table/createTableHeaderRow.ts +17 -2
  1159. package/src/table/createTableRow.ts +29 -22
  1160. package/src/table/createTableRowGroup.ts +18 -3
  1161. package/src/table/createTableSelectAllCheckbox.ts +30 -14
  1162. package/src/table/createTableSelectionCheckbox.ts +21 -3
  1163. package/src/table/index.ts +2 -2
  1164. package/src/table/intl/ar-AE.json +13 -0
  1165. package/src/table/intl/bg-BG.json +13 -0
  1166. package/src/table/intl/cs-CZ.json +13 -0
  1167. package/src/table/intl/da-DK.json +13 -0
  1168. package/src/table/intl/de-DE.json +13 -0
  1169. package/src/table/intl/el-GR.json +13 -0
  1170. package/src/table/intl/en-US.json +13 -0
  1171. package/src/table/intl/es-ES.json +13 -0
  1172. package/src/table/intl/et-EE.json +13 -0
  1173. package/src/table/intl/fi-FI.json +13 -0
  1174. package/src/table/intl/fr-FR.json +13 -0
  1175. package/src/table/intl/he-IL.json +13 -0
  1176. package/src/table/intl/hr-HR.json +13 -0
  1177. package/src/table/intl/hu-HU.json +13 -0
  1178. package/src/table/intl/index.ts +132 -0
  1179. package/src/table/intl/it-IT.json +13 -0
  1180. package/src/table/intl/ja-JP.json +13 -0
  1181. package/src/table/intl/ko-KR.json +13 -0
  1182. package/src/table/intl/lt-LT.json +13 -0
  1183. package/src/table/intl/lv-LV.json +13 -0
  1184. package/src/table/intl/nb-NO.json +13 -0
  1185. package/src/table/intl/nl-NL.json +13 -0
  1186. package/src/table/intl/pl-PL.json +13 -0
  1187. package/src/table/intl/pt-BR.json +13 -0
  1188. package/src/table/intl/pt-PT.json +13 -0
  1189. package/src/table/intl/ro-RO.json +13 -0
  1190. package/src/table/intl/ru-RU.json +13 -0
  1191. package/src/table/intl/sk-SK.json +13 -0
  1192. package/src/table/intl/sl-SI.json +13 -0
  1193. package/src/table/intl/sr-SP.json +13 -0
  1194. package/src/table/intl/sv-SE.json +13 -0
  1195. package/src/table/intl/tr-TR.json +13 -0
  1196. package/src/table/intl/uk-UA.json +13 -0
  1197. package/src/table/intl/zh-CN.json +13 -0
  1198. package/src/table/intl/zh-TW.json +13 -0
  1199. package/src/table/types.ts +44 -2
  1200. package/src/table/utils.ts +14 -0
  1201. package/src/tabs/createTabs.ts +104 -37
  1202. package/src/tag/createTag.ts +118 -37
  1203. package/src/tag/createTagGroup.ts +20 -12
  1204. package/src/tag/intl/ar-AE.json +4 -0
  1205. package/src/tag/intl/bg-BG.json +4 -0
  1206. package/src/tag/intl/cs-CZ.json +4 -0
  1207. package/src/tag/intl/da-DK.json +4 -0
  1208. package/src/tag/intl/de-DE.json +4 -0
  1209. package/src/tag/intl/el-GR.json +4 -0
  1210. package/src/tag/intl/en-US.json +4 -0
  1211. package/src/tag/intl/es-ES.json +4 -0
  1212. package/src/tag/intl/et-EE.json +4 -0
  1213. package/src/tag/intl/fi-FI.json +4 -0
  1214. package/src/tag/intl/fr-FR.json +4 -0
  1215. package/src/tag/intl/he-IL.json +4 -0
  1216. package/src/tag/intl/hr-HR.json +4 -0
  1217. package/src/tag/intl/hu-HU.json +4 -0
  1218. package/src/tag/intl/index.ts +123 -0
  1219. package/src/tag/intl/it-IT.json +4 -0
  1220. package/src/tag/intl/ja-JP.json +4 -0
  1221. package/src/tag/intl/ko-KR.json +4 -0
  1222. package/src/tag/intl/lt-LT.json +4 -0
  1223. package/src/tag/intl/lv-LV.json +4 -0
  1224. package/src/tag/intl/nb-NO.json +4 -0
  1225. package/src/tag/intl/nl-NL.json +4 -0
  1226. package/src/tag/intl/pl-PL.json +4 -0
  1227. package/src/tag/intl/pt-BR.json +4 -0
  1228. package/src/tag/intl/pt-PT.json +4 -0
  1229. package/src/tag/intl/ro-RO.json +4 -0
  1230. package/src/tag/intl/ru-RU.json +4 -0
  1231. package/src/tag/intl/sk-SK.json +4 -0
  1232. package/src/tag/intl/sl-SI.json +4 -0
  1233. package/src/tag/intl/sr-SP.json +4 -0
  1234. package/src/tag/intl/sv-SE.json +4 -0
  1235. package/src/tag/intl/tr-TR.json +4 -0
  1236. package/src/tag/intl/uk-UA.json +4 -0
  1237. package/src/tag/intl/zh-CN.json +4 -0
  1238. package/src/tag/intl/zh-TW.json +4 -0
  1239. package/src/textfield/createTextField.ts +104 -14
  1240. package/src/toast/createToast.ts +39 -6
  1241. package/src/toast/createToastRegion.ts +28 -15
  1242. package/src/toast/intl/ar-AE.json +4 -0
  1243. package/src/toast/intl/bg-BG.json +4 -0
  1244. package/src/toast/intl/cs-CZ.json +4 -0
  1245. package/src/toast/intl/da-DK.json +4 -0
  1246. package/src/toast/intl/de-DE.json +4 -0
  1247. package/src/toast/intl/el-GR.json +4 -0
  1248. package/src/toast/intl/en-US.json +4 -0
  1249. package/src/toast/intl/es-ES.json +4 -0
  1250. package/src/toast/intl/et-EE.json +4 -0
  1251. package/src/toast/intl/fi-FI.json +4 -0
  1252. package/src/toast/intl/fr-FR.json +4 -0
  1253. package/src/toast/intl/he-IL.json +4 -0
  1254. package/src/toast/intl/hr-HR.json +4 -0
  1255. package/src/toast/intl/hu-HU.json +4 -0
  1256. package/src/toast/intl/index.ts +123 -0
  1257. package/src/toast/intl/it-IT.json +4 -0
  1258. package/src/toast/intl/ja-JP.json +4 -0
  1259. package/src/toast/intl/ko-KR.json +4 -0
  1260. package/src/toast/intl/lt-LT.json +4 -0
  1261. package/src/toast/intl/lv-LV.json +4 -0
  1262. package/src/toast/intl/nb-NO.json +4 -0
  1263. package/src/toast/intl/nl-NL.json +4 -0
  1264. package/src/toast/intl/pl-PL.json +4 -0
  1265. package/src/toast/intl/pt-BR.json +4 -0
  1266. package/src/toast/intl/pt-PT.json +4 -0
  1267. package/src/toast/intl/ro-RO.json +4 -0
  1268. package/src/toast/intl/ru-RU.json +4 -0
  1269. package/src/toast/intl/sk-SK.json +4 -0
  1270. package/src/toast/intl/sl-SI.json +4 -0
  1271. package/src/toast/intl/sr-SP.json +4 -0
  1272. package/src/toast/intl/sv-SE.json +4 -0
  1273. package/src/toast/intl/tr-TR.json +4 -0
  1274. package/src/toast/intl/uk-UA.json +4 -0
  1275. package/src/toast/intl/zh-CN.json +4 -0
  1276. package/src/toast/intl/zh-TW.json +4 -0
  1277. package/src/toggle/createToggle.ts +96 -15
  1278. package/src/tokenfield/createToken.ts +82 -0
  1279. package/src/tokenfield/createTokenField.ts +859 -0
  1280. package/src/tokenfield/index.ts +10 -0
  1281. package/src/toolbar/createToolbar.ts +26 -5
  1282. package/src/tooltip/createPreviewTrigger.ts +301 -0
  1283. package/src/tooltip/createSafeArea.ts +165 -0
  1284. package/src/tooltip/createTooltip.ts +15 -1
  1285. package/src/tooltip/createTooltipTrigger.ts +24 -3
  1286. package/src/tooltip/index.ts +7 -0
  1287. package/src/tooltip/intl/index.ts +76 -0
  1288. package/src/tree/createTree.ts +65 -46
  1289. package/src/tree/createTreeItem.ts +85 -21
  1290. package/src/tree/createTreeSelectionCheckbox.ts +29 -28
  1291. package/src/tree/intl/ar-AE.json +4 -0
  1292. package/src/tree/intl/bg-BG.json +4 -0
  1293. package/src/tree/intl/cs-CZ.json +4 -0
  1294. package/src/tree/intl/da-DK.json +4 -0
  1295. package/src/tree/intl/de-DE.json +4 -0
  1296. package/src/tree/intl/el-GR.json +4 -0
  1297. package/src/tree/intl/en-US.json +4 -0
  1298. package/src/tree/intl/es-ES.json +4 -0
  1299. package/src/tree/intl/et-EE.json +4 -0
  1300. package/src/tree/intl/fi-FI.json +4 -0
  1301. package/src/tree/intl/fr-FR.json +4 -0
  1302. package/src/tree/intl/he-IL.json +4 -0
  1303. package/src/tree/intl/hr-HR.json +4 -0
  1304. package/src/tree/intl/hu-HU.json +4 -0
  1305. package/src/tree/intl/index.ts +123 -0
  1306. package/src/tree/intl/it-IT.json +4 -0
  1307. package/src/tree/intl/ja-JP.json +4 -0
  1308. package/src/tree/intl/ko-KR.json +4 -0
  1309. package/src/tree/intl/lt-LT.json +4 -0
  1310. package/src/tree/intl/lv-LV.json +4 -0
  1311. package/src/tree/intl/nb-NO.json +4 -0
  1312. package/src/tree/intl/nl-NL.json +4 -0
  1313. package/src/tree/intl/pl-PL.json +4 -0
  1314. package/src/tree/intl/pt-BR.json +4 -0
  1315. package/src/tree/intl/pt-PT.json +4 -0
  1316. package/src/tree/intl/ro-RO.json +4 -0
  1317. package/src/tree/intl/ru-RU.json +4 -0
  1318. package/src/tree/intl/sk-SK.json +4 -0
  1319. package/src/tree/intl/sl-SI.json +4 -0
  1320. package/src/tree/intl/sr-SP.json +4 -0
  1321. package/src/tree/intl/sv-SE.json +4 -0
  1322. package/src/tree/intl/tr-TR.json +4 -0
  1323. package/src/tree/intl/uk-UA.json +4 -0
  1324. package/src/tree/intl/zh-CN.json +4 -0
  1325. package/src/tree/intl/zh-TW.json +4 -0
  1326. package/src/tree/types.ts +35 -2
  1327. package/src/utils/ShadowTreeWalker.ts +249 -0
  1328. package/src/utils/animation.ts +106 -85
  1329. package/src/utils/capture.ts +51 -0
  1330. package/src/utils/createDescription.ts +31 -8
  1331. package/src/utils/dom.ts +314 -33
  1332. package/src/utils/domAttrs.ts +84 -0
  1333. package/src/utils/env.ts +2 -0
  1334. package/src/utils/events.ts +39 -3
  1335. package/src/utils/filterDOMProps.ts +34 -2
  1336. package/src/utils/focus.ts +186 -32
  1337. package/src/utils/geometry.ts +15 -1
  1338. package/src/utils/getMetaValue.ts +57 -0
  1339. package/src/utils/getNonce.ts +40 -0
  1340. package/src/utils/globalListeners.ts +16 -3
  1341. package/src/utils/index.ts +14 -0
  1342. package/src/utils/keyboard.ts +15 -1
  1343. package/src/utils/mergeProps.ts +149 -16
  1344. package/src/utils/owner.ts +26 -0
  1345. package/src/utils/platform.ts +15 -1
  1346. package/src/utils/reactivity.ts +2 -0
  1347. package/src/utils/refs.ts +53 -0
  1348. package/src/utils/runAfterTransition.ts +117 -0
  1349. package/src/utils/scrollIntoView.ts +14 -0
  1350. package/src/utils/splitProps.ts +70 -0
  1351. package/src/utils/textSelection.ts +15 -1
  1352. package/src/virtualizer/ScrollView.ts +210 -0
  1353. package/src/virtualizer/index.ts +2 -0
  1354. package/src/virtualizer/utils.ts +100 -0
  1355. package/src/visually-hidden/createVisuallyHidden.ts +20 -4
  1356. package/dist/_chunk/createInteractionModality.js +0 -268
  1357. package/dist/_chunk/createInteractionModality.js.map +0 -1
  1358. package/dist/_chunk/createInteractionModality.jsx +0 -268
  1359. package/dist/_chunk/createInteractionModality.jsx.map +0 -1
  1360. package/dist/_chunk/focus2.js +0 -631
  1361. package/dist/_chunk/focus2.js.map +0 -1
  1362. package/dist/_chunk/focus2.jsx +0 -631
  1363. package/dist/_chunk/focus2.jsx.map +0 -1
  1364. package/dist/_chunk/visually-hidden.js.map +0 -1
  1365. package/dist/_chunk/visually-hidden.jsx.map +0 -1
  1366. package/dist/checkbox/createCheckboxGroupState.d.ts +0 -71
  1367. package/dist/checkbox/createCheckboxGroupState.d.ts.map +0 -1
  1368. package/dist/radio/createRadioGroupState.d.ts +0 -77
  1369. package/dist/radio/createRadioGroupState.d.ts.map +0 -1
  1370. package/dist/toggle/createToggleState.d.ts +0 -34
  1371. package/dist/toggle/createToggleState.d.ts.map +0 -1
  1372. package/src/checkbox/createCheckboxGroupState.ts +0 -174
  1373. package/src/radio/createRadioGroupState.ts +0 -177
  1374. package/src/toggle/createToggleState.ts +0 -86
@@ -1 +1 @@
1
- {"version":3,"file":"tag.jsx","names":["mergeProps","mergeProps"],"sources":["../../src/tag/createTagGroup.ts","../../src/tag/createTag.ts"],"sourcesContent":["/**\n * TagGroup hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a tag group component.\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n *\n * Based on @react-aria/tag useTagGroup\n */\n\nimport { createEffect, onCleanup } from \"solid-js\";\nimport { createLabel } from \"../label/createLabel\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport type { ListState, Key } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaTagGroupProps {\n /** An ID for the tag group. */\n id?: string;\n /** Whether the tag group is disabled. */\n isDisabled?: boolean;\n /** The label for the tag group. */\n label?: string;\n /** An accessible label for the tag group when no visible label is provided. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the tag group. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the tag group. */\n \"aria-describedby\"?: string;\n /** A description of the tag group. */\n description?: string;\n /** An error message for the tag group. */\n errorMessage?: string;\n /** Handler that is called when a user removes a tag. */\n onRemove?: (keys: Set<Key>) => void;\n /**\n * The layout direction, threaded from `useLocale`. A TagGroup navigates on the\n * inline axis, so ArrowLeft/ArrowRight flip under RTL (mirrors the direction\n * the ListKeyboardDelegate receives from useTagGroup).\n */\n direction?: \"ltr\" | \"rtl\";\n}\n\nexport interface TagGroupAria {\n /** Props for the tag group container element. */\n gridProps: Record<string, unknown>;\n /** Props for the tag group's visible label (if any). */\n labelProps: Record<string, unknown>;\n /** Props for the tag group description element, if any. */\n descriptionProps: Record<string, unknown>;\n /** Props for the tag group error message element, if any. */\n errorMessageProps: Record<string, unknown>;\n}\n\n// Shared data between tag group and tags\nconst tagGroupData = new WeakMap<object, TagGroupData>();\n\ninterface TagGroupData {\n id: string;\n onRemove?: (keys: Set<Key>) => void;\n direction: \"ltr\" | \"rtl\";\n}\n\nexport function getTagGroupData(state: ListState): TagGroupData | undefined {\n return tagGroupData.get(state);\n}\n\n/**\n * Provides the behavior and accessibility implementation for a tag group component.\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n */\nexport function createTagGroup<T>(\n props: MaybeAccessor<AriaTagGroupProps>,\n state: ListState<T>,\n _ref?: () => HTMLElement | null,\n): TagGroupAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const descriptionId = createId();\n const errorMessageId = createId();\n const getFallbackAriaLabel = () => {\n const p = getProps();\n return !p.label && !p[\"aria-label\"] && !p[\"aria-labelledby\"] ? \"Tag list\" : undefined;\n };\n const sharedData: TagGroupData = {\n id,\n get onRemove() {\n return getProps().onRemove;\n },\n get direction() {\n return getProps().direction ?? \"ltr\";\n },\n };\n\n // Filter DOM props\n const domProps = () =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });\n\n // Create label handling\n const { labelProps, fieldProps } = createLabel({\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"] ?? getFallbackAriaLabel();\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n labelElementType: \"span\",\n });\n\n // Share data with child tags before they create their aria state.\n tagGroupData.set(state, sharedData);\n\n // Clean up the shared state when the tag group owner is disposed.\n createEffect(() => {\n tagGroupData.set(state, sharedData);\n\n onCleanup(() => {\n if (tagGroupData.get(state) === sharedData) {\n tagGroupData.delete(state);\n }\n });\n });\n\n // Build aria-describedby\n const getAriaDescribedBy = () => {\n const p = getProps();\n const ids: string[] = [];\n if (p[\"aria-describedby\"]) {\n ids.push(p[\"aria-describedby\"]);\n }\n if (p.description) {\n ids.push(descriptionId);\n }\n if (p.errorMessage) {\n ids.push(errorMessageId);\n }\n return ids.length > 0 ? ids.join(\" \") : undefined;\n };\n\n const getRef = () => _ref?.() ?? null;\n\n // First/last navigable (non-disabled) row keys — the entry targets.\n const getFirstNavigableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getFirstKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyAfter(candidate);\n }\n return candidate;\n };\n\n const getLastNavigableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getLastKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyBefore(candidate);\n }\n return candidate;\n };\n\n // Focus marshalling — the grid container is a trampoline. Its roving tabIndex\n // is 0 only while `focusedKey == null` (see gridProps below), so a forward Tab\n // that reaches the standalone container lands on the container itself; move the\n // focused key onto the first/last row and the post-commit effect below pulls\n // REAL DOM focus there while the container rolls to tabIndex -1. Mirrors\n // useSelectableCollection's `onFocus` (via useTagGroup → useGridList). A\n // Shift+Tab arriving directly on a row is handled by the row's own focusable\n // onFocus, since every non-disabled row is a tab stop when nothing is focused.\n const onFocus = (e: FocusEvent) => {\n state.setFocused(true);\n\n // `focus` is non-bubbling in Solid, so this fires only when the container\n // itself receives focus; ignore anything that bubbled from a descendant.\n const container = e.currentTarget as HTMLElement | null;\n if (container && e.target && !container.contains(e.target as Node)) return;\n if (state.focusedKey() != null || getProps().isDisabled) return;\n\n const relatedTarget = e.relatedTarget as Element | null;\n // Focus arriving from an element that FOLLOWS the group in document order\n // means the user shift-tabbed backward into it → enter at the LAST row;\n // otherwise (forward Tab, or programmatic) enter at the FIRST.\n const enterKey =\n relatedTarget &&\n container &&\n container.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING\n ? getLastNavigableKey()\n : getFirstNavigableKey();\n if (enterKey != null) {\n state.setFocusedKey(enterKey);\n }\n };\n\n const onBlur = () => {\n state.setFocused(false);\n };\n\n // Once the roving tabindex for the focused key has committed to the DOM, move\n // browser focus onto that row (looked up by its stable data-key), mirroring\n // useSelectableCollection. Only manage focus while it already lives inside the\n // container — i.e. the user is navigating via the trampoline — so a background\n // focusedKey change never yanks focus from elsewhere on the page.\n createEffect(() => {\n const key = state.focusedKey();\n const el = getRef();\n if (!el || key == null) return;\n\n const active = document.activeElement;\n if (!active || (active !== el && !el.contains(active))) return;\n\n const target = el.querySelector<HTMLElement>(`[data-key=\"${CSS.escape(String(key))}\"]`);\n if (target && target !== active) {\n target.focus();\n }\n });\n\n return {\n get gridProps() {\n const p = getProps();\n const hasItems = state.collection().size > 0;\n\n return mergeProps(domProps(), fieldProps as Record<string, unknown>, {\n id,\n role: hasItems ? \"grid\" : \"group\",\n \"aria-multiselectable\": hasItems && state.selectionMode() === \"multiple\" ? true : undefined,\n \"aria-atomic\": false,\n \"aria-relevant\": \"additions\",\n \"aria-describedby\": getAriaDescribedBy(),\n \"aria-disabled\": p.isDisabled || undefined,\n // Roving container tabIndex mirrors useSelectableCollection: the container\n // is tabbable (0) only while nothing is focused, then rolls to -1 once a\n // row takes focus so Tab exits the group.\n tabIndex: p.isDisabled ? undefined : state.focusedKey() != null ? -1 : 0,\n onFocus,\n onBlur,\n });\n },\n get labelProps() {\n return labelProps as Record<string, unknown>;\n },\n get descriptionProps() {\n return {\n id: descriptionId,\n };\n },\n get errorMessageProps() {\n return {\n id: errorMessageId,\n };\n },\n };\n}\n","/**\n * Tag hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a tag component.\n * Tags are individual items within a TagGroup.\n *\n * Based on @react-aria/tag useTag\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createFocusable } from \"../interactions/createFocusable\";\nimport { createPress } from \"../interactions/createPress\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { getTagGroupData } from \"./createTagGroup\";\nimport type { ListState, Key } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaTagProps {\n /** The unique key for this tag. */\n key: Key;\n /** The role for the tag root. Components use row semantics inside a grid. */\n role?: \"option\" | \"row\";\n /** Whether the tag is disabled. */\n isDisabled?: boolean;\n /** A text value for the tag used for accessibility. */\n textValue?: string;\n}\n\nexport interface TagAria {\n /** Props for the tag row element. */\n rowProps: Record<string, unknown>;\n /** Props for the tag cell element. */\n gridCellProps: Record<string, unknown>;\n /** Props for the tag remove button. */\n removeButtonProps: Record<string, unknown>;\n /** Whether the tag can be removed. */\n allowsRemoving: boolean;\n /** Whether the tag is selected. */\n isSelected: boolean;\n /** Whether the tag is disabled. */\n isDisabled: boolean;\n /** Whether the tag is focused. */\n isFocused: boolean;\n /** Whether the tag is pressed. */\n isPressed: boolean;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a tag component.\n * Tags are individual items within a TagGroup.\n */\nexport function createTag<T>(\n props: MaybeAccessor<AriaTagProps>,\n state: ListState<T>,\n ref: () => HTMLElement | null,\n): TagAria {\n const getProps = () => access(props);\n const rowId = createId();\n const cellId = createId();\n const removeButtonId = createId();\n\n // Get shared data from tag group\n const getData = () => getTagGroupData(state);\n\n // Get key\n const key = () => getProps().key;\n\n // Compute states\n const isDisabled = createMemo(() => {\n const p = getProps();\n return p.isDisabled || state.isDisabled(key());\n });\n\n const isSelected = createMemo(() => {\n return state.isSelected(key());\n });\n\n const isSelectable = createMemo(() => state.selectionMode() !== \"none\");\n\n const isFocused = createMemo(() => {\n return state.focusedKey() === key();\n });\n\n const getFirstFocusableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getFirstKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyAfter(candidate);\n }\n return candidate;\n };\n\n const getLastFocusableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getLastKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyBefore(candidate);\n }\n return candidate;\n };\n\n const getNextFocusableKey = (fromKey: Key): Key | null => {\n const collection = state.collection();\n let candidate = collection.getKeyAfter(fromKey);\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyAfter(candidate);\n }\n\n if (candidate != null) {\n return candidate;\n }\n\n return getFirstFocusableKey();\n };\n\n const getPreviousFocusableKey = (fromKey: Key): Key | null => {\n const collection = state.collection();\n let candidate = collection.getKeyBefore(fromKey);\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyBefore(candidate);\n }\n\n if (candidate != null) {\n return candidate;\n }\n\n return getLastFocusableKey();\n };\n\n const focusKey = (nextKey: Key | null) => {\n if (nextKey == null) {\n return;\n }\n\n state.setFocusedKey(nextKey);\n const currentElement = ref();\n\n if (!currentElement) {\n return;\n }\n\n if (nextKey === key()) {\n currentElement.focus();\n return;\n }\n\n const tagList = currentElement.parentElement;\n if (!tagList) {\n return;\n }\n\n const nextTag = Array.from(\n tagList.querySelectorAll<HTMLElement>('[role=\"option\"], [role=\"row\"]'),\n ).find((el) => el.getAttribute(\"data-key\") === String(nextKey));\n\n nextTag?.focus();\n };\n\n // Handle press for selection\n const { pressProps, isPressed } = createPress({\n isDisabled,\n onPress: () => {\n if (!isDisabled()) {\n state.setFocusedKey(key());\n state.toggleSelection(key());\n }\n },\n });\n\n // Handle focusable\n const { focusableProps } = createFocusable(\n {\n isDisabled,\n onFocus: () => {\n state.setFocusedKey(key());\n },\n },\n ref,\n );\n\n // Handle keyboard for navigation and removal\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isDisabled()) return;\n\n // A TagGroup is inherently horizontal (useTagGroup passes\n // `orientation: 'horizontal'` to the ListKeyboardDelegate), so the inline\n // (Left/Right) axis is the navigation axis and flips under RTL, while the\n // block (Up/Down) axis stays DOM-ordered. Mirror ListKeyboardDelegate:\n // getKeyRightOf = rtl ? previous : next; getKeyLeftOf = rtl ? next : previous;\n // getKeyBelow/Above are never direction-flipped.\n const isRtl = getData()?.direction === \"rtl\";\n\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n focusKey(isRtl ? getPreviousFocusableKey(key()) : getNextFocusableKey(key()));\n return;\n case \"ArrowLeft\":\n e.preventDefault();\n focusKey(isRtl ? getNextFocusableKey(key()) : getPreviousFocusableKey(key()));\n return;\n case \"ArrowDown\":\n e.preventDefault();\n focusKey(getNextFocusableKey(key()));\n return;\n case \"ArrowUp\":\n e.preventDefault();\n focusKey(getPreviousFocusableKey(key()));\n return;\n case \"Home\":\n e.preventDefault();\n focusKey(getFirstFocusableKey());\n return;\n case \"End\":\n e.preventDefault();\n focusKey(getLastFocusableKey());\n return;\n default:\n break;\n }\n\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault();\n const data = getData();\n if (data?.onRemove) {\n // Remove selected keys if this tag is selected, otherwise just this tag\n if (isSelected()) {\n const selection = state.selectedKeys();\n const keysToRemove =\n selection === \"all\"\n ? new Set(Array.from(state.collection()).map((item) => (item as { key: Key }).key))\n : new Set(selection);\n data.onRemove(keysToRemove);\n } else {\n data.onRemove(new Set([key()]));\n }\n }\n }\n };\n\n // Compute tabIndex. Mirror useTag (vendored @react-aria/tag/src/useTag.ts):\n // tabIndex = (!isDisabled && (isFocused || focusedKey == null)) ? 0 : -1\n // Every non-disabled row is a tab stop when nothing is focused yet (so native\n // Shift+Tab from a following element lands on the LAST row); once a key is\n // focused, only that row keeps tabIndex 0 (roving single tab stop).\n const tabIndex = createMemo(() => {\n if (isDisabled()) return -1;\n return isFocused() || state.focusedKey() == null ? 0 : -1;\n });\n\n // Filter DOM props\n const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>);\n\n // Check if removal is allowed\n const allowsRemoving = createMemo(() => {\n const data = getData();\n return !!data?.onRemove;\n });\n\n const rootRole = createMemo(() => getProps().role ?? \"option\");\n\n return {\n get rowProps() {\n return mergeProps(\n domProps(),\n focusableProps as Record<string, unknown>,\n pressProps as Record<string, unknown>,\n {\n id: rowId,\n role: rootRole(),\n tabIndex: tabIndex(),\n \"data-key\": String(key()),\n \"aria-label\": getProps().textValue,\n \"aria-selected\": isSelectable() ? isSelected() : undefined,\n \"aria-disabled\": isDisabled() || undefined,\n onKeyDown: handleKeyDown,\n },\n );\n },\n get gridCellProps() {\n return {\n id: cellId,\n role: \"gridcell\",\n \"aria-describedby\": allowsRemoving() ? removeButtonId : undefined,\n };\n },\n get removeButtonProps() {\n const data = getData();\n return {\n id: removeButtonId,\n \"aria-label\": \"Remove\",\n \"aria-labelledby\": `${removeButtonId} ${rowId}`,\n isDisabled: isDisabled(),\n onPress: () => {\n if (data?.onRemove && !isDisabled()) {\n data.onRemove(new Set([key()]));\n }\n },\n };\n },\n get allowsRemoving() {\n return allowsRemoving();\n },\n get isSelected() {\n return isSelected();\n },\n get isDisabled() {\n return isDisabled();\n },\n get isFocused() {\n return isFocused();\n },\n get isPressed() {\n return isPressed();\n },\n };\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"tag.jsx","names":["arAE","bgBG","csCZ","daDK","deDE","elGR","enUS","esES","etEE","fiFI","frFR","heIL","hrHR","huHU","itIT","jaJP","koKR","ltLT","lvLV","nbNO","nlNL","plPL","ptBR","ptPT","roRO","ruRU","skSK","slSI","srSP","svSE","trTR","ukUA","zhCN","zhTW"],"sources":["../../src/tag/createTagGroup.ts","../../src/tag/intl/ar-AE.json","../../src/tag/intl/bg-BG.json","../../src/tag/intl/cs-CZ.json","../../src/tag/intl/da-DK.json","../../src/tag/intl/de-DE.json","../../src/tag/intl/el-GR.json","../../src/tag/intl/en-US.json","../../src/tag/intl/es-ES.json","../../src/tag/intl/et-EE.json","../../src/tag/intl/fi-FI.json","../../src/tag/intl/fr-FR.json","../../src/tag/intl/he-IL.json","../../src/tag/intl/hr-HR.json","../../src/tag/intl/hu-HU.json","../../src/tag/intl/it-IT.json","../../src/tag/intl/ja-JP.json","../../src/tag/intl/ko-KR.json","../../src/tag/intl/lt-LT.json","../../src/tag/intl/lv-LV.json","../../src/tag/intl/nb-NO.json","../../src/tag/intl/nl-NL.json","../../src/tag/intl/pl-PL.json","../../src/tag/intl/pt-BR.json","../../src/tag/intl/pt-PT.json","../../src/tag/intl/ro-RO.json","../../src/tag/intl/ru-RU.json","../../src/tag/intl/sk-SK.json","../../src/tag/intl/sl-SI.json","../../src/tag/intl/sr-SP.json","../../src/tag/intl/sv-SE.json","../../src/tag/intl/tr-TR.json","../../src/tag/intl/uk-UA.json","../../src/tag/intl/zh-CN.json","../../src/tag/intl/zh-TW.json","../../src/tag/intl/index.ts","../../src/tag/createTag.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/tag/useTagGroup.ts\n\n/**\n * TagGroup hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a tag group component.\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n *\n * Based on @react-aria/tag useTagGroup\n */\n\nimport { onCleanup, createTrackedEffect } from \"solid-js\";\nimport { createLabel } from \"../label/createLabel\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport type { ListState, Key } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaTagGroupProps {\n /** An ID for the tag group. */\n id?: string;\n /** Whether the tag group is disabled. */\n isDisabled?: boolean;\n /** The label for the tag group. */\n label?: string;\n /** An accessible label for the tag group when no visible label is provided. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the tag group. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the tag group. */\n \"aria-describedby\"?: string;\n /** A description of the tag group. */\n description?: string;\n /** An error message for the tag group. */\n errorMessage?: string;\n /** Handler that is called when a user removes a tag. */\n onRemove?: (keys: Set<Key>) => void;\n /**\n * The layout direction, threaded from `useLocale`. A TagGroup navigates on the\n * inline axis, so ArrowLeft/ArrowRight flip under RTL (mirrors the direction\n * the ListKeyboardDelegate receives from useTagGroup).\n */\n direction?: \"ltr\" | \"rtl\";\n}\n\nexport interface TagGroupAria {\n /** Props for the tag group container element. */\n gridProps: Record<string, unknown>;\n /** Props for the tag group's visible label (if any). */\n labelProps: Record<string, unknown>;\n /** Props for the tag group description element, if any. */\n descriptionProps: Record<string, unknown>;\n /** Props for the tag group error message element, if any. */\n errorMessageProps: Record<string, unknown>;\n}\n\n// Shared data between tag group and tags\nconst tagGroupData = new WeakMap<object, TagGroupData>();\n\ninterface TagGroupData {\n id: string;\n onRemove?: (keys: Set<Key>) => void;\n direction: \"ltr\" | \"rtl\";\n}\n\nexport function getTagGroupData(state: ListState): TagGroupData | undefined {\n return tagGroupData.get(state);\n}\n\n/**\n * Provides the behavior and accessibility implementation for a tag group component.\n * A tag group is a focusable list of labels, categories, keywords, filters, or other items,\n * with support for keyboard navigation, selection, and removal.\n */\nexport function createTagGroup<T>(\n props: MaybeAccessor<AriaTagGroupProps>,\n state: ListState<T>,\n _ref?: () => HTMLElement | null,\n): TagGroupAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const descriptionId = createId();\n const errorMessageId = createId();\n const getFallbackAriaLabel = () => {\n const p = getProps();\n return !p.label && !p[\"aria-label\"] && !p[\"aria-labelledby\"] ? \"Tag list\" : undefined;\n };\n const sharedData: TagGroupData = {\n id,\n get onRemove() {\n return getProps().onRemove;\n },\n get direction() {\n return getProps().direction ?? \"ltr\";\n },\n };\n\n // Filter DOM props\n const domProps = () =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });\n\n // Create label handling\n const { labelProps, fieldProps } = createLabel({\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"] ?? getFallbackAriaLabel();\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n labelElementType: \"span\",\n });\n\n // Share data with child tags before they create their aria state.\n tagGroupData.set(state, sharedData);\n onCleanup(() => {\n if (tagGroupData.get(state) === sharedData) {\n tagGroupData.delete(state);\n }\n });\n\n // Build aria-describedby\n const getAriaDescribedBy = () => {\n const p = getProps();\n const ids: string[] = [];\n if (p[\"aria-describedby\"]) {\n ids.push(p[\"aria-describedby\"]);\n }\n if (p.description) {\n ids.push(descriptionId);\n }\n if (p.errorMessage) {\n ids.push(errorMessageId);\n }\n return ids.length > 0 ? ids.join(\" \") : undefined;\n };\n\n const getRef = () => _ref?.() ?? null;\n\n // First/last navigable (non-disabled) row keys — the entry targets.\n const getFirstNavigableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getFirstKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyAfter(candidate);\n }\n return candidate;\n };\n\n const getLastNavigableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getLastKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyBefore(candidate);\n }\n return candidate;\n };\n\n // Focus marshalling — the grid container is a trampoline. Its roving tabIndex\n // is 0 only while `focusedKey == null` (see gridProps below), so a forward Tab\n // that reaches the standalone container lands on the container itself; move the\n // focused key onto the first/last row and the post-commit effect below pulls\n // REAL DOM focus there while the container rolls to tabIndex -1. Mirrors\n // useSelectableCollection's `onFocus` (via useTagGroup → useGridList). A\n // Shift+Tab arriving directly on a row is handled by the row's own focusable\n // onFocus, since every non-disabled row is a tab stop when nothing is focused.\n const onFocus = (e: FocusEvent) => {\n state.setFocused(true);\n\n // `focus` is non-bubbling in Solid, so this fires only when the container\n // itself receives focus; ignore anything that bubbled from a descendant.\n const container = e.currentTarget as HTMLElement | null;\n if (container && e.target && !container.contains(e.target as Node)) return;\n if (state.focusedKey() != null || getProps().isDisabled) return;\n\n const relatedTarget = e.relatedTarget as Element | null;\n // Focus arriving from an element that FOLLOWS the group in document order\n // means the user shift-tabbed backward into it → enter at the LAST row;\n // otherwise (forward Tab, or programmatic) enter at the FIRST.\n const enterKey =\n relatedTarget &&\n container &&\n container.compareDocumentPosition(relatedTarget) & Node.DOCUMENT_POSITION_FOLLOWING\n ? getLastNavigableKey()\n : getFirstNavigableKey();\n if (enterKey != null) {\n state.setFocusedKey(enterKey);\n }\n };\n\n const onBlur = () => {\n state.setFocused(false);\n };\n\n // Once the roving tabindex for the focused key has committed to the DOM, move\n // browser focus onto that row (looked up by its stable data-key), mirroring\n // useSelectableCollection. Only manage focus while it already lives inside the\n // container — i.e. the user is navigating via the trampoline — so a background\n // focusedKey change never yanks focus from elsewhere on the page.\n createTrackedEffect(() => {\n const key = state.focusedKey();\n const el = getRef();\n if (!el || key == null) return;\n\n const active = document.activeElement;\n if (!active || (active !== el && !el.contains(active))) return;\n\n const target = el.querySelector<HTMLElement>(`[data-key=\"${CSS.escape(String(key))}\"]`);\n if (target && target !== active) {\n target.focus();\n }\n });\n\n return {\n get gridProps() {\n const p = getProps();\n const hasItems = state.collection().size > 0;\n\n return mergeProps(domProps(), fieldProps as Record<string, unknown>, {\n id,\n role: hasItems ? \"grid\" : \"group\",\n \"aria-multiselectable\": hasItems && state.selectionMode() === \"multiple\" ? true : undefined,\n \"aria-atomic\": false,\n \"aria-relevant\": \"additions\",\n \"aria-describedby\": getAriaDescribedBy(),\n \"aria-disabled\": p.isDisabled || undefined,\n // Roving container tabIndex mirrors useSelectableCollection: the container\n // is tabbable (0) only while nothing is focused, then rolls to -1 once a\n // row takes focus so Tab exits the group.\n tabIndex: p.isDisabled ? undefined : state.focusedKey() != null ? -1 : 0,\n onFocus,\n onBlur,\n });\n },\n get labelProps() {\n return labelProps as Record<string, unknown>;\n },\n get descriptionProps() {\n return {\n id: descriptionId,\n };\n },\n get errorMessageProps() {\n return {\n id: errorMessageId,\n };\n },\n };\n}\n","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","","// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/ar-AE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/bg-BG.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/cs-CZ.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/da-DK.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/de-DE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/el-GR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/en-US.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/es-ES.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/et-EE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/fi-FI.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/fr-FR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/he-IL.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/hr-HR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/hu-HU.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/it-IT.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/ja-JP.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/ko-KR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/lt-LT.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/lv-LV.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/nb-NO.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/nl-NL.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/pl-PL.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/pt-BR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/pt-PT.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/ro-RO.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/ru-RU.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/sk-SK.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/sl-SI.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/sr-SP.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/sv-SE.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/tr-TR.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/uk-UA.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/zh-CN.json\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/intl/tag/zh-TW.json\n\n// Ported from @react-aria/tag intl catalog.\n\n/**\n * tag internationalization strings.\n *\n * Copied verbatim from @react-aria/tag intl JSON (RAC 1.21.0 / react-aria pin f56660b).\n * LocalizedStringDictionary resolves the locale fallback chain\n * (locale → language → sibling region → en-US).\n */\n\nimport type { LocalizedStrings } from \"@internationalized/string\";\n\nimport arAE from \"./ar-AE.json\" with { type: \"json\" };\nimport bgBG from \"./bg-BG.json\" with { type: \"json\" };\nimport csCZ from \"./cs-CZ.json\" with { type: \"json\" };\nimport daDK from \"./da-DK.json\" with { type: \"json\" };\nimport deDE from \"./de-DE.json\" with { type: \"json\" };\nimport elGR from \"./el-GR.json\" with { type: \"json\" };\nimport enUS from \"./en-US.json\" with { type: \"json\" };\nimport esES from \"./es-ES.json\" with { type: \"json\" };\nimport etEE from \"./et-EE.json\" with { type: \"json\" };\nimport fiFI from \"./fi-FI.json\" with { type: \"json\" };\nimport frFR from \"./fr-FR.json\" with { type: \"json\" };\nimport heIL from \"./he-IL.json\" with { type: \"json\" };\nimport hrHR from \"./hr-HR.json\" with { type: \"json\" };\nimport huHU from \"./hu-HU.json\" with { type: \"json\" };\nimport itIT from \"./it-IT.json\" with { type: \"json\" };\nimport jaJP from \"./ja-JP.json\" with { type: \"json\" };\nimport koKR from \"./ko-KR.json\" with { type: \"json\" };\nimport ltLT from \"./lt-LT.json\" with { type: \"json\" };\nimport lvLV from \"./lv-LV.json\" with { type: \"json\" };\nimport nbNO from \"./nb-NO.json\" with { type: \"json\" };\nimport nlNL from \"./nl-NL.json\" with { type: \"json\" };\nimport plPL from \"./pl-PL.json\" with { type: \"json\" };\nimport ptBR from \"./pt-BR.json\" with { type: \"json\" };\nimport ptPT from \"./pt-PT.json\" with { type: \"json\" };\nimport roRO from \"./ro-RO.json\" with { type: \"json\" };\nimport ruRU from \"./ru-RU.json\" with { type: \"json\" };\nimport skSK from \"./sk-SK.json\" with { type: \"json\" };\nimport slSI from \"./sl-SI.json\" with { type: \"json\" };\nimport srSP from \"./sr-SP.json\" with { type: \"json\" };\nimport svSE from \"./sv-SE.json\" with { type: \"json\" };\nimport trTR from \"./tr-TR.json\" with { type: \"json\" };\nimport ukUA from \"./uk-UA.json\" with { type: \"json\" };\nimport zhCN from \"./zh-CN.json\" with { type: \"json\" };\nimport zhTW from \"./zh-TW.json\" with { type: \"json\" };\n\nexport type TagIntlStrings = {\n removeDescription: string;\n removeButtonLabel: string;\n};\n\nexport const tagIntlStrings: LocalizedStrings<keyof TagIntlStrings, string> = {\n \"ar-AE\": arAE,\n \"bg-BG\": bgBG,\n \"cs-CZ\": csCZ,\n \"da-DK\": daDK,\n \"de-DE\": deDE,\n \"el-GR\": elGR,\n \"en-US\": enUS,\n \"es-ES\": esES,\n \"et-EE\": etEE,\n \"fi-FI\": fiFI,\n \"fr-FR\": frFR,\n \"he-IL\": heIL,\n \"hr-HR\": hrHR,\n \"hu-HU\": huHU,\n \"it-IT\": itIT,\n \"ja-JP\": jaJP,\n \"ko-KR\": koKR,\n \"lt-LT\": ltLT,\n \"lv-LV\": lvLV,\n \"nb-NO\": nbNO,\n \"nl-NL\": nlNL,\n \"pl-PL\": plPL,\n \"pt-BR\": ptBR,\n \"pt-PT\": ptPT,\n \"ro-RO\": roRO,\n \"ru-RU\": ruRU,\n \"sk-SK\": skSK,\n \"sl-SI\": slSI,\n \"sr-SP\": srSP,\n \"sv-SE\": svSE,\n \"tr-TR\": trTR,\n \"uk-UA\": ukUA,\n \"zh-CN\": zhCN,\n \"zh-TW\": zhTW,\n};\n","/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/tag/useTag.ts\n\n/**\n * Tag hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a tag component.\n * Tags are individual items within a TagGroup.\n *\n * Based on @react-aria/tag useTag\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createFocusRing } from \"../interactions/createFocusRing\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { createId } from \"../ssr\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { createStringFormatter } from \"../i18n\";\nimport { getTagGroupData } from \"./createTagGroup\";\nimport { tagIntlStrings } from \"./intl\";\nimport { createSelectableItem, type SelectableItemState } from \"../selection/createSelectableItem\";\nimport type { ListState, Key } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaTagProps {\n /** The unique key for this tag. */\n key: Key;\n /** The role for the tag root. Components use row semantics inside a grid. */\n role?: \"option\" | \"row\";\n /** Whether the tag is disabled. */\n isDisabled?: boolean;\n /** A text value for the tag used for accessibility. */\n textValue?: string;\n /** Handler called when the tag is activated (Enter, or press when selectionMode is none). */\n onAction?: () => void;\n}\n\nexport interface TagAria {\n /** Props for the tag row element. */\n rowProps: Record<string, unknown>;\n /** Props for the tag cell element. */\n gridCellProps: Record<string, unknown>;\n /** Props for the tag remove button. */\n removeButtonProps: Record<string, unknown>;\n /** Whether the tag can be removed. */\n allowsRemoving: boolean;\n /** Whether the tag is selected. */\n isSelected: boolean;\n /** Whether the tag is disabled. */\n isDisabled: boolean;\n /** Whether the tag is focused. */\n isFocused: boolean;\n /** Whether the tag is keyboard focused. */\n isFocusVisible: boolean;\n /** Whether the tag is pressed. */\n isPressed: boolean;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a tag component.\n * Tags are individual items within a TagGroup.\n */\nexport function createTag<T>(\n props: MaybeAccessor<AriaTagProps>,\n state: ListState<T>,\n ref: () => HTMLElement | null,\n): TagAria {\n const getProps = () => access(props);\n const stringFormatter = createStringFormatter(tagIntlStrings, \"@react-aria/tag\");\n const rowId = createId();\n const cellId = createId();\n const removeButtonId = createId();\n\n // Get shared data from tag group\n const getData = () => getTagGroupData(state);\n\n // Get key\n const key = () => getProps().key;\n\n // Compute states\n const isDisabled = createMemo(() => {\n const p = getProps();\n return p.isDisabled || state.isDisabled(key());\n });\n\n const isSelected = createMemo(() => {\n return state.isSelected(key());\n });\n\n const isSelectable = createMemo(() => state.selectionMode() !== \"none\");\n\n const isFocused = createMemo(() => {\n return state.focusedKey() === key();\n });\n\n const getFirstFocusableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getFirstKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyAfter(candidate);\n }\n return candidate;\n };\n\n const getLastFocusableKey = (): Key | null => {\n const collection = state.collection();\n let candidate = collection.getLastKey();\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyBefore(candidate);\n }\n return candidate;\n };\n\n const getNextFocusableKey = (fromKey: Key): Key | null => {\n const collection = state.collection();\n let candidate = collection.getKeyAfter(fromKey);\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyAfter(candidate);\n }\n\n if (candidate != null) {\n return candidate;\n }\n\n return getFirstFocusableKey();\n };\n\n const getPreviousFocusableKey = (fromKey: Key): Key | null => {\n const collection = state.collection();\n let candidate = collection.getKeyBefore(fromKey);\n while (candidate != null && state.isDisabled(candidate)) {\n candidate = collection.getKeyBefore(candidate);\n }\n\n if (candidate != null) {\n return candidate;\n }\n\n return getLastFocusableKey();\n };\n\n const focusKey = (nextKey: Key | null) => {\n if (nextKey == null) {\n return;\n }\n\n state.setFocusedKey(nextKey);\n const currentElement = ref();\n\n if (!currentElement) {\n return;\n }\n\n if (nextKey === key()) {\n currentElement.focus();\n return;\n }\n\n const tagList = currentElement.parentElement;\n if (!tagList) {\n return;\n }\n\n const nextTag = Array.from(\n tagList.querySelectorAll<HTMLElement>('[role=\"option\"], [role=\"row\"]'),\n ).find((el) => el.getAttribute(\"data-key\") === String(nextKey));\n\n nextTag?.focus();\n // RAC useGridList selectOnFocus when selectionBehavior is replace.\n if (\n nextKey != null &&\n state.selectionManager.selectionMode !== \"none\" &&\n state.selectionManager.selectionBehavior === \"replace\"\n ) {\n state.selectionManager.replaceSelection(nextKey);\n }\n };\n\n const removeAndRestoreFocus = (keysToRemove: Set<Key>) => {\n const data = getData();\n if (!data?.onRemove) return;\n const current = key();\n let nextKey = getNextFocusableKey(current);\n if (nextKey === current) {\n nextKey = getPreviousFocusableKey(current);\n }\n if (nextKey === current) {\n nextKey = null;\n }\n data.onRemove(keysToRemove);\n if (nextKey == null) {\n state.setFocusedKey(null);\n return;\n }\n // The removed node blurs the grid (`setFocused(false)`) and Solid may\n // reconcile the remaining rows in this turn. Restore after that commit so\n // the next tag is in the DOM and collection-is-focused is true again.\n queueMicrotask(() => {\n state.setFocused(true);\n state.setFocusedKey(nextKey);\n const nextTag = document.querySelector<HTMLElement>(\n `[data-key=\"${CSS.escape(String(nextKey))}\"]`,\n );\n nextTag?.focus();\n });\n };\n\n const selectableItem = createSelectableItem(\n () => ({\n key: key(),\n id: rowId,\n isDisabled: isDisabled(),\n onAction: getProps().onAction,\n }),\n state as SelectableItemState<T>,\n ref,\n );\n\n const { focusProps, isFocusVisible } = createFocusRing();\n\n // Compute tabIndex. Mirror useTag (vendored @react-aria/tag/src/useTag.ts):\n // tabIndex = (!isDisabled && (isFocused || focusedKey == null)) ? 0 : -1\n // Every non-disabled row is a tab stop when nothing is focused yet (so native\n // Shift+Tab from a following element lands on the LAST row); once a key is\n // focused, only that row keeps tabIndex 0 (roving single tab stop).\n const tabIndex = createMemo(() => {\n if (isDisabled()) return -1;\n return isFocused() || state.focusedKey() == null ? 0 : -1;\n });\n\n // Handle keyboard for navigation and removal\n const handleKeyDown = (e: KeyboardEvent) => {\n if (isDisabled()) return;\n\n // A TagGroup is inherently horizontal (useTagGroup passes\n // `orientation: 'horizontal'` to the ListKeyboardDelegate), so the inline\n // (Left/Right) axis is the navigation axis and flips under RTL, while the\n // block (Up/Down) axis stays DOM-ordered. Mirror ListKeyboardDelegate:\n // getKeyRightOf = rtl ? previous : next; getKeyLeftOf = rtl ? next : previous;\n // getKeyBelow/Above are never direction-flipped.\n const isRtl = getData()?.direction === \"rtl\";\n\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n focusKey(isRtl ? getPreviousFocusableKey(key()) : getNextFocusableKey(key()));\n return;\n case \"ArrowLeft\":\n e.preventDefault();\n focusKey(isRtl ? getNextFocusableKey(key()) : getPreviousFocusableKey(key()));\n return;\n case \"ArrowDown\":\n e.preventDefault();\n focusKey(getNextFocusableKey(key()));\n return;\n case \"ArrowUp\":\n e.preventDefault();\n focusKey(getPreviousFocusableKey(key()));\n return;\n case \"Home\":\n e.preventDefault();\n focusKey(getFirstFocusableKey());\n return;\n case \"End\":\n e.preventDefault();\n focusKey(getLastFocusableKey());\n return;\n case \"Tab\": {\n // RAC keyboardNavigationBehavior \"tab\": Tab from the row focuses the\n // Remove button (which stays tabIndex=-1 so Shift+Tab from After lands\n // on the focused row, not every Remove). Tab from Remove leaves the grid.\n const row = ref();\n if (!row || e.shiftKey) return;\n const removeBtn = row.querySelector<HTMLElement>(\"button\");\n if (removeBtn && document.activeElement !== removeBtn) {\n e.preventDefault();\n removeBtn.focus();\n }\n return;\n }\n case \"Escape\":\n if (state.selectionMode() !== \"none\") {\n e.preventDefault();\n state.clearSelection();\n }\n return;\n case \"a\":\n case \"A\":\n if ((e.ctrlKey || e.metaKey) && state.selectionMode() === \"multiple\") {\n e.preventDefault();\n state.selectAll();\n }\n return;\n default:\n break;\n }\n\n if (e.key === \"Delete\" || e.key === \"Backspace\") {\n e.preventDefault();\n const data = getData();\n if (data?.onRemove) {\n // Remove selected keys if this tag is selected, otherwise just this tag\n if (isSelected()) {\n const selection = state.selectedKeys();\n const keysToRemove =\n selection === \"all\"\n ? new Set(Array.from(state.collection()).map((item) => (item as { key: Key }).key))\n : new Set(selection);\n removeAndRestoreFocus(keysToRemove);\n } else {\n removeAndRestoreFocus(new Set([key()]));\n }\n }\n }\n };\n\n // Filter DOM props\n const domProps = () => filterDOMProps(getProps() as unknown as Record<string, unknown>);\n\n // Check if removal is allowed\n const allowsRemoving = createMemo(() => {\n const data = getData();\n return !!data?.onRemove;\n });\n\n const rootRole = createMemo(() => getProps().role ?? \"option\");\n\n return {\n get rowProps() {\n return mergeProps(\n domProps(),\n selectableItem.itemProps as Record<string, unknown>,\n focusProps as Record<string, unknown>,\n {\n id: rowId,\n role: rootRole(),\n tabIndex: tabIndex(),\n \"data-key\": String(key()),\n \"aria-label\": getProps().textValue,\n \"aria-selected\": isSelectable() ? isSelected() : undefined,\n \"aria-disabled\": isDisabled() || undefined,\n onKeyDown: handleKeyDown,\n },\n );\n },\n get gridCellProps() {\n return {\n id: cellId,\n role: \"gridcell\",\n \"aria-describedby\": allowsRemoving() ? removeButtonId : undefined,\n };\n },\n get removeButtonProps() {\n const data = getData();\n return {\n id: removeButtonId,\n \"aria-label\": stringFormatter().format(\"removeButtonLabel\"),\n \"aria-labelledby\": `${removeButtonId} ${rowId}`,\n isDisabled: isDisabled(),\n // Keep Removes out of the tab order. Tab from the focused row focuses\n // the button; Shift+Tab from After then lands on the row (#318).\n tabIndex: -1,\n onPress: () => {\n if (data?.onRemove && !isDisabled()) {\n removeAndRestoreFocus(new Set([key()]));\n }\n },\n };\n },\n get allowsRemoving() {\n return allowsRemoving();\n },\n get isSelected() {\n return isSelected();\n },\n get isDisabled() {\n return isDisabled();\n },\n get isFocused() {\n return isFocused();\n },\n get isFocusVisible() {\n return isFocusVisible();\n },\n get isPressed() {\n return selectableItem.isPressed();\n },\n };\n}\n"],"mappings":"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"}
@@ -1,10 +1,33 @@
1
- import { i as mergeProps } from "./env.js";
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/textfield/useTextField.ts
13
+ import { t as mergeProps } from "./mergeProps.js";
2
14
  import { t as filterDOMProps } from "./filterDOMProps.js";
3
15
  import { t as access } from "./reactivity.js";
4
16
  import { n as createFocusable } from "./createFocusable.js";
17
+ import { t as createFormValidation } from "./createFormValidation.js";
18
+ import { t as createFormReset } from "./createFormReset.js";
5
19
  import { t as createField } from "./createField.js";
20
+ import { createSignal } from "solid-js";
21
+ import { createFormValidationState } from "@proyecto-viviana/solid-stately";
6
22
  //#region src/textfield/createTextField.ts
7
23
  /**
24
+ * TextField hook for Solidaria
25
+ *
26
+ * Provides the behavior and accessibility implementation for a text field.
27
+ *
28
+ * This is a 1:1 port of @react-aria/textfield's useTextField hook.
29
+ */
30
+ /**
8
31
  * Provides the behavior and accessibility implementation for a text field.
9
32
  * Text fields allow users to input text with a keyboard.
10
33
  *
@@ -14,12 +37,56 @@ import { t as createField } from "./createField.js";
14
37
  function createTextField(props, ref) {
15
38
  const getProps = () => access(props);
16
39
  let lastInputValue;
40
+ const [inputEl, setInputEl] = createSignal(void 0, { ownedWrite: true });
41
+ const setInputRef = (el) => {
42
+ setInputEl(() => el);
43
+ if (el) ref?.(el);
44
+ };
45
+ const validationState = createFormValidationState({
46
+ get value() {
47
+ return getProps().value ?? getProps().defaultValue ?? "";
48
+ },
49
+ get isInvalid() {
50
+ return getProps().isInvalid;
51
+ },
52
+ get validationState() {
53
+ return getProps().validationState;
54
+ },
55
+ get validate() {
56
+ return getProps().validate;
57
+ },
58
+ get name() {
59
+ return getProps().name;
60
+ },
61
+ get validationBehavior() {
62
+ return getProps().validationBehavior ?? "native";
63
+ }
64
+ });
65
+ const resetValue = getProps().defaultValue ?? getProps().value ?? "";
66
+ createFormReset(() => inputEl(), resetValue, (value) => {
67
+ getProps().onChange?.(value);
68
+ });
69
+ createFormValidation({
70
+ get validationBehavior() {
71
+ return getProps().validationBehavior ?? "native";
72
+ },
73
+ focus: () => inputEl()?.focus()
74
+ }, validationState, () => inputEl());
75
+ const displayValidation = () => validationState.displayValidation();
17
76
  const eventWithCurrentTarget = (event, element) => new Proxy(event, { get(target, property, receiver) {
18
77
  if (property === "target" || property === "currentTarget") return element;
19
78
  const value = Reflect.get(target, property, receiver);
20
79
  return typeof value === "function" ? value.bind(target) : value;
21
80
  } });
22
- const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField(props);
81
+ const field = createField(() => {
82
+ const p = getProps();
83
+ const dv = displayValidation();
84
+ return {
85
+ ...p,
86
+ isInvalid: dv.isInvalid,
87
+ errorMessage: p.errorMessage || dv.validationErrors
88
+ };
89
+ });
23
90
  const { focusableProps } = createFocusable({
24
91
  get isDisabled() {
25
92
  return getProps().isDisabled;
@@ -35,11 +102,11 @@ function createTextField(props, ref) {
35
102
  onFocusChange: getProps().onFocusChange,
36
103
  onKeyDown: getProps().onKeyDown,
37
104
  onKeyUp: getProps().onKeyUp
38
- }, ref);
105
+ }, setInputRef);
39
106
  const getDomProps = () => filterDOMProps(getProps(), { labelable: true });
40
107
  const getInputProps = () => {
41
108
  const p = getProps();
42
- const isInvalid = p.isInvalid ?? false;
109
+ const isInvalid = displayValidation().isInvalid;
43
110
  const isTextarea = p.inputElementType === "textarea";
44
111
  const validationBehavior = p.validationBehavior ?? "native";
45
112
  return mergeProps(getDomProps(), {
@@ -49,6 +116,7 @@ function createTextField(props, ref) {
49
116
  "aria-required": validationBehavior === "aria" && p.isRequired || void 0,
50
117
  "aria-invalid": isInvalid || void 0,
51
118
  value: p.value ?? p.defaultValue ?? "",
119
+ ref: setInputRef,
52
120
  onChange: (e) => {
53
121
  const target = e.target;
54
122
  if (target.value !== lastInputValue) p.onChange?.(target.value);
@@ -81,26 +149,29 @@ function createTextField(props, ref) {
81
149
  lastInputValue = nextValue;
82
150
  p.onChange?.(nextValue);
83
151
  }
84
- }, focusableProps, fieldProps);
85
- };
86
- const getIsInvalid = () => {
87
- return getProps().isInvalid ?? false;
152
+ }, focusableProps, field.fieldProps);
88
153
  };
89
154
  return {
90
155
  get labelProps() {
91
- return labelProps;
156
+ return field.labelProps;
92
157
  },
93
158
  get inputProps() {
94
159
  return getInputProps();
95
160
  },
96
161
  get descriptionProps() {
97
- return descriptionProps;
162
+ return field.descriptionProps;
98
163
  },
99
164
  get errorMessageProps() {
100
- return errorMessageProps;
165
+ return field.errorMessageProps;
101
166
  },
102
167
  get isInvalid() {
103
- return getIsInvalid();
168
+ return displayValidation().isInvalid;
169
+ },
170
+ get validationErrors() {
171
+ return displayValidation().validationErrors;
172
+ },
173
+ get validationDetails() {
174
+ return displayValidation().validationDetails;
104
175
  }
105
176
  };
106
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"textfield.js","names":[],"sources":["../../src/textfield/createTextField.ts"],"sourcesContent":["/**\n * TextField hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a text field.\n *\n * This is a 1:1 port of @react-aria/textfield's useTextField hook.\n */\n\nimport { JSX } from \"solid-js\";\nimport { createField, type AriaFieldProps, type FieldAria } from \"../label\";\nimport { createFocusable, type FocusableDOMProps, type FocusableProps } from \"../interactions\";\nimport { mergeProps, filterDOMProps } from \"../utils\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaTextFieldProps extends AriaFieldProps, FocusableProps, FocusableDOMProps {\n /** The current value (controlled). */\n value?: string;\n /** The default value (uncontrolled). */\n defaultValue?: string;\n /** Handler that is called when the value changes. */\n onChange?: (value: string) => void;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is read only. */\n isReadOnly?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /** Whether to use native HTML form validation or ARIA validation semantics. */\n validationBehavior?: \"aria\" | \"native\";\n /** The type of input to render. */\n type?: \"text\" | \"search\" | \"url\" | \"tel\" | \"email\" | \"password\" | string;\n /** The input mode hint for virtual keyboards. */\n inputMode?: \"none\" | \"text\" | \"tel\" | \"url\" | \"email\" | \"numeric\" | \"decimal\" | \"search\";\n /** Hint for the enter key action on virtual keyboards. */\n enterKeyHint?: \"enter\" | \"done\" | \"go\" | \"next\" | \"previous\" | \"search\" | \"send\";\n /** The name of the input element, used when submitting an HTML form. */\n name?: string;\n /** Associates the input with a form element by id. */\n form?: string;\n /** Regex pattern to validate the input value. */\n pattern?: string;\n /** The maximum number of characters supported by the input. */\n maxLength?: number;\n /** The minimum number of characters required by the input. */\n minLength?: number;\n /** Placeholder text for the input. */\n placeholder?: string;\n /** Whether to enable auto complete. */\n autoComplete?: string;\n /** Whether to enable auto correct. */\n autoCorrect?: string;\n /** Whether to enable spell check. */\n spellCheck?: \"true\" | \"false\";\n /** Controls whether and how text input is automatically capitalized. */\n autoCapitalize?: \"off\" | \"none\" | \"on\" | \"sentences\" | \"words\" | \"characters\";\n /** The element type to use for the input. Defaults to 'input'. */\n inputElementType?: \"input\" | \"textarea\";\n\n // Clipboard events\n onCopy?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onCut?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onPaste?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n\n // Composition events\n onCompositionStart?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionEnd?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionUpdate?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n\n // Selection events\n onSelect?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, Event>;\n\n // Input events\n onBeforeInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n onInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n}\n\nexport interface TextFieldAria<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n> extends Omit<FieldAria, \"fieldProps\"> {\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<T>;\n /** Whether the text field is invalid. */\n isInvalid: boolean;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a text field.\n * Text fields allow users to input text with a keyboard.\n *\n * @param props - Props for the text field.\n * @param ref - Optional ref callback for the input element.\n */\nexport function createTextField<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n>(props: MaybeAccessor<AriaTextFieldProps>, ref?: (el: T) => void): TextFieldAria<T> {\n const getProps = () => access(props);\n let lastInputValue: string | undefined;\n\n const eventWithCurrentTarget = (\n event: InputEvent,\n element: HTMLInputElement | HTMLTextAreaElement,\n ) =>\n new Proxy(event, {\n get(target, property, receiver) {\n if (property === \"target\" || property === \"currentTarget\") {\n return element;\n }\n\n const value = Reflect.get(target, property, receiver);\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n\n // Get field accessibility props (label, description, error message)\n const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField(props);\n\n // Get focusable props\n const { focusableProps } = createFocusable(\n {\n get isDisabled() {\n return getProps().isDisabled;\n },\n get autoFocus() {\n return getProps().autoFocus;\n },\n get excludeFromTabOrder() {\n return getProps().excludeFromTabOrder;\n },\n onFocus: getProps().onFocus,\n onBlur: getProps().onBlur,\n onFocusChange: getProps().onFocusChange,\n onKeyDown: getProps().onKeyDown,\n onKeyUp: getProps().onKeyUp,\n },\n ref as ((el: HTMLElement) => void) | undefined,\n );\n\n // Filter DOM props\n const getDomProps = () =>\n filterDOMProps(getProps() as Record<string, unknown>, { labelable: true });\n\n // Build input props\n const getInputProps = (): JSX.InputHTMLAttributes<T> => {\n const p = getProps();\n const isInvalid = p.isInvalid ?? false;\n const isTextarea = p.inputElementType === \"textarea\";\n const validationBehavior = p.validationBehavior ?? \"native\";\n\n return mergeProps(\n getDomProps(),\n {\n disabled: p.isDisabled,\n readOnly: p.isReadOnly,\n required: validationBehavior === \"native\" && p.isRequired,\n \"aria-required\": (validationBehavior === \"aria\" && p.isRequired) || undefined,\n \"aria-invalid\": isInvalid || undefined,\n value: p.value ?? p.defaultValue ?? \"\",\n onChange: (e: Event) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n if (target.value !== lastInputValue) {\n p.onChange?.(target.value);\n }\n },\n // Don't include type and pattern for textarea elements\n type: isTextarea ? undefined : (p.type ?? \"text\"),\n inputMode: p.inputMode,\n enterKeyHint: p.enterKeyHint,\n name: p.name,\n form: p.form,\n pattern: isTextarea ? undefined : p.pattern,\n maxLength: p.maxLength,\n minLength: p.minLength,\n placeholder: p.placeholder,\n autoComplete: p.autoComplete,\n autoCorrect: p.autoCorrect,\n autoCapitalize: p.autoCapitalize,\n spellCheck: p.spellCheck,\n\n // Clipboard events\n onCopy: p.onCopy,\n onCut: p.onCut,\n onPaste: p.onPaste,\n\n // Composition events\n onCompositionStart: p.onCompositionStart,\n onCompositionEnd: p.onCompositionEnd,\n onCompositionUpdate: p.onCompositionUpdate,\n\n // Selection events\n onSelect: p.onSelect,\n\n // Input events\n onBeforeInput: p.onBeforeInput,\n onInput: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n const nextValue = target.value;\n p.onInput?.(\n eventWithCurrentTarget(e, target) as Parameters<NonNullable<typeof p.onInput>>[0],\n );\n lastInputValue = nextValue;\n p.onChange?.(nextValue);\n },\n },\n focusableProps as Record<string, unknown>,\n fieldProps as Record<string, unknown>,\n ) as JSX.InputHTMLAttributes<T>;\n };\n\n const getIsInvalid = () => {\n return getProps().isInvalid ?? false;\n };\n\n return {\n get labelProps() {\n return labelProps;\n },\n get inputProps() {\n return getInputProps();\n },\n get descriptionProps() {\n return descriptionProps;\n },\n get errorMessageProps() {\n return errorMessageProps;\n },\n get isInvalid() {\n return getIsInvalid();\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;AA4FA,SAAgB,gBAEd,OAA0C,KAAyC;CACnF,MAAM,iBAAiB,OAAO,KAAK;CACnC,IAAI;CAEJ,MAAM,0BACJ,OACA,YAEA,IAAI,MAAM,OAAO,EACf,IAAI,QAAQ,UAAU,UAAU;EAC9B,IAAI,aAAa,YAAY,aAAa,iBACxC,OAAO;EAGT,MAAM,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ;EACpD,OAAO,OAAO,UAAU,aAAa,MAAM,KAAK,MAAM,IAAI;CAC5D,EACF,CAAC;CAGH,MAAM,EAAE,YAAY,YAAY,kBAAkB,sBAAsB,YAAY,KAAK;CAGzF,MAAM,EAAE,mBAAmB,gBACzB;EACE,IAAI,aAAa;GACf,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,YAAY;GACd,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,sBAAsB;GACxB,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,SAAS,SAAS,CAAC,CAAC;EACpB,QAAQ,SAAS,CAAC,CAAC;EACnB,eAAe,SAAS,CAAC,CAAC;EAC1B,WAAW,SAAS,CAAC,CAAC;EACtB,SAAS,SAAS,CAAC,CAAC;CACtB,GACA,GACF;CAGA,MAAM,oBACJ,eAAe,SAAS,GAA8B,EAAE,WAAW,KAAK,CAAC;CAG3E,MAAM,sBAAkD;EACtD,MAAM,IAAI,SAAS;EACnB,MAAM,YAAY,EAAE,aAAa;EACjC,MAAM,aAAa,EAAE,qBAAqB;EAC1C,MAAM,qBAAqB,EAAE,sBAAsB;EAEnD,OAAO,WACL,YAAY,GACZ;GACE,UAAU,EAAE;GACZ,UAAU,EAAE;GACZ,UAAU,uBAAuB,YAAY,EAAE;GAC/C,iBAAkB,uBAAuB,UAAU,EAAE,cAAe,KAAA;GACpE,gBAAgB,aAAa,KAAA;GAC7B,OAAO,EAAE,SAAS,EAAE,gBAAgB;GACpC,WAAW,MAAa;IACtB,MAAM,SAAS,EAAE;IACjB,IAAI,OAAO,UAAU,gBACnB,EAAE,WAAW,OAAO,KAAK;GAE7B;GAEA,MAAM,aAAa,KAAA,IAAa,EAAE,QAAQ;GAC1C,WAAW,EAAE;GACb,cAAc,EAAE;GAChB,MAAM,EAAE;GACR,MAAM,EAAE;GACR,SAAS,aAAa,KAAA,IAAY,EAAE;GACpC,WAAW,EAAE;GACb,WAAW,EAAE;GACb,aAAa,EAAE;GACf,cAAc,EAAE;GAChB,aAAa,EAAE;GACf,gBAAgB,EAAE;GAClB,YAAY,EAAE;GAGd,QAAQ,EAAE;GACV,OAAO,EAAE;GACT,SAAS,EAAE;GAGX,oBAAoB,EAAE;GACtB,kBAAkB,EAAE;GACpB,qBAAqB,EAAE;GAGvB,UAAU,EAAE;GAGZ,eAAe,EAAE;GACjB,UAAU,MAAkB;IAC1B,MAAM,SAAS,EAAE;IACjB,MAAM,YAAY,OAAO;IACzB,EAAE,UACA,uBAAuB,GAAG,MAAM,CAClC;IACA,iBAAiB;IACjB,EAAE,WAAW,SAAS;GACxB;EACF,GACA,gBACA,UACF;CACF;CAEA,MAAM,qBAAqB;EACzB,OAAO,SAAS,CAAC,CAAC,aAAa;CACjC;CAEA,OAAO;EACL,IAAI,aAAa;GACf,OAAO;EACT;EACA,IAAI,aAAa;GACf,OAAO,cAAc;EACvB;EACA,IAAI,mBAAmB;GACrB,OAAO;EACT;EACA,IAAI,oBAAoB;GACtB,OAAO;EACT;EACA,IAAI,YAAY;GACd,OAAO,aAAa;EACtB;CACF;AACF"}
1
+ {"version":3,"file":"textfield.js","names":[],"sources":["../../src/textfield/createTextField.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/textfield/useTextField.ts\n\n/**\n * TextField hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a text field.\n *\n * This is a 1:1 port of @react-aria/textfield's useTextField hook.\n */\n\nimport { createSignal } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createFormValidationState, type ValidityState } from \"@proyecto-viviana/solid-stately\";\nimport { createField, type AriaFieldProps, type FieldAria } from \"../label\";\nimport { createFocusable, type FocusableDOMProps, type FocusableProps } from \"../interactions\";\nimport { createFormValidation, type ValidatableElement } from \"../form/createFormValidation\";\nimport { createFormReset } from \"../form/createFormReset\";\nimport { mergeProps, filterDOMProps } from \"../utils\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaTextFieldProps extends AriaFieldProps, FocusableProps, FocusableDOMProps {\n /** The current value (controlled). */\n value?: string;\n /** The default value (uncontrolled). */\n defaultValue?: string;\n /** Handler that is called when the value changes. */\n onChange?: (value: string) => void;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is read only. */\n isReadOnly?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /** Whether to use native HTML form validation or ARIA validation semantics. */\n validationBehavior?: \"aria\" | \"native\";\n /** The type of input to render. */\n type?: \"text\" | \"search\" | \"url\" | \"tel\" | \"email\" | \"password\" | string;\n /** The input mode hint for virtual keyboards. */\n inputMode?: \"none\" | \"text\" | \"tel\" | \"url\" | \"email\" | \"numeric\" | \"decimal\" | \"search\";\n /** Hint for the enter key action on virtual keyboards. */\n enterKeyHint?: \"enter\" | \"done\" | \"go\" | \"next\" | \"previous\" | \"search\" | \"send\";\n /** The name of the input element, used when submitting an HTML form. */\n name?: string;\n /** Associates the input with a form element by id. */\n form?: string;\n /** Regex pattern to validate the input value. */\n pattern?: string;\n /** The maximum number of characters supported by the input. */\n maxLength?: number;\n /** The minimum number of characters required by the input. */\n minLength?: number;\n /** Placeholder text for the input. */\n placeholder?: string;\n /** Whether to enable auto complete. */\n autoComplete?: string;\n /** Whether to enable auto correct. */\n autoCorrect?: string;\n /** Whether to enable spell check. */\n spellCheck?: \"true\" | \"false\";\n /** Controls whether and how text input is automatically capitalized. */\n autoCapitalize?: \"off\" | \"none\" | \"on\" | \"sentences\" | \"words\" | \"characters\";\n /** The element type to use for the input. Defaults to 'input'. */\n inputElementType?: \"input\" | \"textarea\";\n\n // Clipboard events\n onCopy?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onCut?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onPaste?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n\n // Composition events\n onCompositionStart?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionEnd?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionUpdate?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n\n // Selection events\n onSelect?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, Event>;\n\n // Input events\n onBeforeInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n onInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n}\n\nexport interface TextFieldAria<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n> extends Omit<FieldAria, \"fieldProps\"> {\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<T>;\n /** Whether the text field is invalid. */\n isInvalid: boolean;\n /** The current error messages for the input if it is invalid. */\n validationErrors: string[];\n /** The native validity state for the input. */\n validationDetails: ValidityState;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a text field.\n * Text fields allow users to input text with a keyboard.\n *\n * @param props - Props for the text field.\n * @param ref - Optional ref callback for the input element.\n */\nexport function createTextField<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n>(props: MaybeAccessor<AriaTextFieldProps>, ref?: (el: T) => void): TextFieldAria<T> {\n const getProps = () => access(props);\n let lastInputValue: string | undefined;\n const [inputEl, setInputEl] = createSignal<T | undefined>(undefined, { ownedWrite: true });\n\n const setInputRef = (el: T | undefined) => {\n setInputEl(() => el);\n if (el) {\n ref?.(el);\n }\n };\n\n const validationState = createFormValidationState({\n get value() {\n return getProps().value ?? getProps().defaultValue ?? \"\";\n },\n get isInvalid() {\n return getProps().isInvalid;\n },\n get validationState() {\n return getProps().validationState;\n },\n get validate() {\n return getProps().validate;\n },\n get name() {\n return getProps().name;\n },\n get validationBehavior() {\n return getProps().validationBehavior ?? \"native\";\n },\n });\n\n // RAC useTextField snapshots `props.defaultValue ?? initialValue` and\n // calls setValue on native reset (`useTextField.ts:223-224`).\n const resetValue = getProps().defaultValue ?? getProps().value ?? \"\";\n createFormReset(\n () => inputEl() as ValidatableElement | undefined,\n resetValue,\n (value) => {\n getProps().onChange?.(value);\n },\n );\n\n createFormValidation(\n {\n get validationBehavior() {\n return getProps().validationBehavior ?? \"native\";\n },\n focus: () => inputEl()?.focus(),\n },\n validationState,\n () => inputEl() as ValidatableElement | undefined,\n );\n\n const displayValidation = () => validationState.displayValidation();\n\n const eventWithCurrentTarget = (\n event: InputEvent,\n element: HTMLInputElement | HTMLTextAreaElement,\n ) =>\n new Proxy(event, {\n get(target, property, receiver) {\n if (property === \"target\" || property === \"currentTarget\") {\n return element;\n }\n\n const value = Reflect.get(target, property, receiver);\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n\n // Keep the `createField` getters intact. Destructuring `fieldProps` would\n // freeze the first `aria-describedby` snapshot (slot ids from `createSlotId`\n // before the DOM probe) — RAC `useField` re-reads `useSlotId` every render\n // (`useField.ts:51-60`). RAC `useTextField` feeds `displayValidation.isInvalid`\n // and native `validationErrors` into `useField` (`useTextField.ts:210-214`).\n const field = createField(() => {\n const p = getProps();\n const dv = displayValidation();\n return {\n ...p,\n isInvalid: dv.isInvalid,\n errorMessage: p.errorMessage || dv.validationErrors,\n };\n });\n\n // Get focusable props\n const { focusableProps } = createFocusable(\n {\n get isDisabled() {\n return getProps().isDisabled;\n },\n get autoFocus() {\n return getProps().autoFocus;\n },\n get excludeFromTabOrder() {\n return getProps().excludeFromTabOrder;\n },\n onFocus: getProps().onFocus,\n onBlur: getProps().onBlur,\n onFocusChange: getProps().onFocusChange,\n onKeyDown: getProps().onKeyDown,\n onKeyUp: getProps().onKeyUp,\n },\n setInputRef as ((el: HTMLElement) => void) | undefined,\n );\n\n // Filter DOM props\n const getDomProps = () =>\n filterDOMProps(getProps() as Record<string, unknown>, { labelable: true });\n\n // Build input props\n const getInputProps = (): JSX.InputHTMLAttributes<T> => {\n const p = getProps();\n const isInvalid = displayValidation().isInvalid;\n const isTextarea = p.inputElementType === \"textarea\";\n const validationBehavior = p.validationBehavior ?? \"native\";\n\n return mergeProps(\n getDomProps(),\n {\n disabled: p.isDisabled,\n readOnly: p.isReadOnly,\n required: validationBehavior === \"native\" && p.isRequired,\n \"aria-required\": (validationBehavior === \"aria\" && p.isRequired) || undefined,\n \"aria-invalid\": isInvalid || undefined,\n value: p.value ?? p.defaultValue ?? \"\",\n ref: setInputRef,\n onChange: (e: Event) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n if (target.value !== lastInputValue) {\n p.onChange?.(target.value);\n }\n },\n // Don't include type and pattern for textarea elements\n type: isTextarea ? undefined : (p.type ?? \"text\"),\n inputMode: p.inputMode,\n enterKeyHint: p.enterKeyHint,\n name: p.name,\n form: p.form,\n pattern: isTextarea ? undefined : p.pattern,\n maxLength: p.maxLength,\n minLength: p.minLength,\n placeholder: p.placeholder,\n autoComplete: p.autoComplete,\n autoCorrect: p.autoCorrect,\n autoCapitalize: p.autoCapitalize,\n spellCheck: p.spellCheck,\n\n // Clipboard events\n onCopy: p.onCopy,\n onCut: p.onCut,\n onPaste: p.onPaste,\n\n // Composition events\n onCompositionStart: p.onCompositionStart,\n onCompositionEnd: p.onCompositionEnd,\n onCompositionUpdate: p.onCompositionUpdate,\n\n // Selection events\n onSelect: p.onSelect,\n\n // Input events\n onBeforeInput: p.onBeforeInput,\n onInput: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n const nextValue = target.value;\n p.onInput?.(\n eventWithCurrentTarget(e, target) as Parameters<NonNullable<typeof p.onInput>>[0],\n );\n lastInputValue = nextValue;\n p.onChange?.(nextValue);\n },\n },\n focusableProps as Record<string, unknown>,\n field.fieldProps as Record<string, unknown>,\n ) as JSX.InputHTMLAttributes<T>;\n };\n\n return {\n get labelProps() {\n return field.labelProps;\n },\n get inputProps() {\n return getInputProps();\n },\n get descriptionProps() {\n return field.descriptionProps;\n },\n get errorMessageProps() {\n return field.errorMessageProps;\n },\n get isInvalid() {\n return displayValidation().isInvalid;\n },\n get validationErrors() {\n return displayValidation().validationErrors;\n },\n get validationDetails() {\n return displayValidation().validationDetails;\n },\n };\n}\n"],"mappings":"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"}
@@ -1,10 +1,33 @@
1
- import { i as mergeProps } from "./env.jsx";
1
+ /*
2
+ * Copyright 2020 Adobe. All rights reserved.
3
+ * This file is licensed to you under the Apache License, Version 2.0 (the "License");
4
+ * you may not use this file except in compliance with the License. You may obtain a copy
5
+ * of the License at http://www.apache.org/licenses/LICENSE-2.0
6
+ *
7
+ * Unless required by applicable law or agreed to in writing, software distributed under
8
+ * the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS
9
+ * OF ANY KIND, either express or implied. See the License for the specific language
10
+ * governing permissions and limitations under the License.
11
+ */
12
+ // Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/textfield/useTextField.ts
13
+ import { t as mergeProps } from "./mergeProps.jsx";
2
14
  import { t as filterDOMProps } from "./filterDOMProps.jsx";
3
15
  import { t as access } from "./reactivity.jsx";
4
16
  import { n as createFocusable } from "./createFocusable.jsx";
17
+ import { t as createFormValidation } from "./createFormValidation.jsx";
18
+ import { t as createFormReset } from "./createFormReset.jsx";
5
19
  import { t as createField } from "./createField.jsx";
20
+ import { createSignal } from "solid-js";
21
+ import { createFormValidationState } from "@proyecto-viviana/solid-stately";
6
22
  //#region src/textfield/createTextField.ts
7
23
  /**
24
+ * TextField hook for Solidaria
25
+ *
26
+ * Provides the behavior and accessibility implementation for a text field.
27
+ *
28
+ * This is a 1:1 port of @react-aria/textfield's useTextField hook.
29
+ */
30
+ /**
8
31
  * Provides the behavior and accessibility implementation for a text field.
9
32
  * Text fields allow users to input text with a keyboard.
10
33
  *
@@ -14,12 +37,56 @@ import { t as createField } from "./createField.jsx";
14
37
  function createTextField(props, ref) {
15
38
  const getProps = () => access(props);
16
39
  let lastInputValue;
40
+ const [inputEl, setInputEl] = createSignal(void 0, { ownedWrite: true });
41
+ const setInputRef = (el) => {
42
+ setInputEl(() => el);
43
+ if (el) ref?.(el);
44
+ };
45
+ const validationState = createFormValidationState({
46
+ get value() {
47
+ return getProps().value ?? getProps().defaultValue ?? "";
48
+ },
49
+ get isInvalid() {
50
+ return getProps().isInvalid;
51
+ },
52
+ get validationState() {
53
+ return getProps().validationState;
54
+ },
55
+ get validate() {
56
+ return getProps().validate;
57
+ },
58
+ get name() {
59
+ return getProps().name;
60
+ },
61
+ get validationBehavior() {
62
+ return getProps().validationBehavior ?? "native";
63
+ }
64
+ });
65
+ const resetValue = getProps().defaultValue ?? getProps().value ?? "";
66
+ createFormReset(() => inputEl(), resetValue, (value) => {
67
+ getProps().onChange?.(value);
68
+ });
69
+ createFormValidation({
70
+ get validationBehavior() {
71
+ return getProps().validationBehavior ?? "native";
72
+ },
73
+ focus: () => inputEl()?.focus()
74
+ }, validationState, () => inputEl());
75
+ const displayValidation = () => validationState.displayValidation();
17
76
  const eventWithCurrentTarget = (event, element) => new Proxy(event, { get(target, property, receiver) {
18
77
  if (property === "target" || property === "currentTarget") return element;
19
78
  const value = Reflect.get(target, property, receiver);
20
79
  return typeof value === "function" ? value.bind(target) : value;
21
80
  } });
22
- const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField(props);
81
+ const field = createField(() => {
82
+ const p = getProps();
83
+ const dv = displayValidation();
84
+ return {
85
+ ...p,
86
+ isInvalid: dv.isInvalid,
87
+ errorMessage: p.errorMessage || dv.validationErrors
88
+ };
89
+ });
23
90
  const { focusableProps } = createFocusable({
24
91
  get isDisabled() {
25
92
  return getProps().isDisabled;
@@ -35,11 +102,11 @@ function createTextField(props, ref) {
35
102
  onFocusChange: getProps().onFocusChange,
36
103
  onKeyDown: getProps().onKeyDown,
37
104
  onKeyUp: getProps().onKeyUp
38
- }, ref);
105
+ }, setInputRef);
39
106
  const getDomProps = () => filterDOMProps(getProps(), { labelable: true });
40
107
  const getInputProps = () => {
41
108
  const p = getProps();
42
- const isInvalid = p.isInvalid ?? false;
109
+ const isInvalid = displayValidation().isInvalid;
43
110
  const isTextarea = p.inputElementType === "textarea";
44
111
  const validationBehavior = p.validationBehavior ?? "native";
45
112
  return mergeProps(getDomProps(), {
@@ -49,6 +116,7 @@ function createTextField(props, ref) {
49
116
  "aria-required": validationBehavior === "aria" && p.isRequired || void 0,
50
117
  "aria-invalid": isInvalid || void 0,
51
118
  value: p.value ?? p.defaultValue ?? "",
119
+ ref: setInputRef,
52
120
  onChange: (e) => {
53
121
  const target = e.target;
54
122
  if (target.value !== lastInputValue) p.onChange?.(target.value);
@@ -81,26 +149,29 @@ function createTextField(props, ref) {
81
149
  lastInputValue = nextValue;
82
150
  p.onChange?.(nextValue);
83
151
  }
84
- }, focusableProps, fieldProps);
85
- };
86
- const getIsInvalid = () => {
87
- return getProps().isInvalid ?? false;
152
+ }, focusableProps, field.fieldProps);
88
153
  };
89
154
  return {
90
155
  get labelProps() {
91
- return labelProps;
156
+ return field.labelProps;
92
157
  },
93
158
  get inputProps() {
94
159
  return getInputProps();
95
160
  },
96
161
  get descriptionProps() {
97
- return descriptionProps;
162
+ return field.descriptionProps;
98
163
  },
99
164
  get errorMessageProps() {
100
- return errorMessageProps;
165
+ return field.errorMessageProps;
101
166
  },
102
167
  get isInvalid() {
103
- return getIsInvalid();
168
+ return displayValidation().isInvalid;
169
+ },
170
+ get validationErrors() {
171
+ return displayValidation().validationErrors;
172
+ },
173
+ get validationDetails() {
174
+ return displayValidation().validationDetails;
104
175
  }
105
176
  };
106
177
  }
@@ -1 +1 @@
1
- {"version":3,"file":"textfield.jsx","names":[],"sources":["../../src/textfield/createTextField.ts"],"sourcesContent":["/**\n * TextField hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a text field.\n *\n * This is a 1:1 port of @react-aria/textfield's useTextField hook.\n */\n\nimport { JSX } from \"solid-js\";\nimport { createField, type AriaFieldProps, type FieldAria } from \"../label\";\nimport { createFocusable, type FocusableDOMProps, type FocusableProps } from \"../interactions\";\nimport { mergeProps, filterDOMProps } from \"../utils\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaTextFieldProps extends AriaFieldProps, FocusableProps, FocusableDOMProps {\n /** The current value (controlled). */\n value?: string;\n /** The default value (uncontrolled). */\n defaultValue?: string;\n /** Handler that is called when the value changes. */\n onChange?: (value: string) => void;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is read only. */\n isReadOnly?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /** Whether to use native HTML form validation or ARIA validation semantics. */\n validationBehavior?: \"aria\" | \"native\";\n /** The type of input to render. */\n type?: \"text\" | \"search\" | \"url\" | \"tel\" | \"email\" | \"password\" | string;\n /** The input mode hint for virtual keyboards. */\n inputMode?: \"none\" | \"text\" | \"tel\" | \"url\" | \"email\" | \"numeric\" | \"decimal\" | \"search\";\n /** Hint for the enter key action on virtual keyboards. */\n enterKeyHint?: \"enter\" | \"done\" | \"go\" | \"next\" | \"previous\" | \"search\" | \"send\";\n /** The name of the input element, used when submitting an HTML form. */\n name?: string;\n /** Associates the input with a form element by id. */\n form?: string;\n /** Regex pattern to validate the input value. */\n pattern?: string;\n /** The maximum number of characters supported by the input. */\n maxLength?: number;\n /** The minimum number of characters required by the input. */\n minLength?: number;\n /** Placeholder text for the input. */\n placeholder?: string;\n /** Whether to enable auto complete. */\n autoComplete?: string;\n /** Whether to enable auto correct. */\n autoCorrect?: string;\n /** Whether to enable spell check. */\n spellCheck?: \"true\" | \"false\";\n /** Controls whether and how text input is automatically capitalized. */\n autoCapitalize?: \"off\" | \"none\" | \"on\" | \"sentences\" | \"words\" | \"characters\";\n /** The element type to use for the input. Defaults to 'input'. */\n inputElementType?: \"input\" | \"textarea\";\n\n // Clipboard events\n onCopy?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onCut?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onPaste?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n\n // Composition events\n onCompositionStart?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionEnd?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionUpdate?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n\n // Selection events\n onSelect?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, Event>;\n\n // Input events\n onBeforeInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n onInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n}\n\nexport interface TextFieldAria<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n> extends Omit<FieldAria, \"fieldProps\"> {\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<T>;\n /** Whether the text field is invalid. */\n isInvalid: boolean;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a text field.\n * Text fields allow users to input text with a keyboard.\n *\n * @param props - Props for the text field.\n * @param ref - Optional ref callback for the input element.\n */\nexport function createTextField<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n>(props: MaybeAccessor<AriaTextFieldProps>, ref?: (el: T) => void): TextFieldAria<T> {\n const getProps = () => access(props);\n let lastInputValue: string | undefined;\n\n const eventWithCurrentTarget = (\n event: InputEvent,\n element: HTMLInputElement | HTMLTextAreaElement,\n ) =>\n new Proxy(event, {\n get(target, property, receiver) {\n if (property === \"target\" || property === \"currentTarget\") {\n return element;\n }\n\n const value = Reflect.get(target, property, receiver);\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n\n // Get field accessibility props (label, description, error message)\n const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField(props);\n\n // Get focusable props\n const { focusableProps } = createFocusable(\n {\n get isDisabled() {\n return getProps().isDisabled;\n },\n get autoFocus() {\n return getProps().autoFocus;\n },\n get excludeFromTabOrder() {\n return getProps().excludeFromTabOrder;\n },\n onFocus: getProps().onFocus,\n onBlur: getProps().onBlur,\n onFocusChange: getProps().onFocusChange,\n onKeyDown: getProps().onKeyDown,\n onKeyUp: getProps().onKeyUp,\n },\n ref as ((el: HTMLElement) => void) | undefined,\n );\n\n // Filter DOM props\n const getDomProps = () =>\n filterDOMProps(getProps() as Record<string, unknown>, { labelable: true });\n\n // Build input props\n const getInputProps = (): JSX.InputHTMLAttributes<T> => {\n const p = getProps();\n const isInvalid = p.isInvalid ?? false;\n const isTextarea = p.inputElementType === \"textarea\";\n const validationBehavior = p.validationBehavior ?? \"native\";\n\n return mergeProps(\n getDomProps(),\n {\n disabled: p.isDisabled,\n readOnly: p.isReadOnly,\n required: validationBehavior === \"native\" && p.isRequired,\n \"aria-required\": (validationBehavior === \"aria\" && p.isRequired) || undefined,\n \"aria-invalid\": isInvalid || undefined,\n value: p.value ?? p.defaultValue ?? \"\",\n onChange: (e: Event) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n if (target.value !== lastInputValue) {\n p.onChange?.(target.value);\n }\n },\n // Don't include type and pattern for textarea elements\n type: isTextarea ? undefined : (p.type ?? \"text\"),\n inputMode: p.inputMode,\n enterKeyHint: p.enterKeyHint,\n name: p.name,\n form: p.form,\n pattern: isTextarea ? undefined : p.pattern,\n maxLength: p.maxLength,\n minLength: p.minLength,\n placeholder: p.placeholder,\n autoComplete: p.autoComplete,\n autoCorrect: p.autoCorrect,\n autoCapitalize: p.autoCapitalize,\n spellCheck: p.spellCheck,\n\n // Clipboard events\n onCopy: p.onCopy,\n onCut: p.onCut,\n onPaste: p.onPaste,\n\n // Composition events\n onCompositionStart: p.onCompositionStart,\n onCompositionEnd: p.onCompositionEnd,\n onCompositionUpdate: p.onCompositionUpdate,\n\n // Selection events\n onSelect: p.onSelect,\n\n // Input events\n onBeforeInput: p.onBeforeInput,\n onInput: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n const nextValue = target.value;\n p.onInput?.(\n eventWithCurrentTarget(e, target) as Parameters<NonNullable<typeof p.onInput>>[0],\n );\n lastInputValue = nextValue;\n p.onChange?.(nextValue);\n },\n },\n focusableProps as Record<string, unknown>,\n fieldProps as Record<string, unknown>,\n ) as JSX.InputHTMLAttributes<T>;\n };\n\n const getIsInvalid = () => {\n return getProps().isInvalid ?? false;\n };\n\n return {\n get labelProps() {\n return labelProps;\n },\n get inputProps() {\n return getInputProps();\n },\n get descriptionProps() {\n return descriptionProps;\n },\n get errorMessageProps() {\n return errorMessageProps;\n },\n get isInvalid() {\n return getIsInvalid();\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;AA4FA,SAAgB,gBAEd,OAA0C,KAAyC;CACnF,MAAM,iBAAiB,OAAO,KAAK;CACnC,IAAI;CAEJ,MAAM,0BACJ,OACA,YAEA,IAAI,MAAM,OAAO,EACf,IAAI,QAAQ,UAAU,UAAU;EAC9B,IAAI,aAAa,YAAY,aAAa,iBACxC,OAAO;EAGT,MAAM,QAAQ,QAAQ,IAAI,QAAQ,UAAU,QAAQ;EACpD,OAAO,OAAO,UAAU,aAAa,MAAM,KAAK,MAAM,IAAI;CAC5D,EACF,CAAC;CAGH,MAAM,EAAE,YAAY,YAAY,kBAAkB,sBAAsB,YAAY,KAAK;CAGzF,MAAM,EAAE,mBAAmB,gBACzB;EACE,IAAI,aAAa;GACf,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,YAAY;GACd,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,IAAI,sBAAsB;GACxB,OAAO,SAAS,CAAC,CAAC;EACpB;EACA,SAAS,SAAS,CAAC,CAAC;EACpB,QAAQ,SAAS,CAAC,CAAC;EACnB,eAAe,SAAS,CAAC,CAAC;EAC1B,WAAW,SAAS,CAAC,CAAC;EACtB,SAAS,SAAS,CAAC,CAAC;CACtB,GACA,GACF;CAGA,MAAM,oBACJ,eAAe,SAAS,GAA8B,EAAE,WAAW,KAAK,CAAC;CAG3E,MAAM,sBAAkD;EACtD,MAAM,IAAI,SAAS;EACnB,MAAM,YAAY,EAAE,aAAa;EACjC,MAAM,aAAa,EAAE,qBAAqB;EAC1C,MAAM,qBAAqB,EAAE,sBAAsB;EAEnD,OAAO,WACL,YAAY,GACZ;GACE,UAAU,EAAE;GACZ,UAAU,EAAE;GACZ,UAAU,uBAAuB,YAAY,EAAE;GAC/C,iBAAkB,uBAAuB,UAAU,EAAE,cAAe,KAAA;GACpE,gBAAgB,aAAa,KAAA;GAC7B,OAAO,EAAE,SAAS,EAAE,gBAAgB;GACpC,WAAW,MAAa;IACtB,MAAM,SAAS,EAAE;IACjB,IAAI,OAAO,UAAU,gBACnB,EAAE,WAAW,OAAO,KAAK;GAE7B;GAEA,MAAM,aAAa,KAAA,IAAa,EAAE,QAAQ;GAC1C,WAAW,EAAE;GACb,cAAc,EAAE;GAChB,MAAM,EAAE;GACR,MAAM,EAAE;GACR,SAAS,aAAa,KAAA,IAAY,EAAE;GACpC,WAAW,EAAE;GACb,WAAW,EAAE;GACb,aAAa,EAAE;GACf,cAAc,EAAE;GAChB,aAAa,EAAE;GACf,gBAAgB,EAAE;GAClB,YAAY,EAAE;GAGd,QAAQ,EAAE;GACV,OAAO,EAAE;GACT,SAAS,EAAE;GAGX,oBAAoB,EAAE;GACtB,kBAAkB,EAAE;GACpB,qBAAqB,EAAE;GAGvB,UAAU,EAAE;GAGZ,eAAe,EAAE;GACjB,UAAU,MAAkB;IAC1B,MAAM,SAAS,EAAE;IACjB,MAAM,YAAY,OAAO;IACzB,EAAE,UACA,uBAAuB,GAAG,MAAM,CAClC;IACA,iBAAiB;IACjB,EAAE,WAAW,SAAS;GACxB;EACF,GACA,gBACA,UACF;CACF;CAEA,MAAM,qBAAqB;EACzB,OAAO,SAAS,CAAC,CAAC,aAAa;CACjC;CAEA,OAAO;EACL,IAAI,aAAa;GACf,OAAO;EACT;EACA,IAAI,aAAa;GACf,OAAO,cAAc;EACvB;EACA,IAAI,mBAAmB;GACrB,OAAO;EACT;EACA,IAAI,oBAAoB;GACtB,OAAO;EACT;EACA,IAAI,YAAY;GACd,OAAO,aAAa;EACtB;CACF;AACF"}
1
+ {"version":3,"file":"textfield.jsx","names":[],"sources":["../../src/textfield/createTextField.ts"],"sourcesContent":["/*\n * Copyright 2020 Adobe. All rights reserved.\n * This file is licensed to you under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License. You may obtain a copy\n * of the License at http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software distributed under\n * the License is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR REPRESENTATIONS\n * OF ANY KIND, either express or implied. See the License for the specific language\n * governing permissions and limitations under the License.\n */\n\n// Ported to SolidJS for Proyecto Viviana; based on packages/react-aria/src/textfield/useTextField.ts\n\n/**\n * TextField hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a text field.\n *\n * This is a 1:1 port of @react-aria/textfield's useTextField hook.\n */\n\nimport { createSignal } from \"solid-js\";\nimport type { JSX } from \"@solidjs/web\";\nimport { createFormValidationState, type ValidityState } from \"@proyecto-viviana/solid-stately\";\nimport { createField, type AriaFieldProps, type FieldAria } from \"../label\";\nimport { createFocusable, type FocusableDOMProps, type FocusableProps } from \"../interactions\";\nimport { createFormValidation, type ValidatableElement } from \"../form/createFormValidation\";\nimport { createFormReset } from \"../form/createFormReset\";\nimport { mergeProps, filterDOMProps } from \"../utils\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\n\nexport interface AriaTextFieldProps extends AriaFieldProps, FocusableProps, FocusableDOMProps {\n /** The current value (controlled). */\n value?: string;\n /** The default value (uncontrolled). */\n defaultValue?: string;\n /** Handler that is called when the value changes. */\n onChange?: (value: string) => void;\n /** Whether the input is disabled. */\n isDisabled?: boolean;\n /** Whether the input is read only. */\n isReadOnly?: boolean;\n /** Whether the input is required. */\n isRequired?: boolean;\n /** Whether to use native HTML form validation or ARIA validation semantics. */\n validationBehavior?: \"aria\" | \"native\";\n /** The type of input to render. */\n type?: \"text\" | \"search\" | \"url\" | \"tel\" | \"email\" | \"password\" | string;\n /** The input mode hint for virtual keyboards. */\n inputMode?: \"none\" | \"text\" | \"tel\" | \"url\" | \"email\" | \"numeric\" | \"decimal\" | \"search\";\n /** Hint for the enter key action on virtual keyboards. */\n enterKeyHint?: \"enter\" | \"done\" | \"go\" | \"next\" | \"previous\" | \"search\" | \"send\";\n /** The name of the input element, used when submitting an HTML form. */\n name?: string;\n /** Associates the input with a form element by id. */\n form?: string;\n /** Regex pattern to validate the input value. */\n pattern?: string;\n /** The maximum number of characters supported by the input. */\n maxLength?: number;\n /** The minimum number of characters required by the input. */\n minLength?: number;\n /** Placeholder text for the input. */\n placeholder?: string;\n /** Whether to enable auto complete. */\n autoComplete?: string;\n /** Whether to enable auto correct. */\n autoCorrect?: string;\n /** Whether to enable spell check. */\n spellCheck?: \"true\" | \"false\";\n /** Controls whether and how text input is automatically capitalized. */\n autoCapitalize?: \"off\" | \"none\" | \"on\" | \"sentences\" | \"words\" | \"characters\";\n /** The element type to use for the input. Defaults to 'input'. */\n inputElementType?: \"input\" | \"textarea\";\n\n // Clipboard events\n onCopy?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onCut?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n onPaste?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, ClipboardEvent>;\n\n // Composition events\n onCompositionStart?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionEnd?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n onCompositionUpdate?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, CompositionEvent>;\n\n // Selection events\n onSelect?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, Event>;\n\n // Input events\n onBeforeInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n onInput?: JSX.EventHandler<HTMLInputElement | HTMLTextAreaElement, InputEvent>;\n}\n\nexport interface TextFieldAria<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n> extends Omit<FieldAria, \"fieldProps\"> {\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<T>;\n /** Whether the text field is invalid. */\n isInvalid: boolean;\n /** The current error messages for the input if it is invalid. */\n validationErrors: string[];\n /** The native validity state for the input. */\n validationDetails: ValidityState;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a text field.\n * Text fields allow users to input text with a keyboard.\n *\n * @param props - Props for the text field.\n * @param ref - Optional ref callback for the input element.\n */\nexport function createTextField<\n T extends HTMLInputElement | HTMLTextAreaElement = HTMLInputElement,\n>(props: MaybeAccessor<AriaTextFieldProps>, ref?: (el: T) => void): TextFieldAria<T> {\n const getProps = () => access(props);\n let lastInputValue: string | undefined;\n const [inputEl, setInputEl] = createSignal<T | undefined>(undefined, { ownedWrite: true });\n\n const setInputRef = (el: T | undefined) => {\n setInputEl(() => el);\n if (el) {\n ref?.(el);\n }\n };\n\n const validationState = createFormValidationState({\n get value() {\n return getProps().value ?? getProps().defaultValue ?? \"\";\n },\n get isInvalid() {\n return getProps().isInvalid;\n },\n get validationState() {\n return getProps().validationState;\n },\n get validate() {\n return getProps().validate;\n },\n get name() {\n return getProps().name;\n },\n get validationBehavior() {\n return getProps().validationBehavior ?? \"native\";\n },\n });\n\n // RAC useTextField snapshots `props.defaultValue ?? initialValue` and\n // calls setValue on native reset (`useTextField.ts:223-224`).\n const resetValue = getProps().defaultValue ?? getProps().value ?? \"\";\n createFormReset(\n () => inputEl() as ValidatableElement | undefined,\n resetValue,\n (value) => {\n getProps().onChange?.(value);\n },\n );\n\n createFormValidation(\n {\n get validationBehavior() {\n return getProps().validationBehavior ?? \"native\";\n },\n focus: () => inputEl()?.focus(),\n },\n validationState,\n () => inputEl() as ValidatableElement | undefined,\n );\n\n const displayValidation = () => validationState.displayValidation();\n\n const eventWithCurrentTarget = (\n event: InputEvent,\n element: HTMLInputElement | HTMLTextAreaElement,\n ) =>\n new Proxy(event, {\n get(target, property, receiver) {\n if (property === \"target\" || property === \"currentTarget\") {\n return element;\n }\n\n const value = Reflect.get(target, property, receiver);\n return typeof value === \"function\" ? value.bind(target) : value;\n },\n });\n\n // Keep the `createField` getters intact. Destructuring `fieldProps` would\n // freeze the first `aria-describedby` snapshot (slot ids from `createSlotId`\n // before the DOM probe) — RAC `useField` re-reads `useSlotId` every render\n // (`useField.ts:51-60`). RAC `useTextField` feeds `displayValidation.isInvalid`\n // and native `validationErrors` into `useField` (`useTextField.ts:210-214`).\n const field = createField(() => {\n const p = getProps();\n const dv = displayValidation();\n return {\n ...p,\n isInvalid: dv.isInvalid,\n errorMessage: p.errorMessage || dv.validationErrors,\n };\n });\n\n // Get focusable props\n const { focusableProps } = createFocusable(\n {\n get isDisabled() {\n return getProps().isDisabled;\n },\n get autoFocus() {\n return getProps().autoFocus;\n },\n get excludeFromTabOrder() {\n return getProps().excludeFromTabOrder;\n },\n onFocus: getProps().onFocus,\n onBlur: getProps().onBlur,\n onFocusChange: getProps().onFocusChange,\n onKeyDown: getProps().onKeyDown,\n onKeyUp: getProps().onKeyUp,\n },\n setInputRef as ((el: HTMLElement) => void) | undefined,\n );\n\n // Filter DOM props\n const getDomProps = () =>\n filterDOMProps(getProps() as Record<string, unknown>, { labelable: true });\n\n // Build input props\n const getInputProps = (): JSX.InputHTMLAttributes<T> => {\n const p = getProps();\n const isInvalid = displayValidation().isInvalid;\n const isTextarea = p.inputElementType === \"textarea\";\n const validationBehavior = p.validationBehavior ?? \"native\";\n\n return mergeProps(\n getDomProps(),\n {\n disabled: p.isDisabled,\n readOnly: p.isReadOnly,\n required: validationBehavior === \"native\" && p.isRequired,\n \"aria-required\": (validationBehavior === \"aria\" && p.isRequired) || undefined,\n \"aria-invalid\": isInvalid || undefined,\n value: p.value ?? p.defaultValue ?? \"\",\n ref: setInputRef,\n onChange: (e: Event) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n if (target.value !== lastInputValue) {\n p.onChange?.(target.value);\n }\n },\n // Don't include type and pattern for textarea elements\n type: isTextarea ? undefined : (p.type ?? \"text\"),\n inputMode: p.inputMode,\n enterKeyHint: p.enterKeyHint,\n name: p.name,\n form: p.form,\n pattern: isTextarea ? undefined : p.pattern,\n maxLength: p.maxLength,\n minLength: p.minLength,\n placeholder: p.placeholder,\n autoComplete: p.autoComplete,\n autoCorrect: p.autoCorrect,\n autoCapitalize: p.autoCapitalize,\n spellCheck: p.spellCheck,\n\n // Clipboard events\n onCopy: p.onCopy,\n onCut: p.onCut,\n onPaste: p.onPaste,\n\n // Composition events\n onCompositionStart: p.onCompositionStart,\n onCompositionEnd: p.onCompositionEnd,\n onCompositionUpdate: p.onCompositionUpdate,\n\n // Selection events\n onSelect: p.onSelect,\n\n // Input events\n onBeforeInput: p.onBeforeInput,\n onInput: (e: InputEvent) => {\n const target = e.target as HTMLInputElement | HTMLTextAreaElement;\n const nextValue = target.value;\n p.onInput?.(\n eventWithCurrentTarget(e, target) as Parameters<NonNullable<typeof p.onInput>>[0],\n );\n lastInputValue = nextValue;\n p.onChange?.(nextValue);\n },\n },\n focusableProps as Record<string, unknown>,\n field.fieldProps as Record<string, unknown>,\n ) as JSX.InputHTMLAttributes<T>;\n };\n\n return {\n get labelProps() {\n return field.labelProps;\n },\n get inputProps() {\n return getInputProps();\n },\n get descriptionProps() {\n return field.descriptionProps;\n },\n get errorMessageProps() {\n return field.errorMessageProps;\n },\n get isInvalid() {\n return displayValidation().isInvalid;\n },\n get validationErrors() {\n return displayValidation().validationErrors;\n },\n get validationDetails() {\n return displayValidation().validationDetails;\n },\n };\n}\n"],"mappings":"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"}