@proyecto-viviana/solidaria 0.3.0 → 0.4.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 (566) hide show
  1. package/dist/_chunk/actiongroup.js +207 -0
  2. package/dist/_chunk/actiongroup.js.map +1 -0
  3. package/dist/_chunk/actiongroup.jsx +207 -0
  4. package/dist/_chunk/actiongroup.jsx.map +1 -0
  5. package/dist/_chunk/ariaHideOutside.js +122 -0
  6. package/dist/_chunk/ariaHideOutside.js.map +1 -0
  7. package/dist/_chunk/ariaHideOutside.jsx +122 -0
  8. package/dist/_chunk/ariaHideOutside.jsx.map +1 -0
  9. package/dist/_chunk/autocomplete.js +196 -0
  10. package/dist/_chunk/autocomplete.js.map +1 -0
  11. package/dist/_chunk/autocomplete.jsx +196 -0
  12. package/dist/_chunk/autocomplete.jsx.map +1 -0
  13. package/dist/_chunk/breadcrumbs.js +119 -0
  14. package/dist/_chunk/breadcrumbs.js.map +1 -0
  15. package/dist/_chunk/breadcrumbs.jsx +119 -0
  16. package/dist/_chunk/breadcrumbs.jsx.map +1 -0
  17. package/dist/_chunk/button.js +276 -0
  18. package/dist/_chunk/button.js.map +1 -0
  19. package/dist/_chunk/button.jsx +276 -0
  20. package/dist/_chunk/button.jsx.map +1 -0
  21. package/dist/_chunk/calendar.js +1036 -0
  22. package/dist/_chunk/calendar.js.map +1 -0
  23. package/dist/_chunk/calendar.jsx +1036 -0
  24. package/dist/_chunk/calendar.jsx.map +1 -0
  25. package/dist/_chunk/checkbox.js +234 -0
  26. package/dist/_chunk/checkbox.js.map +1 -0
  27. package/dist/_chunk/checkbox.jsx +234 -0
  28. package/dist/_chunk/checkbox.jsx.map +1 -0
  29. package/dist/_chunk/color.js +1174 -0
  30. package/dist/_chunk/color.js.map +1 -0
  31. package/dist/_chunk/color.jsx +1174 -0
  32. package/dist/_chunk/color.jsx.map +1 -0
  33. package/dist/_chunk/combobox.js +436 -0
  34. package/dist/_chunk/combobox.js.map +1 -0
  35. package/dist/_chunk/combobox.jsx +436 -0
  36. package/dist/_chunk/combobox.jsx.map +1 -0
  37. package/dist/_chunk/createCollator.js +229 -0
  38. package/dist/_chunk/createCollator.js.map +1 -0
  39. package/dist/_chunk/createCollator.jsx +223 -0
  40. package/dist/_chunk/createCollator.jsx.map +1 -0
  41. package/dist/_chunk/createCollectionRowInteraction.js +133 -0
  42. package/dist/_chunk/createCollectionRowInteraction.js.map +1 -0
  43. package/dist/_chunk/createCollectionRowInteraction.jsx +133 -0
  44. package/dist/_chunk/createCollectionRowInteraction.jsx.map +1 -0
  45. package/dist/_chunk/createField.js +54 -0
  46. package/dist/_chunk/createField.js.map +1 -0
  47. package/dist/_chunk/createField.jsx +54 -0
  48. package/dist/_chunk/createField.jsx.map +1 -0
  49. package/dist/_chunk/createFocus.js +101 -0
  50. package/dist/_chunk/createFocus.js.map +1 -0
  51. package/dist/_chunk/createFocus.jsx +101 -0
  52. package/dist/_chunk/createFocus.jsx.map +1 -0
  53. package/dist/_chunk/createFocusRing.js +54 -0
  54. package/dist/_chunk/createFocusRing.js.map +1 -0
  55. package/dist/_chunk/createFocusRing.jsx +54 -0
  56. package/dist/_chunk/createFocusRing.jsx.map +1 -0
  57. package/dist/_chunk/createFocusWithin.js +121 -0
  58. package/dist/_chunk/createFocusWithin.js.map +1 -0
  59. package/dist/_chunk/createFocusWithin.jsx +121 -0
  60. package/dist/_chunk/createFocusWithin.jsx.map +1 -0
  61. package/dist/_chunk/createFocusable.js +131 -0
  62. package/dist/_chunk/createFocusable.js.map +1 -0
  63. package/dist/_chunk/createFocusable.jsx +131 -0
  64. package/dist/_chunk/createFocusable.jsx.map +1 -0
  65. package/dist/_chunk/createFormValidation.js +135 -0
  66. package/dist/_chunk/createFormValidation.js.map +1 -0
  67. package/dist/_chunk/createFormValidation.jsx +135 -0
  68. package/dist/_chunk/createFormValidation.jsx.map +1 -0
  69. package/dist/_chunk/createHover.js +130 -0
  70. package/dist/_chunk/createHover.js.map +1 -0
  71. package/dist/_chunk/createHover.jsx +130 -0
  72. package/dist/_chunk/createHover.jsx.map +1 -0
  73. package/dist/_chunk/createInteractionModality.js +269 -0
  74. package/dist/_chunk/createInteractionModality.js.map +1 -0
  75. package/dist/_chunk/createInteractionModality.jsx +269 -0
  76. package/dist/_chunk/createInteractionModality.jsx.map +1 -0
  77. package/dist/_chunk/createLabel.js +46 -0
  78. package/dist/_chunk/createLabel.js.map +1 -0
  79. package/dist/_chunk/createLabel.jsx +46 -0
  80. package/dist/_chunk/createLabel.jsx.map +1 -0
  81. package/dist/_chunk/createLabels.js +31 -0
  82. package/dist/_chunk/createLabels.js.map +1 -0
  83. package/dist/_chunk/createLabels.jsx +31 -0
  84. package/dist/_chunk/createLabels.jsx.map +1 -0
  85. package/dist/_chunk/createLandmark.js +198 -0
  86. package/dist/_chunk/createLandmark.js.map +1 -0
  87. package/dist/_chunk/createLandmark.jsx +198 -0
  88. package/dist/_chunk/createLandmark.jsx.map +1 -0
  89. package/dist/_chunk/createLongPress.js +91 -0
  90. package/dist/_chunk/createLongPress.js.map +1 -0
  91. package/dist/_chunk/createLongPress.jsx +91 -0
  92. package/dist/_chunk/createLongPress.jsx.map +1 -0
  93. package/dist/_chunk/createOverlay.js +327 -0
  94. package/dist/_chunk/createOverlay.js.map +1 -0
  95. package/dist/_chunk/createOverlay.jsx +327 -0
  96. package/dist/_chunk/createOverlay.jsx.map +1 -0
  97. package/dist/_chunk/createPress.js +526 -0
  98. package/dist/_chunk/createPress.js.map +1 -0
  99. package/dist/_chunk/createPress.jsx +526 -0
  100. package/dist/_chunk/createPress.jsx.map +1 -0
  101. package/dist/_chunk/createProgressBar.js +81 -0
  102. package/dist/_chunk/createProgressBar.js.map +1 -0
  103. package/dist/_chunk/createProgressBar.jsx +81 -0
  104. package/dist/_chunk/createProgressBar.jsx.map +1 -0
  105. package/dist/_chunk/createSelectableItem.js +298 -0
  106. package/dist/_chunk/createSelectableItem.js.map +1 -0
  107. package/dist/_chunk/createSelectableItem.jsx +298 -0
  108. package/dist/_chunk/createSelectableItem.jsx.map +1 -0
  109. package/dist/_chunk/createToggle.js +158 -0
  110. package/dist/_chunk/createToggle.js.map +1 -0
  111. package/dist/_chunk/createToggle.jsx +158 -0
  112. package/dist/_chunk/createToggle.jsx.map +1 -0
  113. package/dist/_chunk/createTypeSelect.js +125 -0
  114. package/dist/_chunk/createTypeSelect.js.map +1 -0
  115. package/dist/_chunk/createTypeSelect.jsx +125 -0
  116. package/dist/_chunk/createTypeSelect.jsx.map +1 -0
  117. package/dist/_chunk/datepicker.js +1393 -0
  118. package/dist/_chunk/datepicker.js.map +1 -0
  119. package/dist/_chunk/datepicker.jsx +1393 -0
  120. package/dist/_chunk/datepicker.jsx.map +1 -0
  121. package/dist/_chunk/dialog.js +62 -0
  122. package/dist/_chunk/dialog.js.map +1 -0
  123. package/dist/_chunk/dialog.jsx +62 -0
  124. package/dist/_chunk/dialog.jsx.map +1 -0
  125. package/dist/_chunk/disclosure.js +185 -0
  126. package/dist/_chunk/disclosure.js.map +1 -0
  127. package/dist/_chunk/disclosure.jsx +185 -0
  128. package/dist/_chunk/disclosure.jsx.map +1 -0
  129. package/dist/_chunk/dnd.js +1304 -0
  130. package/dist/_chunk/dnd.js.map +1 -0
  131. package/dist/_chunk/dnd.jsx +1304 -0
  132. package/dist/_chunk/dnd.jsx.map +1 -0
  133. package/dist/_chunk/env.js +105 -0
  134. package/dist/_chunk/env.js.map +1 -0
  135. package/dist/_chunk/env.jsx +105 -0
  136. package/dist/_chunk/env.jsx.map +1 -0
  137. package/dist/_chunk/filterDOMProps.js +82 -0
  138. package/dist/_chunk/filterDOMProps.js.map +1 -0
  139. package/dist/_chunk/filterDOMProps.jsx +82 -0
  140. package/dist/_chunk/filterDOMProps.jsx.map +1 -0
  141. package/dist/_chunk/focus.js +399 -0
  142. package/dist/_chunk/focus.js.map +1 -0
  143. package/dist/_chunk/focus.jsx +399 -0
  144. package/dist/_chunk/focus.jsx.map +1 -0
  145. package/dist/_chunk/focus2.js +895 -0
  146. package/dist/_chunk/focus2.js.map +1 -0
  147. package/dist/_chunk/focus2.jsx +870 -0
  148. package/dist/_chunk/focus2.jsx.map +1 -0
  149. package/dist/_chunk/form.js +39 -0
  150. package/dist/_chunk/form.js.map +1 -0
  151. package/dist/_chunk/form.jsx +39 -0
  152. package/dist/_chunk/form.jsx.map +1 -0
  153. package/dist/_chunk/grid.js +623 -0
  154. package/dist/_chunk/grid.js.map +1 -0
  155. package/dist/_chunk/grid.jsx +623 -0
  156. package/dist/_chunk/grid.jsx.map +1 -0
  157. package/dist/_chunk/gridlist.js +364 -0
  158. package/dist/_chunk/gridlist.js.map +1 -0
  159. package/dist/_chunk/gridlist.jsx +364 -0
  160. package/dist/_chunk/gridlist.jsx.map +1 -0
  161. package/dist/_chunk/i18n.js +254 -0
  162. package/dist/_chunk/i18n.js.map +1 -0
  163. package/dist/_chunk/i18n.jsx +254 -0
  164. package/dist/_chunk/i18n.jsx.map +1 -0
  165. package/dist/_chunk/interactions.js +241 -0
  166. package/dist/_chunk/interactions.js.map +1 -0
  167. package/dist/_chunk/interactions.jsx +237 -0
  168. package/dist/_chunk/interactions.jsx.map +1 -0
  169. package/dist/_chunk/link.js +96 -0
  170. package/dist/_chunk/link.js.map +1 -0
  171. package/dist/_chunk/link.jsx +96 -0
  172. package/dist/_chunk/link.jsx.map +1 -0
  173. package/dist/_chunk/listbox.js +324 -0
  174. package/dist/_chunk/listbox.js.map +1 -0
  175. package/dist/_chunk/listbox.jsx +324 -0
  176. package/dist/_chunk/listbox.jsx.map +1 -0
  177. package/dist/_chunk/live-announcer.js +207 -0
  178. package/dist/_chunk/live-announcer.js.map +1 -0
  179. package/dist/_chunk/live-announcer.jsx +207 -0
  180. package/dist/_chunk/live-announcer.jsx.map +1 -0
  181. package/dist/_chunk/menu.js +518 -0
  182. package/dist/_chunk/menu.js.map +1 -0
  183. package/dist/_chunk/menu.jsx +518 -0
  184. package/dist/_chunk/menu.jsx.map +1 -0
  185. package/dist/_chunk/meter.js +33 -0
  186. package/dist/_chunk/meter.js.map +1 -0
  187. package/dist/_chunk/meter.jsx +33 -0
  188. package/dist/_chunk/meter.jsx.map +1 -0
  189. package/dist/_chunk/numberfield.js +258 -0
  190. package/dist/_chunk/numberfield.js.map +1 -0
  191. package/dist/_chunk/numberfield.jsx +258 -0
  192. package/dist/_chunk/numberfield.jsx.map +1 -0
  193. package/dist/_chunk/overlays.js +186 -0
  194. package/dist/_chunk/overlays.js.map +1 -0
  195. package/dist/_chunk/overlays.jsx +162 -0
  196. package/dist/_chunk/overlays.jsx.map +1 -0
  197. package/dist/_chunk/popover.js +574 -0
  198. package/dist/_chunk/popover.js.map +1 -0
  199. package/dist/_chunk/popover.jsx +574 -0
  200. package/dist/_chunk/popover.jsx.map +1 -0
  201. package/dist/_chunk/radio.js +319 -0
  202. package/dist/_chunk/radio.js.map +1 -0
  203. package/dist/_chunk/radio.jsx +319 -0
  204. package/dist/_chunk/radio.jsx.map +1 -0
  205. package/dist/_chunk/searchfield.js +209 -0
  206. package/dist/_chunk/searchfield.js.map +1 -0
  207. package/dist/_chunk/searchfield.jsx +209 -0
  208. package/dist/_chunk/searchfield.jsx.map +1 -0
  209. package/dist/_chunk/select.js +403 -0
  210. package/dist/_chunk/select.js.map +1 -0
  211. package/dist/_chunk/select.jsx +394 -0
  212. package/dist/_chunk/select.jsx.map +1 -0
  213. package/dist/_chunk/selection.js +679 -0
  214. package/dist/_chunk/selection.js.map +1 -0
  215. package/dist/_chunk/selection.jsx +679 -0
  216. package/dist/_chunk/selection.jsx.map +1 -0
  217. package/dist/_chunk/separator.js +29 -0
  218. package/dist/_chunk/separator.js.map +1 -0
  219. package/dist/_chunk/separator.jsx +29 -0
  220. package/dist/_chunk/separator.jsx.map +1 -0
  221. package/dist/_chunk/slider.js +255 -0
  222. package/dist/_chunk/slider.js.map +1 -0
  223. package/dist/_chunk/slider.jsx +255 -0
  224. package/dist/_chunk/slider.jsx.map +1 -0
  225. package/dist/_chunk/steplist.js +66 -0
  226. package/dist/_chunk/steplist.js.map +1 -0
  227. package/dist/_chunk/steplist.jsx +66 -0
  228. package/dist/_chunk/steplist.jsx.map +1 -0
  229. package/dist/_chunk/switch.js +34 -0
  230. package/dist/_chunk/switch.js.map +1 -0
  231. package/dist/_chunk/switch.jsx +34 -0
  232. package/dist/_chunk/switch.jsx.map +1 -0
  233. package/dist/_chunk/table.js +1051 -0
  234. package/dist/_chunk/table.js.map +1 -0
  235. package/dist/_chunk/table.jsx +1051 -0
  236. package/dist/_chunk/table.jsx.map +1 -0
  237. package/dist/_chunk/tabs.js +260 -0
  238. package/dist/_chunk/tabs.js.map +1 -0
  239. package/dist/_chunk/tabs.jsx +260 -0
  240. package/dist/_chunk/tabs.jsx.map +1 -0
  241. package/dist/_chunk/tag.js +286 -0
  242. package/dist/_chunk/tag.js.map +1 -0
  243. package/dist/_chunk/tag.jsx +286 -0
  244. package/dist/_chunk/tag.jsx.map +1 -0
  245. package/dist/_chunk/textfield.js +109 -0
  246. package/dist/_chunk/textfield.js.map +1 -0
  247. package/dist/_chunk/textfield.jsx +109 -0
  248. package/dist/_chunk/textfield.jsx.map +1 -0
  249. package/dist/_chunk/toast.js +250 -0
  250. package/dist/_chunk/toast.js.map +1 -0
  251. package/dist/_chunk/toast.jsx +250 -0
  252. package/dist/_chunk/toast.jsx.map +1 -0
  253. package/dist/_chunk/toolbar.js +258 -0
  254. package/dist/_chunk/toolbar.js.map +1 -0
  255. package/dist/_chunk/toolbar.jsx +258 -0
  256. package/dist/_chunk/toolbar.jsx.map +1 -0
  257. package/dist/_chunk/tooltip.js +185 -0
  258. package/dist/_chunk/tooltip.js.map +1 -0
  259. package/dist/_chunk/tooltip.jsx +185 -0
  260. package/dist/_chunk/tooltip.jsx.map +1 -0
  261. package/dist/_chunk/tree.js +424 -0
  262. package/dist/_chunk/tree.js.map +1 -0
  263. package/dist/_chunk/tree.jsx +424 -0
  264. package/dist/_chunk/tree.jsx.map +1 -0
  265. package/dist/_chunk/utils.js +665 -0
  266. package/dist/_chunk/utils.js.map +1 -0
  267. package/dist/_chunk/utils.jsx +665 -0
  268. package/dist/_chunk/utils.jsx.map +1 -0
  269. package/dist/_chunk/visually-hidden.js +92 -0
  270. package/dist/_chunk/visually-hidden.js.map +1 -0
  271. package/dist/_chunk/visually-hidden.jsx +92 -0
  272. package/dist/_chunk/visually-hidden.jsx.map +1 -0
  273. package/dist/actiongroup/index.js +2 -0
  274. package/dist/actiongroup/index.jsx +2 -0
  275. package/dist/autocomplete/createAutocomplete.d.ts +2 -0
  276. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  277. package/dist/autocomplete/index.js +2 -0
  278. package/dist/autocomplete/index.jsx +2 -0
  279. package/dist/breadcrumbs/index.js +2 -0
  280. package/dist/breadcrumbs/index.jsx +2 -0
  281. package/dist/button/index.js +2 -0
  282. package/dist/button/index.jsx +2 -0
  283. package/dist/calendar/createCalendar.d.ts.map +1 -1
  284. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  285. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  286. package/dist/calendar/createCalendarMonthPicker.d.ts +41 -0
  287. package/dist/calendar/createCalendarMonthPicker.d.ts.map +1 -0
  288. package/dist/calendar/createCalendarYearPicker.d.ts +49 -0
  289. package/dist/calendar/createCalendarYearPicker.d.ts.map +1 -0
  290. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  291. package/dist/calendar/index.d.ts +2 -0
  292. package/dist/calendar/index.d.ts.map +1 -1
  293. package/dist/calendar/index.js +2 -0
  294. package/dist/calendar/index.jsx +2 -0
  295. package/dist/calendar/utils.d.ts +4 -0
  296. package/dist/calendar/utils.d.ts.map +1 -1
  297. package/dist/checkbox/createCheckbox.d.ts +4 -0
  298. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  299. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  300. package/dist/checkbox/index.js +2 -0
  301. package/dist/checkbox/index.jsx +2 -0
  302. package/dist/collections/index.js +160 -0
  303. package/dist/collections/index.js.map +1 -0
  304. package/dist/collections/index.jsx +160 -0
  305. package/dist/collections/index.jsx.map +1 -0
  306. package/dist/color/index.js +2 -0
  307. package/dist/color/index.jsx +2 -0
  308. package/dist/combobox/index.js +2 -0
  309. package/dist/combobox/index.jsx +2 -0
  310. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  311. package/dist/datepicker/index.js +2 -0
  312. package/dist/datepicker/index.jsx +2 -0
  313. package/dist/dialog/index.js +2 -0
  314. package/dist/dialog/index.jsx +2 -0
  315. package/dist/disclosure/index.js +2 -0
  316. package/dist/disclosure/index.jsx +2 -0
  317. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  318. package/dist/dnd/index.js +2 -0
  319. package/dist/dnd/index.jsx +2 -0
  320. package/dist/dnd/utils.d.ts +2 -2
  321. package/dist/dnd/utils.d.ts.map +1 -1
  322. package/dist/focus/FocusScope.d.ts.map +1 -1
  323. package/dist/focus/index.js +2 -0
  324. package/dist/focus/index.jsx +2 -0
  325. package/dist/form/createFormValidation.d.ts.map +1 -1
  326. package/dist/form/index.js +3 -0
  327. package/dist/form/index.jsx +3 -0
  328. package/dist/grid/index.js +2 -0
  329. package/dist/grid/index.jsx +2 -0
  330. package/dist/gridlist/createGridList.d.ts +7 -1
  331. package/dist/gridlist/createGridList.d.ts.map +1 -1
  332. package/dist/gridlist/createGridListItem.d.ts +1 -1
  333. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  334. package/dist/gridlist/createGridListSection.d.ts +15 -0
  335. package/dist/gridlist/createGridListSection.d.ts.map +1 -0
  336. package/dist/gridlist/index.d.ts +2 -1
  337. package/dist/gridlist/index.d.ts.map +1 -1
  338. package/dist/gridlist/index.js +2 -0
  339. package/dist/gridlist/index.jsx +2 -0
  340. package/dist/gridlist/types.d.ts +50 -0
  341. package/dist/gridlist/types.d.ts.map +1 -1
  342. package/dist/i18n/index.js +3 -0
  343. package/dist/i18n/index.jsx +3 -0
  344. package/dist/index.d.ts +7 -3
  345. package/dist/index.d.ts.map +1 -1
  346. package/dist/index.js +71 -18311
  347. package/dist/index.jsx +71 -18242
  348. package/dist/interactions/PressEvent.d.ts +11 -0
  349. package/dist/interactions/PressEvent.d.ts.map +1 -1
  350. package/dist/interactions/createInteractionModality.d.ts +0 -1
  351. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  352. package/dist/interactions/createKeyboard.d.ts.map +1 -1
  353. package/dist/interactions/createPress.d.ts.map +1 -1
  354. package/dist/interactions/index.js +10 -0
  355. package/dist/interactions/index.jsx +10 -0
  356. package/dist/label/index.js +4 -0
  357. package/dist/label/index.jsx +4 -0
  358. package/dist/landmark/index.js +2 -0
  359. package/dist/landmark/index.jsx +2 -0
  360. package/dist/link/index.js +2 -0
  361. package/dist/link/index.jsx +2 -0
  362. package/dist/listbox/createListBox.d.ts +37 -0
  363. package/dist/listbox/createListBox.d.ts.map +1 -1
  364. package/dist/listbox/createOption.d.ts +6 -0
  365. package/dist/listbox/createOption.d.ts.map +1 -1
  366. package/dist/listbox/index.js +2 -0
  367. package/dist/listbox/index.jsx +2 -0
  368. package/dist/live-announcer/index.js +2 -0
  369. package/dist/live-announcer/index.jsx +2 -0
  370. package/dist/menu/createMenu.d.ts +7 -4
  371. package/dist/menu/createMenu.d.ts.map +1 -1
  372. package/dist/menu/createMenuItem.d.ts +9 -1
  373. package/dist/menu/createMenuItem.d.ts.map +1 -1
  374. package/dist/menu/index.js +2 -0
  375. package/dist/menu/index.jsx +2 -0
  376. package/dist/meter/index.js +2 -0
  377. package/dist/meter/index.jsx +2 -0
  378. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  379. package/dist/numberfield/index.js +2 -0
  380. package/dist/numberfield/index.jsx +2 -0
  381. package/dist/overlays/index.js +4 -0
  382. package/dist/overlays/index.jsx +4 -0
  383. package/dist/popover/calculatePosition.d.ts +2 -0
  384. package/dist/popover/calculatePosition.d.ts.map +1 -1
  385. package/dist/popover/createOverlayPosition.d.ts +8 -0
  386. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  387. package/dist/popover/index.js +2 -0
  388. package/dist/popover/index.jsx +2 -0
  389. package/dist/progress/index.js +2 -0
  390. package/dist/progress/index.jsx +2 -0
  391. package/dist/radio/createRadio.d.ts +2 -0
  392. package/dist/radio/createRadio.d.ts.map +1 -1
  393. package/dist/radio/index.js +2 -0
  394. package/dist/radio/index.jsx +2 -0
  395. package/dist/searchfield/index.js +2 -0
  396. package/dist/searchfield/index.jsx +2 -0
  397. package/dist/select/createSelect.d.ts.map +1 -1
  398. package/dist/select/index.js +2 -0
  399. package/dist/select/index.jsx +2 -0
  400. package/dist/selection/DOMLayoutDelegate.d.ts +58 -0
  401. package/dist/selection/DOMLayoutDelegate.d.ts.map +1 -0
  402. package/dist/selection/ListKeyboardDelegate.d.ts +95 -0
  403. package/dist/selection/ListKeyboardDelegate.d.ts.map +1 -0
  404. package/dist/selection/constants.d.ts +15 -0
  405. package/dist/selection/constants.d.ts.map +1 -0
  406. package/dist/selection/createCollectionRowInteraction.d.ts +13 -0
  407. package/dist/selection/createCollectionRowInteraction.d.ts.map +1 -0
  408. package/dist/selection/createScrollIntoViewOnFocus.d.ts +31 -0
  409. package/dist/selection/createScrollIntoViewOnFocus.d.ts.map +1 -0
  410. package/dist/selection/createSelectableCollection.d.ts +69 -0
  411. package/dist/selection/createSelectableCollection.d.ts.map +1 -0
  412. package/dist/selection/createSelectableItem.d.ts +154 -0
  413. package/dist/selection/createSelectableItem.d.ts.map +1 -0
  414. package/dist/selection/createSelectableList.d.ts +43 -0
  415. package/dist/selection/createSelectableList.d.ts.map +1 -0
  416. package/dist/selection/createTypeSelect.d.ts.map +1 -1
  417. package/dist/selection/index.d.ts +9 -0
  418. package/dist/selection/index.d.ts.map +1 -1
  419. package/dist/selection/index.js +4 -0
  420. package/dist/selection/index.jsx +4 -0
  421. package/dist/selection/selectItem.d.ts +29 -0
  422. package/dist/selection/selectItem.d.ts.map +1 -0
  423. package/dist/selection/utils.d.ts +40 -0
  424. package/dist/selection/utils.d.ts.map +1 -0
  425. package/dist/separator/index.js +2 -0
  426. package/dist/separator/index.jsx +2 -0
  427. package/dist/slider/createSlider.d.ts.map +1 -1
  428. package/dist/slider/index.js +2 -0
  429. package/dist/slider/index.jsx +2 -0
  430. package/dist/ssr/index.d.ts +17 -0
  431. package/dist/ssr/index.d.ts.map +1 -1
  432. package/dist/ssr/index.js +299 -0
  433. package/dist/ssr/index.js.map +1 -0
  434. package/dist/ssr/index.jsx +292 -0
  435. package/dist/ssr/index.jsx.map +1 -0
  436. package/dist/steplist/index.js +2 -0
  437. package/dist/steplist/index.jsx +2 -0
  438. package/dist/switch/createSwitch.d.ts +4 -0
  439. package/dist/switch/createSwitch.d.ts.map +1 -1
  440. package/dist/switch/index.js +2 -0
  441. package/dist/switch/index.jsx +2 -0
  442. package/dist/table/createTable.d.ts.map +1 -1
  443. package/dist/table/createTableRow.d.ts +1 -1
  444. package/dist/table/createTableRow.d.ts.map +1 -1
  445. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  446. package/dist/table/index.js +2 -0
  447. package/dist/table/index.jsx +2 -0
  448. package/dist/table/types.d.ts +27 -1
  449. package/dist/table/types.d.ts.map +1 -1
  450. package/dist/tabs/createTabs.d.ts +4 -3
  451. package/dist/tabs/createTabs.d.ts.map +1 -1
  452. package/dist/tabs/index.js +2 -0
  453. package/dist/tabs/index.jsx +2 -0
  454. package/dist/tag/createTag.d.ts +2 -0
  455. package/dist/tag/createTag.d.ts.map +1 -1
  456. package/dist/tag/index.js +2 -0
  457. package/dist/tag/index.jsx +2 -0
  458. package/dist/textfield/index.js +2 -0
  459. package/dist/textfield/index.jsx +2 -0
  460. package/dist/toast/createToast.d.ts.map +1 -1
  461. package/dist/toast/index.js +2 -0
  462. package/dist/toast/index.jsx +2 -0
  463. package/dist/toggle/createToggle.d.ts +4 -0
  464. package/dist/toggle/createToggle.d.ts.map +1 -1
  465. package/dist/toggle/index.js +3 -0
  466. package/dist/toggle/index.jsx +3 -0
  467. package/dist/toolbar/createToolbar.d.ts +1 -1
  468. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  469. package/dist/toolbar/index.js +2 -0
  470. package/dist/toolbar/index.jsx +2 -0
  471. package/dist/tooltip/index.js +2 -0
  472. package/dist/tooltip/index.jsx +2 -0
  473. package/dist/tree/createTree.d.ts +5 -1
  474. package/dist/tree/createTree.d.ts.map +1 -1
  475. package/dist/tree/createTreeItem.d.ts +1 -1
  476. package/dist/tree/createTreeItem.d.ts.map +1 -1
  477. package/dist/tree/index.js +2 -0
  478. package/dist/tree/index.jsx +2 -0
  479. package/dist/tree/types.d.ts +10 -0
  480. package/dist/tree/types.d.ts.map +1 -1
  481. package/dist/utils/animation.d.ts +60 -0
  482. package/dist/utils/animation.d.ts.map +1 -0
  483. package/dist/utils/dom.d.ts +48 -2
  484. package/dist/utils/dom.d.ts.map +1 -1
  485. package/dist/utils/index.d.ts +4 -1
  486. package/dist/utils/index.d.ts.map +1 -1
  487. package/dist/utils/index.js +5 -0
  488. package/dist/utils/index.jsx +5 -0
  489. package/dist/utils/keyboard.d.ts +17 -0
  490. package/dist/utils/keyboard.d.ts.map +1 -0
  491. package/dist/utils/mergeProps.d.ts.map +1 -1
  492. package/dist/utils/scrollIntoView.d.ts +30 -0
  493. package/dist/utils/scrollIntoView.d.ts.map +1 -0
  494. package/dist/visually-hidden/index.js +2 -0
  495. package/dist/visually-hidden/index.jsx +2 -0
  496. package/package.json +304 -3
  497. package/src/autocomplete/createAutocomplete.ts +67 -21
  498. package/src/calendar/createCalendar.ts +2 -0
  499. package/src/calendar/createCalendarCell.ts +19 -2
  500. package/src/calendar/createCalendarGrid.ts +43 -9
  501. package/src/calendar/createCalendarMonthPicker.ts +105 -0
  502. package/src/calendar/createCalendarYearPicker.ts +144 -0
  503. package/src/calendar/createRangeCalendar.ts +2 -0
  504. package/src/calendar/index.ts +17 -0
  505. package/src/calendar/utils.ts +4 -0
  506. package/src/checkbox/createCheckbox.ts +10 -0
  507. package/src/checkbox/createCheckboxGroupItem.ts +12 -16
  508. package/src/datepicker/createDateSegment.ts +6 -1
  509. package/src/dnd/createDroppableCollection.ts +4 -1
  510. package/src/dnd/utils.ts +27 -3
  511. package/src/focus/FocusScope.tsx +152 -18
  512. package/src/form/createFormValidation.ts +8 -1
  513. package/src/gridlist/createGridList.ts +145 -42
  514. package/src/gridlist/createGridListItem.ts +87 -155
  515. package/src/gridlist/createGridListSection.ts +54 -0
  516. package/src/gridlist/index.ts +3 -0
  517. package/src/gridlist/types.ts +47 -0
  518. package/src/index.ts +40 -0
  519. package/src/interactions/PressEvent.ts +14 -0
  520. package/src/interactions/createInteractionModality.ts +21 -12
  521. package/src/interactions/createKeyboard.ts +10 -0
  522. package/src/interactions/createPress.ts +29 -6
  523. package/src/listbox/createListBox.ts +129 -8
  524. package/src/listbox/createOption.ts +68 -73
  525. package/src/menu/createMenu.ts +93 -16
  526. package/src/menu/createMenuItem.ts +253 -41
  527. package/src/numberfield/createNumberField.ts +82 -14
  528. package/src/popover/calculatePosition.ts +19 -7
  529. package/src/popover/createOverlayPosition.ts +9 -0
  530. package/src/radio/createRadio.ts +19 -2
  531. package/src/select/createSelect.ts +18 -2
  532. package/src/selection/DOMLayoutDelegate.ts +102 -0
  533. package/src/selection/ListKeyboardDelegate.ts +398 -0
  534. package/src/selection/constants.ts +16 -0
  535. package/src/selection/createCollectionRowInteraction.ts +209 -0
  536. package/src/selection/createScrollIntoViewOnFocus.ts +65 -0
  537. package/src/selection/createSelectableCollection.ts +645 -0
  538. package/src/selection/createSelectableItem.ts +498 -0
  539. package/src/selection/createSelectableList.ts +93 -0
  540. package/src/selection/createTypeSelect.ts +112 -51
  541. package/src/selection/index.ts +31 -0
  542. package/src/selection/selectItem.ts +80 -0
  543. package/src/selection/utils.ts +82 -0
  544. package/src/slider/createSlider.ts +48 -1
  545. package/src/ssr/index.tsx +31 -0
  546. package/src/switch/createSwitch.ts +10 -0
  547. package/src/table/createTable.ts +56 -26
  548. package/src/table/createTableRow.ts +198 -203
  549. package/src/table/createTableSelectAllCheckbox.ts +3 -4
  550. package/src/table/types.ts +29 -1
  551. package/src/tabs/createTabs.ts +50 -20
  552. package/src/tag/createTag.ts +9 -4
  553. package/src/toast/createToast.ts +1 -0
  554. package/src/toggle/createToggle.ts +20 -0
  555. package/src/toolbar/createToolbar.ts +43 -42
  556. package/src/tree/createTree.ts +100 -42
  557. package/src/tree/createTreeItem.ts +105 -120
  558. package/src/tree/types.ts +10 -0
  559. package/src/utils/animation.ts +151 -0
  560. package/src/utils/dom.ts +215 -25
  561. package/src/utils/index.ts +8 -0
  562. package/src/utils/keyboard.ts +25 -0
  563. package/src/utils/mergeProps.ts +8 -1
  564. package/src/utils/scrollIntoView.ts +181 -0
  565. package/dist/index.js.map +0 -1
  566. package/dist/index.jsx.map +0 -1
