@astryxdesign/core 0.1.9 → 0.2.0-canary.0f56f82

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 (565) hide show
  1. package/CHANGELOG.md +107 -0
  2. package/dist/Avatar/Avatar.d.ts +42 -3
  3. package/dist/Avatar/Avatar.d.ts.map +1 -1
  4. package/dist/Avatar/Avatar.js +190 -59
  5. package/dist/Avatar/AvatarStatusDot.d.ts +6 -4
  6. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  7. package/dist/AvatarGroup/AvatarGroup.d.ts +7 -1
  8. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  9. package/dist/AvatarGroup/AvatarGroup.js +58 -6
  10. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts +1 -1
  11. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  12. package/dist/AvatarGroup/AvatarGroupOverflow.js +7 -2
  13. package/dist/Banner/Banner.js +2 -2
  14. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  15. package/dist/Breadcrumbs/BreadcrumbItem.js +11 -4
  16. package/dist/Breadcrumbs/index.d.ts +1 -0
  17. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  18. package/dist/Breadcrumbs/index.js +2 -1
  19. package/dist/Button/Button.d.ts +1 -1
  20. package/dist/Button/Button.d.ts.map +1 -1
  21. package/dist/Button/Button.js +6 -4
  22. package/dist/Calendar/Calendar.d.ts.map +1 -1
  23. package/dist/Calendar/Calendar.js +50 -9
  24. package/dist/Calendar/dayCellUtils.d.ts +4 -4
  25. package/dist/Calendar/dayCellUtils.js +2 -2
  26. package/dist/Calendar/styles.d.ts +30 -31
  27. package/dist/Calendar/styles.d.ts.map +1 -1
  28. package/dist/Calendar/styles.js +30 -31
  29. package/dist/Card/Card.js +1 -1
  30. package/dist/Carousel/Carousel.d.ts.map +1 -1
  31. package/dist/Carousel/Carousel.js +22 -12
  32. package/dist/Chat/ChatComposerInput.js +1 -1
  33. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  34. package/dist/Chat/ChatDictationButton.js +3 -1
  35. package/dist/Chat/ChatLayout.js +4 -4
  36. package/dist/Chat/ChatMessageBubble.d.ts.map +1 -1
  37. package/dist/Chat/ChatMessageBubble.js +8 -8
  38. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  39. package/dist/Chat/ChatToolCalls.js +10 -3
  40. package/dist/Chat/useTriggerMenu.js +2 -2
  41. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  42. package/dist/CheckboxInput/CheckboxInput.js +6 -6
  43. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  44. package/dist/CheckboxList/CheckboxListItem.js +19 -4
  45. package/dist/Citation/Citation.d.ts +22 -1
  46. package/dist/Citation/Citation.d.ts.map +1 -1
  47. package/dist/Citation/Citation.js +20 -6
  48. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  49. package/dist/CodeBlock/CodeBlock.js +16 -10
  50. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  51. package/dist/Collapsible/Collapsible.js +3 -1
  52. package/dist/CommandPalette/CommandPalette.d.ts +1 -1
  53. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  54. package/dist/CommandPalette/CommandPalette.js +42 -3
  55. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  56. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  57. package/dist/ContextMenu/ContextMenu.js +23 -5
  58. package/dist/ContextMenu/index.d.ts +1 -0
  59. package/dist/ContextMenu/index.d.ts.map +1 -1
  60. package/dist/ContextMenu/index.js +3 -1
  61. package/dist/DateInput/DateInput.d.ts +10 -2
  62. package/dist/DateInput/DateInput.d.ts.map +1 -1
  63. package/dist/DateInput/DateInput.js +33 -19
  64. package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
  65. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  66. package/dist/DateRangeInput/DateRangeInput.js +23 -20
  67. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  68. package/dist/DateTimeInput/DateTimeInput.js +23 -18
  69. package/dist/Divider/Divider.d.ts +2 -2
  70. package/dist/Divider/Divider.d.ts.map +1 -1
  71. package/dist/Divider/Divider.js +13 -0
  72. package/dist/DropdownMenu/DropdownMenu.d.ts +6 -0
  73. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  74. package/dist/DropdownMenu/DropdownMenu.js +22 -5
  75. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  76. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +4 -1
  77. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  78. package/dist/DropdownMenu/DropdownMenuItem.js +5 -2
  79. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +8 -11
  80. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  81. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +3 -1
  82. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +1 -1
  83. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  84. package/dist/DropdownMenu/DropdownMenuRadioItem.js +5 -2
  85. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
  86. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
  87. package/dist/DropdownMenu/DropdownMenuSubMenu.js +427 -0
  88. package/dist/DropdownMenu/index.d.ts +10 -0
  89. package/dist/DropdownMenu/index.d.ts.map +1 -1
  90. package/dist/DropdownMenu/index.js +13 -0
  91. package/dist/DropdownMenu/menuItemHover.d.ts +23 -0
  92. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
  93. package/dist/DropdownMenu/menuItemHover.js +33 -0
  94. package/dist/DropdownMenu/menuItemRoles.d.ts +8 -0
  95. package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -1
  96. package/dist/DropdownMenu/menuItemRoles.js +10 -1
  97. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  98. package/dist/DropdownMenu/renderDropdownItems.js +21 -6
  99. package/dist/Field/Field.d.ts +3 -1
  100. package/dist/Field/Field.d.ts.map +1 -1
  101. package/dist/Field/Field.js +4 -1
  102. package/dist/Field/FieldLabel.d.ts +2 -1
  103. package/dist/Field/FieldLabel.d.ts.map +1 -1
  104. package/dist/Field/FieldLabel.js +9 -5
  105. package/dist/Field/inputStyles.stylex.d.ts +1 -0
  106. package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
  107. package/dist/Field/inputStyles.stylex.js +1 -0
  108. package/dist/FieldStatus/FieldStatus.d.ts +10 -0
  109. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  110. package/dist/FieldStatus/FieldStatus.js +51 -5
  111. package/dist/FileInput/FileInput.d.ts +10 -2
  112. package/dist/FileInput/FileInput.d.ts.map +1 -1
  113. package/dist/FileInput/FileInput.js +93 -65
  114. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  115. package/dist/HoverCard/useHoverCard.js +10 -4
  116. package/dist/Icon/Icon.d.ts +15 -1
  117. package/dist/Icon/Icon.d.ts.map +1 -1
  118. package/dist/Icon/Icon.js +19 -3
  119. package/dist/Item/Item.d.ts +16 -3
  120. package/dist/Item/Item.d.ts.map +1 -1
  121. package/dist/Item/Item.js +31 -6
  122. package/dist/Layer/layerAnimations.stylex.d.ts.map +1 -1
  123. package/dist/Layer/layerAnimations.stylex.js +10 -2
  124. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  125. package/dist/Lightbox/Lightbox.js +19 -13
  126. package/dist/List/List.d.ts.map +1 -1
  127. package/dist/List/List.js +6 -3
  128. package/dist/List/ListItem.d.ts +11 -1
  129. package/dist/List/ListItem.d.ts.map +1 -1
  130. package/dist/List/ListItem.js +2 -0
  131. package/dist/Markdown/Markdown.d.ts.map +1 -1
  132. package/dist/Markdown/Markdown.js +7 -0
  133. package/dist/MetadataList/MetadataList.d.ts +1 -1
  134. package/dist/MetadataList/MetadataList.d.ts.map +1 -1
  135. package/dist/MetadataList/MetadataList.js +4 -2
  136. package/dist/MultiSelector/MultiSelector.d.ts +9 -1
  137. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  138. package/dist/MultiSelector/MultiSelector.js +80 -42
  139. package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
  140. package/dist/NumberInput/NumberInput.d.ts +10 -2
  141. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  142. package/dist/NumberInput/NumberInput.js +22 -17
  143. package/dist/Outline/Outline.js +2 -2
  144. package/dist/Pagination/Pagination.d.ts.map +1 -1
  145. package/dist/Pagination/Pagination.js +11 -3
  146. package/dist/PowerSearch/PowerSearch.d.ts +9 -2
  147. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  148. package/dist/PowerSearch/PowerSearch.js +2 -0
  149. package/dist/ProgressBar/ProgressBar.d.ts.map +1 -1
  150. package/dist/ProgressBar/ProgressBar.js +6 -1
  151. package/dist/RadioList/RadioList.d.ts +2 -2
  152. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  153. package/dist/RadioList/RadioListItem.js +5 -5
  154. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  155. package/dist/Resizable/ResizeHandle.js +49 -19
  156. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  157. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  158. package/dist/SegmentedControl/SegmentedControlItem.js +5 -3
  159. package/dist/Selector/Selector.d.ts +8 -0
  160. package/dist/Selector/Selector.d.ts.map +1 -1
  161. package/dist/Selector/Selector.js +66 -17
  162. package/dist/SideNav/SideNav.d.ts.map +1 -1
  163. package/dist/SideNav/SideNav.js +5 -5
  164. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  165. package/dist/SideNav/SideNavCollapseButton.js +13 -10
  166. package/dist/SideNav/SideNavItem.d.ts +1 -1
  167. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  168. package/dist/SideNav/SideNavItem.js +12 -10
  169. package/dist/Skeleton/Skeleton.d.ts.map +1 -1
  170. package/dist/Skeleton/Skeleton.js +2 -2
  171. package/dist/Slider/Slider.d.ts.map +1 -1
  172. package/dist/Slider/Slider.js +87 -34
  173. package/dist/Spinner/Spinner.d.ts +3 -2
  174. package/dist/Spinner/Spinner.d.ts.map +1 -1
  175. package/dist/Spinner/Spinner.js +11 -2
  176. package/dist/Switch/Switch.d.ts +8 -1
  177. package/dist/Switch/Switch.d.ts.map +1 -1
  178. package/dist/Switch/Switch.js +171 -91
  179. package/dist/TabList/Tab.js +2 -2
  180. package/dist/TabList/TabList.d.ts +2 -11
  181. package/dist/TabList/TabList.d.ts.map +1 -1
  182. package/dist/TabList/TabList.js +5 -9
  183. package/dist/TabList/TabListContext.d.ts +0 -5
  184. package/dist/TabList/TabListContext.d.ts.map +1 -1
  185. package/dist/TabList/TabListContext.js +0 -5
  186. package/dist/TabList/TabMenu.js +1 -1
  187. package/dist/Table/BaseTable.d.ts.map +1 -1
  188. package/dist/Table/BaseTable.js +30 -4
  189. package/dist/Table/TableCell.js +3 -3
  190. package/dist/Table/TableHeaderCell.js +3 -3
  191. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  192. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +15 -11
  193. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  194. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +37 -27
  195. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  196. package/dist/Table/plugins/selection/useTableSelection.js +3 -0
  197. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.d.ts.map +1 -1
  198. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +15 -7
  199. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  200. package/dist/Table/plugins/tree/useTableTreeData.js +29 -23
  201. package/dist/Table/types.d.ts +32 -0
  202. package/dist/Table/types.d.ts.map +1 -1
  203. package/dist/TextArea/TextArea.d.ts +10 -1
  204. package/dist/TextArea/TextArea.d.ts.map +1 -1
  205. package/dist/TextArea/TextArea.js +18 -19
  206. package/dist/TextInput/TextInput.d.ts +10 -2
  207. package/dist/TextInput/TextInput.d.ts.map +1 -1
  208. package/dist/TextInput/TextInput.js +20 -17
  209. package/dist/Thumbnail/Thumbnail.js +2 -2
  210. package/dist/TimeInput/TimeInput.d.ts +10 -2
  211. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  212. package/dist/TimeInput/TimeInput.js +17 -17
  213. package/dist/Timestamp/Timestamp.d.ts +31 -3
  214. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  215. package/dist/Timestamp/Timestamp.js +47 -76
  216. package/dist/Timestamp/formatInstant.d.ts +41 -0
  217. package/dist/Timestamp/formatInstant.d.ts.map +1 -0
  218. package/dist/Timestamp/formatInstant.js +177 -0
  219. package/dist/Timestamp/index.d.ts +1 -0
  220. package/dist/Timestamp/index.d.ts.map +1 -1
  221. package/dist/Timestamp/tooltipEntries.d.ts +56 -0
  222. package/dist/Timestamp/tooltipEntries.d.ts.map +1 -0
  223. package/dist/Timestamp/tooltipEntries.js +163 -0
  224. package/dist/Toast/ToastViewport.d.ts.map +1 -1
  225. package/dist/Toast/ToastViewport.js +61 -9
  226. package/dist/ToggleButton/ToggleButton.d.ts.map +1 -1
  227. package/dist/ToggleButton/ToggleButton.js +3 -1
  228. package/dist/Token/Token.d.ts +34 -4
  229. package/dist/Token/Token.d.ts.map +1 -1
  230. package/dist/Token/Token.js +85 -45
  231. package/dist/Token/TokenLink.d.ts +62 -0
  232. package/dist/Token/TokenLink.d.ts.map +1 -0
  233. package/dist/Token/TokenLink.js +76 -0
  234. package/dist/Token/index.d.ts +1 -1
  235. package/dist/Token/index.d.ts.map +1 -1
  236. package/dist/Tokenizer/Tokenizer.d.ts +9 -2
  237. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  238. package/dist/Tokenizer/Tokenizer.js +4 -2
  239. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  240. package/dist/Tooltip/useTooltip.js +17 -1
  241. package/dist/TopNav/TopNavItem.d.ts +3 -1
  242. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  243. package/dist/TopNav/TopNavItem.js +30 -3
  244. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  245. package/dist/TopNav/TopNavMegaMenu.js +9 -3
  246. package/dist/TreeList/TreeList.d.ts.map +1 -1
  247. package/dist/TreeList/TreeList.js +1 -0
  248. package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
  249. package/dist/TreeList/TreeListBranches.js +8 -6
  250. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  251. package/dist/TreeList/TreeListItem.js +32 -14
  252. package/dist/Typeahead/BaseTypeahead.d.ts +9 -0
  253. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  254. package/dist/Typeahead/BaseTypeahead.js +22 -11
  255. package/dist/Typeahead/Typeahead.d.ts +9 -2
  256. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  257. package/dist/Typeahead/Typeahead.js +11 -2
  258. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  259. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  260. package/dist/Typeahead/TypeaheadItem.js +20 -10
  261. package/dist/astryx.css +74 -33
  262. package/dist/astryx.umd.js +51 -51
  263. package/dist/astryx.umd.js.map +4 -4
  264. package/dist/hooks/index.d.ts +2 -0
  265. package/dist/hooks/index.d.ts.map +1 -1
  266. package/dist/hooks/index.js +1 -0
  267. package/dist/hooks/isRtlElement.d.ts +18 -0
  268. package/dist/hooks/isRtlElement.d.ts.map +1 -0
  269. package/dist/hooks/isRtlElement.js +27 -0
  270. package/dist/hooks/useAnnounce.d.ts +3 -0
  271. package/dist/hooks/useAnnounce.d.ts.map +1 -1
  272. package/dist/hooks/useAnnounce.js +39 -1
  273. package/dist/hooks/useFocusTrap.d.ts.map +1 -1
  274. package/dist/hooks/useFocusTrap.js +52 -11
  275. package/dist/hooks/useGridFocus.d.ts +6 -1
  276. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  277. package/dist/hooks/useGridFocus.js +12 -9
  278. package/dist/hooks/useHotkeys.d.ts +9 -0
  279. package/dist/hooks/useHotkeys.d.ts.map +1 -1
  280. package/dist/hooks/useHotkeys.js +9 -0
  281. package/dist/hooks/useInputStatusIcon.d.ts +38 -0
  282. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
  283. package/dist/hooks/useInputStatusIcon.js +169 -0
  284. package/dist/hooks/useKeyboardHint.d.ts +1 -1
  285. package/dist/hooks/useKeyboardHint.d.ts.map +1 -1
  286. package/dist/hooks/useKeyboardHint.js +4 -2
  287. package/dist/hooks/useListFocus.d.ts +39 -1
  288. package/dist/hooks/useListFocus.d.ts.map +1 -1
  289. package/dist/hooks/useListFocus.js +54 -9
  290. package/dist/i18n/InternationalizationContext.d.ts +1 -0
  291. package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
  292. package/dist/i18n/InternationalizationContext.js +3 -0
  293. package/dist/i18n/InternationalizationProvider.d.ts +8 -1
  294. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  295. package/dist/i18n/InternationalizationProvider.js +5 -1
  296. package/dist/i18n/getLocaleDirection.d.ts +18 -0
  297. package/dist/i18n/getLocaleDirection.d.ts.map +1 -0
  298. package/dist/i18n/getLocaleDirection.js +29 -0
  299. package/dist/i18n/index.d.ts +6 -0
  300. package/dist/i18n/index.d.ts.map +1 -1
  301. package/dist/i18n/index.js +7 -1
  302. package/dist/i18n/useDirection.d.ts +2 -0
  303. package/dist/i18n/useDirection.d.ts.map +1 -0
  304. package/dist/i18n/useDirection.js +27 -0
  305. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  306. package/dist/theme/derivedVarRegistry.js +13 -0
  307. package/dist/utils/index.d.ts +1 -0
  308. package/dist/utils/index.d.ts.map +1 -1
  309. package/dist/utils/index.js +2 -1
  310. package/dist/utils/plainDate.d.ts +17 -0
  311. package/dist/utils/plainDate.d.ts.map +1 -1
  312. package/dist/utils/plainDate.js +23 -4
  313. package/dist/utils/rtlStyles.d.ts +24 -0
  314. package/dist/utils/rtlStyles.d.ts.map +1 -0
  315. package/dist/utils/rtlStyles.js +27 -0
  316. package/locales/en.json +112 -0
  317. package/locales/pseudo.json +84 -0
  318. package/package.json +6 -1
  319. package/src/Avatar/Avatar.doc.mjs +50 -3
  320. package/src/Avatar/Avatar.test.tsx +218 -0
  321. package/src/Avatar/Avatar.tsx +285 -79
  322. package/src/Avatar/AvatarStatusDot.doc.mjs +4 -4
  323. package/src/Avatar/AvatarStatusDot.tsx +6 -4
  324. package/src/AvatarGroup/AvatarGroup.doc.mjs +2 -0
  325. package/src/AvatarGroup/AvatarGroup.test.tsx +162 -2
  326. package/src/AvatarGroup/AvatarGroup.tsx +58 -3
  327. package/src/AvatarGroup/AvatarGroupOverflow.tsx +5 -2
  328. package/src/Banner/Banner.tsx +6 -6
  329. package/src/Breadcrumbs/BreadcrumbItem.tsx +10 -10
  330. package/src/Breadcrumbs/Breadcrumbs.test.tsx +52 -1
  331. package/src/Breadcrumbs/index.ts +4 -0
  332. package/src/Button/Button.doc.mjs +0 -4
  333. package/src/Button/Button.test.tsx +16 -0
  334. package/src/Button/Button.tsx +6 -4
  335. package/src/Calendar/Calendar.test.tsx +170 -20
  336. package/src/Calendar/Calendar.tsx +73 -16
  337. package/src/Calendar/dayCellUtils.test.ts +18 -18
  338. package/src/Calendar/dayCellUtils.ts +2 -2
  339. package/src/Calendar/styles.ts +33 -39
  340. package/src/Card/Card.tsx +1 -1
  341. package/src/Carousel/Carousel.tsx +25 -6
  342. package/src/Chat/ChatComposer.doc.mjs +2 -2
  343. package/src/Chat/ChatComposerInput.doc.mjs +1 -1
  344. package/src/Chat/ChatComposerInput.tsx +2 -2
  345. package/src/Chat/ChatDictationButton.tsx +7 -1
  346. package/src/Chat/ChatLayout.tsx +4 -4
  347. package/src/Chat/ChatMessageBubble.tsx +15 -10
  348. package/src/Chat/ChatSystemMessage.test.tsx +5 -0
  349. package/src/Chat/ChatToolCalls.tsx +9 -2
  350. package/src/Chat/useTriggerMenu.tsx +1 -1
  351. package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
  352. package/src/CheckboxInput/CheckboxInput.test.tsx +23 -0
  353. package/src/CheckboxInput/CheckboxInput.tsx +21 -6
  354. package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
  355. package/src/CheckboxList/CheckboxList.test.tsx +94 -3
  356. package/src/CheckboxList/CheckboxListItem.tsx +17 -10
  357. package/src/Citation/Citation.doc.mjs +4 -3
  358. package/src/Citation/Citation.test.tsx +97 -0
  359. package/src/Citation/Citation.tsx +43 -11
  360. package/src/CodeBlock/CodeBlock.test.tsx +17 -0
  361. package/src/CodeBlock/CodeBlock.tsx +38 -11
  362. package/src/Collapsible/Collapsible.doc.mjs +1 -0
  363. package/src/Collapsible/Collapsible.test.tsx +7 -0
  364. package/src/Collapsible/Collapsible.tsx +16 -6
  365. package/src/CommandPalette/CommandPalette.test.tsx +95 -1
  366. package/src/CommandPalette/CommandPalette.tsx +41 -2
  367. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  368. package/src/ContextMenu/ContextMenu.test.tsx +59 -2
  369. package/src/ContextMenu/ContextMenu.tsx +22 -11
  370. package/src/ContextMenu/index.ts +5 -0
  371. package/src/DateInput/DateInput.doc.mjs +25 -0
  372. package/src/DateInput/DateInput.test.tsx +230 -0
  373. package/src/DateInput/DateInput.tsx +51 -29
  374. package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
  375. package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
  376. package/src/DateRangeInput/DateRangeInput.tsx +42 -30
  377. package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
  378. package/src/DateTimeInput/DateTimeInput.test.tsx +112 -0
  379. package/src/DateTimeInput/DateTimeInput.tsx +44 -39
  380. package/src/Divider/Divider.test.tsx +32 -8
  381. package/src/Divider/Divider.tsx +14 -1
  382. package/src/DropdownMenu/DropdownMenu.test.tsx +60 -0
  383. package/src/DropdownMenu/DropdownMenu.tsx +31 -12
  384. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +8 -2
  385. package/src/DropdownMenu/DropdownMenuItem.tsx +9 -3
  386. package/src/DropdownMenu/DropdownMenuRadioGroup.doc.mjs +4 -12
  387. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +9 -10
  388. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +9 -3
  389. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +20 -2
  390. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
  391. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +635 -0
  392. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +553 -0
  393. package/src/DropdownMenu/index.ts +16 -0
  394. package/src/DropdownMenu/menuItemHover.ts +39 -0
  395. package/src/DropdownMenu/menuItemRoles.ts +9 -0
  396. package/src/DropdownMenu/renderDropdownItems.tsx +29 -15
  397. package/src/Field/Field.doc.mjs +4 -0
  398. package/src/Field/Field.tsx +14 -9
  399. package/src/Field/FieldLabel.test.tsx +25 -0
  400. package/src/Field/FieldLabel.tsx +12 -3
  401. package/src/Field/inputStyles.stylex.ts +2 -0
  402. package/src/FieldStatus/FieldStatus.doc.mjs +1 -0
  403. package/src/FieldStatus/FieldStatus.test.tsx +133 -0
  404. package/src/FieldStatus/FieldStatus.tsx +61 -4
  405. package/src/FileInput/FileInput.doc.mjs +23 -2
  406. package/src/FileInput/FileInput.test.tsx +104 -13
  407. package/src/FileInput/FileInput.tsx +106 -79
  408. package/src/HoverCard/useHoverCard.tsx +15 -3
  409. package/src/Icon/Icon.doc.mjs +13 -0
  410. package/src/Icon/Icon.test.tsx +89 -0
  411. package/src/Icon/Icon.tsx +51 -3
  412. package/src/Item/Item.doc.mjs +5 -0
  413. package/src/Item/Item.test.tsx +88 -0
  414. package/src/Item/Item.tsx +57 -11
  415. package/src/Layer/layerAnimations.stylex.ts +23 -0
  416. package/src/Lightbox/Lightbox.tsx +15 -7
  417. package/src/List/List.test.tsx +17 -29
  418. package/src/List/List.tsx +6 -1
  419. package/src/List/ListItem.doc.mjs +12 -0
  420. package/src/List/ListItem.tsx +13 -0
  421. package/src/Markdown/Markdown.test.tsx +21 -0
  422. package/src/Markdown/Markdown.tsx +4 -0
  423. package/src/MetadataList/MetadataList.test.tsx +24 -0
  424. package/src/MetadataList/MetadataList.tsx +6 -2
  425. package/src/MultiSelector/MultiSelector.doc.mjs +20 -0
  426. package/src/MultiSelector/MultiSelector.test.tsx +402 -0
  427. package/src/MultiSelector/MultiSelector.tsx +120 -59
  428. package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
  429. package/src/NumberInput/NumberInput.doc.mjs +21 -0
  430. package/src/NumberInput/NumberInput.test.tsx +71 -0
  431. package/src/NumberInput/NumberInput.tsx +35 -26
  432. package/src/Outline/Outline.test.tsx +12 -12
  433. package/src/Outline/Outline.tsx +2 -2
  434. package/src/Pagination/Pagination.tsx +11 -3
  435. package/src/PowerSearch/PowerSearch.doc.mjs +15 -0
  436. package/src/PowerSearch/PowerSearch.test.tsx +23 -0
  437. package/src/PowerSearch/PowerSearch.tsx +10 -1
  438. package/src/ProgressBar/ProgressBar.test.tsx +34 -0
  439. package/src/ProgressBar/ProgressBar.tsx +16 -1
  440. package/src/RadioList/RadioList.doc.mjs +6 -0
  441. package/src/RadioList/RadioList.test.tsx +26 -4
  442. package/src/RadioList/RadioList.tsx +2 -2
  443. package/src/RadioList/RadioListItem.tsx +12 -5
  444. package/src/Resizable/ResizeHandle.test.tsx +94 -0
  445. package/src/Resizable/ResizeHandle.tsx +70 -20
  446. package/src/SegmentedControl/SegmentedControl.test.tsx +28 -0
  447. package/src/SegmentedControl/SegmentedControlItem.tsx +22 -2
  448. package/src/Selector/Selector.doc.mjs +15 -0
  449. package/src/Selector/Selector.test.tsx +370 -0
  450. package/src/Selector/Selector.tsx +88 -20
  451. package/src/SideNav/SideNav.tsx +1 -8
  452. package/src/SideNav/SideNavCollapseButton.tsx +9 -7
  453. package/src/SideNav/SideNavItem.tsx +5 -3
  454. package/src/Skeleton/Skeleton.test.tsx +16 -0
  455. package/src/Skeleton/Skeleton.tsx +13 -1
  456. package/src/Slider/Slider.doc.mjs +6 -0
  457. package/src/Slider/Slider.test.tsx +240 -12
  458. package/src/Slider/Slider.tsx +96 -23
  459. package/src/Spinner/Spinner.test.tsx +10 -8
  460. package/src/Spinner/Spinner.tsx +15 -5
  461. package/src/Switch/Switch.doc.mjs +142 -42
  462. package/src/Switch/Switch.test.tsx +111 -0
  463. package/src/Switch/Switch.tsx +149 -32
  464. package/src/TabList/Tab.tsx +2 -2
  465. package/src/TabList/TabList.doc.mjs +0 -6
  466. package/src/TabList/TabList.test.tsx +3 -15
  467. package/src/TabList/TabList.tsx +6 -17
  468. package/src/TabList/TabListContext.ts +0 -6
  469. package/src/TabList/TabMenu.tsx +2 -2
  470. package/src/Table/BaseTable.tsx +34 -2
  471. package/src/Table/Table.doc.mjs +11 -0
  472. package/src/Table/Table.test.tsx +85 -0
  473. package/src/Table/TableCell.tsx +3 -3
  474. package/src/Table/TableHeaderCell.tsx +3 -3
  475. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +9 -6
  476. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +19 -0
  477. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +27 -18
  478. package/src/Table/plugins/selection/useTableSelection.test.tsx +61 -3
  479. package/src/Table/plugins/selection/useTableSelection.tsx +3 -0
  480. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +38 -9
  481. package/src/Table/plugins/tree/useTableTreeData.tsx +17 -13
  482. package/src/Table/types.ts +33 -0
  483. package/src/Table/useTableRowStatus.doc.mjs +1 -1
  484. package/src/TextArea/TextArea.doc.mjs +21 -0
  485. package/src/TextArea/TextArea.test.tsx +23 -0
  486. package/src/TextArea/TextArea.tsx +27 -26
  487. package/src/TextInput/TextInput.doc.mjs +21 -0
  488. package/src/TextInput/TextInput.test.tsx +150 -0
  489. package/src/TextInput/TextInput.tsx +28 -25
  490. package/src/Thumbnail/Thumbnail.doc.mjs +1 -1
  491. package/src/Thumbnail/Thumbnail.tsx +1 -1
  492. package/src/TimeInput/TimeInput.doc.mjs +21 -0
  493. package/src/TimeInput/TimeInput.test.tsx +23 -0
  494. package/src/TimeInput/TimeInput.tsx +24 -25
  495. package/src/Timestamp/Timestamp.doc.mjs +32 -6
  496. package/src/Timestamp/Timestamp.test.tsx +371 -0
  497. package/src/Timestamp/Timestamp.tsx +96 -93
  498. package/src/Timestamp/formatInstant.ts +218 -0
  499. package/src/Timestamp/index.ts +4 -0
  500. package/src/Timestamp/tooltipEntries.test.ts +552 -0
  501. package/src/Timestamp/tooltipEntries.ts +210 -0
  502. package/src/Toast/ToastViewport.test.tsx +218 -8
  503. package/src/Toast/ToastViewport.tsx +71 -12
  504. package/src/ToggleButton/ToggleButton.test.tsx +24 -0
  505. package/src/ToggleButton/ToggleButton.tsx +19 -1
  506. package/src/Token/Token.test.tsx +166 -15
  507. package/src/Token/Token.tsx +104 -47
  508. package/src/Token/TokenLink.tsx +107 -0
  509. package/src/Token/index.ts +1 -1
  510. package/src/Tokenizer/Tokenizer.doc.mjs +23 -1
  511. package/src/Tokenizer/Tokenizer.test.tsx +23 -0
  512. package/src/Tokenizer/Tokenizer.tsx +14 -2
  513. package/src/Tooltip/Tooltip.test.tsx +46 -0
  514. package/src/Tooltip/useTooltip.tsx +20 -0
  515. package/src/TopNav/TopNav.test.tsx +93 -2
  516. package/src/TopNav/TopNavItem.doc.mjs +3 -3
  517. package/src/TopNav/TopNavItem.tsx +35 -6
  518. package/src/TopNav/TopNavMegaMenu.tsx +26 -2
  519. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +1 -1
  520. package/src/TreeList/TreeList.doc.mjs +6 -0
  521. package/src/TreeList/TreeList.test.tsx +50 -10
  522. package/src/TreeList/TreeList.tsx +5 -0
  523. package/src/TreeList/TreeListBranches.tsx +8 -6
  524. package/src/TreeList/TreeListItem.tsx +33 -11
  525. package/src/Typeahead/BaseTypeahead.tsx +42 -15
  526. package/src/Typeahead/Typeahead.doc.mjs +13 -0
  527. package/src/Typeahead/Typeahead.test.tsx +112 -0
  528. package/src/Typeahead/Typeahead.tsx +17 -1
  529. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  530. package/src/__tests__/forcedColors.ts +60 -0
  531. package/src/__tests__/inputWidthContract.test.tsx +62 -0
  532. package/src/doc-mjs.d.ts +19 -0
  533. package/src/hooks/index.ts +6 -0
  534. package/src/hooks/isRtlElement.ts +27 -0
  535. package/src/hooks/useAnnounce.test.tsx +75 -2
  536. package/src/hooks/useAnnounce.ts +47 -1
  537. package/src/hooks/useFocusTrap.test.tsx +104 -0
  538. package/src/hooks/useFocusTrap.ts +61 -12
  539. package/src/hooks/useGridFocus.doc.mjs +3 -3
  540. package/src/hooks/useGridFocus.test.tsx +41 -0
  541. package/src/hooks/useGridFocus.ts +21 -10
  542. package/src/hooks/useHotkeys.ts +9 -0
  543. package/src/hooks/useInputStatusIcon.test.tsx +221 -0
  544. package/src/hooks/useInputStatusIcon.tsx +235 -0
  545. package/src/hooks/useKeyboardHint.test.tsx +22 -0
  546. package/src/hooks/useKeyboardHint.tsx +6 -2
  547. package/src/hooks/useListFocus.doc.mjs +25 -3
  548. package/src/hooks/useListFocus.test.tsx +153 -1
  549. package/src/hooks/useListFocus.ts +102 -9
  550. package/src/i18n/InternationalizationContext.ts +4 -0
  551. package/src/i18n/InternationalizationProvider.tsx +12 -2
  552. package/src/i18n/__tests__/getLocaleDirection.test.ts +40 -0
  553. package/src/i18n/__tests__/useDirection.test.tsx +66 -0
  554. package/src/i18n/getLocaleDirection.ts +29 -0
  555. package/src/i18n/index.ts +6 -0
  556. package/src/i18n/useDirection.ts +29 -0
  557. package/src/reset.css +0 -26
  558. package/src/reset.test.ts +60 -0
  559. package/src/theme/derivedVarRegistry.test.ts +1 -0
  560. package/src/theme/derivedVarRegistry.ts +6 -0
  561. package/src/theme/generateThemeRules.test.ts +42 -0
  562. package/src/utils/index.ts +2 -0
  563. package/src/utils/plainDate.test.ts +24 -6
  564. package/src/utils/plainDate.ts +18 -4
  565. package/src/utils/rtlStyles.ts +27 -0
