@proyecto-viviana/solidaria 0.2.5 → 0.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (555) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +31 -236
  3. package/dist/actiongroup/createActionGroup.d.ts +29 -0
  4. package/dist/actiongroup/createActionGroup.d.ts.map +1 -0
  5. package/dist/actiongroup/index.d.ts +2 -0
  6. package/dist/actiongroup/index.d.ts.map +1 -0
  7. package/dist/autocomplete/createAutocomplete.d.ts +16 -12
  8. package/dist/autocomplete/createAutocomplete.d.ts.map +1 -1
  9. package/dist/autocomplete/index.d.ts +1 -1
  10. package/dist/autocomplete/index.d.ts.map +1 -1
  11. package/dist/breadcrumbs/createBreadcrumbs.d.ts +11 -7
  12. package/dist/breadcrumbs/createBreadcrumbs.d.ts.map +1 -1
  13. package/dist/breadcrumbs/index.d.ts +1 -1
  14. package/dist/button/createButton.d.ts +1 -1
  15. package/dist/button/createButton.d.ts.map +1 -1
  16. package/dist/button/createToggleButton.d.ts +3 -3
  17. package/dist/button/createToggleButtonGroup.d.ts +32 -0
  18. package/dist/button/createToggleButtonGroup.d.ts.map +1 -0
  19. package/dist/button/index.d.ts +6 -4
  20. package/dist/button/index.d.ts.map +1 -1
  21. package/dist/button/types.d.ts +18 -12
  22. package/dist/button/types.d.ts.map +1 -1
  23. package/dist/calendar/createCalendar.d.ts +15 -5
  24. package/dist/calendar/createCalendar.d.ts.map +1 -1
  25. package/dist/calendar/createCalendarCell.d.ts +8 -2
  26. package/dist/calendar/createCalendarCell.d.ts.map +1 -1
  27. package/dist/calendar/createCalendarGrid.d.ts +4 -4
  28. package/dist/calendar/createCalendarGrid.d.ts.map +1 -1
  29. package/dist/calendar/createRangeCalendar.d.ts +15 -5
  30. package/dist/calendar/createRangeCalendar.d.ts.map +1 -1
  31. package/dist/calendar/createRangeCalendarCell.d.ts +7 -3
  32. package/dist/calendar/createRangeCalendarCell.d.ts.map +1 -1
  33. package/dist/calendar/index.d.ts +5 -5
  34. package/dist/calendar/index.d.ts.map +1 -1
  35. package/dist/calendar/intl/index.d.ts +12 -0
  36. package/dist/calendar/intl/index.d.ts.map +1 -0
  37. package/dist/calendar/utils.d.ts +12 -0
  38. package/dist/calendar/utils.d.ts.map +1 -0
  39. package/dist/checkbox/createCheckbox.d.ts +6 -6
  40. package/dist/checkbox/createCheckbox.d.ts.map +1 -1
  41. package/dist/checkbox/createCheckboxGroup.d.ts +11 -7
  42. package/dist/checkbox/createCheckboxGroup.d.ts.map +1 -1
  43. package/dist/checkbox/createCheckboxGroupItem.d.ts +4 -4
  44. package/dist/checkbox/createCheckboxGroupItem.d.ts.map +1 -1
  45. package/dist/checkbox/createCheckboxGroupState.d.ts +2 -2
  46. package/dist/checkbox/createCheckboxGroupState.d.ts.map +1 -1
  47. package/dist/checkbox/index.d.ts +8 -8
  48. package/dist/checkbox/index.d.ts.map +1 -1
  49. package/dist/collections/index.d.ts +56 -0
  50. package/dist/collections/index.d.ts.map +1 -0
  51. package/dist/color/createColorArea.d.ts +3 -3
  52. package/dist/color/createColorArea.d.ts.map +1 -1
  53. package/dist/color/createColorField.d.ts +4 -4
  54. package/dist/color/createColorField.d.ts.map +1 -1
  55. package/dist/color/createColorSlider.d.ts +4 -4
  56. package/dist/color/createColorSlider.d.ts.map +1 -1
  57. package/dist/color/createColorSwatch.d.ts +2 -2
  58. package/dist/color/createColorSwatch.d.ts.map +1 -1
  59. package/dist/color/createColorWheel.d.ts +3 -3
  60. package/dist/color/createColorWheel.d.ts.map +1 -1
  61. package/dist/color/index.d.ts +6 -6
  62. package/dist/color/types.d.ts +98 -16
  63. package/dist/color/types.d.ts.map +1 -1
  64. package/dist/combobox/createComboBox.d.ts +16 -7
  65. package/dist/combobox/createComboBox.d.ts.map +1 -1
  66. package/dist/combobox/index.d.ts +1 -1
  67. package/dist/combobox/intl/index.d.ts +1 -1
  68. package/dist/datepicker/createDateField.d.ts +18 -6
  69. package/dist/datepicker/createDateField.d.ts.map +1 -1
  70. package/dist/datepicker/createDatePicker.d.ts +57 -5
  71. package/dist/datepicker/createDatePicker.d.ts.map +1 -1
  72. package/dist/datepicker/createDatePickerGroup.d.ts +19 -0
  73. package/dist/datepicker/createDatePickerGroup.d.ts.map +1 -0
  74. package/dist/datepicker/createDateRangePicker.d.ts +42 -0
  75. package/dist/datepicker/createDateRangePicker.d.ts.map +1 -0
  76. package/dist/datepicker/createDateSegment.d.ts +11 -3
  77. package/dist/datepicker/createDateSegment.d.ts.map +1 -1
  78. package/dist/datepicker/createTimeField.d.ts +11 -5
  79. package/dist/datepicker/createTimeField.d.ts.map +1 -1
  80. package/dist/datepicker/createTimeSegment.d.ts +29 -0
  81. package/dist/datepicker/createTimeSegment.d.ts.map +1 -0
  82. package/dist/datepicker/index.d.ts +7 -4
  83. package/dist/datepicker/index.d.ts.map +1 -1
  84. package/dist/dialog/createDialog.d.ts +5 -5
  85. package/dist/dialog/createDialog.d.ts.map +1 -1
  86. package/dist/dialog/index.d.ts +2 -2
  87. package/dist/dialog/index.d.ts.map +1 -1
  88. package/dist/dialog/types.d.ts +4 -4
  89. package/dist/disclosure/createDisclosure.d.ts +5 -2
  90. package/dist/disclosure/createDisclosure.d.ts.map +1 -1
  91. package/dist/disclosure/createDisclosureGroup.d.ts +4 -3
  92. package/dist/disclosure/createDisclosureGroup.d.ts.map +1 -1
  93. package/dist/disclosure/index.d.ts +2 -2
  94. package/dist/dnd/createDrag.d.ts +2 -2
  95. package/dist/dnd/createDrag.d.ts.map +1 -1
  96. package/dist/dnd/createDraggableCollection.d.ts +6 -2
  97. package/dist/dnd/createDraggableCollection.d.ts.map +1 -1
  98. package/dist/dnd/createDraggableItem.d.ts +3 -3
  99. package/dist/dnd/createDraggableItem.d.ts.map +1 -1
  100. package/dist/dnd/createDrop.d.ts +2 -2
  101. package/dist/dnd/createDrop.d.ts.map +1 -1
  102. package/dist/dnd/createDroppableCollection.d.ts +55 -4
  103. package/dist/dnd/createDroppableCollection.d.ts.map +1 -1
  104. package/dist/dnd/createDroppableItem.d.ts +3 -3
  105. package/dist/dnd/createDroppableItem.d.ts.map +1 -1
  106. package/dist/dnd/index.d.ts +12 -12
  107. package/dist/dnd/index.d.ts.map +1 -1
  108. package/dist/dnd/types.d.ts +2 -2
  109. package/dist/dnd/types.d.ts.map +1 -1
  110. package/dist/dnd/utils.d.ts +1 -1
  111. package/dist/dnd/utils.d.ts.map +1 -1
  112. package/dist/focus/FocusScope.d.ts +1 -1
  113. package/dist/focus/FocusScope.d.ts.map +1 -1
  114. package/dist/focus/createAutoFocus.d.ts.map +1 -1
  115. package/dist/focus/createFocusRestore.d.ts.map +1 -1
  116. package/dist/focus/createVirtualFocus.d.ts +4 -4
  117. package/dist/focus/createVirtualFocus.d.ts.map +1 -1
  118. package/dist/focus/index.d.ts +4 -4
  119. package/dist/focus/index.d.ts.map +1 -1
  120. package/dist/form/createFormReset.d.ts +1 -1
  121. package/dist/form/createFormValidation.d.ts +3 -3
  122. package/dist/form/createFormValidation.d.ts.map +1 -1
  123. package/dist/form/index.d.ts +2 -2
  124. package/dist/form/index.d.ts.map +1 -1
  125. package/dist/grid/GridKeyboardDelegate.d.ts +5 -5
  126. package/dist/grid/createGrid.d.ts +3 -3
  127. package/dist/grid/createGrid.d.ts.map +1 -1
  128. package/dist/grid/createGridCell.d.ts +3 -3
  129. package/dist/grid/createGridRow.d.ts +3 -3
  130. package/dist/grid/index.d.ts +5 -5
  131. package/dist/grid/types.d.ts +8 -8
  132. package/dist/gridlist/createGridList.d.ts +6 -4
  133. package/dist/gridlist/createGridList.d.ts.map +1 -1
  134. package/dist/gridlist/createGridListItem.d.ts +4 -4
  135. package/dist/gridlist/createGridListItem.d.ts.map +1 -1
  136. package/dist/gridlist/createGridListSelectionCheckbox.d.ts +3 -3
  137. package/dist/gridlist/createGridListSelectionCheckbox.d.ts.map +1 -1
  138. package/dist/gridlist/index.d.ts +4 -4
  139. package/dist/gridlist/types.d.ts +11 -7
  140. package/dist/gridlist/types.d.ts.map +1 -1
  141. package/dist/i18n/createCollator.d.ts.map +1 -1
  142. package/dist/i18n/createDateFormatter.d.ts.map +1 -1
  143. package/dist/i18n/createFilter.d.ts.map +1 -1
  144. package/dist/i18n/createNumberFormatter.d.ts +1 -1
  145. package/dist/i18n/createNumberFormatter.d.ts.map +1 -1
  146. package/dist/i18n/createStringFormatter.d.ts +2 -2
  147. package/dist/i18n/createStringFormatter.d.ts.map +1 -1
  148. package/dist/i18n/index.d.ts +8 -8
  149. package/dist/i18n/index.d.ts.map +1 -1
  150. package/dist/i18n/locale.d.ts +2 -2
  151. package/dist/i18n/locale.d.ts.map +1 -1
  152. package/dist/i18n/utils.d.ts.map +1 -1
  153. package/dist/index.d.ts +52 -49
  154. package/dist/index.d.ts.map +1 -1
  155. package/dist/index.js +18089 -15690
  156. package/dist/index.js.map +1 -7
  157. package/dist/index.jsx +18242 -0
  158. package/dist/index.jsx.map +1 -0
  159. package/dist/interactions/FocusableProvider.d.ts +2 -2
  160. package/dist/interactions/FocusableProvider.d.ts.map +1 -1
  161. package/dist/interactions/PressEvent.d.ts +2 -2
  162. package/dist/interactions/createFocus.d.ts +1 -1
  163. package/dist/interactions/createFocus.d.ts.map +1 -1
  164. package/dist/interactions/createFocusRing.d.ts +1 -1
  165. package/dist/interactions/createFocusRing.d.ts.map +1 -1
  166. package/dist/interactions/createFocusWithin.d.ts +1 -1
  167. package/dist/interactions/createFocusWithin.d.ts.map +1 -1
  168. package/dist/interactions/createFocusable.d.ts +3 -3
  169. package/dist/interactions/createFocusable.d.ts.map +1 -1
  170. package/dist/interactions/createHover.d.ts +5 -5
  171. package/dist/interactions/createHover.d.ts.map +1 -1
  172. package/dist/interactions/createInteractionModality.d.ts +3 -3
  173. package/dist/interactions/createInteractionModality.d.ts.map +1 -1
  174. package/dist/interactions/createKeyboard.d.ts +1 -1
  175. package/dist/interactions/createLongPress.d.ts +5 -5
  176. package/dist/interactions/createMove.d.ts +5 -5
  177. package/dist/interactions/createMove.d.ts.map +1 -1
  178. package/dist/interactions/createPress.d.ts +4 -4
  179. package/dist/interactions/createPress.d.ts.map +1 -1
  180. package/dist/interactions/index.d.ts +12 -12
  181. package/dist/interactions/index.d.ts.map +1 -1
  182. package/dist/label/createField.d.ts +4 -4
  183. package/dist/label/createField.d.ts.map +1 -1
  184. package/dist/label/createLabel.d.ts +7 -7
  185. package/dist/label/createLabel.d.ts.map +1 -1
  186. package/dist/label/createLabels.d.ts +1 -1
  187. package/dist/label/createLabels.d.ts.map +1 -1
  188. package/dist/label/index.d.ts +5 -5
  189. package/dist/landmark/createLandmark.d.ts +5 -5
  190. package/dist/landmark/createLandmark.d.ts.map +1 -1
  191. package/dist/landmark/index.d.ts +1 -1
  192. package/dist/link/createLink.d.ts +23 -7
  193. package/dist/link/createLink.d.ts.map +1 -1
  194. package/dist/link/index.d.ts +1 -1
  195. package/dist/listbox/createListBox.d.ts +12 -6
  196. package/dist/listbox/createListBox.d.ts.map +1 -1
  197. package/dist/listbox/createOption.d.ts +21 -4
  198. package/dist/listbox/createOption.d.ts.map +1 -1
  199. package/dist/listbox/index.d.ts +2 -2
  200. package/dist/listbox/index.d.ts.map +1 -1
  201. package/dist/live-announcer/announce.d.ts +2 -2
  202. package/dist/live-announcer/announce.d.ts.map +1 -1
  203. package/dist/live-announcer/index.d.ts +1 -1
  204. package/dist/menu/createMenu.d.ts +8 -7
  205. package/dist/menu/createMenu.d.ts.map +1 -1
  206. package/dist/menu/createMenuItem.d.ts +16 -4
  207. package/dist/menu/createMenuItem.d.ts.map +1 -1
  208. package/dist/menu/createMenuTrigger.d.ts +4 -4
  209. package/dist/menu/index.d.ts +3 -3
  210. package/dist/menu/index.d.ts.map +1 -1
  211. package/dist/meter/createMeter.d.ts +6 -6
  212. package/dist/meter/createMeter.d.ts.map +1 -1
  213. package/dist/meter/index.d.ts +1 -1
  214. package/dist/numberfield/createNumberField.d.ts +27 -8
  215. package/dist/numberfield/createNumberField.d.ts.map +1 -1
  216. package/dist/numberfield/index.d.ts +1 -1
  217. package/dist/overlays/ariaHideOutside.d.ts.map +1 -1
  218. package/dist/overlays/createModal.d.ts +19 -3
  219. package/dist/overlays/createModal.d.ts.map +1 -1
  220. package/dist/overlays/createOverlay.d.ts +1 -1
  221. package/dist/overlays/createOverlay.d.ts.map +1 -1
  222. package/dist/overlays/createOverlayTrigger.d.ts +6 -6
  223. package/dist/overlays/index.d.ts +6 -6
  224. package/dist/overlays/index.d.ts.map +1 -1
  225. package/dist/popover/calculatePosition.d.ts +4 -4
  226. package/dist/popover/calculatePosition.d.ts.map +1 -1
  227. package/dist/popover/createOverlayPosition.d.ts +3 -3
  228. package/dist/popover/createOverlayPosition.d.ts.map +1 -1
  229. package/dist/popover/createPopover.d.ts +4 -4
  230. package/dist/popover/createPopover.d.ts.map +1 -1
  231. package/dist/popover/index.d.ts +3 -3
  232. package/dist/progress/createProgressBar.d.ts +7 -5
  233. package/dist/progress/createProgressBar.d.ts.map +1 -1
  234. package/dist/progress/index.d.ts +1 -1
  235. package/dist/radio/createRadio.d.ts +7 -7
  236. package/dist/radio/createRadio.d.ts.map +1 -1
  237. package/dist/radio/createRadioGroup.d.ts +11 -11
  238. package/dist/radio/createRadioGroup.d.ts.map +1 -1
  239. package/dist/radio/createRadioGroupState.d.ts +3 -3
  240. package/dist/radio/createRadioGroupState.d.ts.map +1 -1
  241. package/dist/radio/index.d.ts +3 -3
  242. package/dist/radio/index.d.ts.map +1 -1
  243. package/dist/searchfield/createSearchField.d.ts +7 -7
  244. package/dist/searchfield/createSearchField.d.ts.map +1 -1
  245. package/dist/searchfield/index.d.ts +2 -2
  246. package/dist/select/createHiddenSelect.d.ts +4 -4
  247. package/dist/select/createHiddenSelect.d.ts.map +1 -1
  248. package/dist/select/createSelect.d.ts +14 -6
  249. package/dist/select/createSelect.d.ts.map +1 -1
  250. package/dist/select/index.d.ts +2 -2
  251. package/dist/select/index.d.ts.map +1 -1
  252. package/dist/selection/createTypeSelect.d.ts +2 -2
  253. package/dist/selection/index.d.ts +1 -1
  254. package/dist/separator/createSeparator.d.ts +9 -5
  255. package/dist/separator/createSeparator.d.ts.map +1 -1
  256. package/dist/separator/index.d.ts +1 -1
  257. package/dist/slider/createSlider.d.ts +11 -7
  258. package/dist/slider/createSlider.d.ts.map +1 -1
  259. package/dist/slider/index.d.ts +2 -2
  260. package/dist/ssr/index.d.ts +1 -1
  261. package/dist/ssr/index.d.ts.map +1 -1
  262. package/dist/steplist/createStepList.d.ts +36 -0
  263. package/dist/steplist/createStepList.d.ts.map +1 -0
  264. package/dist/steplist/index.d.ts +2 -0
  265. package/dist/steplist/index.d.ts.map +1 -0
  266. package/dist/switch/createSwitch.d.ts +6 -4
  267. package/dist/switch/createSwitch.d.ts.map +1 -1
  268. package/dist/switch/index.d.ts +1 -1
  269. package/dist/table/createTable.d.ts +3 -3
  270. package/dist/table/createTable.d.ts.map +1 -1
  271. package/dist/table/createTableCell.d.ts +3 -3
  272. package/dist/table/createTableCell.d.ts.map +1 -1
  273. package/dist/table/createTableColumnHeader.d.ts +3 -3
  274. package/dist/table/createTableColumnHeader.d.ts.map +1 -1
  275. package/dist/table/createTableColumnResize.d.ts +41 -0
  276. package/dist/table/createTableColumnResize.d.ts.map +1 -0
  277. package/dist/table/createTableHeaderRow.d.ts +3 -3
  278. package/dist/table/createTableRow.d.ts +3 -3
  279. package/dist/table/createTableRow.d.ts.map +1 -1
  280. package/dist/table/createTableRowGroup.d.ts +2 -2
  281. package/dist/table/createTableRowGroup.d.ts.map +1 -1
  282. package/dist/table/createTableSelectAllCheckbox.d.ts +3 -3
  283. package/dist/table/createTableSelectAllCheckbox.d.ts.map +1 -1
  284. package/dist/table/createTableSelectionCheckbox.d.ts +3 -3
  285. package/dist/table/index.d.ts +11 -9
  286. package/dist/table/index.d.ts.map +1 -1
  287. package/dist/table/types.d.ts +15 -7
  288. package/dist/table/types.d.ts.map +1 -1
  289. package/dist/tabs/createTabs.d.ts +28 -25
  290. package/dist/tabs/createTabs.d.ts.map +1 -1
  291. package/dist/tabs/index.d.ts +1 -1
  292. package/dist/tag/createTag.d.ts +2 -2
  293. package/dist/tag/createTag.d.ts.map +1 -1
  294. package/dist/tag/createTagGroup.d.ts +5 -5
  295. package/dist/tag/createTagGroup.d.ts.map +1 -1
  296. package/dist/tag/index.d.ts +2 -2
  297. package/dist/tag/index.d.ts.map +1 -1
  298. package/dist/textfield/createTextField.d.ts +17 -11
  299. package/dist/textfield/createTextField.d.ts.map +1 -1
  300. package/dist/textfield/index.d.ts +1 -1
  301. package/dist/textfield/index.d.ts.map +1 -1
  302. package/dist/toast/createToast.d.ts +6 -2
  303. package/dist/toast/createToast.d.ts.map +1 -1
  304. package/dist/toast/createToastRegion.d.ts +5 -3
  305. package/dist/toast/createToastRegion.d.ts.map +1 -1
  306. package/dist/toast/index.d.ts +2 -2
  307. package/dist/toast/index.d.ts.map +1 -1
  308. package/dist/toggle/createToggle.d.ts +9 -9
  309. package/dist/toggle/createToggle.d.ts.map +1 -1
  310. package/dist/toggle/createToggleState.d.ts +2 -2
  311. package/dist/toggle/createToggleState.d.ts.map +1 -1
  312. package/dist/toggle/index.d.ts +4 -4
  313. package/dist/toggle/index.d.ts.map +1 -1
  314. package/dist/toolbar/createToolbar.d.ts +9 -9
  315. package/dist/toolbar/createToolbar.d.ts.map +1 -1
  316. package/dist/toolbar/index.d.ts +1 -1
  317. package/dist/toolbar/index.d.ts.map +1 -1
  318. package/dist/tooltip/createTooltip.d.ts +5 -5
  319. package/dist/tooltip/createTooltip.d.ts.map +1 -1
  320. package/dist/tooltip/createTooltipTrigger.d.ts +10 -5
  321. package/dist/tooltip/createTooltipTrigger.d.ts.map +1 -1
  322. package/dist/tooltip/index.d.ts +2 -2
  323. package/dist/tree/createTree.d.ts +3 -3
  324. package/dist/tree/createTree.d.ts.map +1 -1
  325. package/dist/tree/createTreeItem.d.ts +4 -4
  326. package/dist/tree/createTreeItem.d.ts.map +1 -1
  327. package/dist/tree/createTreeSelectionCheckbox.d.ts +3 -3
  328. package/dist/tree/createTreeSelectionCheckbox.d.ts.map +1 -1
  329. package/dist/tree/index.d.ts +4 -4
  330. package/dist/tree/types.d.ts +13 -5
  331. package/dist/tree/types.d.ts.map +1 -1
  332. package/dist/utils/createDescription.d.ts +2 -2
  333. package/dist/utils/createDescription.d.ts.map +1 -1
  334. package/dist/utils/dom.d.ts.map +1 -1
  335. package/dist/utils/env.d.ts +1 -1
  336. package/dist/utils/env.d.ts.map +1 -1
  337. package/dist/utils/focus.d.ts +1 -1
  338. package/dist/utils/focus.d.ts.map +1 -1
  339. package/dist/utils/geometry.d.ts.map +1 -1
  340. package/dist/utils/index.d.ts +12 -12
  341. package/dist/utils/index.d.ts.map +1 -1
  342. package/dist/utils/mergeProps.d.ts.map +1 -1
  343. package/dist/utils/platform.d.ts.map +1 -1
  344. package/dist/utils/reactivity.d.ts +1 -1
  345. package/dist/visually-hidden/createVisuallyHidden.d.ts +2 -2
  346. package/dist/visually-hidden/createVisuallyHidden.d.ts.map +1 -1
  347. package/dist/visually-hidden/index.d.ts +1 -1
  348. package/package.json +34 -32
  349. package/src/actiongroup/createActionGroup.ts +334 -0
  350. package/src/actiongroup/index.ts +8 -0
  351. package/src/autocomplete/createAutocomplete.ts +137 -131
  352. package/src/autocomplete/index.ts +1 -1
  353. package/src/breadcrumbs/createBreadcrumbs.ts +37 -51
  354. package/src/breadcrumbs/index.ts +1 -1
  355. package/src/button/createButton.ts +102 -73
  356. package/src/button/createToggleButton.ts +10 -10
  357. package/src/button/createToggleButtonGroup.ts +121 -0
  358. package/src/button/index.ts +10 -4
  359. package/src/button/types.ts +18 -12
  360. package/src/calendar/createCalendar.ts +62 -29
  361. package/src/calendar/createCalendarCell.ts +102 -48
  362. package/src/calendar/createCalendarGrid.ts +78 -47
  363. package/src/calendar/createRangeCalendar.ts +66 -31
  364. package/src/calendar/createRangeCalendarCell.ts +115 -37
  365. package/src/calendar/index.ts +5 -9
  366. package/src/calendar/intl/index.ts +210 -0
  367. package/src/calendar/utils.ts +227 -0
  368. package/src/checkbox/createCheckbox.ts +13 -21
  369. package/src/checkbox/createCheckboxGroup.ts +86 -45
  370. package/src/checkbox/createCheckboxGroupItem.ts +16 -27
  371. package/src/checkbox/createCheckboxGroupState.ts +3 -22
  372. package/src/checkbox/index.ts +8 -10
  373. package/src/collections/index.ts +246 -0
  374. package/src/color/createColorArea.ts +458 -314
  375. package/src/color/createColorField.ts +186 -137
  376. package/src/color/createColorSlider.ts +444 -197
  377. package/src/color/createColorSwatch.ts +65 -40
  378. package/src/color/createColorWheel.ts +343 -208
  379. package/src/color/index.ts +24 -24
  380. package/src/color/types.ts +198 -116
  381. package/src/combobox/createComboBox.ts +727 -647
  382. package/src/combobox/index.ts +6 -6
  383. package/src/combobox/intl/index.ts +5 -5
  384. package/src/datepicker/createDateField.ts +192 -39
  385. package/src/datepicker/createDatePicker.ts +294 -63
  386. package/src/datepicker/createDatePickerGroup.ts +149 -0
  387. package/src/datepicker/createDateRangePicker.ts +294 -0
  388. package/src/datepicker/createDateSegment.ts +316 -75
  389. package/src/datepicker/createTimeField.ts +38 -34
  390. package/src/datepicker/createTimeSegment.ts +352 -0
  391. package/src/datepicker/index.ts +24 -11
  392. package/src/dialog/createDialog.ts +127 -120
  393. package/src/dialog/index.ts +2 -2
  394. package/src/dialog/types.ts +19 -19
  395. package/src/disclosure/createDisclosure.ts +138 -33
  396. package/src/disclosure/createDisclosureGroup.ts +8 -18
  397. package/src/disclosure/index.ts +2 -2
  398. package/src/dnd/createDrag.ts +218 -209
  399. package/src/dnd/createDraggableCollection.ts +96 -63
  400. package/src/dnd/createDraggableItem.ts +260 -243
  401. package/src/dnd/createDrop.ts +313 -321
  402. package/src/dnd/createDroppableCollection.ts +799 -293
  403. package/src/dnd/createDroppableItem.ts +215 -213
  404. package/src/dnd/index.ts +66 -47
  405. package/src/dnd/types.ts +86 -89
  406. package/src/dnd/utils.ts +281 -294
  407. package/src/focus/FocusScope.tsx +155 -164
  408. package/src/focus/createAutoFocus.ts +305 -321
  409. package/src/focus/createFocusRestore.ts +300 -313
  410. package/src/focus/createVirtualFocus.ts +380 -396
  411. package/src/focus/index.ts +4 -8
  412. package/src/form/createFormReset.ts +4 -4
  413. package/src/form/createFormValidation.ts +201 -224
  414. package/src/form/index.ts +8 -11
  415. package/src/grid/GridKeyboardDelegate.ts +30 -30
  416. package/src/grid/createGrid.ts +38 -36
  417. package/src/grid/createGridCell.ts +18 -18
  418. package/src/grid/createGridRow.ts +14 -14
  419. package/src/grid/index.ts +5 -5
  420. package/src/grid/types.ts +8 -8
  421. package/src/gridlist/createGridList.ts +45 -24
  422. package/src/gridlist/createGridListItem.ts +68 -23
  423. package/src/gridlist/createGridListSelectionCheckbox.ts +12 -9
  424. package/src/gridlist/index.ts +4 -4
  425. package/src/gridlist/types.ts +11 -7
  426. package/src/i18n/createCollator.ts +66 -79
  427. package/src/i18n/createDateFormatter.ts +75 -83
  428. package/src/i18n/createFilter.ts +118 -131
  429. package/src/i18n/createNumberFormatter.ts +50 -52
  430. package/src/i18n/createStringFormatter.ts +19 -15
  431. package/src/i18n/index.ts +37 -40
  432. package/src/i18n/locale.tsx +163 -188
  433. package/src/i18n/utils.ts +95 -99
  434. package/src/index.ts +114 -164
  435. package/src/interactions/FocusableProvider.tsx +3 -7
  436. package/src/interactions/PressEvent.ts +4 -4
  437. package/src/interactions/createFocus.ts +16 -11
  438. package/src/interactions/createFocusRing.ts +21 -19
  439. package/src/interactions/createFocusWithin.ts +24 -16
  440. package/src/interactions/createFocusable.ts +15 -16
  441. package/src/interactions/createHover.ts +70 -55
  442. package/src/interactions/createInteractionModality.ts +75 -82
  443. package/src/interactions/createKeyboard.ts +2 -2
  444. package/src/interactions/createLongPress.ts +174 -174
  445. package/src/interactions/createMove.ts +299 -289
  446. package/src/interactions/createPress.ts +168 -91
  447. package/src/interactions/index.ts +24 -16
  448. package/src/label/createField.ts +18 -19
  449. package/src/label/createLabel.ts +18 -30
  450. package/src/label/createLabels.ts +8 -12
  451. package/src/label/index.ts +5 -5
  452. package/src/landmark/createLandmark.ts +356 -377
  453. package/src/landmark/index.ts +8 -8
  454. package/src/link/createLink.ts +96 -54
  455. package/src/link/index.ts +1 -1
  456. package/src/listbox/createListBox.ts +319 -269
  457. package/src/listbox/createOption.ts +208 -151
  458. package/src/listbox/index.ts +8 -12
  459. package/src/live-announcer/announce.ts +295 -322
  460. package/src/live-announcer/index.ts +9 -9
  461. package/src/menu/createMenu.ts +434 -396
  462. package/src/menu/createMenuItem.ts +201 -149
  463. package/src/menu/createMenuTrigger.ts +88 -88
  464. package/src/menu/index.ts +9 -18
  465. package/src/meter/createMeter.ts +7 -20
  466. package/src/meter/index.ts +1 -1
  467. package/src/numberfield/createNumberField.ts +368 -268
  468. package/src/numberfield/index.ts +5 -5
  469. package/src/overlays/ariaHideOutside.ts +223 -219
  470. package/src/overlays/createInteractOutside.ts +152 -149
  471. package/src/overlays/createModal.tsx +238 -202
  472. package/src/overlays/createOverlay.ts +195 -155
  473. package/src/overlays/createOverlayTrigger.ts +85 -85
  474. package/src/overlays/createPreventScroll.ts +288 -266
  475. package/src/overlays/index.ts +37 -44
  476. package/src/popover/calculatePosition.ts +117 -119
  477. package/src/popover/createOverlayPosition.ts +52 -43
  478. package/src/popover/createPopover.ts +63 -24
  479. package/src/popover/index.ts +3 -3
  480. package/src/progress/createProgressBar.ts +36 -32
  481. package/src/progress/index.ts +1 -1
  482. package/src/radio/createRadio.ts +95 -73
  483. package/src/radio/createRadioGroup.ts +142 -62
  484. package/src/radio/createRadioGroupState.ts +7 -31
  485. package/src/radio/index.ts +3 -8
  486. package/src/searchfield/createSearchField.ts +269 -186
  487. package/src/searchfield/index.ts +2 -2
  488. package/src/select/createHiddenSelect.tsx +276 -236
  489. package/src/select/createSelect.ts +430 -395
  490. package/src/select/index.ts +9 -14
  491. package/src/selection/createTypeSelect.ts +11 -11
  492. package/src/selection/index.ts +1 -1
  493. package/src/separator/createSeparator.ts +20 -25
  494. package/src/separator/index.ts +1 -1
  495. package/src/slider/createSlider.ts +333 -349
  496. package/src/slider/index.ts +2 -2
  497. package/src/ssr/index.tsx +331 -370
  498. package/src/steplist/createStepList.ts +106 -0
  499. package/src/steplist/index.ts +8 -0
  500. package/src/switch/createSwitch.ts +9 -14
  501. package/src/switch/index.ts +1 -1
  502. package/src/table/createTable.ts +155 -86
  503. package/src/table/createTableCell.ts +17 -16
  504. package/src/table/createTableColumnHeader.ts +67 -20
  505. package/src/table/createTableColumnResize.ts +256 -0
  506. package/src/table/createTableHeaderRow.ts +7 -7
  507. package/src/table/createTableRow.ts +149 -29
  508. package/src/table/createTableRowGroup.ts +5 -7
  509. package/src/table/createTableSelectAllCheckbox.ts +12 -11
  510. package/src/table/createTableSelectionCheckbox.ts +8 -8
  511. package/src/table/index.ts +14 -9
  512. package/src/table/types.ts +15 -7
  513. package/src/tabs/createTabs.ts +138 -127
  514. package/src/tabs/index.ts +1 -1
  515. package/src/tag/createTag.ts +171 -40
  516. package/src/tag/createTagGroup.ts +50 -39
  517. package/src/tag/index.ts +2 -6
  518. package/src/textfield/createTextField.ts +67 -35
  519. package/src/textfield/index.ts +1 -5
  520. package/src/toast/createToast.ts +34 -26
  521. package/src/toast/createToastRegion.ts +169 -27
  522. package/src/toast/index.ts +2 -6
  523. package/src/toggle/createToggle.ts +95 -53
  524. package/src/toggle/createToggleState.ts +2 -10
  525. package/src/toggle/index.ts +4 -5
  526. package/src/toolbar/createToolbar.ts +226 -169
  527. package/src/toolbar/index.ts +1 -1
  528. package/src/tooltip/createTooltip.ts +66 -79
  529. package/src/tooltip/createTooltipTrigger.ts +238 -222
  530. package/src/tooltip/index.ts +6 -6
  531. package/src/tree/createTree.ts +259 -246
  532. package/src/tree/createTreeItem.ts +282 -233
  533. package/src/tree/createTreeSelectionCheckbox.ts +71 -68
  534. package/src/tree/index.ts +16 -16
  535. package/src/tree/types.ts +95 -87
  536. package/src/utils/createDescription.ts +6 -23
  537. package/src/utils/dom.ts +61 -54
  538. package/src/utils/env.ts +53 -54
  539. package/src/utils/events.ts +7 -7
  540. package/src/utils/filterDOMProps.ts +49 -49
  541. package/src/utils/focus.ts +60 -68
  542. package/src/utils/geometry.ts +1 -4
  543. package/src/utils/globalListeners.ts +9 -9
  544. package/src/utils/index.ts +12 -22
  545. package/src/utils/mergeProps.ts +42 -15
  546. package/src/utils/platform.ts +16 -6
  547. package/src/utils/reactivity.ts +3 -3
  548. package/src/utils/textSelection.ts +16 -16
  549. package/src/visually-hidden/createVisuallyHidden.ts +127 -124
  550. package/src/visually-hidden/index.ts +6 -6
  551. package/dist/i18n/NumberFormatter.d.ts +0 -43
  552. package/dist/i18n/NumberFormatter.d.ts.map +0 -1
  553. package/dist/index.ssr.js +0 -15875
  554. package/dist/index.ssr.js.map +0 -7
  555. package/src/i18n/NumberFormatter.ts +0 -266