@@ -0,0 +1,319 @@
1
+ import { t as createPress } from "./createPress.jsx";
2
+ import { i as access, o as mergeProps, t as isDevEnv } from "./env.jsx";
3
+ import { t as filterDOMProps } from "./filterDOMProps.jsx";
4
+ import { a as getEventTarget, t as focusSafely } from "./focus.jsx";
5
+ import { t as createFocusWithin } from "./createFocusWithin.jsx";
6
+ import { n as createFocusable } from "./createFocusable.jsx";
7
+ import { a as useLocale } from "./createCollator.jsx";
8
+ import { createId as createId$1, createSlotId } from "../ssr/index.jsx";
9
+ import { t as createField } from "./createField.jsx";
10
+ import { createEffect } from "solid-js";
11
+ import { createRadioGroupState, radioGroupSyncVersion, radioGroupSyncVersion as radioGroupSyncVersion$1 } from "@proyecto-viviana/solid-stately";
12
+ //#region src/radio/createRadioGroup.ts
13
+ const radioGroupData = /* @__PURE__ */ new WeakMap();
14
+ /**
15
+ * Provides the behavior and accessibility implementation for a radio group component.
16
+ * Radio groups allow users to select a single item from a list of mutually exclusive options.
17
+ */
18
+ function createRadioGroup(props, state) {
19
+ const getProps = () => access(props);
20
+ const locale = useLocale();
21
+ const orientation = () => getProps().orientation ?? "vertical";
22
+ const isReadOnly = () => getProps().isReadOnly ?? false;
23
+ const isRequired = () => getProps().isRequired ?? false;
24
+ const isDisabled = () => getProps().isDisabled ?? false;
25
+ const validationBehavior = () => getProps().validationBehavior ?? "native";
26
+ const displayValidation = () => state.displayValidation();
27
+ const validationErrors = () => displayValidation().validationErrors;
28
+ const validationDetails = () => displayValidation().validationDetails;
29
+ const isInvalid = () => displayValidation().isInvalid;
30
+ const fallbackErrorMessage = () => {
31
+ const errors = validationErrors();
32
+ return errors.length > 0 ? errors : void 0;
33
+ };
34
+ const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField({
35
+ get id() {
36
+ return getProps().id;
37
+ },
38
+ get label() {
39
+ return getProps().label;
40
+ },
41
+ get "aria-label"() {
42
+ return getProps()["aria-label"];
43
+ },
44
+ get "aria-labelledby"() {
45
+ return getProps()["aria-labelledby"];
46
+ },
47
+ get description() {
48
+ return getProps().description;
49
+ },
50
+ get errorMessage() {
51
+ return getProps().errorMessage ?? fallbackErrorMessage();
52
+ },
53
+ get isInvalid() {
54
+ return isInvalid();
55
+ },
56
+ labelElementType: "span"
57
+ });
58
+ const { focusWithinProps } = createFocusWithin({
59
+ onBlurWithin(e) {
60
+ getProps().onBlur?.(e);
61
+ if (!state.selectedValue()) state.setLastFocusedValue(null);
62
+ },
63
+ onFocusWithin: (e) => getProps().onFocus?.(e),
64
+ onFocusWithinChange: (isFocused) => getProps().onFocusChange?.(isFocused)
65
+ });
66
+ const domProps = () => filterDOMProps(getProps(), { labelable: true });
67
+ const groupName = getProps().name ?? createId$1();
68
+ radioGroupData.set(state, {
69
+ name: groupName,
70
+ form: getProps().form,
71
+ descriptionId: descriptionProps.id,
72
+ errorMessageId: errorMessageProps.id,
73
+ validationBehavior: validationBehavior()
74
+ });
75
+ const getNavigableRadios = (root) => {
76
+ return Array.from(root.querySelectorAll("input[type=\"radio\"]")).filter((el) => {
77
+ return el instanceof HTMLInputElement && !el.matches(":disabled");
78
+ });
79
+ };
80
+ const onKeyDown = (e) => {
81
+ let nextDir = null;
82
+ const isHorizontal = orientation() !== "vertical";
83
+ const isRTL = locale().direction === "rtl" && isHorizontal;
84
+ switch (e.key) {
85
+ case "ArrowRight":
86
+ nextDir = isRTL ? "prev" : "next";
87
+ break;
88
+ case "ArrowLeft":
89
+ nextDir = isRTL ? "next" : "prev";
90
+ break;
91
+ case "ArrowDown":
92
+ nextDir = "next";
93
+ break;
94
+ case "ArrowUp":
95
+ nextDir = "prev";
96
+ break;
97
+ default: return;
98
+ }
99
+ e.preventDefault();
100
+ const root = e.currentTarget;
101
+ if (!(root instanceof HTMLElement)) return;
102
+ const radios = getNavigableRadios(root);
103
+ if (radios.length === 0) return;
104
+ const eventTarget = getEventTarget(e);
105
+ const activeElement = root.ownerDocument.activeElement;
106
+ const currentRadio = eventTarget instanceof HTMLInputElement && eventTarget.type === "radio" ? eventTarget : activeElement instanceof HTMLInputElement && activeElement.type === "radio" ? activeElement : null;
107
+ const currentIndex = currentRadio ? radios.indexOf(currentRadio) : -1;
108
+ let nextIndex;
109
+ if (nextDir === "next") nextIndex = currentIndex >= 0 ? (currentIndex + 1) % radios.length : 0;
110
+ else nextIndex = currentIndex >= 0 ? (currentIndex - 1 + radios.length) % radios.length : radios.length - 1;
111
+ const nextRadio = radios[nextIndex];
112
+ if (!nextRadio) return;
113
+ focusSafely(nextRadio);
114
+ state.setSelectedValue(nextRadio.value);
115
+ };
116
+ return {
117
+ get radioGroupProps() {
118
+ return mergeProps(domProps(), focusWithinProps, {
119
+ role: "radiogroup",
120
+ onKeyDown,
121
+ "aria-invalid": isInvalid() || void 0,
122
+ "aria-errormessage": getProps()["aria-errormessage"],
123
+ "aria-readonly": isReadOnly() || void 0,
124
+ "aria-required": isRequired() || void 0,
125
+ "aria-disabled": isDisabled() || void 0,
126
+ "aria-orientation": orientation(),
127
+ ...fieldProps
128
+ });
129
+ },
130
+ labelProps,
131
+ descriptionProps,
132
+ errorMessageProps,
133
+ get isInvalid() {
134
+ return isInvalid();
135
+ },
136
+ get validationErrors() {
137
+ return validationErrors();
138
+ },
139
+ get validationDetails() {
140
+ return validationDetails();
141
+ }
142
+ };
143
+ }
144
+ //#endregion
145
+ //#region src/radio/createRadio.ts
146
+ /**
147
+ * Radio hook for Solidaria
148
+ *
149
+ * Provides the behavior and accessibility implementation for an individual
150
+ * radio button in a radio group.
151
+ *
152
+ * This is a 1:1 port of @react-aria/radio's useRadio hook.
153
+ */
154
+ /**
155
+ * Provides the behavior and accessibility implementation for an individual
156
+ * radio button in a radio group.
157
+ */
158
+ function createRadio(props, state, ref) {
159
+ const getProps = () => access(props);
160
+ const isDisabled = () => getProps().isDisabled || state.isDisabled;
161
+ const value = () => getProps().value;
162
+ const isSelected = () => {
163
+ return state.selectedValue() === value();
164
+ };
165
+ createEffect(() => {
166
+ const p = getProps();
167
+ const hasChildren = p.children != null;
168
+ const hasAriaLabel = p["aria-label"] != null || p["aria-labelledby"] != null;
169
+ if (!hasChildren && !hasAriaLabel && isDevEnv()) console.warn("If you do not provide children, you must specify an aria-label for accessibility");
170
+ });
171
+ createEffect(() => {
172
+ radioGroupSyncVersion.get(state)?.();
173
+ const shouldBeChecked = isSelected();
174
+ const inputEl = ref();
175
+ if (!inputEl) return;
176
+ if (inputEl.checked !== shouldBeChecked) inputEl.checked = shouldBeChecked;
177
+ });
178
+ const onChange = (e) => {
179
+ e.stopPropagation();
180
+ const target = e.target;
181
+ if (isDisabled()) {
182
+ target.checked = isSelected();
183
+ return;
184
+ }
185
+ state.setSelectedValue(value());
186
+ target.focus();
187
+ target.checked = isSelected();
188
+ };
189
+ const { pressProps, isPressed } = createPress({
190
+ get onPressStart() {
191
+ return getProps().onPressStart;
192
+ },
193
+ get onPressEnd() {
194
+ return getProps().onPressEnd;
195
+ },
196
+ get onPressChange() {
197
+ return getProps().onPressChange;
198
+ },
199
+ get onPress() {
200
+ return getProps().onPress;
201
+ },
202
+ get onPressUp() {
203
+ return getProps().onPressUp;
204
+ },
205
+ get onClick() {
206
+ return getProps().onClick;
207
+ },
208
+ get isDisabled() {
209
+ return isDisabled();
210
+ }
211
+ });
212
+ const { pressProps: labelPressProps, isPressed: isLabelPressed } = createPress({
213
+ get onPressStart() {
214
+ return getProps().onPressStart;
215
+ },
216
+ get onPressEnd() {
217
+ return getProps().onPressEnd;
218
+ },
219
+ get onPressChange() {
220
+ return getProps().onPressChange;
221
+ },
222
+ get onPressUp() {
223
+ return getProps().onPressUp;
224
+ },
225
+ get onClick() {
226
+ return getProps().onClick;
227
+ },
228
+ onPress(e) {
229
+ getProps().onPress?.(e);
230
+ state.setSelectedValue(value());
231
+ ref()?.focus();
232
+ },
233
+ get isDisabled() {
234
+ return isDisabled();
235
+ }
236
+ });
237
+ const { focusableProps } = createFocusable({
238
+ get isDisabled() {
239
+ return isDisabled();
240
+ },
241
+ get autoFocus() {
242
+ return getProps().autoFocus;
243
+ },
244
+ onFocus(e) {
245
+ getProps().onFocus?.(e);
246
+ state.setLastFocusedValue(value());
247
+ },
248
+ get onBlur() {
249
+ return getProps().onBlur;
250
+ },
251
+ get onFocusChange() {
252
+ return getProps().onFocusChange;
253
+ },
254
+ get onKeyDown() {
255
+ return getProps().onKeyDown;
256
+ },
257
+ get onKeyUp() {
258
+ return getProps().onKeyUp;
259
+ }
260
+ }, ref);
261
+ const interactions = mergeProps(pressProps, focusableProps);
262
+ const domProps = () => filterDOMProps(getProps(), { labelable: true });
263
+ const getTabIndex = () => {
264
+ if (isDisabled()) return;
265
+ const selected = state.selectedValue();
266
+ const lastFocused = state.lastFocusedValue();
267
+ const currentValue = value();
268
+ if (selected != null) {
269
+ if (selected === currentValue) return 0;
270
+ return -1;
271
+ } else {
272
+ if (lastFocused === currentValue || lastFocused == null) return 0;
273
+ return -1;
274
+ }
275
+ };
276
+ const getGroupData = () => radioGroupData.get(state);
277
+ const combinedIsPressed = () => isPressed() || isLabelPressed();
278
+ const descriptionId = createSlotId();
279
+ return {
280
+ labelProps: mergeProps(labelPressProps, {
281
+ onClick: (e) => e.preventDefault(),
282
+ onMouseDown: (e) => e.preventDefault()
283
+ }),
284
+ get inputProps() {
285
+ const p = getProps();
286
+ const groupData = getGroupData();
287
+ const describedByIds = [];
288
+ if (p["aria-describedby"]) describedByIds.push(p["aria-describedby"]);
289
+ const ownDescriptionId = descriptionId();
290
+ if (ownDescriptionId) describedByIds.push(ownDescriptionId);
291
+ if (state.isInvalid && groupData?.errorMessageId) describedByIds.push(groupData.errorMessageId);
292
+ if (groupData?.descriptionId) describedByIds.push(groupData.descriptionId);
293
+ const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(" ") : void 0;
294
+ const validationBehavior = groupData?.validationBehavior ?? "native";
295
+ return mergeProps(domProps(), interactions, {
296
+ type: "radio",
297
+ name: groupData?.name,
298
+ form: groupData?.form,
299
+ tabIndex: getTabIndex(),
300
+ disabled: isDisabled(),
301
+ required: validationBehavior === "native" ? state.isRequired : void 0,
302
+ checked: isSelected(),
303
+ value: value(),
304
+ onChange,
305
+ "aria-describedby": ariaDescribedBy
306
+ });
307
+ },
308
+ get descriptionProps() {
309
+ return { id: descriptionId() };
310
+ },
311
+ isDisabled: isDisabled(),
312
+ isSelected,
313
+ isPressed: combinedIsPressed
314
+ };
315
+ }
316
+ //#endregion
317
+ export { radioGroupData as a, createRadioGroup as i, radioGroupSyncVersion$1 as n, createRadio as r, createRadioGroupState as t };
318
+
319
+ //# sourceMappingURL=radio.jsx.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radio.jsx","names":["createId"],"sources":["../../src/radio/createRadioGroup.ts","../../src/radio/createRadio.ts"],"sourcesContent":["/**\n * Radio group hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a radio group component.\n * Radio groups allow users to select a single item from a list of mutually exclusive options.\n *\n * This is a 1:1 port of @react-aria/radio's useRadioGroup hook.\n */\n\nimport { JSX } from \"solid-js\";\nimport { createField } from \"../label/createField\";\nimport { createFocusWithin } from \"../interactions/createFocusWithin\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { focusSafely, getEventTarget } from \"../utils\";\nimport { useLocale } from \"../i18n\";\nimport { createId } from \"../ssr\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\nimport { type RadioGroupState, type ValidityState } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaRadioGroupProps {\n /** The content to display as the label. */\n label?: JSX.Element;\n /** A description for the radio group. Provides additional context. */\n description?: JSX.Element;\n /** An error message for the radio group. */\n errorMessage?:\n | JSX.Element\n | ((validation: { isInvalid: boolean; validationErrors: string[] }) => JSX.Element);\n /** Whether the radio group is disabled. */\n isDisabled?: boolean;\n /** Whether the radio group is read only. */\n isReadOnly?: boolean;\n /** Whether the radio group is required. */\n isRequired?: boolean;\n /** Whether the radio group is invalid. */\n isInvalid?: boolean;\n /** The axis the Radio Button(s) should align with. Defaults to 'vertical'. */\n orientation?: \"horizontal\" | \"vertical\";\n /** The name of the radio group, used when submitting an HTML form. */\n name?: string;\n /** The form to associate the radio group with. */\n form?: string;\n /** Validation behavior for the radio group. */\n validationBehavior?: \"aria\" | \"native\";\n /** Handler that is called when the radio group receives focus. */\n onFocus?: (e: FocusEvent) => void;\n /** Handler that is called when the radio group loses focus. */\n onBlur?: (e: FocusEvent) => void;\n /** Handler that is called when the radio group's focus status changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Defines a string value that labels the current element. */\n \"aria-label\"?: string;\n /** Identifies the element (or elements) that labels the current element. */\n \"aria-labelledby\"?: string;\n /** Identifies the element (or elements) that describes the object. */\n \"aria-describedby\"?: string;\n /** Identifies the element (or elements) that provide an error message for the object. */\n \"aria-errormessage\"?: string;\n /** The element's unique identifier. */\n id?: string;\n}\n\nexport interface RadioGroupAria {\n /** Props for the radio group wrapper element. */\n radioGroupProps: JSX.HTMLAttributes<HTMLDivElement>;\n /** Props for the radio group's visible label (if any). */\n labelProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the radio group description element, if any. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Props for the radio group error message element, if any. */\n errorMessageProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the radio group is invalid. */\n isInvalid: boolean;\n /** Validation errors, if any. */\n validationErrors: string[];\n /** Validation details, if any. */\n validationDetails: ValidityState;\n}\n\n// WeakMap to share data between radio group and radio items\ninterface RadioGroupData {\n name: string;\n form: string | undefined;\n descriptionId: string | undefined;\n errorMessageId: string | undefined;\n validationBehavior: \"aria\" | \"native\";\n}\n\nexport const radioGroupData: WeakMap<RadioGroupState, RadioGroupData> = new WeakMap();\n\n/**\n * Provides the behavior and accessibility implementation for a radio group component.\n * Radio groups allow users to select a single item from a list of mutually exclusive options.\n */\nexport function createRadioGroup(\n props: MaybeAccessor<AriaRadioGroupProps>,\n state: RadioGroupState,\n): RadioGroupAria {\n const getProps = () => access(props);\n const locale = useLocale();\n\n const orientation = () => getProps().orientation ?? \"vertical\";\n const isReadOnly = () => getProps().isReadOnly ?? false;\n const isRequired = () => getProps().isRequired ?? false;\n const isDisabled = () => getProps().isDisabled ?? false;\n const validationBehavior = () => getProps().validationBehavior ?? \"native\";\n const displayValidation = () => state.displayValidation();\n const validationErrors = () => displayValidation().validationErrors;\n const validationDetails = () => displayValidation().validationDetails;\n const isInvalid = () => displayValidation().isInvalid;\n const fallbackErrorMessage = () => {\n const errors = validationErrors();\n return errors.length > 0 ? errors : undefined;\n };\n\n const { labelProps, fieldProps, descriptionProps, errorMessageProps } = createField({\n get id() {\n return getProps().id;\n },\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n get description() {\n return getProps().description;\n },\n get errorMessage() {\n return getProps().errorMessage ?? fallbackErrorMessage();\n },\n get isInvalid() {\n return isInvalid();\n },\n // Radio group is not an HTML input element so it\n // shouldn't be labeled by a <label> element.\n labelElementType: \"span\",\n });\n\n // Handle focus within - reset focusable radio when group loses focus and no selection\n const { focusWithinProps } = createFocusWithin({\n onBlurWithin(e: FocusEvent) {\n getProps().onBlur?.(e);\n if (!state.selectedValue()) {\n state.setLastFocusedValue(null);\n }\n },\n onFocusWithin: (e: FocusEvent) => getProps().onFocus?.(e),\n onFocusWithinChange: (isFocused: boolean) => getProps().onFocusChange?.(isFocused),\n });\n\n const domProps = () =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });\n\n const groupName = getProps().name ?? createId();\n\n radioGroupData.set(state, {\n name: groupName,\n form: getProps().form,\n descriptionId: descriptionProps.id,\n errorMessageId: errorMessageProps.id,\n validationBehavior: validationBehavior(),\n });\n\n const getNavigableRadios = (root: HTMLElement): HTMLInputElement[] => {\n return Array.from(root.querySelectorAll('input[type=\"radio\"]')).filter(\n (el): el is HTMLInputElement => {\n return el instanceof HTMLInputElement && !el.matches(\":disabled\");\n },\n );\n };\n\n // Keyboard navigation parity with React Aria.\n const onKeyDown: JSX.EventHandler<HTMLDivElement, KeyboardEvent> = (e) => {\n let nextDir: \"next\" | \"prev\" | null = null;\n const currentOrientation = orientation();\n const isHorizontal = currentOrientation !== \"vertical\";\n const isRTL = locale().direction === \"rtl\" && isHorizontal;\n\n switch (e.key) {\n case \"ArrowRight\":\n nextDir = isRTL ? \"prev\" : \"next\";\n break;\n case \"ArrowLeft\":\n nextDir = isRTL ? \"next\" : \"prev\";\n break;\n case \"ArrowDown\":\n nextDir = \"next\";\n break;\n case \"ArrowUp\":\n nextDir = \"prev\";\n break;\n default:\n return;\n }\n\n e.preventDefault();\n\n const root = e.currentTarget;\n if (!(root instanceof HTMLElement)) {\n return;\n }\n\n const radios = getNavigableRadios(root);\n if (radios.length === 0) {\n return;\n }\n\n const eventTarget = getEventTarget<Element>(e);\n const activeElement = root.ownerDocument.activeElement;\n\n const currentRadio =\n eventTarget instanceof HTMLInputElement && eventTarget.type === \"radio\"\n ? eventTarget\n : activeElement instanceof HTMLInputElement && activeElement.type === \"radio\"\n ? activeElement\n : null;\n\n const currentIndex = currentRadio ? radios.indexOf(currentRadio) : -1;\n\n let nextIndex: number;\n if (nextDir === \"next\") {\n nextIndex = currentIndex >= 0 ? (currentIndex + 1) % radios.length : 0;\n } else {\n nextIndex =\n currentIndex >= 0 ? (currentIndex - 1 + radios.length) % radios.length : radios.length - 1;\n }\n\n const nextRadio = radios[nextIndex];\n if (!nextRadio) {\n return;\n }\n\n focusSafely(nextRadio);\n state.setSelectedValue(nextRadio.value);\n };\n\n return {\n get radioGroupProps() {\n return mergeProps(domProps(), focusWithinProps as unknown as Record<string, unknown>, {\n role: \"radiogroup\",\n onKeyDown,\n \"aria-invalid\": isInvalid() || undefined,\n \"aria-errormessage\": getProps()[\"aria-errormessage\"],\n \"aria-readonly\": isReadOnly() || undefined,\n \"aria-required\": isRequired() || undefined,\n \"aria-disabled\": isDisabled() || undefined,\n \"aria-orientation\": orientation(),\n ...fieldProps,\n }) as JSX.HTMLAttributes<HTMLDivElement>;\n },\n labelProps: labelProps as JSX.HTMLAttributes<HTMLElement>,\n descriptionProps,\n errorMessageProps,\n get isInvalid() {\n return isInvalid();\n },\n get validationErrors() {\n return validationErrors();\n },\n get validationDetails() {\n return validationDetails();\n },\n };\n}\n","/**\n * Radio hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for an individual\n * radio button in a radio group.\n *\n * This is a 1:1 port of @react-aria/radio's useRadio hook.\n */\n\nimport { JSX, Accessor, createEffect } from \"solid-js\";\nimport { createPress } from \"../interactions/createPress\";\nimport { createFocusable } from \"../interactions/createFocusable\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { filterDOMProps } from \"../utils/filterDOMProps\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\nimport { isDevEnv } from \"../utils/env\";\nimport { createSlotId } from \"../ssr\";\nimport { type RadioGroupState, radioGroupSyncVersion } from \"@proyecto-viviana/solid-stately\";\nimport { radioGroupData } from \"./createRadioGroup\";\nimport { type PressEvent } from \"../interactions/PressEvent\";\n\nexport interface AriaRadioProps {\n /** The value of the radio button, used when submitting an HTML form. */\n value: string;\n /** Whether the radio button is disabled. */\n isDisabled?: boolean;\n /** The label for the radio button. */\n children?: JSX.Element;\n /** Defines a string value that labels the current element. */\n \"aria-label\"?: string;\n /** Identifies the element (or elements) that labels the current element. */\n \"aria-labelledby\"?: string;\n /** Identifies the element (or elements) that describes the object. */\n \"aria-describedby\"?: string;\n /** Handler that is called when the press is released over the target. */\n onPress?: (e: PressEvent) => void;\n /** Handler that is called when a press interaction starts. */\n onPressStart?: (e: PressEvent) => void;\n /** Handler that is called when a press interaction ends, either over the target or when the pointer leaves the target. */\n onPressEnd?: (e: PressEvent) => void;\n /** Handler that is called when the press state changes. */\n onPressChange?: (isPressed: boolean) => void;\n /** Handler that is called when a press is released over the target, regardless of whether it started on the target or not. */\n onPressUp?: (e: PressEvent) => void;\n /** Handler that is called when the element is clicked. */\n onClick?: (e: MouseEvent) => void;\n /** Handler that is called when the element receives focus. */\n onFocus?: (e: FocusEvent) => void;\n /** Handler that is called when the element loses focus. */\n onBlur?: (e: FocusEvent) => void;\n /** Handler that is called when the element's focus status changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Handler that is called when a key is pressed. */\n onKeyDown?: (e: KeyboardEvent) => void;\n /** Handler that is called when a key is released. */\n onKeyUp?: (e: KeyboardEvent) => void;\n /** Whether to autofocus the element. */\n autoFocus?: boolean;\n}\n\nexport interface RadioAria {\n /** Props for the label wrapper element. */\n labelProps: JSX.LabelHTMLAttributes<HTMLLabelElement>;\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;\n /** Props for the radio's description element, if any. */\n descriptionProps: JSX.HTMLAttributes<HTMLElement>;\n /** Whether the radio is disabled. */\n isDisabled: boolean;\n /** Whether the radio is currently selected. */\n isSelected: Accessor<boolean>;\n /** Whether the radio is in a pressed state. */\n isPressed: Accessor<boolean>;\n}\n\n/**\n * Provides the behavior and accessibility implementation for an individual\n * radio button in a radio group.\n */\nexport function createRadio(\n props: MaybeAccessor<AriaRadioProps>,\n state: RadioGroupState,\n ref: () => HTMLInputElement | null,\n): RadioAria {\n const getProps = () => access(props);\n\n const isDisabled = () => getProps().isDisabled || state.isDisabled;\n const value = () => getProps().value;\n const isSelected: Accessor<boolean> = () => {\n const selected = state.selectedValue();\n const v = value();\n return selected === v;\n };\n\n createEffect(() => {\n const p = getProps();\n const hasChildren = p.children != null;\n const hasAriaLabel = p[\"aria-label\"] != null || p[\"aria-labelledby\"] != null;\n if (!hasChildren && !hasAriaLabel && isDevEnv()) {\n console.warn(\n \"If you do not provide children, you must specify an aria-label for accessibility\",\n );\n }\n });\n\n // SolidJS-specific: Sync DOM checked state whenever selection changes\n // This handles:\n // 1. Initial render with controlled value\n // 2. Controlled mode where parent doesn't update value after click\n // 3. Native radio group behavior (clicking one unchecks others)\n //\n // Unlike React's VDOM reconciliation that re-applies all props on every render,\n // SolidJS only updates when signals change. Native radio behavior can change\n // the DOM checked state without our knowledge, so we need to actively sync.\n //\n // We track `syncVersion` to ensure this effect runs on EVERY selection attempt,\n // even in controlled mode where isSelected() may not change.\n createEffect(() => {\n // The WeakMap accessor is outside the public API to maintain React Aria parity.\n const syncVersion = radioGroupSyncVersion.get(state);\n syncVersion?.();\n\n const shouldBeChecked = isSelected();\n const inputEl = ref();\n if (!inputEl) return;\n\n if (inputEl.checked !== shouldBeChecked) {\n inputEl.checked = shouldBeChecked;\n }\n });\n\n // SolidJS-specific: Unlike React, the input's `checked` state can get out of sync\n // with our reactive state. This happens because:\n // 1. A readonly `<input type=\"radio\" />` is always \"checkable\" in the browser\n // 2. Even controlled inputs (`<input checked={isChecked} />`) will change their\n // internal `checked` state when clicked, regardless of what the signal says\n //\n // To prevent this, we force the input's `checked` DOM property to match our state\n // after processing the change. This is a common pattern across SolidJS component\n // libraries (see CREDITS.md for attribution).\n const onChange: JSX.EventHandler<HTMLInputElement, Event> = (e) => {\n e.stopPropagation();\n\n const target = e.target as HTMLInputElement;\n\n // Guard against disabled state - JSDOM's fireEvent may bypass disabled check\n if (isDisabled()) {\n target.checked = isSelected();\n return;\n }\n\n state.setSelectedValue(value());\n\n // Focus the input when clicked\n // In real browsers this happens automatically, but JSDOM/fireEvent doesn't trigger it\n target.focus();\n\n // Force the DOM checked state to match our reactive state\n // This handles controlled mode where the parent might not update the value\n target.checked = isSelected();\n };\n\n // Handle press state for keyboard interactions and cases where labelProps is not used.\n const { pressProps, isPressed } = createPress({\n get onPressStart() {\n return getProps().onPressStart;\n },\n get onPressEnd() {\n return getProps().onPressEnd;\n },\n get onPressChange() {\n return getProps().onPressChange;\n },\n get onPress() {\n return getProps().onPress;\n },\n get onPressUp() {\n return getProps().onPressUp;\n },\n get onClick() {\n return getProps().onClick;\n },\n get isDisabled() {\n return isDisabled();\n },\n });\n\n const { pressProps: labelPressProps, isPressed: isLabelPressed } = createPress({\n get onPressStart() {\n return getProps().onPressStart;\n },\n get onPressEnd() {\n return getProps().onPressEnd;\n },\n get onPressChange() {\n return getProps().onPressChange;\n },\n get onPressUp() {\n return getProps().onPressUp;\n },\n get onClick() {\n return getProps().onClick;\n },\n onPress(e: PressEvent) {\n getProps().onPress?.(e);\n state.setSelectedValue(value());\n ref()?.focus();\n },\n get isDisabled() {\n return isDisabled();\n },\n });\n\n const { focusableProps } = createFocusable(\n {\n get isDisabled() {\n return isDisabled();\n },\n get autoFocus() {\n return getProps().autoFocus;\n },\n onFocus(e: FocusEvent) {\n getProps().onFocus?.(e);\n state.setLastFocusedValue(value());\n },\n get onBlur() {\n return getProps().onBlur;\n },\n get onFocusChange() {\n return getProps().onFocusChange;\n },\n get onKeyDown() {\n return getProps().onKeyDown;\n },\n get onKeyUp() {\n return getProps().onKeyUp;\n },\n },\n ref as unknown as (el: HTMLElement) => void,\n );\n\n const interactions = mergeProps(pressProps, focusableProps);\n\n const domProps = () =>\n filterDOMProps(getProps() as unknown as Record<string, unknown>, { labelable: true });\n\n const getTabIndex = (): number | undefined => {\n if (isDisabled()) {\n return undefined;\n }\n\n const selected = state.selectedValue();\n const lastFocused = state.lastFocusedValue();\n const currentValue = value();\n\n if (selected != null) {\n if (selected === currentValue) {\n return 0;\n }\n return -1;\n } else {\n if (lastFocused === currentValue || lastFocused == null) {\n return 0;\n }\n return -1;\n }\n };\n\n const getGroupData = () => radioGroupData.get(state);\n\n const combinedIsPressed: Accessor<boolean> = () => isPressed() || isLabelPressed();\n\n // The radio's own description slot id — resolves only once an element with\n // this id is rendered (e.g. a `<Text slot=\"description\">` child).\n const descriptionId = createSlotId();\n\n return {\n labelProps: mergeProps(labelPressProps, {\n onClick: (e: MouseEvent) => e.preventDefault(),\n onMouseDown: (e: MouseEvent) => e.preventDefault(),\n }),\n get inputProps() {\n const p = getProps();\n const groupData = getGroupData();\n\n // Order mirrors upstream useRadio: the user's aria-describedby, then the\n // radio's own description, then the group's error message (when invalid)\n // and the group's shared description.\n const describedByIds: string[] = [];\n if (p[\"aria-describedby\"]) {\n describedByIds.push(p[\"aria-describedby\"]);\n }\n const ownDescriptionId = descriptionId();\n if (ownDescriptionId) {\n describedByIds.push(ownDescriptionId);\n }\n if (state.isInvalid && groupData?.errorMessageId) {\n describedByIds.push(groupData.errorMessageId);\n }\n if (groupData?.descriptionId) {\n describedByIds.push(groupData.descriptionId);\n }\n const ariaDescribedBy = describedByIds.length > 0 ? describedByIds.join(\" \") : undefined;\n const validationBehavior = groupData?.validationBehavior ?? \"native\";\n\n return mergeProps(domProps(), interactions, {\n type: \"radio\" as const,\n name: groupData?.name,\n form: groupData?.form,\n tabIndex: getTabIndex(),\n disabled: isDisabled(),\n required: validationBehavior === \"native\" ? state.isRequired : undefined,\n checked: isSelected(),\n value: value(),\n onChange,\n \"aria-describedby\": ariaDescribedBy,\n }) as JSX.InputHTMLAttributes<HTMLInputElement>;\n },\n get descriptionProps() {\n return { id: descriptionId() };\n },\n isDisabled: isDisabled(),\n isSelected,\n isPressed: combinedIsPressed,\n };\n}\n"],"mappings":"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"}
@@ -0,0 +1,209 @@
1
+ import { i as access, o as mergeProps } from "./env.js";
2
+ import { t as createTextField } from "./textfield.js";
3
+ //#region src/searchfield/createSearchField.ts
4
+ /**
5
+ * Provides the behavior and accessibility implementation for a search field.
6
+ */
7
+ function createSearchField(props, state, inputRef) {
8
+ const getProps = () => access(props);
9
+ const setValue = (value) => {
10
+ if (state.value() === value) return;
11
+ state.setValue(value);
12
+ getProps().onChange?.(value);
13
+ };
14
+ const textFieldAria = createTextField({
15
+ get value() {
16
+ return state.value();
17
+ },
18
+ get isDisabled() {
19
+ return getProps().isDisabled;
20
+ },
21
+ get isReadOnly() {
22
+ return getProps().isReadOnly;
23
+ },
24
+ get isRequired() {
25
+ return getProps().isRequired;
26
+ },
27
+ get isInvalid() {
28
+ return getProps().isInvalid;
29
+ },
30
+ get label() {
31
+ return getProps().label;
32
+ },
33
+ get "aria-label"() {
34
+ return getProps()["aria-label"];
35
+ },
36
+ get "aria-labelledby"() {
37
+ return getProps()["aria-labelledby"];
38
+ },
39
+ get "aria-describedby"() {
40
+ return getProps()["aria-describedby"];
41
+ },
42
+ get description() {
43
+ return getProps().description;
44
+ },
45
+ get errorMessage() {
46
+ return getProps().errorMessage;
47
+ },
48
+ get placeholder() {
49
+ return getProps().placeholder;
50
+ },
51
+ get name() {
52
+ return getProps().name;
53
+ },
54
+ get form() {
55
+ return getProps().form;
56
+ },
57
+ get validationBehavior() {
58
+ return getProps().validationBehavior ?? "native";
59
+ },
60
+ get type() {
61
+ return getProps().type ?? "search";
62
+ },
63
+ get autoFocus() {
64
+ return getProps().autoFocus;
65
+ },
66
+ get excludeFromTabOrder() {
67
+ return getProps().excludeFromTabOrder;
68
+ },
69
+ get autoComplete() {
70
+ return getProps().autoComplete;
71
+ },
72
+ get inputMode() {
73
+ return getProps().inputMode;
74
+ },
75
+ get enterKeyHint() {
76
+ return getProps().enterKeyHint;
77
+ },
78
+ get autoCorrect() {
79
+ return getProps().autoCorrect;
80
+ },
81
+ get autoCapitalize() {
82
+ return getProps().autoCapitalize;
83
+ },
84
+ get spellCheck() {
85
+ return getProps().spellCheck;
86
+ },
87
+ get maxLength() {
88
+ return getProps().maxLength;
89
+ },
90
+ get minLength() {
91
+ return getProps().minLength;
92
+ },
93
+ get pattern() {
94
+ return getProps().pattern;
95
+ },
96
+ get onFocus() {
97
+ return getProps().onFocus;
98
+ },
99
+ get onBlur() {
100
+ return getProps().onBlur;
101
+ },
102
+ get onFocusChange() {
103
+ return getProps().onFocusChange;
104
+ },
105
+ get onKeyDown() {
106
+ return getProps().onKeyDown;
107
+ },
108
+ get onKeyUp() {
109
+ return getProps().onKeyUp;
110
+ },
111
+ get onCopy() {
112
+ return getProps().onCopy;
113
+ },
114
+ get onCut() {
115
+ return getProps().onCut;
116
+ },
117
+ get onPaste() {
118
+ return getProps().onPaste;
119
+ },
120
+ get onCompositionStart() {
121
+ return getProps().onCompositionStart;
122
+ },
123
+ get onCompositionEnd() {
124
+ return getProps().onCompositionEnd;
125
+ },
126
+ get onCompositionUpdate() {
127
+ return getProps().onCompositionUpdate;
128
+ },
129
+ get onSelect() {
130
+ return getProps().onSelect;
131
+ },
132
+ get onBeforeInput() {
133
+ return getProps().onBeforeInput;
134
+ },
135
+ get onInput() {
136
+ return getProps().onInput;
137
+ },
138
+ onChange: setValue
139
+ });
140
+ const onKeyDown = (e) => {
141
+ const p = getProps();
142
+ if (p.isDisabled || p.isReadOnly) {
143
+ if (e.key === "Enter") e.preventDefault();
144
+ return;
145
+ }
146
+ if (e.key === "Enter" && p.onSubmit) {
147
+ e.preventDefault();
148
+ p.onSubmit(state.value());
149
+ }
150
+ if (e.key === "Escape") {
151
+ const currentValue = state.value();
152
+ const inputValue = inputRef?.()?.value ?? "";
153
+ if (currentValue !== "" || inputValue !== "") {
154
+ e.preventDefault();
155
+ e.stopPropagation();
156
+ const input = inputRef?.();
157
+ if (input) input.value = "";
158
+ setValue("");
159
+ p.onClear?.();
160
+ }
161
+ }
162
+ };
163
+ const onClearButtonClick = () => {
164
+ const p = getProps();
165
+ if (p.isDisabled || p.isReadOnly) return;
166
+ const input = inputRef?.();
167
+ if (input) input.value = "";
168
+ setValue("");
169
+ p.onClear?.();
170
+ inputRef?.()?.focus();
171
+ };
172
+ const onClearButtonMouseDown = (e) => {
173
+ e.preventDefault();
174
+ };
175
+ return {
176
+ get labelProps() {
177
+ return textFieldAria.labelProps;
178
+ },
179
+ get inputProps() {
180
+ return mergeProps({
181
+ onKeyDown,
182
+ defaultValue: void 0
183
+ }, textFieldAria.inputProps);
184
+ },
185
+ get clearButtonProps() {
186
+ const p = getProps();
187
+ return {
188
+ "aria-label": "Clear search",
189
+ tabIndex: -1,
190
+ disabled: p.isDisabled || p.isReadOnly,
191
+ onMouseDown: onClearButtonMouseDown,
192
+ onClick: onClearButtonClick
193
+ };
194
+ },
195
+ get descriptionProps() {
196
+ return textFieldAria.descriptionProps;
197
+ },
198
+ get errorMessageProps() {
199
+ return textFieldAria.errorMessageProps;
200
+ },
201
+ get isInvalid() {
202
+ return textFieldAria.isInvalid;
203
+ }
204
+ };
205
+ }
206
+ //#endregion
207
+ export { createSearchField as t };
208
+
209
+ //# sourceMappingURL=searchfield.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"searchfield.js","names":[],"sources":["../../src/searchfield/createSearchField.ts"],"sourcesContent":["/**\n * Provides the behavior and accessibility implementation for a search field.\n * A search field allows a user to enter and clear a search query.\n * Based on @react-aria/searchfield useSearchField.\n */\n\nimport { type JSX } from \"solid-js\";\nimport { createTextField, type AriaTextFieldProps, type TextFieldAria } from \"../textfield\";\nimport { mergeProps } from \"../utils\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\nimport type { SearchFieldState } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaSearchFieldProps extends AriaTextFieldProps {\n /** Handler that is called when the user submits the search (pressing Enter). */\n onSubmit?: (value: string) => void;\n /** Handler that is called when the clear button is pressed or Escape clears the field. */\n onClear?: () => void;\n}\n\nexport interface SearchFieldAria extends Omit<TextFieldAria, \"inputProps\"> {\n /** Props for the input element. */\n inputProps: JSX.InputHTMLAttributes<HTMLInputElement>;\n /** Props for the clear button. */\n clearButtonProps: {\n \"aria-label\": string;\n tabIndex: number;\n disabled?: boolean;\n onMouseDown: (e: MouseEvent) => void;\n onClick: () => void;\n };\n}\n\n/**\n * Provides the behavior and accessibility implementation for a search field.\n */\nexport function createSearchField(\n props: MaybeAccessor<AriaSearchFieldProps>,\n state: SearchFieldState,\n inputRef?: () => HTMLInputElement | null,\n): SearchFieldAria {\n const getProps = () => access(props);\n\n const setValue = (value: string) => {\n if (state.value() === value) {\n return;\n }\n\n state.setValue(value);\n getProps().onChange?.(value);\n };\n\n // Use createTextField for the base implementation\n const textFieldAria = createTextField({\n get value() {\n return state.value();\n },\n get isDisabled() {\n return getProps().isDisabled;\n },\n get isReadOnly() {\n return getProps().isReadOnly;\n },\n get isRequired() {\n return getProps().isRequired;\n },\n get isInvalid() {\n return getProps().isInvalid;\n },\n get label() {\n return getProps().label;\n },\n get \"aria-label\"() {\n return getProps()[\"aria-label\"];\n },\n get \"aria-labelledby\"() {\n return getProps()[\"aria-labelledby\"];\n },\n get \"aria-describedby\"() {\n return getProps()[\"aria-describedby\"];\n },\n get description() {\n return getProps().description;\n },\n get errorMessage() {\n return getProps().errorMessage;\n },\n get placeholder() {\n return getProps().placeholder;\n },\n get name() {\n return getProps().name;\n },\n get form() {\n return getProps().form;\n },\n get validationBehavior() {\n return getProps().validationBehavior ?? \"native\";\n },\n get type() {\n return getProps().type ?? \"search\";\n },\n get autoFocus() {\n return getProps().autoFocus;\n },\n get excludeFromTabOrder() {\n return getProps().excludeFromTabOrder;\n },\n get autoComplete() {\n return getProps().autoComplete;\n },\n get inputMode() {\n return getProps().inputMode;\n },\n get enterKeyHint() {\n return getProps().enterKeyHint;\n },\n get autoCorrect() {\n return getProps().autoCorrect;\n },\n get autoCapitalize() {\n return getProps().autoCapitalize;\n },\n get spellCheck() {\n return getProps().spellCheck;\n },\n get maxLength() {\n return getProps().maxLength;\n },\n get minLength() {\n return getProps().minLength;\n },\n get pattern() {\n return getProps().pattern;\n },\n get onFocus() {\n return getProps().onFocus;\n },\n get onBlur() {\n return getProps().onBlur;\n },\n get onFocusChange() {\n return getProps().onFocusChange;\n },\n get onKeyDown() {\n return getProps().onKeyDown;\n },\n get onKeyUp() {\n return getProps().onKeyUp;\n },\n get onCopy() {\n return getProps().onCopy;\n },\n get onCut() {\n return getProps().onCut;\n },\n get onPaste() {\n return getProps().onPaste;\n },\n get onCompositionStart() {\n return getProps().onCompositionStart;\n },\n get onCompositionEnd() {\n return getProps().onCompositionEnd;\n },\n get onCompositionUpdate() {\n return getProps().onCompositionUpdate;\n },\n get onSelect() {\n return getProps().onSelect;\n },\n get onBeforeInput() {\n return getProps().onBeforeInput;\n },\n get onInput() {\n return getProps().onInput;\n },\n onChange: setValue,\n });\n\n // Handle keyboard events for search field\n const onKeyDown: JSX.EventHandler<HTMLInputElement, KeyboardEvent> = (e) => {\n const p = getProps();\n\n if (p.isDisabled || p.isReadOnly) {\n if (e.key === \"Enter\") {\n e.preventDefault();\n }\n return;\n }\n\n if (e.key === \"Enter\" && p.onSubmit) {\n e.preventDefault();\n p.onSubmit(state.value());\n }\n\n if (e.key === \"Escape\") {\n const currentValue = state.value();\n const inputValue = inputRef?.()?.value ?? \"\";\n\n // Only clear if there's a value\n if (currentValue !== \"\" || inputValue !== \"\") {\n e.preventDefault();\n e.stopPropagation();\n const input = inputRef?.();\n if (input) {\n input.value = \"\";\n }\n setValue(\"\");\n p.onClear?.();\n }\n }\n };\n\n // Handle clear button click\n const onClearButtonClick = () => {\n const p = getProps();\n if (p.isDisabled || p.isReadOnly) return;\n const input = inputRef?.();\n if (input) {\n input.value = \"\";\n }\n setValue(\"\");\n p.onClear?.();\n // Focus the input after clearing\n inputRef?.()?.focus();\n };\n\n // Prevent focus from leaving input on mobile when clicking clear button\n const onClearButtonMouseDown = (e: MouseEvent) => {\n e.preventDefault();\n };\n\n return {\n get labelProps() {\n return textFieldAria.labelProps;\n },\n get inputProps() {\n return mergeProps(\n {\n onKeyDown,\n // Clear defaultValue since it's handled by state\n defaultValue: undefined,\n } as Record<string, unknown>,\n textFieldAria.inputProps as Record<string, unknown>,\n ) as JSX.InputHTMLAttributes<HTMLInputElement>;\n },\n get clearButtonProps() {\n const p = getProps();\n const isDisabled = p.isDisabled || p.isReadOnly;\n\n return {\n \"aria-label\": \"Clear search\",\n tabIndex: -1, // Exclude from tab order\n disabled: isDisabled,\n onMouseDown: onClearButtonMouseDown,\n onClick: onClearButtonClick,\n };\n },\n get descriptionProps() {\n return textFieldAria.descriptionProps;\n },\n get errorMessageProps() {\n return textFieldAria.errorMessageProps;\n },\n get isInvalid() {\n return textFieldAria.isInvalid;\n },\n };\n}\n"],"mappings":"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"}