@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 @@
1
+ {"version":3,"file":"datepicker.js","names":["normalizeDigit","extractNormalizedDigits","getSegmentLabel","SEGMENT_LABELS"],"sources":["../../src/datepicker/createDateField.ts","../../src/datepicker/createDateSegment.ts","../../src/datepicker/createTimeField.ts","../../src/datepicker/createTimeSegment.ts","../../src/datepicker/createDatePicker.ts","../../src/datepicker/createDatePickerGroup.ts","../../src/datepicker/createDateRangePicker.ts"],"sourcesContent":["/**\n * createDateField hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a date field component.\n * Based on @react-aria/datepicker useDateField\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createId } from \"../ssr\";\nimport { createLabel } from \"../label/createLabel\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { useLocale } from \"../i18n\";\nimport type { DateFieldState, DateSegment } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaDateFieldProps {\n /** An ID for the date field. */\n id?: string;\n /** A visible label for the date field. */\n label?: string;\n /** An accessible label for the date field. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the date field. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the date field. */\n \"aria-describedby\"?: string;\n /** Whether the date field is disabled. */\n isDisabled?: boolean;\n /** Whether the date field is read-only. */\n isReadOnly?: boolean;\n /** Whether the date field is required. */\n isRequired?: boolean;\n /** Whether the date field is invalid. */\n isInvalid?: boolean;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n /** Whether the element should receive focus on mount. */\n autoFocus?: boolean;\n}\n\nexport interface DatePickerOverlayState {\n /** Whether the calendar overlay is open. */\n isOpen: boolean;\n /** Open the calendar overlay. */\n open: () => void;\n /** Close the calendar overlay. */\n close: () => void;\n /** Toggle the calendar overlay. */\n toggle: () => void;\n}\n\nexport interface DateFieldAria {\n /** Props for the label element. */\n labelProps: Record<string, unknown>;\n /** Props for the field container element. */\n fieldProps: Record<string, unknown>;\n /** Props for the input container (holds segments). */\n inputProps: Record<string, unknown>;\n /** Props for the description element. */\n descriptionProps: Record<string, unknown>;\n /** Props for the error message element. */\n errorMessageProps: Record<string, unknown>;\n /** The segments to render. */\n segments: DateSegment[];\n}\n\n/**\n * Provides the behavior and accessibility implementation for a date field component.\n */\nexport function createDateField<T extends DateFieldState>(\n props: MaybeAccessor<AriaDateFieldProps>,\n state: T,\n _ref?: () => HTMLElement | null,\n overlayState?: DatePickerOverlayState,\n): DateFieldAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const descriptionId = createId();\n const errorMessageId = createId();\n const locale = useLocale();\n\n // Create label handling\n const { labelProps, fieldProps: labelFieldProps } = createLabel({\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 labelElementType: \"span\",\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.isInvalid || state.isInvalid()) && p.errorMessage) {\n ids.push(errorMessageId);\n }\n return ids.length > 0 ? ids.join(\" \") : undefined;\n };\n\n // Segments from state\n const segments = createMemo(() => state.segments());\n\n // Label ID for linking input to label\n const getLabelId = () => (labelProps as Record<string, string | undefined>).id;\n\n // Localized role description\n const getRoleDescription = () => {\n const language = locale().locale.toLowerCase().split(\"-\")[0] ?? \"en\";\n return language === \"es\" ? \"Campo de fecha\" : \"Date field\";\n };\n\n // Focus management helpers for segment navigation\n const focusSegment = (target: \"first\" | \"last\" | \"prev\" | \"next\", container: HTMLElement) => {\n const spinbuttons = Array.from(container.querySelectorAll<HTMLElement>('[role=\"spinbutton\"]'));\n if (spinbuttons.length === 0) return;\n\n const active = document.activeElement as HTMLElement | null;\n const currentIndex = active ? spinbuttons.indexOf(active) : -1;\n\n if (target === \"first\") {\n spinbuttons[0]?.focus();\n return;\n }\n\n if (target === \"last\") {\n spinbuttons[spinbuttons.length - 1]?.focus();\n return;\n }\n\n let nextIndex: number;\n if (currentIndex < 0) {\n nextIndex = target === \"next\" ? 0 : spinbuttons.length - 1;\n } else {\n nextIndex = target === \"next\" ? currentIndex + 1 : currentIndex - 1;\n }\n\n if (nextIndex >= 0 && nextIndex < spinbuttons.length) {\n spinbuttons[nextIndex]?.focus();\n }\n };\n\n // Field container props\n const fieldProps = createMemo(() => {\n const p = getProps();\n\n const baseProps: Record<string, unknown> = mergeProps(\n labelFieldProps as Record<string, unknown>,\n {\n id,\n role: \"group\",\n \"aria-disabled\": p.isDisabled || state.isDisabled() || undefined,\n \"aria-readonly\": p.isReadOnly || state.isReadOnly() || undefined,\n \"aria-required\": p.isRequired || state.isRequired() || undefined,\n \"aria-invalid\": p.isInvalid || state.isInvalid() || undefined,\n \"aria-describedby\": getAriaDescribedBy(),\n },\n );\n\n // Integrate with date picker overlay when available\n if (overlayState) {\n const existingOnKeyDown = baseProps.onKeyDown as ((e: KeyboardEvent) => void) | undefined;\n\n baseProps.onKeyDown = (e: KeyboardEvent) => {\n existingOnKeyDown?.(e);\n if (e.altKey && (e.key === \"ArrowDown\" || e.key === \"ArrowUp\")) {\n e.preventDefault();\n e.stopPropagation();\n overlayState.open();\n }\n };\n }\n\n return baseProps;\n });\n\n // Input container props\n const inputProps = createMemo(() => {\n const p = getProps();\n const labelId = getLabelId();\n const ariaLabelledBy = labelId\n ? p[\"aria-labelledby\"]\n ? `${labelId} ${p[\"aria-labelledby\"]}`\n : labelId\n : p[\"aria-labelledby\"];\n\n const isDisabled = p.isDisabled || state.isDisabled();\n const isReadOnly = p.isReadOnly || state.isReadOnly();\n const isRequired = p.isRequired || state.isRequired();\n const isInvalid = p.isInvalid || state.isInvalid();\n const hasValue = state.value() != null;\n\n return {\n role: \"presentation\",\n \"aria-labelledby\": ariaLabelledBy,\n \"aria-describedby\": getAriaDescribedBy(),\n \"aria-disabled\": isDisabled || undefined,\n \"aria-readonly\": isReadOnly || undefined,\n \"aria-required\": isRequired || undefined,\n \"aria-invalid\": isInvalid || undefined,\n \"aria-roledescription\": getRoleDescription(),\n autoFocus: p.autoFocus,\n contentEditable: true,\n suppressContentEditableWarning: true,\n spellCheck: false,\n autoCorrect: \"off\",\n enterKeyHint: \"next\",\n inputMode: \"numeric\" as const,\n style: { caretColor: \"transparent\" },\n \"data-placeholder\": !hasValue ? \"true\" : undefined,\n onKeyDown: (e: KeyboardEvent) => {\n const target = e.target as HTMLElement;\n const currentTarget = e.currentTarget as HTMLElement;\n\n // Only handle at the container level, not when a segment is focused\n if (target !== currentTarget) return;\n\n const dir = locale().direction;\n const rtl = dir === \"rtl\";\n\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n focusSegment(rtl ? \"prev\" : \"next\", currentTarget);\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n focusSegment(rtl ? \"next\" : \"prev\", currentTarget);\n break;\n case \"Home\":\n e.preventDefault();\n focusSegment(\"first\", currentTarget);\n break;\n case \"End\":\n e.preventDefault();\n focusSegment(\"last\", currentTarget);\n break;\n }\n },\n onFocus: () => {\n // Focus state is tracked by the component layer\n },\n onBlur: () => {\n state.confirmPlaceholder();\n },\n onClick: (e: MouseEvent) => {\n const target = e.target as HTMLElement;\n const currentTarget = e.currentTarget as HTMLElement;\n\n // Only handle when clicking the container itself (empty area between segments)\n if (target !== currentTarget) return;\n\n const spinbuttons = Array.from(\n currentTarget.querySelectorAll<HTMLElement>('[role=\"spinbutton\"]'),\n );\n if (spinbuttons.length > 0) {\n spinbuttons[0].focus();\n }\n },\n };\n });\n\n // Description props\n const descriptionProps = createMemo(() => ({\n id: descriptionId,\n }));\n\n // Error message props\n const errorMessageProps = createMemo(() => ({\n id: errorMessageId,\n role: \"alert\",\n }));\n\n return {\n get labelProps() {\n return labelProps as Record<string, unknown>;\n },\n get fieldProps() {\n return fieldProps();\n },\n get inputProps() {\n return inputProps();\n },\n get descriptionProps() {\n return descriptionProps();\n },\n get errorMessageProps() {\n return errorMessageProps();\n },\n get segments() {\n return segments();\n },\n };\n}\n","/**\n * createDateSegment hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a date segment.\n * Based on @react-aria/datepicker useDateSegment\n */\n\nimport { createSignal, createMemo, onCleanup } from \"solid-js\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { scrollIntoViewport, getScrollParent } from \"../utils\";\nimport type { DateFieldState, DateSegment, DateSegmentType } from \"@proyecto-viviana/solid-stately\";\nimport { useLocale } from \"../i18n\";\n\nexport interface AriaDateSegmentProps {\n /** The segment data. */\n segment: DateSegment;\n /** The ID of the calendar dialog controlled by this segment (when inside a datepicker). */\n \"aria-controls\"?: string;\n /** The ID of an element that describes the segment. */\n \"aria-describedby\"?: string;\n}\n\nexport interface DateSegmentAria {\n /** Props for the segment element. */\n segmentProps: Record<string, unknown>;\n /** Whether the segment is focused. */\n isFocused: boolean;\n /** Whether the segment is editable. */\n isEditable: boolean;\n /** Whether the segment is a placeholder. */\n isPlaceholder: boolean;\n /** The text to display. */\n text: string;\n /** Whether the segment is hovered. */\n isHovered: boolean;\n /** Whether the segment has keyboard focus visible. */\n isFocusVisible: boolean;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a date segment.\n */\nexport function createDateSegment<T extends DateFieldState>(\n props: MaybeAccessor<AriaDateSegmentProps>,\n state: T,\n ref?: () => HTMLElement | null,\n): DateSegmentAria {\n const getProps = () => access(props);\n const [isFocused, setIsFocused] = createSignal(false);\n const [isFocusVisible, setIsFocusVisible] = createSignal(false);\n const [isHovered, setIsHovered] = createSignal(false);\n const [enteredKeys, setEnteredKeys] = createSignal(\"\");\n const [isComposing, setIsComposing] = createSignal(false);\n const locale = useLocale();\n\n // Get the segment from props\n const segment = createMemo(() => getProps().segment);\n\n // Check if editable\n const isEditable = createMemo(() => {\n const seg = segment();\n return seg.isEditable && !state.isDisabled() && !state.isReadOnly();\n });\n\n // Long press state for ArrowUp / ArrowDown\n let longPressTimeout: ReturnType<typeof setTimeout> | null = null;\n let longPressInterval: ReturnType<typeof setInterval> | null = null;\n let hadPointerDown = false;\n\n const clearLongPress = () => {\n if (longPressTimeout) {\n clearTimeout(longPressTimeout);\n longPressTimeout = null;\n }\n if (longPressInterval) {\n clearInterval(longPressInterval);\n longPressInterval = null;\n }\n };\n\n const startLongPress = (action: () => void) => {\n clearLongPress();\n longPressTimeout = setTimeout(() => {\n action();\n longPressInterval = setInterval(() => {\n action();\n }, 100);\n }, 300);\n };\n\n onCleanup(() => {\n clearLongPress();\n });\n\n const focusSegment = (target: \"first\" | \"last\" | \"prev\" | \"next\") => {\n const el = ref?.();\n if (!el) return;\n\n const container = el.parentElement;\n if (!container) return;\n\n const segments = Array.from(container.querySelectorAll<HTMLElement>('[role=\"spinbutton\"]'));\n\n if (segments.length === 0) return;\n\n if (target === \"first\") {\n segments[0]?.focus();\n return;\n }\n\n if (target === \"last\") {\n segments[segments.length - 1]?.focus();\n return;\n }\n\n const currentIndex = segments.indexOf(el);\n if (currentIndex < 0) return;\n\n const nextIndex = target === \"next\" ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex >= 0 && nextIndex < segments.length) {\n segments[nextIndex]?.focus();\n }\n };\n\n const clearCurrentSegment = (type: DateSegmentType) => {\n state.clearSegment(type);\n setEnteredKeys(\"\");\n };\n\n // Handle keyboard input\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isEditable()) return;\n if (isComposing()) return;\n\n const seg = segment();\n const type = seg.type;\n\n if (type === \"literal\") return;\n\n // Keyboard interaction means focus is visible\n setIsFocusVisible(true);\n\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n focusSegment(locale().direction === \"rtl\" ? \"prev\" : \"next\");\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n focusSegment(locale().direction === \"rtl\" ? \"next\" : \"prev\");\n break;\n case \"ArrowUp\":\n e.preventDefault();\n state.incrementSegment(type);\n if (!e.repeat) {\n startLongPress(() => state.incrementSegment(type));\n }\n break;\n case \"ArrowDown\":\n e.preventDefault();\n state.decrementSegment(type);\n if (!e.repeat) {\n startLongPress(() => state.decrementSegment(type));\n }\n break;\n case \"Home\":\n e.preventDefault();\n focusSegment(\"first\");\n break;\n case \"End\":\n e.preventDefault();\n focusSegment(\"last\");\n break;\n case \"Backspace\":\n e.preventDefault();\n // Match common date-field UX: backspace on an empty placeholder moves to previous segment.\n if (seg.isPlaceholder) {\n focusSegment(\"prev\");\n } else {\n clearCurrentSegment(type);\n }\n break;\n case \"Delete\":\n e.preventDefault();\n clearCurrentSegment(type);\n break;\n default:\n // Handle numeric input\n const normalizedDigit = normalizeDigit(e.key);\n if (normalizedDigit) {\n e.preventDefault();\n handleNumericInput(normalizedDigit, type, seg);\n }\n break;\n }\n };\n\n const handleKeyUp = () => {\n clearLongPress();\n };\n\n // Handle numeric input\n const handleNumericInput = (key: string, type: DateSegmentType, seg: DateSegment) => {\n const newKeys = enteredKeys() + key;\n const numValue = parseInt(newKeys, 10);\n const maxValue = seg.maxValue ?? 99;\n const minValue = seg.minValue ?? 0;\n const maxDigits = String(maxValue).length;\n\n // Check if we should accept more digits\n if (numValue <= maxValue) {\n state.setSegment(type, numValue);\n\n // If entering more digits wouldn't make sense, clear entered keys\n const potentialNextValue = parseInt(newKeys + \"0\", 10);\n if (potentialNextValue > maxValue || newKeys.length >= maxDigits) {\n setEnteredKeys(\"\");\n focusSegment(\"next\");\n } else {\n setEnteredKeys(newKeys);\n }\n } else {\n // Start fresh with just this key\n const singleValue = parseInt(key, 10);\n if (singleValue >= minValue && singleValue <= maxValue) {\n state.setSegment(type, singleValue);\n const potentialNextValue = parseInt(key + \"0\", 10);\n if (potentialNextValue > maxValue || key.length >= maxDigits) {\n setEnteredKeys(\"\");\n focusSegment(\"next\");\n } else {\n setEnteredKeys(key);\n }\n } else {\n setEnteredKeys(\"\");\n }\n }\n };\n\n const handleBeforeInput = (e: InputEvent) => {\n if (!isEditable()) return;\n if (isComposing()) return;\n\n const seg = segment();\n if (seg.type === \"literal\") return;\n\n if (e.inputType === \"deleteContentBackward\" || e.inputType === \"deleteContentForward\") {\n e.preventDefault();\n clearCurrentSegment(seg.type);\n return;\n }\n\n if (e.inputType === \"insertText\" && e.data) {\n const normalizedDigit = normalizeDigit(e.data);\n if (!normalizedDigit) return;\n e.preventDefault();\n handleNumericInput(normalizedDigit, seg.type, seg);\n }\n };\n\n const handleCompositionStart = () => {\n if (!isEditable()) return;\n setIsComposing(true);\n setEnteredKeys(\"\");\n };\n\n const handleCompositionEnd = (e: CompositionEvent) => {\n if (!isEditable()) return;\n setIsComposing(false);\n\n const seg = segment();\n if (seg.type === \"literal\") return;\n\n const digits = extractNormalizedDigits(e.data ?? \"\");\n if (digits.length === 0) return;\n\n for (const digit of digits) {\n handleNumericInput(digit, seg.type, seg);\n }\n };\n\n // Handle focus\n const handleFocus = () => {\n setIsFocused(true);\n setEnteredKeys(\"\");\n\n if (!hadPointerDown) {\n setIsFocusVisible(true);\n }\n hadPointerDown = false;\n\n const el = ref?.();\n if (el) {\n scrollIntoViewport(el, { containingElement: getScrollParent(el) });\n }\n\n // Select all text in the segment\n if (el && typeof window !== \"undefined\") {\n const selection = window.getSelection();\n if (selection) {\n const range = new Range();\n range.selectNodeContents(el);\n selection.removeAllRanges();\n selection.addRange(range);\n }\n }\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n setIsFocusVisible(false);\n setEnteredKeys(\"\");\n clearLongPress();\n state.confirmPlaceholder();\n };\n\n const handleMouseEnter = () => {\n setIsHovered(true);\n };\n\n const handleMouseLeave = () => {\n setIsHovered(false);\n };\n\n // Segment props\n const segmentProps = createMemo(() => {\n const seg = segment();\n const type = seg.type;\n const p = getProps();\n\n // Literal segments don't need interaction props\n if (type === \"literal\") {\n return {\n \"aria-hidden\": true,\n };\n }\n\n return {\n role: \"spinbutton\",\n tabIndex: isEditable() ? 0 : -1,\n \"aria-label\": getSegmentLabel(type, locale().locale),\n \"aria-valuenow\": seg.value,\n \"aria-valuemin\": seg.minValue,\n \"aria-valuemax\": seg.maxValue,\n \"aria-valuetext\": seg.isPlaceholder ? \"\" : seg.text,\n \"aria-readonly\": state.isReadOnly() || undefined,\n \"aria-disabled\": state.isDisabled() || undefined,\n \"aria-invalid\": state.isInvalid() || undefined,\n \"aria-controls\": p[\"aria-controls\"] || undefined,\n \"aria-describedby\": p[\"aria-describedby\"] || undefined,\n contentEditable: isEditable(),\n suppressContentEditableWarning: true,\n inputMode: \"numeric\" as const,\n autoCorrect: \"off\",\n enterKeyHint: \"next\" as const,\n spellCheck: false,\n \"data-placeholder\": seg.isPlaceholder ? \"true\" : undefined,\n \"data-readonly\": state.isReadOnly() || undefined,\n \"data-disabled\": state.isDisabled() || undefined,\n \"data-invalid\": state.isInvalid() || undefined,\n \"data-type\": seg.type,\n \"data-hovered\": isHovered() || undefined,\n \"data-focused\": isFocused() || undefined,\n \"data-focus-visible\": isFocusVisible() || undefined,\n onKeyDown: handleKeyDown,\n onKeyUp: handleKeyUp,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onBeforeInput: handleBeforeInput,\n onCompositionStart: handleCompositionStart,\n onCompositionEnd: handleCompositionEnd,\n onMouseEnter: handleMouseEnter,\n onMouseLeave: handleMouseLeave,\n onPointerDown: (e: PointerEvent) => {\n // Prevent cursor positioning in the middle of the segment\n e.preventDefault();\n hadPointerDown = true;\n setIsFocusVisible(false);\n },\n onPointerUp: () => {\n clearLongPress();\n },\n };\n });\n\n // Text to display\n const text = createMemo(() => {\n const seg = segment();\n return seg.isPlaceholder ? seg.placeholder : seg.text;\n });\n\n return {\n get segmentProps() {\n return segmentProps();\n },\n get isFocused() {\n return isFocused();\n },\n get isEditable() {\n return isEditable();\n },\n get isPlaceholder() {\n return segment().isPlaceholder;\n },\n get text() {\n return text();\n },\n get isHovered() {\n return isHovered();\n },\n get isFocusVisible() {\n return isFocusVisible();\n },\n };\n}\n\nconst SEGMENT_LABELS: Record<string, Record<Exclude<DateSegmentType, \"literal\">, string>> = {\n en: {\n year: \"Year\",\n month: \"Month\",\n day: \"Day\",\n hour: \"Hour\",\n minute: \"Minute\",\n second: \"Second\",\n dayPeriod: \"AM/PM\",\n era: \"Era\",\n timeZoneName: \"Time zone\",\n },\n es: {\n year: \"Año\",\n month: \"Mes\",\n day: \"Día\",\n hour: \"Hora\",\n minute: \"Minuto\",\n second: \"Segundo\",\n dayPeriod: \"AM/PM\",\n era: \"Era\",\n timeZoneName: \"Zona horaria\",\n },\n};\n\nfunction getSegmentLabel(type: DateSegmentType, locale: string): string {\n if (type === \"literal\") return \"\";\n\n const language = locale.toLowerCase().split(\"-\")[0] ?? \"en\";\n const labels = SEGMENT_LABELS[language] ?? SEGMENT_LABELS.en;\n return labels[type];\n}\n\nfunction normalizeDigit(input: string): string | null {\n if (/^[0-9]$/.test(input)) {\n return input;\n }\n\n const codePoint = input.codePointAt(0);\n if (codePoint == null) return null;\n\n // Full-width digits 0-9\n if (codePoint >= 0xff10 && codePoint <= 0xff19) {\n return String(codePoint - 0xff10);\n }\n\n return null;\n}\n\nfunction extractNormalizedDigits(value: string): string[] {\n const digits: string[] = [];\n for (const char of value) {\n const normalized = normalizeDigit(char);\n if (normalized) {\n digits.push(normalized);\n }\n }\n return digits;\n}\n","/**\n * createTimeField hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a time field component.\n * Based on @react-aria/datepicker useTimeField\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createId } from \"../ssr\";\nimport { createLabel } from \"../label/createLabel\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport type { TimeFieldState, TimeSegment, TimeValue } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaTimeFieldProps {\n /** An ID for the time field. */\n id?: string;\n /** A visible label for the time field. */\n label?: string;\n /** An accessible label for the time field. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the time field. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the time field. */\n \"aria-describedby\"?: string;\n /** Whether the time field is disabled. */\n isDisabled?: boolean;\n /** Whether the time field is read-only. */\n isReadOnly?: boolean;\n /** Whether the time field is required. */\n isRequired?: boolean;\n /** Whether the time field is invalid. */\n isInvalid?: boolean;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n /** The name of the input element, used when submitting an HTML form. */\n name?: string;\n /** The id of the form the hidden input belongs to. */\n form?: string;\n /** Describes the autocomplete behavior for the hidden input. */\n autoComplete?: string;\n}\n\nexport interface TimeFieldAria {\n /** Props for the label element. */\n labelProps: Record<string, unknown>;\n /** Props for the field container element. */\n fieldProps: Record<string, unknown>;\n /** Props for the input container (holds segments). */\n inputProps: Record<string, unknown>;\n /** Props for the description element. */\n descriptionProps: Record<string, unknown>;\n /** Props for the error message element. */\n errorMessageProps: Record<string, unknown>;\n /** The segments to render. */\n segments: TimeSegment[];\n}\n\n/**\n * Provides the behavior and accessibility implementation for a time field component.\n */\nexport function createTimeField<T extends TimeFieldState<TimeValue>>(\n props: MaybeAccessor<AriaTimeFieldProps>,\n state: T,\n _ref?: () => HTMLElement | null,\n): TimeFieldAria {\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const descriptionId = createId();\n const errorMessageId = createId();\n\n // Create label handling\n const { labelProps, fieldProps: labelFieldProps } = createLabel({\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 labelElementType: \"span\",\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.isInvalid || state.isInvalid()) && p.errorMessage) {\n ids.push(errorMessageId);\n }\n return ids.length > 0 ? ids.join(\" \") : undefined;\n };\n\n // Segments from state\n const segments = createMemo(() => state.segments());\n\n // Field container props\n const fieldProps = createMemo(() => {\n const p = getProps();\n\n return mergeProps(labelFieldProps as Record<string, unknown>, {\n id,\n role: \"group\",\n \"aria-disabled\": p.isDisabled || state.isDisabled() || undefined,\n \"aria-readonly\": p.isReadOnly || state.isReadOnly() || undefined,\n \"aria-required\": p.isRequired || state.isRequired() || undefined,\n \"aria-invalid\": p.isInvalid || state.isInvalid() || undefined,\n \"aria-describedby\": getAriaDescribedBy(),\n });\n });\n\n // Input container props\n const inputProps = createMemo(() => ({\n role: \"presentation\",\n }));\n\n // Description props\n const descriptionProps = createMemo(() => ({\n id: descriptionId,\n }));\n\n // Error message props\n const errorMessageProps = createMemo(() => ({\n id: errorMessageId,\n role: \"alert\",\n }));\n\n return {\n get labelProps() {\n return labelProps as Record<string, unknown>;\n },\n get fieldProps() {\n return fieldProps();\n },\n get inputProps() {\n return inputProps();\n },\n get descriptionProps() {\n return descriptionProps();\n },\n get errorMessageProps() {\n return errorMessageProps();\n },\n get segments() {\n return segments();\n },\n };\n}\n","/**\n * createTimeSegment hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a time segment.\n * Based on @react-aria/datepicker useDateSegment semantics (time-field scope).\n */\n\nimport { createMemo, createSignal } from \"solid-js\";\nimport { useLocale } from \"../i18n\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport type { TimeFieldState, TimeSegment, TimeSegmentType } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaTimeSegmentProps {\n /** The segment data. */\n segment: TimeSegment;\n}\n\nexport interface TimeSegmentAria {\n /** Props for the segment element. */\n segmentProps: Record<string, unknown>;\n /** Whether the segment is focused. */\n isFocused: boolean;\n /** Whether the segment is editable. */\n isEditable: boolean;\n /** Whether the segment is a placeholder. */\n isPlaceholder: boolean;\n /** The text to display. */\n text: string;\n}\n\n/**\n * Provides the behavior and accessibility implementation for a time segment.\n */\nexport function createTimeSegment<T extends TimeFieldState>(\n props: MaybeAccessor<AriaTimeSegmentProps>,\n state: T,\n ref?: () => HTMLElement | null,\n): TimeSegmentAria {\n const getProps = () => access(props);\n const [isFocused, setIsFocused] = createSignal(false);\n const [enteredKeys, setEnteredKeys] = createSignal(\"\");\n const [isComposing, setIsComposing] = createSignal(false);\n const locale = useLocale();\n\n const segment = createMemo(() => getProps().segment);\n\n const isEditable = createMemo(() => {\n const seg = segment();\n return seg.isEditable && !state.isDisabled() && !state.isReadOnly();\n });\n\n const focusSegment = (target: \"first\" | \"last\" | \"prev\" | \"next\") => {\n const el = ref?.();\n if (!el) return;\n\n const container = el.parentElement;\n if (!container) return;\n\n const segments = Array.from(container.querySelectorAll<HTMLElement>('[role=\"spinbutton\"]'));\n\n if (segments.length === 0) return;\n\n if (target === \"first\") {\n segments[0]?.focus();\n return;\n }\n\n if (target === \"last\") {\n segments[segments.length - 1]?.focus();\n return;\n }\n\n const currentIndex = segments.indexOf(el);\n if (currentIndex < 0) return;\n\n const nextIndex = target === \"next\" ? currentIndex + 1 : currentIndex - 1;\n if (nextIndex >= 0 && nextIndex < segments.length) {\n segments[nextIndex]?.focus();\n }\n };\n\n const clearCurrentSegment = (type: TimeSegmentType) => {\n state.clearSegment(type);\n setEnteredKeys(\"\");\n };\n\n const handleNumericInput = (key: string, type: TimeSegmentType, seg: TimeSegment) => {\n const newKeys = enteredKeys() + key;\n const numValue = parseInt(newKeys, 10);\n const maxValue = seg.maxValue ?? 99;\n const minValue = seg.minValue ?? 0;\n const maxDigits = String(maxValue).length;\n\n if (numValue <= maxValue) {\n state.setSegment(type, numValue);\n\n const potentialNextValue = parseInt(newKeys + \"0\", 10);\n if (potentialNextValue > maxValue || newKeys.length >= maxDigits) {\n setEnteredKeys(\"\");\n focusSegment(\"next\");\n } else {\n setEnteredKeys(newKeys);\n }\n } else {\n const singleValue = parseInt(key, 10);\n if (singleValue >= minValue && singleValue <= maxValue) {\n state.setSegment(type, singleValue);\n const potentialNextValue = parseInt(key + \"0\", 10);\n if (potentialNextValue > maxValue || key.length >= maxDigits) {\n setEnteredKeys(\"\");\n focusSegment(\"next\");\n } else {\n setEnteredKeys(key);\n }\n } else {\n setEnteredKeys(\"\");\n }\n }\n };\n\n const handleKeyDown = (e: KeyboardEvent) => {\n if (!isEditable()) return;\n if (isComposing()) return;\n\n const seg = segment();\n const type = seg.type;\n\n if (type === \"literal\") return;\n\n switch (e.key) {\n case \"ArrowRight\":\n e.preventDefault();\n focusSegment(locale().direction === \"rtl\" ? \"prev\" : \"next\");\n break;\n case \"ArrowLeft\":\n e.preventDefault();\n focusSegment(locale().direction === \"rtl\" ? \"next\" : \"prev\");\n break;\n case \"ArrowUp\":\n e.preventDefault();\n state.incrementSegment(type);\n break;\n case \"ArrowDown\":\n e.preventDefault();\n state.decrementSegment(type);\n break;\n case \"Home\":\n e.preventDefault();\n focusSegment(\"first\");\n break;\n case \"End\":\n e.preventDefault();\n focusSegment(\"last\");\n break;\n case \"Backspace\":\n e.preventDefault();\n if (seg.isPlaceholder) {\n focusSegment(\"prev\");\n } else {\n clearCurrentSegment(type);\n }\n break;\n case \"Delete\":\n e.preventDefault();\n clearCurrentSegment(type);\n break;\n default:\n const normalizedDigit = normalizeDigit(e.key);\n if (normalizedDigit) {\n e.preventDefault();\n handleNumericInput(normalizedDigit, type, seg);\n }\n break;\n }\n };\n\n const handleBeforeInput = (e: InputEvent) => {\n if (!isEditable()) return;\n if (isComposing()) return;\n\n const seg = segment();\n if (seg.type === \"literal\") return;\n\n if (e.inputType === \"deleteContentBackward\" || e.inputType === \"deleteContentForward\") {\n e.preventDefault();\n clearCurrentSegment(seg.type);\n return;\n }\n\n if (e.inputType === \"insertText\" && e.data) {\n const normalizedDigit = normalizeDigit(e.data);\n if (!normalizedDigit) return;\n e.preventDefault();\n handleNumericInput(normalizedDigit, seg.type, seg);\n }\n };\n\n const handleCompositionStart = () => {\n if (!isEditable()) return;\n setIsComposing(true);\n setEnteredKeys(\"\");\n };\n\n const handleCompositionEnd = (e: CompositionEvent) => {\n if (!isEditable()) return;\n setIsComposing(false);\n\n const seg = segment();\n if (seg.type === \"literal\") return;\n\n const digits = extractNormalizedDigits(e.data ?? \"\");\n if (digits.length === 0) return;\n\n for (const digit of digits) {\n handleNumericInput(digit, seg.type, seg);\n }\n };\n\n const handleFocus = () => {\n setIsFocused(true);\n setEnteredKeys(\"\");\n };\n\n const handleBlur = () => {\n setIsFocused(false);\n setEnteredKeys(\"\");\n\n const maybeState = state as unknown as { confirmPlaceholder?: () => void };\n maybeState.confirmPlaceholder?.();\n };\n\n const segmentProps = createMemo(() => {\n const seg = segment();\n const type = seg.type;\n\n if (type === \"literal\") {\n return {\n \"aria-hidden\": true,\n };\n }\n\n return {\n role: \"spinbutton\",\n tabIndex: isEditable() ? 0 : -1,\n \"aria-label\": getSegmentLabel(type, locale().locale),\n \"aria-valuenow\": seg.value,\n \"aria-valuemin\": seg.minValue,\n \"aria-valuemax\": seg.maxValue,\n \"aria-valuetext\": seg.isPlaceholder ? seg.placeholder : seg.text,\n \"aria-readonly\": state.isReadOnly() || undefined,\n \"aria-disabled\": state.isDisabled() || undefined,\n \"aria-invalid\": state.isInvalid() || undefined,\n contentEditable: isEditable(),\n suppressContentEditableWarning: true,\n inputMode: \"numeric\" as const,\n autoCorrect: \"off\",\n enterKeyHint: \"next\" as const,\n spellCheck: false,\n onKeyDown: handleKeyDown,\n onFocus: handleFocus,\n onBlur: handleBlur,\n onBeforeInput: handleBeforeInput,\n onCompositionStart: handleCompositionStart,\n onCompositionEnd: handleCompositionEnd,\n onMouseDown: (e: MouseEvent) => {\n e.preventDefault();\n },\n };\n });\n\n const text = createMemo(() => {\n const seg = segment();\n return seg.isPlaceholder ? seg.placeholder : seg.text;\n });\n\n return {\n get segmentProps() {\n return segmentProps();\n },\n get isFocused() {\n return isFocused();\n },\n get isEditable() {\n return isEditable();\n },\n get isPlaceholder() {\n return segment().isPlaceholder;\n },\n get text() {\n return text();\n },\n };\n}\n\ntype EditableTimeSegmentType = Exclude<TimeSegmentType, \"literal\">;\n\nconst SEGMENT_LABELS: Record<string, Record<EditableTimeSegmentType, string>> = {\n en: {\n hour: \"Hour\",\n minute: \"Minute\",\n second: \"Second\",\n dayPeriod: \"AM/PM\",\n },\n es: {\n hour: \"Hora\",\n minute: \"Minuto\",\n second: \"Segundo\",\n dayPeriod: \"AM/PM\",\n },\n};\n\nfunction getSegmentLabel(type: TimeSegmentType, locale: string): string {\n if (type === \"literal\") return \"\";\n\n const language = locale.toLowerCase().split(\"-\")[0] ?? \"en\";\n const labels = SEGMENT_LABELS[language] ?? SEGMENT_LABELS.en;\n return labels[type];\n}\n\nfunction normalizeDigit(input: string): string | null {\n if (/^[0-9]$/.test(input)) {\n return input;\n }\n\n const code = input.codePointAt(0);\n if (code === undefined) return null;\n\n if (code >= 0x0660 && code <= 0x0669) {\n return String(code - 0x0660);\n }\n\n if (code >= 0x06f0 && code <= 0x06f9) {\n return String(code - 0x06f0);\n }\n\n if (code >= 0xff10 && code <= 0xff19) {\n return String(code - 0xff10);\n }\n\n return null;\n}\n\nfunction extractNormalizedDigits(input: string): string[] {\n const digits: string[] = [];\n for (const char of input) {\n const normalized = normalizeDigit(char);\n if (normalized) {\n digits.push(normalized);\n }\n }\n return digits;\n}\n","/**\n * createDatePicker hook for Solidaria\n *\n * Provides the behavior and accessibility implementation for a date picker component.\n * Based on @react-aria/datepicker useDatePicker\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createId } from \"../ssr\";\nimport { createLabel } from \"../label/createLabel\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { useLocale } from \"../i18n\";\nimport { createPress } from \"../interactions/createPress\";\nimport { DateFormatter, getLocalTimeZone } from \"@internationalized/date\";\nimport type { DateFieldState, CalendarState } from \"@proyecto-viviana/solid-stately\";\n\nexport interface AriaDatePickerProps {\n /** An ID for the date picker. */\n id?: string;\n /** A visible label for the date picker. */\n label?: string;\n /** An accessible label for the date picker. */\n \"aria-label\"?: string;\n /** The ID of an element that labels the date picker. */\n \"aria-labelledby\"?: string;\n /** The ID of an element that describes the date picker. */\n \"aria-describedby\"?: string;\n /** Whether the date picker is disabled. */\n isDisabled?: boolean;\n /** Whether the date picker is read-only. */\n isReadOnly?: boolean;\n /** Whether the date picker is required. */\n isRequired?: boolean;\n /** Whether the date picker is invalid. */\n isInvalid?: boolean;\n /** Description text. */\n description?: string;\n /** Error message. */\n errorMessage?: string;\n /** Accessible label for the calendar trigger button. */\n buttonAriaLabel?: string;\n /** Accessible label for the calendar dialog. */\n dialogAriaLabel?: string;\n /** Accessible label for the calendar grid region. */\n calendarAriaLabel?: string;\n /** The minimum allowed date. */\n minValue?: Date;\n /** The maximum allowed date. */\n maxValue?: Date;\n /** Whether a date is unavailable. */\n isDateUnavailable?: (date: unknown) => boolean;\n /** The first day of the week. */\n firstDayOfWeek?: number;\n /** Page behavior for calendar. */\n pageBehavior?: \"single\" | \"visible\";\n /** Whether to force leading zeros. */\n shouldForceLeadingZeros?: boolean;\n /** Callback when focus changes. */\n onFocusChange?: (isFocused: boolean) => void;\n /** Callback when focused. */\n onFocus?: (e: FocusEvent) => void;\n /** Callback when blurred. */\n onBlur?: (e: FocusEvent) => void;\n /** The name attribute for form submission. */\n name?: string;\n /** The form attribute. */\n form?: string;\n /** Auto focus the field. */\n autoFocus?: boolean;\n /** The placeholder value. */\n placeholderValue?: unknown;\n /** Whether to hide the time zone. */\n hideTimeZone?: boolean;\n /** The hour cycle. */\n hourCycle?: 12 | 24;\n /** The granularity. */\n granularity?: \"day\" | \"hour\" | \"minute\" | \"second\";\n}\n\nexport interface DatePickerState {\n /** Whether the calendar is open. */\n isOpen: boolean;\n /** Open the calendar. */\n open: () => void;\n /** Close the calendar. */\n close: () => void;\n /** Toggle the calendar. */\n toggle: () => void;\n}\n\nexport interface DatePickerAria {\n /** Props for the group container. */\n groupProps: Record<string, unknown>;\n /** Props for the label element. */\n labelProps: Record<string, unknown>;\n /** Props for the date field container. */\n fieldProps: Record<string, unknown>;\n /** Props for the button that opens the calendar. */\n buttonProps: Record<string, unknown>;\n /** Props for the calendar dialog. */\n dialogProps: Record<string, unknown>;\n /** Props for the calendar. */\n calendarProps: Record<string, unknown>;\n /** Props for the description element. */\n descriptionProps: Record<string, unknown>;\n /** Props for the error message element. */\n errorMessageProps: Record<string, unknown>;\n /** Whether the picker is invalid. */\n isInvalid: boolean;\n /** Validation errors. */\n validationErrors: string[];\n /** Validation details. */\n validationDetails: Record<string, unknown>;\n /** Focus manager for programmatic segment focus. */\n focusManager: {\n focusFirst: () => void;\n focusLast: () => void;\n } & {\n /** @internal Wires the actual focus implementations from the component layer */\n _register?: (first: () => void, last: () => void) => void;\n };\n}\n\n/**\n * Provides the behavior and accessibility implementation for a date picker component.\n */\nexport function createDatePicker<T extends DateFieldState, C extends CalendarState>(\n props: MaybeAccessor<AriaDatePickerProps>,\n state: T,\n overlayState: DatePickerState,\n _calendarState?: C,\n): DatePickerAria {\n const locale = useLocale();\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const descriptionId = createId();\n const errorMessageId = createId();\n const dialogId = createId();\n const buttonId = createId();\n const fieldId = createId();\n\n // Create label handling\n const { labelProps, fieldProps: labelFieldProps } = createLabel({\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 labelElementType: \"span\",\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 (valueDescription()) {\n ids.push(valueDescriptionId);\n }\n if (p.description) {\n ids.push(descriptionId);\n }\n if ((p.isInvalid || state.isInvalid()) && p.errorMessage) {\n ids.push(errorMessageId);\n }\n return ids.length > 0 ? ids.join(\" \") : undefined;\n };\n\n // Selected date description for screen readers\n const valueDescriptionId = createId();\n const valueDescription = createMemo(() => {\n const v = state.value?.();\n if (!v) return \"\";\n const formatter = new DateFormatter(locale().locale, {\n year: \"numeric\",\n month: \"long\",\n day: \"numeric\",\n });\n return formatter.format(v.toDate(getLocalTimeZone()));\n });\n\n // Group props\n const groupProps = createMemo(() => {\n const p = getProps();\n const isInvalid = p.isInvalid || state.isInvalid();\n const describedBy = getAriaDescribedBy();\n const labelField = labelFieldProps as Record<string, unknown>;\n\n return {\n id,\n role: \"group\",\n \"aria-label\": labelField[\"aria-label\"] || undefined,\n \"aria-labelledby\": labelField[\"aria-labelledby\"] || undefined,\n \"aria-disabled\": p.isDisabled || state.isDisabled() || undefined,\n \"aria-readonly\": p.isReadOnly || state.isReadOnly() || undefined,\n \"aria-required\": p.isRequired || state.isRequired() || undefined,\n \"aria-invalid\": isInvalid || undefined,\n \"aria-describedby\": describedBy,\n };\n });\n\n // Field props - applied to DateInput container\n const fieldProps = createMemo(() => {\n const p = getProps();\n const describedBy = getAriaDescribedBy();\n\n return {\n id: fieldId,\n \"aria-describedby\": describedBy,\n value: state.value?.(),\n defaultValue: state.defaultValue,\n onChange: (value: unknown) => {\n state.setValue?.(value as T extends DateFieldState<infer V> ? V | null : null);\n },\n placeholderValue: p.placeholderValue,\n hideTimeZone: p.hideTimeZone,\n hourCycle: p.hourCycle,\n shouldForceLeadingZeros: p.shouldForceLeadingZeros,\n granularity: p.granularity,\n isDisabled: p.isDisabled || state.isDisabled(),\n isReadOnly: p.isReadOnly || state.isReadOnly(),\n isRequired: p.isRequired || state.isRequired(),\n autoFocus: p.autoFocus,\n name: p.name,\n form: p.form,\n };\n });\n\n // Button props with createPress for keyboard/mouse/touch activation\n const buttonPress = createPress({\n get isDisabled() {\n const p = getProps();\n return p.isDisabled || state.isDisabled();\n },\n onPress: () => {\n overlayState.open();\n },\n });\n\n const buttonProps = createMemo(() => {\n const p = getProps();\n const isDisabled = p.isDisabled || state.isDisabled();\n const defaults = getDatePickerLabelDefaults(locale().locale);\n const labelId = (labelProps as Record<string, unknown>)[\"id\"] as string | undefined;\n const labelledBy = labelId ? `${buttonId} ${labelId}` : buttonId;\n const describedBy = getAriaDescribedBy();\n\n return mergeProps(buttonPress.pressProps as Record<string, unknown>, {\n id: buttonId,\n type: \"button\" as const,\n \"aria-label\": p.buttonAriaLabel ?? defaults.button,\n \"aria-labelledby\": labelledBy,\n \"aria-haspopup\": \"dialog\" as const,\n \"aria-expanded\": overlayState.isOpen,\n \"aria-controls\": overlayState.isOpen ? dialogId : undefined,\n \"aria-describedby\": describedBy,\n \"aria-disabled\": isDisabled || undefined,\n tabIndex: 0,\n });\n });\n\n // Dialog props\n const dialogProps = createMemo(() => {\n const p = getProps();\n const defaults = getDatePickerLabelDefaults(locale().locale);\n const labelId = (labelProps as Record<string, unknown>)[\"id\"] as string | undefined;\n const labelledBy = labelId ? `${buttonId} ${labelId}` : buttonId;\n\n return {\n id: dialogId,\n role: \"dialog\",\n \"aria-modal\": true,\n \"aria-labelledby\": labelledBy,\n \"aria-label\": p.dialogAriaLabel ?? defaults.dialog,\n };\n });\n\n // Calendar props\n const calendarProps = createMemo(() => {\n const p = getProps();\n const defaults = getDatePickerLabelDefaults(locale().locale);\n const currentValue = state.value?.();\n\n return {\n autoFocus: true,\n value: currentValue,\n onChange: (value: unknown) => {\n if (state.setValue) {\n state.setValue(value as Parameters<typeof state.setValue>[0]);\n }\n },\n minValue: p.minValue,\n maxValue: p.maxValue,\n isDisabled: p.isDisabled || state.isDisabled(),\n isReadOnly: p.isReadOnly || state.isReadOnly(),\n isDateUnavailable: p.isDateUnavailable,\n defaultFocusedValue: currentValue ? undefined : p.placeholderValue,\n isInvalid: p.isInvalid || state.isInvalid(),\n errorMessage:\n typeof p.errorMessage === \"string\"\n ? p.errorMessage\n : state.isInvalid()\n ? \"Invalid date\"\n : undefined,\n firstDayOfWeek: p.firstDayOfWeek,\n pageBehavior: p.pageBehavior,\n \"aria-label\": p.calendarAriaLabel ?? p.dialogAriaLabel ?? defaults.calendar,\n };\n });\n\n // Description props for the description element\n const descriptionProps = createMemo(() => ({\n id: descriptionId,\n }));\n\n // Value description element props\n const valueDescriptionProps = createMemo(() => ({\n id: valueDescriptionId,\n \"aria-hidden\": true,\n }));\n\n // Error message props\n const errorMessageProps = createMemo(() => ({\n id: errorMessageId,\n role: \"alert\",\n }));\n\n // Label click focuses first segment — component layer wires the actual ref\n let focusFirstSegment: (() => void) | undefined;\n let focusLastSegment: (() => void) | undefined;\n\n const enhancedLabelProps = createMemo(() => {\n return {\n ...labelProps,\n onClick: () => {\n focusFirstSegment?.();\n },\n };\n });\n\n const isInvalid = createMemo(() => {\n const p = getProps();\n return p.isInvalid || state.isInvalid();\n });\n\n const validationErrors = createMemo(() => {\n const p = getProps();\n if (p.isInvalid && typeof p.errorMessage === \"string\") {\n return [p.errorMessage];\n }\n return [];\n });\n\n const validationDetails = createMemo(() => {\n const p = getProps();\n return {\n minValue: p.minValue,\n maxValue: p.maxValue,\n isDateUnavailable: p.isDateUnavailable,\n isInvalid: isInvalid(),\n };\n });\n\n return {\n get groupProps() {\n return groupProps();\n },\n get labelProps() {\n return enhancedLabelProps() as Record<string, unknown>;\n },\n get fieldProps() {\n return fieldProps();\n },\n get buttonProps() {\n return buttonProps();\n },\n get dialogProps() {\n return dialogProps();\n },\n get calendarProps() {\n return calendarProps();\n },\n get descriptionProps() {\n return descriptionProps();\n },\n get errorMessageProps() {\n return errorMessageProps();\n },\n get isInvalid() {\n return isInvalid();\n },\n get validationErrors() {\n return validationErrors();\n },\n get validationDetails() {\n return validationDetails();\n },\n focusManager: {\n focusFirst: () => focusFirstSegment?.(),\n focusLast: () => focusLastSegment?.(),\n /** @internal Wires the actual focus implementations from the component layer */\n _register: (first: () => void, last: () => void) => {\n focusFirstSegment = first;\n focusLastSegment = last;\n },\n },\n };\n}\n\nfunction getDatePickerLabelDefaults(locale: string): {\n button: string;\n dialog: string;\n calendar: string;\n} {\n const language = locale.toLowerCase().split(\"-\")[0] ?? \"en\";\n\n if (language === \"es\") {\n return {\n button: \"Abrir calendario\",\n dialog: \"Calendario\",\n calendar: \"Calendario\",\n };\n }\n\n return {\n button: \"Open calendar\",\n dialog: \"Calendar\",\n calendar: \"Calendar\",\n };\n}\n","/**\n * createDatePickerGroup hook for Solidaria\n *\n * Provides keyboard and pointer behavior for the date picker field group.\n * Based on @react-aria/datepicker useDatePickerGroup\n */\n\nimport { createMemo } from \"solid-js\";\nimport { type MaybeAccessor, access } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { useLocale } from \"../i18n\";\nimport { createPress } from \"../interactions/createPress\";\nimport { nodeContains, getEventTarget } from \"../utils\";\nimport { focusSafely } from \"../utils/focus\";\n\nexport interface AriaDatePickerGroupProps {\n isDisabled?: boolean;\n}\n\nexport interface DatePickerGroupAria {\n groupProps: Record<string, unknown>;\n}\n\nexport function createDatePickerGroup(\n props: MaybeAccessor<AriaDatePickerGroupProps>,\n state: { setOpen: (isOpen: boolean) => void; isOpen: boolean; isDisabled: () => boolean },\n ref: () => HTMLElement | null,\n disableArrowNavigation?: boolean,\n): DatePickerGroupAria {\n const locale = useLocale();\n const resolvedProps = createMemo(() => access(props));\n\n const onKeyDown = (e: KeyboardEvent) => {\n if (!nodeContains(e.currentTarget as Node | null, getEventTarget(e) as Node | null)) {\n return;\n }\n\n // Open the popover on alt + arrow down/up\n if (e.altKey && (e.key === \"ArrowDown\" || e.key === \"ArrowUp\")) {\n e.preventDefault();\n e.stopPropagation();\n state.setOpen(true);\n return;\n }\n\n if (disableArrowNavigation) return;\n\n const root = ref();\n if (!root) return;\n\n const segments = Array.from(root.querySelectorAll('[role=\"spinbutton\"]')) as HTMLElement[];\n if (segments.length === 0) return;\n\n const activeElement = root.ownerDocument.activeElement;\n let currentIndex = -1;\n if (activeElement) {\n currentIndex = segments.indexOf(activeElement as HTMLElement);\n }\n\n const direction = locale().direction;\n\n switch (e.key) {\n case \"ArrowLeft\": {\n e.preventDefault();\n e.stopPropagation();\n if (direction === \"rtl\") {\n // geometric fallback: in RTL, left arrow moves toward the end (next)\n const nextIndex = currentIndex >= 0 ? currentIndex + 1 : 0;\n if (nextIndex < segments.length) {\n focusSafely(segments[nextIndex]);\n }\n } else {\n const prevIndex = currentIndex >= 0 ? currentIndex - 1 : segments.length - 1;\n if (prevIndex >= 0) {\n focusSafely(segments[prevIndex]);\n }\n }\n break;\n }\n case \"ArrowRight\": {\n e.preventDefault();\n e.stopPropagation();\n if (direction === \"rtl\") {\n // geometric fallback: in RTL, right arrow moves toward the start (previous)\n const prevIndex = currentIndex >= 0 ? currentIndex - 1 : segments.length - 1;\n if (prevIndex >= 0) {\n focusSafely(segments[prevIndex]);\n }\n } else {\n const nextIndex = currentIndex >= 0 ? currentIndex + 1 : 0;\n if (nextIndex < segments.length) {\n focusSafely(segments[nextIndex]);\n }\n }\n break;\n }\n }\n };\n\n const focusLast = (event?: Event) => {\n const root = ref();\n if (!root) return;\n\n const target = event ? getEventTarget(event) : null;\n\n const segments = Array.from(root.querySelectorAll('[role=\"spinbutton\"]')) as HTMLElement[];\n if (segments.length === 0) return;\n\n let startIndex = segments.length - 1;\n if (target) {\n const targetIndex = segments.indexOf(target as HTMLElement);\n if (targetIndex >= 0) {\n startIndex = targetIndex;\n }\n }\n\n for (let i = startIndex; i >= 0; i--) {\n const segment = segments[i];\n if (segment.getAttribute(\"data-placeholder\") !== \"true\") {\n focusSafely(segment);\n return;\n }\n }\n };\n\n const { pressProps } = createPress({\n isDisabled: () => resolvedProps().isDisabled || state.isDisabled(),\n preventFocusOnPress: true,\n allowTextSelectionOnPress: true,\n onPressStart(e) {\n if (e.pointerType === \"mouse\") {\n focusLast(e as unknown as Event);\n }\n },\n onPress(e) {\n if (e.pointerType === \"touch\" || e.pointerType === \"pen\") {\n focusLast(e as unknown as Event);\n }\n },\n });\n\n return {\n get groupProps() {\n return mergeProps(pressProps, {\n onKeyDown,\n });\n },\n };\n}\n","/**\n * createDateRangePicker hook for Solidaria\n *\n * Provides behavior and accessibility wiring for range date pickers.\n * Compatibility target: @react-aria/datepicker useDateRangePicker.\n */\n\nimport { createMemo } from \"solid-js\";\nimport { createId } from \"../ssr\";\nimport { createLabel } from \"../label/createLabel\";\nimport { access, type MaybeAccessor } from \"../utils/reactivity\";\nimport { mergeProps } from \"../utils/mergeProps\";\nimport { useLocale } from \"../i18n\";\nimport type { RangeCalendarState } from \"@proyecto-viviana/solid-stately\";\nimport type { DatePickerState } from \"./createDatePicker\";\n\nexport interface AriaDateRangePickerProps {\n id?: string;\n label?: string;\n \"aria-label\"?: string;\n \"aria-labelledby\"?: string;\n \"aria-describedby\"?: string;\n isDisabled?: boolean;\n isReadOnly?: boolean;\n isRequired?: boolean;\n isInvalid?: boolean;\n description?: string;\n errorMessage?: string;\n buttonAriaLabel?: string;\n dialogAriaLabel?: string;\n calendarAriaLabel?: string;\n startFieldAriaLabel?: string;\n endFieldAriaLabel?: string;\n}\n\nexport interface DateRangePickerAria {\n groupProps: Record<string, unknown>;\n labelProps: Record<string, unknown>;\n startFieldProps: Record<string, unknown>;\n endFieldProps: Record<string, unknown>;\n startInputProps: Record<string, unknown>;\n endInputProps: Record<string, unknown>;\n buttonProps: Record<string, unknown>;\n dialogProps: Record<string, unknown>;\n calendarProps: Record<string, unknown>;\n descriptionProps: Record<string, unknown>;\n errorMessageProps: Record<string, unknown>;\n}\n\nexport function createDateRangePicker<T extends RangeCalendarState>(\n props: MaybeAccessor<AriaDateRangePickerProps>,\n state: T,\n overlayState: DatePickerState,\n): DateRangePickerAria {\n const locale = useLocale();\n const getProps = () => access(props);\n const id = createId(getProps().id);\n const startFieldId = createId();\n const endFieldId = createId();\n const descriptionId = createId();\n const errorMessageId = createId();\n const dialogId = createId();\n\n const { labelProps, fieldProps: labelFieldProps } = createLabel({\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 labelElementType: \"span\",\n });\n\n const getAriaDescribedBy = () => {\n const p = getProps();\n const ids: string[] = [];\n if (p[\"aria-describedby\"]) ids.push(p[\"aria-describedby\"]);\n if (p.description) ids.push(descriptionId);\n if (p.isInvalid && p.errorMessage) ids.push(errorMessageId);\n return ids.length > 0 ? ids.join(\" \") : undefined;\n };\n\n const groupProps = createMemo(() => {\n const p = getProps();\n const isInvalid = p.isInvalid;\n return mergeProps(labelFieldProps as Record<string, unknown>, {\n id,\n role: \"group\",\n \"aria-disabled\": p.isDisabled || state.isDisabled() || undefined,\n \"aria-readonly\": p.isReadOnly || state.isReadOnly() || undefined,\n \"aria-required\": p.isRequired || undefined,\n \"aria-invalid\": isInvalid || undefined,\n \"aria-describedby\": getAriaDescribedBy(),\n });\n });\n\n const startFieldProps = createMemo(() => {\n const p = getProps();\n const defaults = getDateRangePickerLabelDefaults(locale().locale);\n const isDisabled = p.isDisabled || state.isDisabled();\n const isReadOnly = p.isReadOnly || state.isReadOnly();\n const isInvalid = p.isInvalid;\n\n return {\n id: startFieldId,\n \"aria-label\": p.startFieldAriaLabel ?? defaults.startField,\n \"aria-describedby\": getAriaDescribedBy(),\n \"aria-disabled\": isDisabled || undefined,\n \"aria-readonly\": isReadOnly || undefined,\n \"aria-invalid\": isInvalid || undefined,\n tabIndex: isDisabled ? -1 : 0,\n onClick: () => {\n if (!isDisabled) {\n overlayState.open();\n }\n },\n onKeyDown: (event: KeyboardEvent) => {\n if (isDisabled) return;\n if (event.key === \"Enter\" || event.key === \" \" || event.key === \"ArrowDown\") {\n event.preventDefault();\n overlayState.open();\n }\n },\n };\n });\n\n const endFieldProps = createMemo(() => {\n const p = getProps();\n const defaults = getDateRangePickerLabelDefaults(locale().locale);\n const isDisabled = p.isDisabled || state.isDisabled();\n const isReadOnly = p.isReadOnly || state.isReadOnly();\n const isInvalid = p.isInvalid;\n\n return {\n id: endFieldId,\n \"aria-label\": p.endFieldAriaLabel ?? defaults.endField,\n \"aria-describedby\": getAriaDescribedBy(),\n \"aria-disabled\": isDisabled || undefined,\n \"aria-readonly\": isReadOnly || undefined,\n \"aria-invalid\": isInvalid || undefined,\n tabIndex: isDisabled ? -1 : 0,\n onClick: () => {\n if (!isDisabled) {\n overlayState.open();\n }\n },\n onKeyDown: (event: KeyboardEvent) => {\n if (isDisabled) return;\n if (event.key === \"Enter\" || event.key === \" \" || event.key === \"ArrowDown\") {\n event.preventDefault();\n overlayState.open();\n }\n },\n };\n });\n\n const startInputProps = createMemo(() => {\n const p = getProps();\n const defaults = getDateRangePickerLabelDefaults(locale().locale);\n const isDisabled = p.isDisabled || state.isDisabled();\n const isReadOnly = p.isReadOnly || state.isReadOnly();\n const isInvalid = p.isInvalid;\n\n return {\n id: startFieldId,\n \"aria-label\": p.startFieldAriaLabel ?? defaults.startField,\n \"aria-describedby\": getAriaDescribedBy(),\n \"aria-disabled\": isDisabled || undefined,\n \"aria-readonly\": isReadOnly || undefined,\n \"aria-invalid\": isInvalid || undefined,\n };\n });\n\n const endInputProps = createMemo(() => {\n const p = getProps();\n const defaults = getDateRangePickerLabelDefaults(locale().locale);\n const isDisabled = p.isDisabled || state.isDisabled();\n const isReadOnly = p.isReadOnly || state.isReadOnly();\n const isInvalid = p.isInvalid;\n\n return {\n id: endFieldId,\n \"aria-label\": p.endFieldAriaLabel ?? defaults.endField,\n \"aria-describedby\": getAriaDescribedBy(),\n \"aria-disabled\": isDisabled || undefined,\n \"aria-readonly\": isReadOnly || undefined,\n \"aria-invalid\": isInvalid || undefined,\n };\n });\n\n const buttonProps = createMemo(() => {\n const p = getProps();\n const defaults = getDateRangePickerLabelDefaults(locale().locale);\n const isDisabled = p.isDisabled || state.isDisabled();\n return {\n \"aria-label\": p.buttonAriaLabel ?? defaults.button,\n \"aria-haspopup\": \"dialog\" as const,\n \"aria-expanded\": overlayState.isOpen,\n \"aria-controls\": overlayState.isOpen ? dialogId : undefined,\n disabled: isDisabled,\n tabIndex: 0,\n onClick: () => {\n if (!isDisabled) overlayState.toggle();\n },\n };\n });\n\n const dialogProps = createMemo(() => {\n const defaults = getDateRangePickerLabelDefaults(locale().locale);\n return {\n id: dialogId,\n role: \"dialog\",\n \"aria-modal\": true,\n \"aria-label\": getProps().dialogAriaLabel ?? defaults.dialog,\n };\n });\n\n const calendarProps = createMemo(() => {\n const defaults = getDateRangePickerLabelDefaults(locale().locale);\n return {\n \"aria-label\": getProps().calendarAriaLabel ?? getProps().dialogAriaLabel ?? defaults.calendar,\n };\n });\n\n const descriptionProps = createMemo(() => ({ id: descriptionId }));\n const errorMessageProps = createMemo(() => ({ id: errorMessageId, role: \"alert\" }));\n\n return {\n get groupProps() {\n return groupProps();\n },\n get labelProps() {\n return labelProps as Record<string, unknown>;\n },\n get startFieldProps() {\n return startFieldProps();\n },\n get endFieldProps() {\n return endFieldProps();\n },\n get startInputProps() {\n return startInputProps();\n },\n get endInputProps() {\n return endInputProps();\n },\n get buttonProps() {\n return buttonProps();\n },\n get dialogProps() {\n return dialogProps();\n },\n get calendarProps() {\n return calendarProps();\n },\n get descriptionProps() {\n return descriptionProps();\n },\n get errorMessageProps() {\n return errorMessageProps();\n },\n };\n}\n\nfunction getDateRangePickerLabelDefaults(locale: string): {\n button: string;\n dialog: string;\n calendar: string;\n startField: string;\n endField: string;\n} {\n const language = locale.toLowerCase().split(\"-\")[0] ?? \"en\";\n\n if (language === \"es\") {\n return {\n button: \"Abrir calendario de rango\",\n dialog: \"Calendario de rango\",\n calendar: \"Calendario de rango\",\n startField: \"Fecha de inicio\",\n endField: \"Fecha de fin\",\n };\n }\n\n return {\n button: \"Open range calendar\",\n dialog: \"Range calendar\",\n calendar: \"Range calendar\",\n startField: \"Start date\",\n endField: \"End date\",\n };\n}\n"],"mappings":"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"}