@@ -1,188 +1,163 @@
1
- /**
2
- * Locale context and provider for solidaria
3
- *
4
- * Provides locale and text direction to the component tree.
5
- *
6
- * Port of @react-aria/i18n context and useDefaultLocale.
7
- */
8
-
9
- import {
10
- type Accessor,
11
- type JSX,
12
- type ParentProps,
13
- createContext,
14
- createEffect,
15
- createMemo,
16
- createSignal,
17
- onCleanup,
18
- useContext,
19
- } from 'solid-js';
20
- import { isRTL } from './utils';
21
-
22
- // ============================================
23
- // TYPES
24
- // ============================================
25
-
26
- /** Text direction: left-to-right or right-to-left. */
27
- export type Direction = 'ltr' | 'rtl';
28
-
29
- /** Locale information including language code and text direction. */
30
- export interface Locale {
31
- /** The BCP47 language code for the locale (e.g., 'en-US', 'ar-SA'). */
32
- locale: string;
33
- /** The writing direction for the locale. */
34
- direction: Direction;
35
- }
36
-
37
- export interface I18nProviderProps extends ParentProps {
38
- /** The locale to apply to the children. If not provided, uses browser default. */
39
- locale?: string;
40
- }
41
-
42
- // ============================================
43
- // GLOBAL STATE
44
- // ============================================
45
-
46
- // Symbol for server-provided locale
47
- const localeSymbol = Symbol.for('solidaria.i18n.locale');
48
-
49
- let currentLocale: Locale | null = null;
50
- const listeners = new Set<(locale: Locale) => void>();
51
-
52
- /**
53
- * Gets the default locale from the browser/system.
54
- */
55
- export function getDefaultLocale(): Locale {
56
- let locale =
57
- (typeof window !== 'undefined' &&
58
- (window as unknown as Record<symbol, string>)[localeSymbol]) ||
59
- (typeof navigator !== 'undefined' &&
60
- (navigator.language ||
61
- (navigator as unknown as { userLanguage?: string }).userLanguage)) ||
62
- 'en-US';
63
-
64
- // Validate the locale is supported
65
- try {
66
- Intl.DateTimeFormat.supportedLocalesOf([locale]);
67
- } catch {
68
- locale = 'en-US';
69
- }
70
-
71
- return {
72
- locale,
73
- direction: isRTL(locale) ? 'rtl' : 'ltr',
74
- };
75
- }
76
-
77
- function updateLocale(): void {
78
- currentLocale = getDefaultLocale();
79
- for (const listener of listeners) {
80
- listener(currentLocale);
81
- }
82
- }
83
-
84
- // ============================================
85
- // CONTEXT
86
- // ============================================
87
-
88
- const I18nContext = createContext<Accessor<Locale> | null>(null);
89
-
90
- // ============================================
91
- // HOOKS
92
- // ============================================
93
-
94
- /**
95
- * Returns the current browser/system locale, and updates when it changes.
96
- *
97
- * @example
98
- * ```tsx
99
- * const locale = createDefaultLocale();
100
- * console.log(locale().locale); // 'en-US'
101
- * console.log(locale().direction); // 'ltr'
102
- * ```
103
- */
104
- export function createDefaultLocale(): Accessor<Locale> {
105
- if (!currentLocale) {
106
- currentLocale = getDefaultLocale();
107
- }
108
-
109
- const [locale, setLocale] = createSignal<Locale>(currentLocale);
110
-
111
- createEffect(() => {
112
- if (typeof window === 'undefined') {
113
- return;
114
- }
115
-
116
- if (listeners.size === 0) {
117
- window.addEventListener('languagechange', updateLocale);
118
- }
119
-
120
- listeners.add(setLocale);
121
-
122
- onCleanup(() => {
123
- listeners.delete(setLocale);
124
- if (listeners.size === 0) {
125
- window.removeEventListener('languagechange', updateLocale);
126
- }
127
- });
128
- });
129
-
130
- return locale;
131
- }
132
-
133
- /**
134
- * Returns the current locale and layout direction from context or browser default.
135
- *
136
- * @example
137
- * ```tsx
138
- * function MyComponent() {
139
- * const locale = useLocale();
140
- * return <div dir={locale().direction}>{locale().locale}</div>;
141
- * }
142
- * ```
143
- */
144
- export function useLocale(): Accessor<Locale> {
145
- const context = useContext(I18nContext);
146
- const defaultLocale = createDefaultLocale();
147
- return context || defaultLocale;
148
- }
149
-
150
- // ============================================
151
- // PROVIDER
152
- // ============================================
153
-
154
- /**
155
- * Provides the locale for the application to all child components.
156
- *
157
- * @example
158
- * ```tsx
159
- * // Use browser default locale
160
- * <I18nProvider>
161
- * <App />
162
- * </I18nProvider>
163
- *
164
- * // Override with specific locale
165
- * <I18nProvider locale="ar-SA">
166
- * <App /> // Will have RTL direction
167
- * </I18nProvider>
168
- * ```
169
- */
170
- export function I18nProvider(props: I18nProviderProps): JSX.Element {
171
- const defaultLocale = createDefaultLocale();
172
-
173
- const locale = createMemo<Locale>(() => {
174
- if (props.locale) {
175
- return {
176
- locale: props.locale,
177
- direction: isRTL(props.locale) ? 'rtl' : 'ltr',
178
- };
179
- }
180
- return defaultLocale();
181
- });
182
-
183
- return (
184
- <I18nContext.Provider value={locale}>
185
- {props.children}
186
- </I18nContext.Provider>
187
- );
188
- }
1
+ /**
2
+ * Locale context and provider for solidaria
3
+ *
4
+ * Provides locale and text direction to the component tree.
5
+ *
6
+ * Port of @react-aria/i18n context and useDefaultLocale.
7
+ */
8
+
9
+ import {
10
+ type Accessor,
11
+ type JSX,
12
+ type ParentProps,
13
+ createContext,
14
+ createEffect,
15
+ createMemo,
16
+ createSignal,
17
+ onCleanup,
18
+ useContext,
19
+ } from "solid-js";
20
+ import { isRTL } from "./utils";
21
+
22
+ /** Text direction: left-to-right or right-to-left. */
23
+ export type Direction = "ltr" | "rtl";
24
+
25
+ /** Locale information including language code and text direction. */
26
+ export interface Locale {
27
+ /** The BCP47 language code for the locale (e.g., 'en-US', 'ar-SA'). */
28
+ locale: string;
29
+ /** The writing direction for the locale. */
30
+ direction: Direction;
31
+ }
32
+
33
+ export interface I18nProviderProps extends ParentProps {
34
+ /** The locale to apply to the children. If not provided, uses browser default. */
35
+ locale?: string;
36
+ }
37
+
38
+ // Symbol for server-provided locale
39
+ const localeSymbol = Symbol.for("solidaria.i18n.locale");
40
+
41
+ let currentLocale: Locale | null = null;
42
+ const listeners = new Set<(locale: Locale) => void>();
43
+
44
+ /**
45
+ * Gets the default locale from the browser/system.
46
+ */
47
+ export function getDefaultLocale(): Locale {
48
+ let locale =
49
+ (typeof window !== "undefined" &&
50
+ (window as unknown as Record<symbol, string>)[localeSymbol]) ||
51
+ (typeof navigator !== "undefined" &&
52
+ (navigator.language || (navigator as unknown as { userLanguage?: string }).userLanguage)) ||
53
+ "en-US";
54
+
55
+ // Validate the locale is supported
56
+ try {
57
+ Intl.DateTimeFormat.supportedLocalesOf([locale]);
58
+ } catch {
59
+ locale = "en-US";
60
+ }
61
+
62
+ return {
63
+ locale,
64
+ direction: isRTL(locale) ? "rtl" : "ltr",
65
+ };
66
+ }
67
+
68
+ function updateLocale(): void {
69
+ currentLocale = getDefaultLocale();
70
+ for (const listener of listeners) {
71
+ listener(currentLocale);
72
+ }
73
+ }
74
+
75
+ const I18nContext = createContext<Accessor<Locale> | null>(null);
76
+
77
+ /**
78
+ * Returns the current browser/system locale, and updates when it changes.
79
+ *
80
+ * @example
81
+ * ```tsx
82
+ * const locale = createDefaultLocale();
83
+ * console.log(locale().locale); // 'en-US'
84
+ * console.log(locale().direction); // 'ltr'
85
+ * ```
86
+ */
87
+ export function createDefaultLocale(): Accessor<Locale> {
88
+ if (!currentLocale) {
89
+ currentLocale = getDefaultLocale();
90
+ }
91
+
92
+ const [locale, setLocale] = createSignal<Locale>(currentLocale);
93
+
94
+ createEffect(() => {
95
+ if (typeof window === "undefined") {
96
+ return;
97
+ }
98
+
99
+ if (listeners.size === 0) {
100
+ window.addEventListener("languagechange", updateLocale);
101
+ }
102
+
103
+ listeners.add(setLocale);
104
+
105
+ onCleanup(() => {
106
+ listeners.delete(setLocale);
107
+ if (listeners.size === 0) {
108
+ window.removeEventListener("languagechange", updateLocale);
109
+ }
110
+ });
111
+ });
112
+
113
+ return locale;
114
+ }
115
+
116
+ /**
117
+ * Returns the current locale and layout direction from context or browser default.
118
+ *
119
+ * @example
120
+ * ```tsx
121
+ * function MyComponent() {
122
+ * const locale = useLocale();
123
+ * return <div dir={locale().direction}>{locale().locale}</div>;
124
+ * }
125
+ * ```
126
+ */
127
+ export function useLocale(): Accessor<Locale> {
128
+ const context = useContext(I18nContext);
129
+ const defaultLocale = createDefaultLocale();
130
+ return context || defaultLocale;
131
+ }
132
+
133
+ /**
134
+ * Provides the locale for the application to all child components.
135
+ *
136
+ * @example
137
+ * ```tsx
138
+ * // Use browser default locale
139
+ * <I18nProvider>
140
+ * <App />
141
+ * </I18nProvider>
142
+ *
143
+ * // Override with specific locale
144
+ * <I18nProvider locale="ar-SA">
145
+ * <App /> // Will have RTL direction
146
+ * </I18nProvider>
147
+ * ```
148
+ */
149
+ export function I18nProvider(props: I18nProviderProps): JSX.Element {
150
+ const defaultLocale = createDefaultLocale();
151
+
152
+ const locale = createMemo<Locale>(() => {
153
+ if (props.locale) {
154
+ return {
155
+ locale: props.locale,
156
+ direction: isRTL(props.locale) ? "rtl" : "ltr",
157
+ };
158
+ }
159
+ return defaultLocale();
160
+ });
161
+
162
+ return <I18nContext.Provider value={locale}>{props.children}</I18nContext.Provider>;
163
+ }
package/src/i18n/utils.ts CHANGED
@@ -1,99 +1,95 @@
1
- /**
2
- * i18n utilities for solidaria
3
- *
4
- * RTL detection and locale utilities.
5
- *
6
- * Port of @react-aria/i18n utils.
7
- */
8
-
9
- // https://en.wikipedia.org/wiki/Right-to-left
10
- const RTL_SCRIPTS = new Set([
11
- 'Arab',
12
- 'Syrc',
13
- 'Samr',
14
- 'Mand',
15
- 'Thaa',
16
- 'Mend',
17
- 'Nkoo',
18
- 'Adlm',
19
- 'Rohg',
20
- 'Hebr',
21
- ]);
22
-
23
- const RTL_LANGS = new Set([
24
- 'ae',
25
- 'ar',
26
- 'arc',
27
- 'bcc',
28
- 'bqi',
29
- 'ckb',
30
- 'dv',
31
- 'fa',
32
- 'glk',
33
- 'he',
34
- 'ku',
35
- 'mzn',
36
- 'nqo',
37
- 'pnb',
38
- 'ps',
39
- 'sd',
40
- 'ug',
41
- 'ur',
42
- 'yi',
43
- ]);
44
-
45
- /**
46
- * Determines if a locale is read right to left.
47
- * Uses Intl.Locale API when available for accurate detection.
48
- */
49
- export function isRTL(localeString: string): boolean {
50
- // If the Intl.Locale API is available, use it to get the locale's text direction.
51
- if (typeof Intl !== 'undefined' && Intl.Locale) {
52
- try {
53
- const locale = new Intl.Locale(localeString).maximize();
54
-
55
- // Use the text info object to get the direction if possible.
56
- // getTextInfo() was implemented as a property by some browsers before it was standardized as a function.
57
- const localeAny = locale as unknown as {
58
- getTextInfo?: () => { direction: string };
59
- textInfo?: { direction: string };
60
- };
61
- const textInfo = typeof localeAny.getTextInfo === 'function'
62
- ? localeAny.getTextInfo()
63
- : localeAny.textInfo;
64
-
65
- if (textInfo) {
66
- return textInfo.direction === 'rtl';
67
- }
68
-
69
- // Fallback: guess using the script.
70
- if (locale.script) {
71
- return RTL_SCRIPTS.has(locale.script);
72
- }
73
- } catch {
74
- // Fall through to language-based detection
75
- }
76
- }
77
-
78
- // If not, just guess by the language (first part of the locale)
79
- const lang = localeString.split('-')[0];
80
- return RTL_LANGS.has(lang);
81
- }
82
-
83
- /**
84
- * Creates a cache key for formatter options.
85
- */
86
- export function createCacheKey(
87
- locale: string,
88
- options?: Record<string, unknown>
89
- ): string {
90
- if (!options) {
91
- return locale;
92
- }
93
- return (
94
- locale +
95
- Object.entries(options)
96
- .sort((a, b) => (a[0] < b[0] ? -1 : 1))
97
- .join()
98
- );
99
- }
1
+ /**
2
+ * i18n utilities for solidaria
3
+ *
4
+ * RTL detection and locale utilities.
5
+ *
6
+ * Port of @react-aria/i18n utils.
7
+ */
8
+
9
+ // https://en.wikipedia.org/wiki/Right-to-left
10
+ const RTL_SCRIPTS = new Set([
11
+ "Arab",
12
+ "Syrc",
13
+ "Samr",
14
+ "Mand",
15
+ "Thaa",
16
+ "Mend",
17
+ "Nkoo",
18
+ "Adlm",
19
+ "Rohg",
20
+ "Hebr",
21
+ ]);
22
+
23
+ const RTL_LANGS = new Set([
24
+ "ae",
25
+ "ar",
26
+ "arc",
27
+ "bcc",
28
+ "bqi",
29
+ "ckb",
30
+ "dv",
31
+ "fa",
32
+ "glk",
33
+ "he",
34
+ "ku",
35
+ "mzn",
36
+ "nqo",
37
+ "pnb",
38
+ "ps",
39
+ "sd",
40
+ "ug",
41
+ "ur",
42
+ "yi",
43
+ ]);
44
+
45
+ /**
46
+ * Determines if a locale is read right to left.
47
+ * Uses Intl.Locale API when available for accurate detection.
48
+ */
49
+ export function isRTL(localeString: string): boolean {
50
+ // If the Intl.Locale API is available, use it to get the locale's text direction.
51
+ if (typeof Intl !== "undefined" && Intl.Locale) {
52
+ try {
53
+ const locale = new Intl.Locale(localeString).maximize();
54
+
55
+ // Use the text info object to get the direction if possible.
56
+ // getTextInfo() was implemented as a property by some browsers before it was standardized as a function.
57
+ const localeAny = locale as unknown as {
58
+ getTextInfo?: () => { direction: string };
59
+ textInfo?: { direction: string };
60
+ };
61
+ const textInfo =
62
+ typeof localeAny.getTextInfo === "function" ? localeAny.getTextInfo() : localeAny.textInfo;
63
+
64
+ if (textInfo) {
65
+ return textInfo.direction === "rtl";
66
+ }
67
+
68
+ // Fallback: guess using the script.
69
+ if (locale.script) {
70
+ return RTL_SCRIPTS.has(locale.script);
71
+ }
72
+ } catch {
73
+ // Fall through to language-based detection
74
+ }
75
+ }
76
+
77
+ // If not, just guess by the language (first part of the locale)
78
+ const lang = localeString.split("-")[0];
79
+ return RTL_LANGS.has(lang);
80
+ }
81
+
82
+ /**
83
+ * Creates a cache key for formatter options.
84
+ */
85
+ export function createCacheKey(locale: string, options?: Record<string, unknown>): string {
86
+ if (!options) {
87
+ return locale;
88
+ }
89
+ return (
90
+ locale +
91
+ Object.entries(options)
92
+ .sort((a, b) => (a[0] < b[0] ? -1 : 1))
93
+ .join()
94
+ );
95
+ }