@@ -0,0 +1,60 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * Tests for reset.css invariants that components rely on.
5
+ *
6
+ * reset.css is a plain stylesheet, so these tests assert on its source
7
+ * text (same approach as the reset.css baseline checks in
8
+ * theme/onMediaTokens.test.ts and AspectRatio/AspectRatio.test.tsx).
9
+ */
10
+
11
+ import fs from 'fs';
12
+ import path from 'path';
13
+
14
+ import {beforeAll, describe, expect, it} from 'vitest';
15
+
16
+ describe('reset.css accessibility invariants', () => {
17
+ let ruleBlocks: {selector: string; body: string}[];
18
+
19
+ beforeAll(() => {
20
+ const resetCSS = fs.readFileSync(
21
+ path.resolve(__dirname, './reset.css'),
22
+ 'utf-8',
23
+ );
24
+ // Strip comments, then collect every innermost `selector { body }`
25
+ // block. `[^{}]` keeps at-rule preludes (@media, @layer) out of the
26
+ // selector capture, since their own `{` terminates any earlier match.
27
+ const stripped = resetCSS.replace(/\/\*[\s\S]*?\*\//g, '');
28
+ ruleBlocks = [...stripped.matchAll(/([^{}]+)\{([^{}]*)\}/g)].map(
29
+ ([, selector, body]) => ({selector: selector.trim(), body}),
30
+ );
31
+ });
32
+
33
+ it('parses rule blocks out of reset.css', () => {
34
+ // Guards the WCAG assertion below against silently passing if the
35
+ // block parsing ever breaks.
36
+ expect(ruleBlocks.length).toBeGreaterThan(20);
37
+ expect(
38
+ ruleBlocks.some(({body}) => body.includes('box-sizing: border-box')),
39
+ ).toBe(true);
40
+ });
41
+
42
+ /**
43
+ * WCAG 2.4.7 (Focus Visible, Level AA): keyboard focus indicators must
44
+ * not be suppressed. `:focus-visible` only matches keyboard-style focus,
45
+ * so any `outline: none` on it removes the focus indicator for keyboard
46
+ * users — and a `@media (hover: none) and (pointer: coarse)` guard does
47
+ * not exempt keyboard users on coarse-pointer devices (iPad/phone with a
48
+ * Bluetooth keyboard, switch-control users).
49
+ */
50
+ it('does not suppress :focus-visible outlines (WCAG 2.4.7)', () => {
51
+ const focusVisibleBlocks = ruleBlocks.filter(({selector}) =>
52
+ selector.includes(':focus-visible'),
53
+ );
54
+ for (const {selector, body} of focusVisibleBlocks) {
55
+ expect
56
+ .soft(body, `":focus-visible" rule "${selector}" must keep the outline`)
57
+ .not.toMatch(/outline(?:-style|-width)?\s*:\s*(?:none|0)/);
58
+ }
59
+ });
60
+ });
@@ -186,6 +186,7 @@ function discoverComponents(): ComponentInfo[] {
186
186
  // ---------------------------------------------------------------------------
187
187
 
188
188
  const DIR_TO_REGISTRY_KEY: Record<string, string> = {
189
+ Avatar: 'avatar',
189
190
  Banner: 'banner',
190
191
  Button: 'button',
191
192
  Card: 'card',
@@ -35,6 +35,12 @@ export interface DerivedVarEntry {
35
35
  * entries share the same property.
36
36
  */
37
37
  export const derivedVarRegistry: Record<string, DerivedVarEntry[]> = {
38
+ avatar: [
39
+ {property: 'fontSize', vars: ['--_avatar-fallback-font-size']},
40
+ {property: 'fontWeight', vars: ['--_avatar-fallback-font-weight']},
41
+ {property: 'color', vars: ['--_avatar-fallback-color']},
42
+ {property: 'backgroundColor', vars: ['--_avatar-fallback-background']},
43
+ ],
38
44
  banner: [{property: 'borderRadius', vars: ['--_banner-radius']}],
39
45
  button: [{property: 'borderRadius', vars: ['--_button-radius']}],
40
46
  card: [
@@ -385,6 +385,48 @@ describe('derived var expansion', () => {
385
385
  expect(rule).toContain('--_button-radius: 8px');
386
386
  });
387
387
 
388
+ it('emits internal vars for avatar fallback typography (base)', () => {
389
+ const theme = defineTheme({
390
+ name: 'test-derived-avatar',
391
+ components: {
392
+ avatar: {
393
+ base: {
394
+ fontWeight: 'var(--font-weight-normal)',
395
+ color: 'var(--color-text-secondary)',
396
+ backgroundColor: 'var(--color-accent-muted)',
397
+ },
398
+ },
399
+ },
400
+ });
401
+ const rules = generateThemeRules(theme);
402
+ const rule = rules.find(r => r.includes('.astryx-avatar'));
403
+ expect(rule).toBeDefined();
404
+ expect(rule).toContain(
405
+ '--_avatar-fallback-font-weight: var(--font-weight-normal)',
406
+ );
407
+ expect(rule).toContain(
408
+ '--_avatar-fallback-color: var(--color-text-secondary)',
409
+ );
410
+ expect(rule).toContain(
411
+ '--_avatar-fallback-background: var(--color-accent-muted)',
412
+ );
413
+ });
414
+
415
+ it('emits a per-size fallback font-size for avatar (size:sm)', () => {
416
+ const theme = defineTheme({
417
+ name: 'test-derived-avatar-size',
418
+ components: {
419
+ avatar: {
420
+ 'size:sm': {fontSize: '9px'},
421
+ },
422
+ },
423
+ });
424
+ const rules = generateThemeRules(theme);
425
+ const rule = rules.find(r => r.includes('.astryx-avatar.sm'));
426
+ expect(rule).toBeDefined();
427
+ expect(rule).toContain('--_avatar-fallback-font-size: 9px');
428
+ });
429
+
388
430
  it('does not emit derived vars for components without registry entries', () => {
389
431
  const theme = defineTheme({
390
432
  name: 'test-no-derived',
@@ -98,3 +98,5 @@ export {
98
98
  export type {RGBA} from './color';
99
99
 
100
100
  export {devWarn, devError, warnOnce, formatDevMessage} from './devWarning';
101
+
102
+ export {rtlStyles} from './rtlStyles';
@@ -235,19 +235,37 @@ describe('plainDateAddMonths', () => {
235
235
  });
236
236
  });
237
237
 
238
- it('overflows day into next month when target month is shorter', () => {
238
+ it('clamps to the last day when the target month is shorter', () => {
239
+ // Jan 31 + 1 month lands in February (clamped), not overflowed into
240
+ // March — matching Temporal.PlainDate.add and date-fns addMonths.
239
241
  expect(plainDateAddMonths({year: 2026, month: 1, day: 31}, 1)).toEqual({
240
242
  year: 2026,
241
- month: 3,
242
- day: 3,
243
+ month: 2,
244
+ day: 28,
243
245
  });
244
246
  });
245
247
 
246
- it('overflows Jan 31 + 1 month in leap year', () => {
248
+ it('clamps to Feb 29 in a leap year', () => {
247
249
  expect(plainDateAddMonths({year: 2024, month: 1, day: 31}, 1)).toEqual({
248
250
  year: 2024,
249
- month: 3,
250
- day: 2,
251
+ month: 2,
252
+ day: 29,
253
+ });
254
+ });
255
+
256
+ it('clamps when subtracting into a shorter month', () => {
257
+ expect(plainDateAddMonths({year: 2026, month: 3, day: 31}, -1)).toEqual({
258
+ year: 2026,
259
+ month: 2,
260
+ day: 28,
261
+ });
262
+ });
263
+
264
+ it('clamps a 31st onto a 30-day month', () => {
265
+ expect(plainDateAddMonths({year: 2026, month: 5, day: 31}, 1)).toEqual({
266
+ year: 2026,
267
+ month: 6,
268
+ day: 30,
251
269
  });
252
270
  });
253
271
  });
@@ -72,9 +72,14 @@ export function plainDateDayOfWeek(pd: PlainDate): number {
72
72
  }
73
73
 
74
74
  export function plainDateAddMonths(pd: PlainDate, n: number): PlainDate {
75
- const d = plainDateToDate(pd);
76
- d.setMonth(d.getMonth() + n);
77
- return plainDateFromDate(d);
75
+ // Pure month arithmetic with day clamping (Temporal.PlainDate.add
76
+ // semantics): Jan 31 + 1 month is Feb 28/29, not Mar 2/3. Date#setMonth
77
+ // would overflow the excess days into the following month instead.
78
+ const totalMonths = pd.year * 12 + (pd.month - 1) + n;
79
+ const year = Math.floor(totalMonths / 12);
80
+ const month = (((totalMonths % 12) + 12) % 12) + 1;
81
+ const day = Math.min(pd.day, getDaysInMonth(year, month));
82
+ return {year, month, day};
78
83
  }
79
84
 
80
85
  export function plainDateAddDays(pd: PlainDate, n: number): PlainDate {
@@ -83,7 +88,16 @@ export function plainDateAddDays(pd: PlainDate, n: number): PlainDate {
83
88
  return plainDateFromDate(d);
84
89
  }
85
90
 
86
- function getTimeZoneParts(
91
+ /**
92
+ * The wall-clock fields an instant reads as in a given zone.
93
+ *
94
+ * A fixed `'en-US'` locale with `hourCycle: 'h23'` keeps the parts numeric and
95
+ * stable whatever locale the viewer has, so callers can assemble machine
96
+ * shapes (`YYYY-MM-DD`, `HH:mm:ss`) from them. Exported for Timestamp, whose
97
+ * `system_*` formats are built from these fields rather than through `Intl`
98
+ * formatting.
99
+ */
100
+ export function getTimeZoneParts(
87
101
  instant: number,
88
102
  timezoneID: string,
89
103
  ): {
@@ -0,0 +1,27 @@
1
+ // Copyright (c) Meta Platforms, Inc. and affiliates.
2
+
3
+ /**
4
+ * @file rtlStyles.ts
5
+ * @input None
6
+ * @output Shared StyleX style that horizontally mirrors an element under RTL
7
+ * @position Core utility; applied to directional-icon wrappers in Calendar,
8
+ * Lightbox, and the Table expand/disclosure plugins
9
+ *
10
+ * `mirror` flips its element on the horizontal axis only when an ancestor
11
+ * carries `dir="rtl"`. Using `scaleX(-1)` (not `scale(-1, -1)`) keeps the
12
+ * vertical axis intact, and applying it OUTSIDE any state-driven rotation lets
13
+ * it compose correctly — e.g. a Table disclosure chevron still rotates to point
14
+ * down when expanded under RTL. The `:is([dir="rtl"] *)` selector matches the
15
+ * MobileNav drawer convention; a bare `direction: rtl` alone won't trigger it.
16
+ *
17
+ * SYNC: When modified, update:
18
+ * - /packages/core/src/utils/index.ts
19
+ */
20
+
21
+ import * as stylex from '@stylexjs/stylex';
22
+
23
+ export const rtlStyles = stylex.create({
24
+ mirror: {
25
+ transform: {default: null, ':is([dir="rtl"] *)': 'scaleX(-1)'},
26
+ },
27
+ });