@astryxdesign/core 0.1.8 → 0.1.9-canary.02ef052

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 (728) hide show
  1. package/CHANGELOG.md +100 -0
  2. package/dist/AppShell/AppShell.d.ts.map +1 -1
  3. package/dist/AppShell/AppShell.js +6 -2
  4. package/dist/AppShell/AppShellMobileContext.d.ts +8 -0
  5. package/dist/AppShell/AppShellMobileContext.d.ts.map +1 -1
  6. package/dist/Avatar/Avatar.d.ts +58 -3
  7. package/dist/Avatar/Avatar.d.ts.map +1 -1
  8. package/dist/Avatar/Avatar.js +240 -53
  9. package/dist/Avatar/AvatarStatusDot.d.ts +35 -5
  10. package/dist/Avatar/AvatarStatusDot.d.ts.map +1 -1
  11. package/dist/Avatar/AvatarStatusDot.js +144 -19
  12. package/dist/AvatarGroup/AvatarGroup.d.ts +7 -1
  13. package/dist/AvatarGroup/AvatarGroup.d.ts.map +1 -1
  14. package/dist/AvatarGroup/AvatarGroup.js +58 -6
  15. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  16. package/dist/AvatarGroup/AvatarGroupOverflow.js +1 -0
  17. package/dist/Banner/Banner.d.ts +9 -1
  18. package/dist/Banner/Banner.d.ts.map +1 -1
  19. package/dist/Banner/Banner.js +33 -4
  20. package/dist/Breadcrumbs/BreadcrumbItem.d.ts +31 -2
  21. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  22. package/dist/Breadcrumbs/BreadcrumbItem.js +215 -6
  23. package/dist/Breadcrumbs/index.d.ts +6 -0
  24. package/dist/Breadcrumbs/index.d.ts.map +1 -1
  25. package/dist/Breadcrumbs/index.js +10 -1
  26. package/dist/Button/Button.d.ts +8 -2
  27. package/dist/Button/Button.d.ts.map +1 -1
  28. package/dist/Button/Button.js +33 -4
  29. package/dist/ButtonGroup/ButtonGroup.d.ts +9 -1
  30. package/dist/ButtonGroup/ButtonGroup.d.ts.map +1 -1
  31. package/dist/ButtonGroup/ButtonGroup.js +30 -1
  32. package/dist/Calendar/Calendar.d.ts.map +1 -1
  33. package/dist/Calendar/Calendar.js +80 -11
  34. package/dist/Calendar/dayCellUtils.d.ts +4 -4
  35. package/dist/Calendar/dayCellUtils.js +3 -3
  36. package/dist/Calendar/styles.d.ts +30 -31
  37. package/dist/Calendar/styles.d.ts.map +1 -1
  38. package/dist/Calendar/styles.js +30 -31
  39. package/dist/Card/Card.d.ts +8 -2
  40. package/dist/Card/Card.d.ts.map +1 -1
  41. package/dist/Card/Card.js +28 -2
  42. package/dist/Carousel/Carousel.d.ts +4 -1
  43. package/dist/Carousel/Carousel.d.ts.map +1 -1
  44. package/dist/Carousel/Carousel.js +46 -16
  45. package/dist/Chat/ChatComposer.d.ts +8 -0
  46. package/dist/Chat/ChatComposer.d.ts.map +1 -1
  47. package/dist/Chat/ChatComposer.js +46 -7
  48. package/dist/Chat/ChatComposerDrawer.d.ts +2 -0
  49. package/dist/Chat/ChatComposerDrawer.d.ts.map +1 -1
  50. package/dist/Chat/ChatComposerDrawer.js +11 -1
  51. package/dist/Chat/ChatComposerInput.d.ts +20 -3
  52. package/dist/Chat/ChatComposerInput.d.ts.map +1 -1
  53. package/dist/Chat/ChatComposerInput.js +36 -4
  54. package/dist/Chat/ChatContext.d.ts +33 -0
  55. package/dist/Chat/ChatContext.d.ts.map +1 -1
  56. package/dist/Chat/ChatContext.js +16 -2
  57. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  58. package/dist/Chat/ChatDictationButton.js +4 -2
  59. package/dist/Chat/ChatLayout.d.ts.map +1 -1
  60. package/dist/Chat/ChatLayout.js +4 -4
  61. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  62. package/dist/Chat/ChatLayoutScrollButton.js +4 -4
  63. package/dist/Chat/ChatMessageMetadata.d.ts.map +1 -1
  64. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  65. package/dist/Chat/ChatSendButton.js +7 -1
  66. package/dist/Chat/ChatToolCalls.d.ts +5 -1
  67. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  68. package/dist/Chat/ChatToolCalls.js +27 -11
  69. package/dist/Chat/index.d.ts +2 -1
  70. package/dist/Chat/index.d.ts.map +1 -1
  71. package/dist/Chat/index.js +1 -1
  72. package/dist/Chat/useChatStreamScroll.d.ts +2 -1
  73. package/dist/Chat/useChatStreamScroll.d.ts.map +1 -1
  74. package/dist/Chat/useChatStreamScroll.js +22 -8
  75. package/dist/Chat/useSpeechRecognition.d.ts +0 -1
  76. package/dist/Chat/useSpeechRecognition.d.ts.map +1 -1
  77. package/dist/Chat/useSpeechRecognition.js +1 -1
  78. package/dist/Chat/useTriggerMenu.d.ts.map +1 -1
  79. package/dist/Chat/useTriggerMenu.js +2 -2
  80. package/dist/CheckboxInput/CheckboxInput.js +5 -5
  81. package/dist/CheckboxList/CheckboxListItem.d.ts +20 -1
  82. package/dist/CheckboxList/CheckboxListItem.d.ts.map +1 -1
  83. package/dist/CheckboxList/CheckboxListItem.js +11 -1
  84. package/dist/Citation/Citation.d.ts +22 -1
  85. package/dist/Citation/Citation.d.ts.map +1 -1
  86. package/dist/Citation/Citation.js +20 -6
  87. package/dist/ClickableCard/ClickableCard.d.ts +9 -2
  88. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  89. package/dist/ClickableCard/ClickableCard.js +5 -2
  90. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  91. package/dist/CodeBlock/CodeBlock.js +22 -9
  92. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  93. package/dist/Collapsible/Collapsible.js +3 -1
  94. package/dist/CommandPalette/CommandPalette.d.ts +2 -2
  95. package/dist/CommandPalette/CommandPalette.d.ts.map +1 -1
  96. package/dist/CommandPalette/CommandPalette.js +45 -4
  97. package/dist/CommandPalette/CommandPaletteGroup.d.ts.map +1 -1
  98. package/dist/CommandPalette/CommandPaletteGroup.js +9 -2
  99. package/dist/CommandPalette/CommandPaletteInput.d.ts +7 -1
  100. package/dist/CommandPalette/CommandPaletteInput.d.ts.map +1 -1
  101. package/dist/CommandPalette/CommandPaletteInput.js +6 -1
  102. package/dist/CommandPalette/CommandPaletteItem.js +1 -1
  103. package/dist/ContextMenu/ContextMenu.d.ts.map +1 -1
  104. package/dist/ContextMenu/ContextMenu.js +14 -5
  105. package/dist/ContextMenu/index.d.ts +1 -0
  106. package/dist/ContextMenu/index.d.ts.map +1 -1
  107. package/dist/ContextMenu/index.js +3 -1
  108. package/dist/DateInput/DateInput.d.ts +56 -2
  109. package/dist/DateInput/DateInput.d.ts.map +1 -1
  110. package/dist/DateInput/DateInput.js +59 -21
  111. package/dist/DateInput/index.d.ts +1 -1
  112. package/dist/DateInput/index.d.ts.map +1 -1
  113. package/dist/DateRangeInput/DateRangeInput.d.ts +10 -2
  114. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  115. package/dist/DateRangeInput/DateRangeInput.js +23 -20
  116. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  117. package/dist/DateTimeInput/DateTimeInput.js +33 -19
  118. package/dist/Dialog/Dialog.d.ts +3 -0
  119. package/dist/Dialog/Dialog.d.ts.map +1 -1
  120. package/dist/Dialog/Dialog.js +57 -6
  121. package/dist/Dialog/DialogContext.d.ts +7 -0
  122. package/dist/Dialog/DialogContext.d.ts.map +1 -1
  123. package/dist/Dialog/DialogContext.js +2 -2
  124. package/dist/Dialog/DialogHeader.d.ts +5 -2
  125. package/dist/Dialog/DialogHeader.d.ts.map +1 -1
  126. package/dist/Dialog/DialogHeader.js +6 -1
  127. package/dist/Divider/Divider.js +1 -1
  128. package/dist/DropdownMenu/DropdownMenu.d.ts +6 -0
  129. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  130. package/dist/DropdownMenu/DropdownMenu.js +22 -5
  131. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +1 -2
  132. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  133. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +5 -3
  134. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  135. package/dist/DropdownMenu/DropdownMenuItem.js +5 -2
  136. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts +1 -2
  137. package/dist/DropdownMenu/DropdownMenuRadioGroup.d.ts.map +1 -1
  138. package/dist/DropdownMenu/DropdownMenuRadioGroup.js +1 -2
  139. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  140. package/dist/DropdownMenu/DropdownMenuRadioItem.js +4 -1
  141. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts +104 -0
  142. package/dist/DropdownMenu/DropdownMenuSubMenu.d.ts.map +1 -0
  143. package/dist/DropdownMenu/DropdownMenuSubMenu.js +427 -0
  144. package/dist/DropdownMenu/index.d.ts +10 -0
  145. package/dist/DropdownMenu/index.d.ts.map +1 -1
  146. package/dist/DropdownMenu/index.js +13 -0
  147. package/dist/DropdownMenu/menuItemHover.d.ts +23 -0
  148. package/dist/DropdownMenu/menuItemHover.d.ts.map +1 -0
  149. package/dist/DropdownMenu/menuItemHover.js +33 -0
  150. package/dist/DropdownMenu/menuItemRoles.d.ts +8 -0
  151. package/dist/DropdownMenu/menuItemRoles.d.ts.map +1 -1
  152. package/dist/DropdownMenu/menuItemRoles.js +10 -1
  153. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  154. package/dist/DropdownMenu/renderDropdownItems.js +21 -6
  155. package/dist/Field/Field.d.ts +3 -1
  156. package/dist/Field/Field.d.ts.map +1 -1
  157. package/dist/Field/Field.js +6 -4
  158. package/dist/Field/FieldLabel.d.ts +1 -1
  159. package/dist/Field/FieldLabel.d.ts.map +1 -1
  160. package/dist/Field/FieldLabel.js +43 -16
  161. package/dist/Field/inputStyles.stylex.d.ts +1 -0
  162. package/dist/Field/inputStyles.stylex.d.ts.map +1 -1
  163. package/dist/Field/inputStyles.stylex.js +1 -0
  164. package/dist/FieldStatus/FieldStatus.d.ts +18 -0
  165. package/dist/FieldStatus/FieldStatus.d.ts.map +1 -1
  166. package/dist/FieldStatus/FieldStatus.js +60 -6
  167. package/dist/FileInput/FileInput.d.ts +10 -2
  168. package/dist/FileInput/FileInput.d.ts.map +1 -1
  169. package/dist/FileInput/FileInput.js +54 -35
  170. package/dist/HoverCard/HoverCard.d.ts +9 -1
  171. package/dist/HoverCard/HoverCard.d.ts.map +1 -1
  172. package/dist/HoverCard/HoverCard.js +2 -0
  173. package/dist/HoverCard/useHoverCard.d.ts +8 -0
  174. package/dist/HoverCard/useHoverCard.d.ts.map +1 -1
  175. package/dist/HoverCard/useHoverCard.js +17 -6
  176. package/dist/Icon/Icon.d.ts +22 -3
  177. package/dist/Icon/Icon.d.ts.map +1 -1
  178. package/dist/Icon/Icon.js +19 -3
  179. package/dist/Item/Item.d.ts +6 -1
  180. package/dist/Item/Item.d.ts.map +1 -1
  181. package/dist/Item/Item.js +22 -1
  182. package/dist/Layer/useLayer.d.ts +6 -0
  183. package/dist/Layer/useLayer.d.ts.map +1 -1
  184. package/dist/Layer/useLayer.js +2 -0
  185. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  186. package/dist/Lightbox/Lightbox.js +19 -13
  187. package/dist/Markdown/Markdown.d.ts.map +1 -1
  188. package/dist/Markdown/Markdown.js +7 -0
  189. package/dist/MobileNav/MobileNav.d.ts.map +1 -1
  190. package/dist/MobileNav/MobileNav.js +6 -1
  191. package/dist/MobileNav/MobileNavToggle.d.ts.map +1 -1
  192. package/dist/MobileNav/MobileNavToggle.js +4 -0
  193. package/dist/MultiSelector/MultiSelector.d.ts +9 -1
  194. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  195. package/dist/MultiSelector/MultiSelector.js +104 -50
  196. package/dist/MultiSelector/hooks.d.ts.map +1 -1
  197. package/dist/MultiSelector/hooks.js +16 -0
  198. package/dist/NavMenu/NavHeadingMenuItem.js +1 -1
  199. package/dist/NumberInput/NumberInput.d.ts +10 -2
  200. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  201. package/dist/NumberInput/NumberInput.js +22 -17
  202. package/dist/Outline/Outline.d.ts +0 -1
  203. package/dist/Outline/Outline.d.ts.map +1 -1
  204. package/dist/Outline/Outline.js +0 -1
  205. package/dist/OverflowList/OverflowList.d.ts +20 -3
  206. package/dist/OverflowList/OverflowList.d.ts.map +1 -1
  207. package/dist/OverflowList/OverflowList.js +29 -4
  208. package/dist/Pagination/Pagination.d.ts.map +1 -1
  209. package/dist/Pagination/Pagination.js +11 -3
  210. package/dist/Popover/Popover.d.ts.map +1 -1
  211. package/dist/Popover/Popover.js +3 -2
  212. package/dist/Popover/usePopover.d.ts.map +1 -1
  213. package/dist/Popover/usePopover.js +3 -9
  214. package/dist/PowerSearch/PowerSearch.d.ts +9 -2
  215. package/dist/PowerSearch/PowerSearch.d.ts.map +1 -1
  216. package/dist/PowerSearch/PowerSearch.js +2 -0
  217. package/dist/PowerSearch/PowerSearchEditPopover.js +1 -1
  218. package/dist/PowerSearch/usePowerSearchSource.d.ts.map +1 -1
  219. package/dist/RadioList/RadioList.d.ts +2 -2
  220. package/dist/RadioList/RadioListItem.js +4 -4
  221. package/dist/SegmentedControl/SegmentedControlItem.d.ts +1 -1
  222. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  223. package/dist/SegmentedControl/SegmentedControlItem.js +2 -1
  224. package/dist/SelectableCard/SelectableCard.d.ts +9 -2
  225. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  226. package/dist/SelectableCard/SelectableCard.js +16 -13
  227. package/dist/Selector/Selector.d.ts +8 -0
  228. package/dist/Selector/Selector.d.ts.map +1 -1
  229. package/dist/Selector/Selector.js +65 -19
  230. package/dist/Selector/hooks.d.ts.map +1 -1
  231. package/dist/Selector/hooks.js +16 -0
  232. package/dist/SideNav/SideNav.d.ts.map +1 -1
  233. package/dist/SideNav/SideNav.js +5 -5
  234. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  235. package/dist/SideNav/SideNavCollapseButton.js +13 -10
  236. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  237. package/dist/SideNav/SideNavHeading.js +21 -8
  238. package/dist/SideNav/SideNavItem.d.ts +1 -1
  239. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  240. package/dist/SideNav/SideNavItem.js +12 -10
  241. package/dist/Slider/Slider.d.ts.map +1 -1
  242. package/dist/Slider/Slider.js +106 -36
  243. package/dist/Stack/stack.stylex.d.ts +9 -9
  244. package/dist/Switch/Switch.d.ts +8 -1
  245. package/dist/Switch/Switch.d.ts.map +1 -1
  246. package/dist/Switch/Switch.js +160 -91
  247. package/dist/TabList/Tab.js +2 -2
  248. package/dist/TabList/TabMenu.js +1 -1
  249. package/dist/Table/BaseTable.d.ts.map +1 -1
  250. package/dist/Table/BaseTable.js +33 -6
  251. package/dist/Table/TableCell.js +3 -3
  252. package/dist/Table/TableHeaderCell.js +3 -3
  253. package/dist/Table/index.d.ts +2 -0
  254. package/dist/Table/index.d.ts.map +1 -1
  255. package/dist/Table/index.js +1 -0
  256. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  257. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +15 -11
  258. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  259. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +36 -26
  260. package/dist/Table/plugins/rowStatus/index.d.ts +3 -0
  261. package/dist/Table/plugins/rowStatus/index.d.ts.map +1 -0
  262. package/dist/Table/plugins/rowStatus/index.js +3 -0
  263. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts +60 -0
  264. package/dist/Table/plugins/rowStatus/useTableRowStatus.d.ts.map +1 -0
  265. package/dist/Table/plugins/rowStatus/useTableRowStatus.js +145 -0
  266. package/dist/Table/plugins/selection/useTableSelection.d.ts +13 -0
  267. package/dist/Table/plugins/selection/useTableSelection.d.ts.map +1 -1
  268. package/dist/Table/plugins/selection/useTableSelection.js +7 -1
  269. package/dist/Table/plugins/stickyColumns/useTableStickyColumns.js +1 -1
  270. package/dist/Table/plugins/tree/useTableTreeData.d.ts +16 -0
  271. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  272. package/dist/Table/plugins/tree/useTableTreeData.js +105 -12
  273. package/dist/Table/plugins/tree/useTableTreeState.d.ts +6 -0
  274. package/dist/Table/plugins/tree/useTableTreeState.d.ts.map +1 -1
  275. package/dist/Table/plugins/tree/useTableTreeState.js +22 -1
  276. package/dist/Table/types.d.ts +32 -0
  277. package/dist/Table/types.d.ts.map +1 -1
  278. package/dist/Table/useBaseTablePlugins.d.ts.map +1 -1
  279. package/dist/Table/useBaseTablePlugins.js +5 -3
  280. package/dist/TextArea/TextArea.d.ts +10 -1
  281. package/dist/TextArea/TextArea.d.ts.map +1 -1
  282. package/dist/TextArea/TextArea.js +18 -19
  283. package/dist/TextInput/TextInput.d.ts +10 -2
  284. package/dist/TextInput/TextInput.d.ts.map +1 -1
  285. package/dist/TextInput/TextInput.js +20 -17
  286. package/dist/Thumbnail/Thumbnail.d.ts +26 -5
  287. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  288. package/dist/Thumbnail/Thumbnail.js +97 -54
  289. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts +9 -0
  290. package/dist/Thumbnail/thumbnail.markers.stylex.d.ts.map +1 -0
  291. package/dist/Thumbnail/thumbnail.markers.stylex.js +14 -0
  292. package/dist/TimeInput/TimeInput.d.ts +10 -2
  293. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  294. package/dist/TimeInput/TimeInput.js +32 -21
  295. package/dist/Timestamp/Timestamp.d.ts +3 -1
  296. package/dist/Timestamp/Timestamp.d.ts.map +1 -1
  297. package/dist/Timestamp/Timestamp.js +8 -6
  298. package/dist/Toast/useToast.d.ts.map +1 -1
  299. package/dist/Toast/useToast.js +2 -5
  300. package/dist/ToggleButton/ToggleButtonGroup.d.ts +0 -1
  301. package/dist/ToggleButton/ToggleButtonGroup.d.ts.map +1 -1
  302. package/dist/ToggleButton/ToggleButtonGroup.js +1 -1
  303. package/dist/Token/Token.d.ts +30 -3
  304. package/dist/Token/Token.d.ts.map +1 -1
  305. package/dist/Token/Token.js +17 -2
  306. package/dist/Token/index.d.ts +1 -1
  307. package/dist/Token/index.d.ts.map +1 -1
  308. package/dist/Tokenizer/Tokenizer.d.ts +10 -3
  309. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  310. package/dist/Tokenizer/Tokenizer.js +20 -6
  311. package/dist/Tooltip/useTooltip.d.ts.map +1 -1
  312. package/dist/Tooltip/useTooltip.js +17 -1
  313. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  314. package/dist/TopNav/TopNavHeading.js +18 -8
  315. package/dist/TopNav/TopNavMegaMenu.js +10 -4
  316. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts +9 -1
  317. package/dist/TopNav/TopNavMegaMenuFeaturedCard.d.ts.map +1 -1
  318. package/dist/TopNav/TopNavMegaMenuFeaturedCard.js +8 -1
  319. package/dist/TopNav/TopNavMenu.d.ts +2 -1
  320. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  321. package/dist/TopNav/TopNavMenu.js +68 -6
  322. package/dist/TreeList/TreeList.d.ts +12 -3
  323. package/dist/TreeList/TreeList.d.ts.map +1 -1
  324. package/dist/TreeList/TreeList.js +3 -0
  325. package/dist/TreeList/TreeListBranches.d.ts +5 -0
  326. package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
  327. package/dist/TreeList/TreeListBranches.js +18 -10
  328. package/dist/TreeList/TreeListItem.d.ts +8 -2
  329. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  330. package/dist/TreeList/TreeListItem.js +59 -21
  331. package/dist/TreeList/TreeListTypes.d.ts +25 -1
  332. package/dist/TreeList/TreeListTypes.d.ts.map +1 -1
  333. package/dist/TreeList/index.d.ts +2 -2
  334. package/dist/TreeList/index.d.ts.map +1 -1
  335. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  336. package/dist/Typeahead/BaseTypeahead.js +20 -11
  337. package/dist/Typeahead/Typeahead.d.ts +9 -2
  338. package/dist/Typeahead/Typeahead.d.ts.map +1 -1
  339. package/dist/Typeahead/Typeahead.js +3 -1
  340. package/dist/Typeahead/TypeaheadItem.d.ts +1 -1
  341. package/dist/Typeahead/TypeaheadItem.d.ts.map +1 -1
  342. package/dist/Typeahead/TypeaheadItem.js +20 -10
  343. package/dist/astryx.css +61 -39
  344. package/dist/astryx.umd.js +53 -53
  345. package/dist/astryx.umd.js.map +4 -4
  346. package/dist/authoring/doc.d.ts.map +1 -1
  347. package/dist/docs-types.d.ts +8 -0
  348. package/dist/docs-types.d.ts.map +1 -1
  349. package/dist/hooks/computeOverflow.d.ts +47 -0
  350. package/dist/hooks/computeOverflow.d.ts.map +1 -0
  351. package/dist/hooks/computeOverflow.js +213 -0
  352. package/dist/hooks/index.d.ts +3 -0
  353. package/dist/hooks/index.d.ts.map +1 -1
  354. package/dist/hooks/index.js +3 -1
  355. package/dist/hooks/isRtlElement.d.ts +18 -0
  356. package/dist/hooks/isRtlElement.d.ts.map +1 -0
  357. package/dist/hooks/isRtlElement.js +27 -0
  358. package/dist/hooks/useDevWarning.d.ts +18 -0
  359. package/dist/hooks/useDevWarning.d.ts.map +1 -0
  360. package/dist/hooks/useDevWarning.js +49 -0
  361. package/dist/hooks/useGridFocus.d.ts +6 -1
  362. package/dist/hooks/useGridFocus.d.ts.map +1 -1
  363. package/dist/hooks/useGridFocus.js +12 -9
  364. package/dist/hooks/useInputStatusIcon.d.ts +38 -0
  365. package/dist/hooks/useInputStatusIcon.d.ts.map +1 -0
  366. package/dist/hooks/useInputStatusIcon.js +158 -0
  367. package/dist/hooks/useListFocus.d.ts +39 -1
  368. package/dist/hooks/useListFocus.d.ts.map +1 -1
  369. package/dist/hooks/useListFocus.js +54 -9
  370. package/dist/hooks/useOverflow.d.ts +19 -0
  371. package/dist/hooks/useOverflow.d.ts.map +1 -1
  372. package/dist/hooks/useOverflow.js +36 -25
  373. package/dist/i18n/InternationalizationContext.d.ts +1 -0
  374. package/dist/i18n/InternationalizationContext.d.ts.map +1 -1
  375. package/dist/i18n/InternationalizationContext.js +3 -0
  376. package/dist/i18n/InternationalizationProvider.d.ts +8 -1
  377. package/dist/i18n/InternationalizationProvider.d.ts.map +1 -1
  378. package/dist/i18n/InternationalizationProvider.js +5 -1
  379. package/dist/i18n/getLocaleDirection.d.ts +18 -0
  380. package/dist/i18n/getLocaleDirection.d.ts.map +1 -0
  381. package/dist/i18n/getLocaleDirection.js +29 -0
  382. package/dist/i18n/index.d.ts +6 -0
  383. package/dist/i18n/index.d.ts.map +1 -1
  384. package/dist/i18n/index.js +7 -1
  385. package/dist/i18n/resolve.d.ts.map +1 -1
  386. package/dist/i18n/resolve.js +7 -18
  387. package/dist/i18n/useDirection.d.ts +2 -0
  388. package/dist/i18n/useDirection.d.ts.map +1 -0
  389. package/dist/i18n/useDirection.js +27 -0
  390. package/dist/theme/Theme.d.ts.map +1 -1
  391. package/dist/theme/Theme.js +2 -7
  392. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  393. package/dist/theme/derivedVarRegistry.js +13 -0
  394. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  395. package/dist/theme/generateThemeRules.js +51 -0
  396. package/dist/theme/hct.d.ts +0 -1
  397. package/dist/theme/hct.d.ts.map +1 -1
  398. package/dist/theme/hct.js +1 -1
  399. package/dist/theme/syntax/defineSyntaxTheme.d.ts.map +1 -1
  400. package/dist/theme/syntax/defineSyntaxTheme.js +2 -1
  401. package/dist/utils/devWarning.d.ts +42 -0
  402. package/dist/utils/devWarning.d.ts.map +1 -0
  403. package/dist/utils/devWarning.js +88 -0
  404. package/dist/utils/index.d.ts +4 -1
  405. package/dist/utils/index.d.ts.map +1 -1
  406. package/dist/utils/index.js +4 -2
  407. package/dist/utils/plainDate.d.ts +30 -0
  408. package/dist/utils/plainDate.d.ts.map +1 -1
  409. package/dist/utils/plainDate.js +65 -3
  410. package/dist/utils/rtlStyles.d.ts +24 -0
  411. package/dist/utils/rtlStyles.d.ts.map +1 -0
  412. package/dist/utils/rtlStyles.js +27 -0
  413. package/dist/utils/types.d.ts +13 -0
  414. package/dist/utils/types.d.ts.map +1 -1
  415. package/locales/en.json +104 -0
  416. package/locales/fr-FR.json +14 -0
  417. package/locales/pseudo.json +78 -0
  418. package/package.json +6 -1
  419. package/src/AppShell/AppShell.tsx +6 -0
  420. package/src/AppShell/AppShellMobileContext.tsx +8 -0
  421. package/src/AppShell/useAppShellMobile.doc.mjs +8 -0
  422. package/src/Avatar/Avatar.doc.mjs +64 -5
  423. package/src/Avatar/Avatar.test.tsx +374 -1
  424. package/src/Avatar/Avatar.tsx +367 -69
  425. package/src/Avatar/AvatarStatusDot.doc.mjs +23 -12
  426. package/src/Avatar/AvatarStatusDot.test.tsx +284 -0
  427. package/src/Avatar/AvatarStatusDot.tsx +180 -21
  428. package/src/AvatarGroup/AvatarGroup.doc.mjs +2 -0
  429. package/src/AvatarGroup/AvatarGroup.test.tsx +141 -1
  430. package/src/AvatarGroup/AvatarGroup.tsx +58 -3
  431. package/src/AvatarGroup/AvatarGroupOverflow.tsx +1 -0
  432. package/src/Banner/Banner.doc.mjs +9 -0
  433. package/src/Banner/Banner.test.tsx +30 -0
  434. package/src/Banner/Banner.tsx +53 -9
  435. package/src/Breadcrumbs/BreadcrumbItem.doc.mjs +26 -0
  436. package/src/Breadcrumbs/BreadcrumbItem.tsx +333 -14
  437. package/src/Breadcrumbs/Breadcrumbs.doc.mjs +2 -0
  438. package/src/Breadcrumbs/Breadcrumbs.test.tsx +335 -2
  439. package/src/Breadcrumbs/index.ts +31 -0
  440. package/src/Button/Button.doc.mjs +9 -4
  441. package/src/Button/Button.test.tsx +49 -0
  442. package/src/Button/Button.tsx +27 -3
  443. package/src/ButtonGroup/ButtonGroup.doc.mjs +3 -0
  444. package/src/ButtonGroup/ButtonGroup.test.tsx +37 -0
  445. package/src/ButtonGroup/ButtonGroup.tsx +32 -0
  446. package/src/Calendar/Calendar.doc.mjs +12 -1
  447. package/src/Calendar/Calendar.test.tsx +362 -19
  448. package/src/Calendar/Calendar.tsx +111 -32
  449. package/src/Calendar/dayCellUtils.test.ts +23 -18
  450. package/src/Calendar/dayCellUtils.ts +3 -3
  451. package/src/Calendar/styles.ts +33 -39
  452. package/src/Card/Card.doc.mjs +9 -0
  453. package/src/Card/Card.test.tsx +21 -3
  454. package/src/Card/Card.tsx +35 -2
  455. package/src/Carousel/Carousel.doc.mjs +1 -0
  456. package/src/Carousel/Carousel.test.tsx +53 -0
  457. package/src/Carousel/Carousel.tsx +59 -10
  458. package/src/Chat/ChatComposer.doc.mjs +12 -3
  459. package/src/Chat/ChatComposer.test.tsx +115 -0
  460. package/src/Chat/ChatComposer.tsx +73 -9
  461. package/src/Chat/ChatComposerDrawer.test.tsx +61 -0
  462. package/src/Chat/ChatComposerDrawer.tsx +11 -1
  463. package/src/Chat/ChatComposerInput.doc.mjs +7 -0
  464. package/src/Chat/ChatComposerInput.test.tsx +103 -0
  465. package/src/Chat/ChatComposerInput.tsx +51 -5
  466. package/src/Chat/ChatContext.tsx +37 -10
  467. package/src/Chat/ChatDictationButton.tsx +11 -2
  468. package/src/Chat/ChatLayout.tsx +7 -5
  469. package/src/Chat/ChatLayoutScrollButton.tsx +7 -2
  470. package/src/Chat/ChatMessageMetadata.tsx +1 -2
  471. package/src/Chat/ChatSendButton.tsx +11 -1
  472. package/src/Chat/ChatToolCalls.test.tsx +64 -0
  473. package/src/Chat/ChatToolCalls.tsx +33 -5
  474. package/src/Chat/index.ts +5 -1
  475. package/src/Chat/useChatStreamScroll.test.tsx +49 -0
  476. package/src/Chat/useChatStreamScroll.ts +27 -10
  477. package/src/Chat/useSpeechRecognition.ts +1 -1
  478. package/src/Chat/useTriggerMenu.tsx +4 -2
  479. package/src/CheckboxInput/CheckboxInput.doc.mjs +6 -0
  480. package/src/CheckboxInput/CheckboxInput.test.tsx +32 -1
  481. package/src/CheckboxInput/CheckboxInput.tsx +5 -5
  482. package/src/CheckboxList/CheckboxList.doc.mjs +6 -0
  483. package/src/CheckboxList/CheckboxList.test.tsx +81 -3
  484. package/src/CheckboxList/CheckboxListItem.doc.mjs +33 -5
  485. package/src/CheckboxList/CheckboxListItem.tsx +41 -5
  486. package/src/Citation/Citation.doc.mjs +4 -3
  487. package/src/Citation/Citation.test.tsx +97 -0
  488. package/src/Citation/Citation.tsx +43 -11
  489. package/src/ClickableCard/ClickableCard.doc.mjs +2 -0
  490. package/src/ClickableCard/ClickableCard.test.tsx +34 -0
  491. package/src/ClickableCard/ClickableCard.tsx +13 -3
  492. package/src/CodeBlock/CodeBlock.test.tsx +56 -0
  493. package/src/CodeBlock/CodeBlock.tsx +45 -10
  494. package/src/Collapsible/Collapsible.doc.mjs +1 -0
  495. package/src/Collapsible/Collapsible.test.tsx +7 -0
  496. package/src/Collapsible/Collapsible.tsx +16 -6
  497. package/src/CommandPalette/CommandPalette.doc.mjs +1 -0
  498. package/src/CommandPalette/CommandPalette.test.tsx +95 -1
  499. package/src/CommandPalette/CommandPalette.tsx +44 -3
  500. package/src/CommandPalette/CommandPaletteGroup.test.tsx +71 -0
  501. package/src/CommandPalette/CommandPaletteGroup.tsx +12 -1
  502. package/src/CommandPalette/CommandPaletteInput.doc.mjs +26 -9
  503. package/src/CommandPalette/CommandPaletteInput.test.tsx +34 -0
  504. package/src/CommandPalette/CommandPaletteInput.tsx +11 -0
  505. package/src/CommandPalette/CommandPaletteItem.tsx +1 -1
  506. package/src/ContextMenu/ContextMenu.test.tsx +235 -0
  507. package/src/ContextMenu/ContextMenu.tsx +13 -11
  508. package/src/ContextMenu/index.ts +5 -0
  509. package/src/DateInput/DateInput.doc.mjs +41 -0
  510. package/src/DateInput/DateInput.test.tsx +338 -0
  511. package/src/DateInput/DateInput.tsx +119 -32
  512. package/src/DateInput/index.ts +1 -0
  513. package/src/DateRangeInput/DateRangeInput.doc.mjs +16 -0
  514. package/src/DateRangeInput/DateRangeInput.test.tsx +140 -0
  515. package/src/DateRangeInput/DateRangeInput.tsx +42 -30
  516. package/src/DateTimeInput/DateTimeInput.doc.mjs +22 -1
  517. package/src/DateTimeInput/DateTimeInput.test.tsx +147 -0
  518. package/src/DateTimeInput/DateTimeInput.tsx +58 -41
  519. package/src/Dialog/Dialog.doc.mjs +2 -2
  520. package/src/Dialog/Dialog.test.tsx +77 -4
  521. package/src/Dialog/Dialog.tsx +89 -5
  522. package/src/Dialog/DialogContext.ts +9 -2
  523. package/src/Dialog/DialogHeader.doc.mjs +2 -2
  524. package/src/Dialog/DialogHeader.tsx +9 -2
  525. package/src/Divider/Divider.tsx +2 -2
  526. package/src/DropdownMenu/DropdownMenu.test.tsx +229 -0
  527. package/src/DropdownMenu/DropdownMenu.tsx +31 -12
  528. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +9 -4
  529. package/src/DropdownMenu/DropdownMenuItem.tsx +9 -3
  530. package/src/DropdownMenu/DropdownMenuRadioGroup.tsx +1 -2
  531. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +8 -2
  532. package/src/DropdownMenu/DropdownMenuSubMenu.doc.mjs +88 -0
  533. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +635 -0
  534. package/src/DropdownMenu/DropdownMenuSubMenu.tsx +553 -0
  535. package/src/DropdownMenu/index.ts +16 -0
  536. package/src/DropdownMenu/menuItemHover.ts +39 -0
  537. package/src/DropdownMenu/menuItemRoles.ts +9 -0
  538. package/src/DropdownMenu/renderDropdownItems.tsx +29 -15
  539. package/src/Field/Field.test.tsx +57 -12
  540. package/src/Field/Field.tsx +20 -14
  541. package/src/Field/FieldLabel.tsx +9 -1
  542. package/src/Field/inputStyles.stylex.ts +2 -0
  543. package/src/FieldStatus/FieldStatus.doc.mjs +17 -5
  544. package/src/FieldStatus/FieldStatus.test.tsx +150 -40
  545. package/src/FieldStatus/FieldStatus.tsx +69 -5
  546. package/src/FileInput/FileInput.doc.mjs +23 -2
  547. package/src/FileInput/FileInput.test.tsx +135 -12
  548. package/src/FileInput/FileInput.tsx +65 -51
  549. package/src/HoverCard/HoverCard.doc.mjs +13 -0
  550. package/src/HoverCard/HoverCard.test.tsx +21 -2
  551. package/src/HoverCard/HoverCard.tsx +11 -0
  552. package/src/HoverCard/useHoverCard.doc.mjs +2 -0
  553. package/src/HoverCard/useHoverCard.tsx +39 -5
  554. package/src/Icon/Icon.doc.mjs +16 -2
  555. package/src/Icon/Icon.test.tsx +89 -0
  556. package/src/Icon/Icon.tsx +58 -5
  557. package/src/IconButton/IconButton.doc.mjs +8 -0
  558. package/src/IconButton/IconButton.test.tsx +15 -18
  559. package/src/Item/Item.test.tsx +40 -18
  560. package/src/Item/Item.tsx +38 -2
  561. package/src/Layer/useLayer.tsx +8 -0
  562. package/src/Lightbox/Lightbox.tsx +15 -7
  563. package/src/List/List.test.tsx +9 -8
  564. package/src/Markdown/Markdown.test.tsx +21 -0
  565. package/src/Markdown/Markdown.tsx +4 -0
  566. package/src/MobileNav/MobileNav.tsx +12 -1
  567. package/src/MobileNav/MobileNavToggle.test.tsx +116 -0
  568. package/src/MobileNav/MobileNavToggle.tsx +9 -1
  569. package/src/MultiSelector/MultiSelector.doc.mjs +24 -2
  570. package/src/MultiSelector/MultiSelector.test.tsx +498 -3
  571. package/src/MultiSelector/MultiSelector.tsx +149 -65
  572. package/src/MultiSelector/hooks.ts +17 -0
  573. package/src/NavMenu/NavHeadingMenuItem.tsx +1 -1
  574. package/src/NumberInput/NumberInput.doc.mjs +21 -0
  575. package/src/NumberInput/NumberInput.test.tsx +82 -7
  576. package/src/NumberInput/NumberInput.tsx +36 -28
  577. package/src/Outline/Outline.tsx +0 -1
  578. package/src/OverflowList/OverflowList.doc.mjs +39 -6
  579. package/src/OverflowList/OverflowList.test.tsx +111 -0
  580. package/src/OverflowList/OverflowList.tsx +48 -8
  581. package/src/Pagination/Pagination.tsx +11 -3
  582. package/src/Popover/Popover.tsx +7 -4
  583. package/src/Popover/usePopover.tsx +9 -13
  584. package/src/PowerSearch/PowerSearch.doc.mjs +29 -0
  585. package/src/PowerSearch/PowerSearch.test.tsx +43 -0
  586. package/src/PowerSearch/PowerSearch.tsx +10 -1
  587. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +67 -0
  588. package/src/PowerSearch/PowerSearchEditPopover.tsx +1 -1
  589. package/src/PowerSearch/usePowerSearchSource.ts +1 -2
  590. package/src/RadioList/RadioList.doc.mjs +6 -0
  591. package/src/RadioList/RadioList.tsx +2 -2
  592. package/src/RadioList/RadioListItem.tsx +4 -4
  593. package/src/SegmentedControl/SegmentedControlItem.tsx +2 -0
  594. package/src/SelectableCard/SelectableCard.doc.mjs +2 -0
  595. package/src/SelectableCard/SelectableCard.test.tsx +46 -4
  596. package/src/SelectableCard/SelectableCard.tsx +29 -16
  597. package/src/Selector/Selector.doc.mjs +15 -0
  598. package/src/Selector/Selector.test.tsx +417 -0
  599. package/src/Selector/Selector.tsx +86 -21
  600. package/src/Selector/hooks.ts +17 -0
  601. package/src/SideNav/SideNav.test.tsx +119 -3
  602. package/src/SideNav/SideNav.tsx +1 -8
  603. package/src/SideNav/SideNavCollapseButton.tsx +15 -8
  604. package/src/SideNav/SideNavHeading.tsx +24 -8
  605. package/src/SideNav/SideNavItem.tsx +10 -4
  606. package/src/Slider/Slider.doc.mjs +6 -0
  607. package/src/Slider/Slider.test.tsx +314 -13
  608. package/src/Slider/Slider.tsx +117 -28
  609. package/src/Switch/Switch.doc.mjs +142 -42
  610. package/src/Switch/Switch.test.tsx +54 -1
  611. package/src/Switch/Switch.tsx +90 -33
  612. package/src/TabList/Tab.tsx +2 -2
  613. package/src/TabList/TabMenu.tsx +2 -2
  614. package/src/Table/BaseTable.tsx +37 -7
  615. package/src/Table/Table.doc.mjs +11 -0
  616. package/src/Table/Table.test.tsx +85 -0
  617. package/src/Table/TableCell.tsx +3 -3
  618. package/src/Table/TableHeaderCell.tsx +3 -3
  619. package/src/Table/index.ts +5 -0
  620. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +15 -8
  621. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +24 -17
  622. package/src/Table/plugins/rowStatus/index.ts +7 -0
  623. package/src/Table/plugins/rowStatus/useTableRowStatus.test.tsx +138 -0
  624. package/src/Table/plugins/rowStatus/useTableRowStatus.tsx +189 -0
  625. package/src/Table/plugins/selection/useTableSelection.test.tsx +77 -3
  626. package/src/Table/plugins/selection/useTableSelection.tsx +22 -1
  627. package/src/Table/plugins/stickyColumns/useTableStickyColumns.tsx +1 -1
  628. package/src/Table/plugins/tree/useTableTreeData.test.tsx +135 -3
  629. package/src/Table/plugins/tree/useTableTreeData.tsx +139 -8
  630. package/src/Table/plugins/tree/useTableTreeState.test.tsx +104 -0
  631. package/src/Table/plugins/tree/useTableTreeState.tsx +46 -2
  632. package/src/Table/types.ts +33 -0
  633. package/src/Table/useBaseTablePlugins.ts +10 -6
  634. package/src/Table/useTableRowStatus.doc.mjs +30 -0
  635. package/src/Table/useTableSelection.doc.mjs +65 -14
  636. package/src/Table/useTableTreeData.doc.mjs +29 -0
  637. package/src/Table/useTableTreeState.doc.mjs +2 -2
  638. package/src/TextArea/TextArea.doc.mjs +21 -0
  639. package/src/TextArea/TextArea.test.tsx +32 -1
  640. package/src/TextArea/TextArea.tsx +27 -26
  641. package/src/TextInput/TextInput.doc.mjs +21 -0
  642. package/src/TextInput/TextInput.test.tsx +150 -0
  643. package/src/TextInput/TextInput.tsx +28 -25
  644. package/src/Thumbnail/Thumbnail.doc.mjs +19 -10
  645. package/src/Thumbnail/Thumbnail.test.tsx +98 -7
  646. package/src/Thumbnail/Thumbnail.tsx +142 -42
  647. package/src/Thumbnail/thumbnail.markers.stylex.ts +12 -0
  648. package/src/TimeInput/TimeInput.doc.mjs +21 -0
  649. package/src/TimeInput/TimeInput.test.tsx +99 -1
  650. package/src/TimeInput/TimeInput.tsx +43 -31
  651. package/src/Timestamp/Timestamp.doc.mjs +4 -4
  652. package/src/Timestamp/Timestamp.test.tsx +32 -0
  653. package/src/Timestamp/Timestamp.tsx +28 -8
  654. package/src/Toast/useToast.tsx +7 -8
  655. package/src/ToggleButton/ToggleButtonGroup.tsx +1 -1
  656. package/src/Token/Token.test.tsx +21 -15
  657. package/src/Token/Token.tsx +31 -14
  658. package/src/Token/index.ts +1 -1
  659. package/src/Tokenizer/Tokenizer.doc.mjs +38 -2
  660. package/src/Tokenizer/Tokenizer.test.tsx +206 -2
  661. package/src/Tokenizer/Tokenizer.tsx +30 -6
  662. package/src/Tooltip/Tooltip.test.tsx +46 -0
  663. package/src/Tooltip/useTooltip.tsx +20 -0
  664. package/src/TopNav/TopNav.test.tsx +125 -1
  665. package/src/TopNav/TopNavHeading.tsx +24 -8
  666. package/src/TopNav/TopNavMegaMenu.test.tsx +149 -1
  667. package/src/TopNav/TopNavMegaMenu.tsx +10 -4
  668. package/src/TopNav/TopNavMegaMenuFeaturedCard.doc.mjs +3 -3
  669. package/src/TopNav/TopNavMegaMenuFeaturedCard.tsx +19 -2
  670. package/src/TopNav/TopNavMenu.test.tsx +118 -4
  671. package/src/TopNav/TopNavMenu.tsx +83 -5
  672. package/src/TreeList/TreeList.doc.mjs +28 -0
  673. package/src/TreeList/TreeList.test.tsx +272 -0
  674. package/src/TreeList/TreeList.tsx +23 -2
  675. package/src/TreeList/TreeListBranches.tsx +24 -8
  676. package/src/TreeList/TreeListItem.tsx +84 -22
  677. package/src/TreeList/TreeListTypes.ts +27 -1
  678. package/src/TreeList/index.ts +2 -2
  679. package/src/Typeahead/BaseTypeahead.tsx +30 -15
  680. package/src/Typeahead/Typeahead.doc.mjs +13 -0
  681. package/src/Typeahead/Typeahead.test.tsx +50 -0
  682. package/src/Typeahead/Typeahead.tsx +11 -1
  683. package/src/Typeahead/TypeaheadItem.tsx +2 -1
  684. package/src/__tests__/inputWidthContract.test.tsx +62 -0
  685. package/src/authoring/doc.ts +1 -3
  686. package/src/doc-mjs.d.ts +19 -0
  687. package/src/docs-types.ts +5 -0
  688. package/src/hooks/computeOverflow.test.ts +422 -0
  689. package/src/hooks/computeOverflow.ts +290 -0
  690. package/src/hooks/index.ts +8 -0
  691. package/src/hooks/isRtlElement.ts +27 -0
  692. package/src/hooks/useDevWarning.test.tsx +45 -0
  693. package/src/hooks/useDevWarning.ts +54 -0
  694. package/src/hooks/useGridFocus.doc.mjs +3 -3
  695. package/src/hooks/useGridFocus.test.tsx +41 -0
  696. package/src/hooks/useGridFocus.ts +21 -10
  697. package/src/hooks/useInputStatusIcon.test.tsx +162 -0
  698. package/src/hooks/useInputStatusIcon.tsx +224 -0
  699. package/src/hooks/useListFocus.doc.mjs +25 -3
  700. package/src/hooks/useListFocus.test.tsx +153 -1
  701. package/src/hooks/useListFocus.ts +102 -9
  702. package/src/hooks/useOverflow.test.ts +96 -4
  703. package/src/hooks/useOverflow.ts +74 -33
  704. package/src/i18n/InternationalizationContext.ts +4 -0
  705. package/src/i18n/InternationalizationProvider.doc.mjs +99 -2
  706. package/src/i18n/InternationalizationProvider.tsx +12 -2
  707. package/src/i18n/__tests__/getLocaleDirection.test.ts +40 -0
  708. package/src/i18n/__tests__/useDirection.test.tsx +66 -0
  709. package/src/i18n/getLocaleDirection.ts +29 -0
  710. package/src/i18n/index.ts +6 -0
  711. package/src/i18n/resolve.ts +9 -21
  712. package/src/i18n/useDirection.ts +29 -0
  713. package/src/reset.css +0 -26
  714. package/src/reset.test.ts +60 -0
  715. package/src/theme/Theme.tsx +11 -14
  716. package/src/theme/derivedVarRegistry.test.ts +1 -0
  717. package/src/theme/derivedVarRegistry.ts +6 -0
  718. package/src/theme/generateThemeRules.test.ts +107 -0
  719. package/src/theme/generateThemeRules.ts +56 -0
  720. package/src/theme/hct.ts +1 -1
  721. package/src/theme/syntax/defineSyntaxTheme.ts +5 -6
  722. package/src/utils/devWarning.test.ts +56 -0
  723. package/src/utils/devWarning.ts +102 -0
  724. package/src/utils/index.ts +8 -0
  725. package/src/utils/plainDate.test.ts +46 -6
  726. package/src/utils/plainDate.ts +69 -3
  727. package/src/utils/rtlStyles.ts +27 -0
  728. package/src/utils/types.ts +14 -0
@@ -4,7 +4,7 @@
4
4
 
5
5
  /**
6
6
  * @file Slider.tsx
7
- * @input Uses React, useId, useRef, useCallback, Field, Tooltip, useTooltip
7
+ * @input Uses React, useId, useRef, useCallback, Field, Tooltip, useTooltip, VisuallyHidden
8
8
  * @output Exports Slider component, SliderProps, SliderSingleProps, SliderRangeProps, SliderBaseProps
9
9
  * @position Core implementation; consumed by index.ts, tested by Slider.test.tsx
10
10
  *
@@ -38,8 +38,10 @@ import {
38
38
  import {Field} from '../Field/Field';
39
39
  import {Tooltip} from '../Tooltip/Tooltip';
40
40
  import {useTooltip} from '../Tooltip';
41
+ import {VisuallyHidden} from '../VisuallyHidden';
41
42
  import type {InputStatus} from '../Field/types';
42
43
  import {mergeProps, mergeRefs} from '../utils';
44
+ import {isRtlElement} from '../hooks/isRtlElement';
43
45
  import type {BaseProps} from '../BaseProps';
44
46
  import type {SizeValue} from '../utils/types';
45
47
  import {themeProps} from '../utils/themeProps';
@@ -191,8 +193,8 @@ const styles = stylex.create({
191
193
  borderRadius: radiusVars['--radius-full'],
192
194
  },
193
195
  trackHorizontal: {
194
- left: 0,
195
- right: 0,
196
+ insetInlineStart: 0,
197
+ insetInlineEnd: 0,
196
198
  height: TRACK_SIZE,
197
199
  top: '50%',
198
200
  transform: 'translateY(-50%)',
@@ -201,7 +203,7 @@ const styles = stylex.create({
201
203
  top: 0,
202
204
  bottom: 0,
203
205
  width: TRACK_SIZE,
204
- left: '50%',
206
+ insetInlineStart: '50%',
205
207
  transform: 'translateX(-50%)',
206
208
  },
207
209
  filledTrack: {
@@ -216,7 +218,7 @@ const styles = stylex.create({
216
218
  },
217
219
  filledTrackVertical: {
218
220
  width: TRACK_SIZE,
219
- left: '50%',
221
+ insetInlineStart: '50%',
220
222
  transform: 'translateX(-50%)',
221
223
  },
222
224
  thumb: {
@@ -238,9 +240,17 @@ const styles = stylex.create({
238
240
  },
239
241
  thumbHorizontal: {
240
242
  top: '50%',
243
+ // The thumb is positioned via logical `insetInlineStart`, which resolves
244
+ // from the right edge under RTL. The centering translate is a physical
245
+ // (screen-space) transform, so it must flip its X direction under RTL to
246
+ // keep the thumb centered on the value point.
247
+ transform: {
248
+ default: 'translate(-50%, -50%)',
249
+ ':is([dir="rtl"] *)': 'translate(50%, -50%)',
250
+ },
241
251
  },
242
252
  thumbVertical: {
243
- left: '50%',
253
+ insetInlineStart: '50%',
244
254
  transform: 'translate(-50%, 50%)',
245
255
  },
246
256
  thumbHover: {
@@ -276,14 +286,14 @@ const styles = stylex.create({
276
286
  position: 'absolute',
277
287
  },
278
288
  marksContainerHorizontal: {
279
- left: 0,
280
- right: 0,
289
+ insetInlineStart: 0,
290
+ insetInlineEnd: 0,
281
291
  top: '50%',
282
292
  },
283
293
  marksContainerVertical: {
284
294
  top: 0,
285
295
  bottom: 0,
286
- left: '50%',
296
+ insetInlineStart: '50%',
287
297
  },
288
298
  mark: {
289
299
  position: 'absolute',
@@ -293,7 +303,10 @@ const styles = stylex.create({
293
303
  markHorizontal: {
294
304
  width: 2,
295
305
  height: 8,
296
- transform: 'translate(-50%, -50%)',
306
+ transform: {
307
+ default: 'translate(-50%, -50%)',
308
+ ':is([dir="rtl"] *)': 'translate(50%, -50%)',
309
+ },
297
310
  },
298
311
  markVertical: {
299
312
  height: 2,
@@ -308,12 +321,15 @@ const styles = stylex.create({
308
321
  whiteSpace: 'nowrap',
309
322
  },
310
323
  markLabelHorizontal: {
311
- transform: 'translateX(-50%)',
324
+ transform: {
325
+ default: 'translateX(-50%)',
326
+ ':is([dir="rtl"] *)': 'translateX(50%)',
327
+ },
312
328
  top: THUMB_SIZE / 2 + 4,
313
329
  },
314
330
  markLabelVertical: {
315
331
  transform: 'translateY(50%)',
316
- left: THUMB_SIZE / 2 + 4,
332
+ insetInlineStart: THUMB_SIZE / 2 + 4,
317
333
  },
318
334
  });
319
335
 
@@ -325,12 +341,39 @@ function clamp(val: number, min: number, max: number): number {
325
341
  return Math.min(Math.max(val, min), max);
326
342
  }
327
343
 
344
+ /**
345
+ * Number of decimal places a value carries, including values in exponent
346
+ * notation (e.g. 1e-7 → 7). Used to round away binary floating-point error
347
+ * after step arithmetic.
348
+ */
349
+ function getDecimalPrecision(num: number): number {
350
+ if (Math.abs(num) < 1) {
351
+ const parts = num.toExponential().split('e-');
352
+ if (parts.length === 2) {
353
+ const mantissaDecimals = parts[0].split('.')[1]?.length ?? 0;
354
+ return mantissaDecimals + parseInt(parts[1], 10);
355
+ }
356
+ }
357
+ const decimalPart = String(num).split('.')[1];
358
+ return decimalPart ? decimalPart.length : 0;
359
+ }
360
+
328
361
  function snapToStep(val: number, min: number, step: number): number {
329
362
  if (step <= 0) {
330
363
  return val;
331
364
  }
332
365
  const steps = Math.round((val - min) / step);
333
- return min + steps * step;
366
+ const snapped = min + steps * step;
367
+ // `min + steps * step` accumulates binary floating-point error with
368
+ // fractional steps (0 + 3 * 0.1 → 0.30000000000000004), which leaks into
369
+ // onChange/onChangeEnd payloads, aria-valuenow, and the value tooltip.
370
+ // Snapped values can never carry more decimals than min/step combined, so
371
+ // rounding to that precision removes only the error.
372
+ const precision = Math.min(
373
+ Math.max(getDecimalPrecision(min), getDecimalPrecision(step)),
374
+ 20, // toFixed() throws past 20 digits
375
+ );
376
+ return Number(snapped.toFixed(precision));
334
377
  }
335
378
 
336
379
  function getPercent(val: number, min: number, max: number): number {
@@ -391,8 +434,10 @@ export function Slider({ref, ...props}: SliderProps) {
391
434
  const isHorizontal = orientation === 'horizontal';
392
435
 
393
436
  const id = useId();
437
+ const labelID = useId();
394
438
  const descriptionID = useId();
395
439
  const statusMessageID = useId();
440
+ const requiredID = useId();
396
441
 
397
442
  const trackRef = useRef<HTMLDivElement>(null);
398
443
  const draggingThumbRef = useRef<number | null>(null);
@@ -412,6 +457,12 @@ export function Slider({ref, ...props}: SliderProps) {
412
457
  isEnabled: showsDisabledMessage,
413
458
  });
414
459
 
460
+ // Required state. `aria-required` is not a supported property of
461
+ // role="slider" in WAI-ARIA 1.2, so the thumb instead points its
462
+ // aria-describedby at a visually hidden "Required" span — mirroring the
463
+ // Field label's visible indicator (where isOptional takes precedence).
464
+ const conveysRequired = isRequired && !isOptional;
465
+
415
466
  // Build aria-describedby
416
467
  const describedByParts: string[] = [];
417
468
  if (description) {
@@ -420,6 +471,9 @@ export function Slider({ref, ...props}: SliderProps) {
420
471
  if (status?.message) {
421
472
  describedByParts.push(statusMessageID);
422
473
  }
474
+ if (conveysRequired) {
475
+ describedByParts.push(requiredID);
476
+ }
423
477
  if (showsDisabledMessage) {
424
478
  describedByParts.push(disabledMessageTooltip.describedBy);
425
479
  }
@@ -428,10 +482,12 @@ export function Slider({ref, ...props}: SliderProps) {
428
482
 
429
483
  // Value helpers — guard against undefined value (e.g. playground previews
430
484
  // that render the component without providing a value prop).
431
- const values: number[] = useMemo(
432
- () => (isRange ? value : [value != null ? value : min]),
433
- [isRange, value, min],
434
- );
485
+ const values: number[] = useMemo(() => {
486
+ const currentValues = Array.isArray(value)
487
+ ? value
488
+ : [value != null ? value : min];
489
+ return currentValues.map(currentValue => clamp(currentValue, min, max));
490
+ }, [value, min, max]);
435
491
 
436
492
  const valuesRef = useRef(values);
437
493
  valuesRef.current = values;
@@ -446,7 +502,12 @@ export function Slider({ref, ...props}: SliderProps) {
446
502
 
447
503
  let percent: number;
448
504
  if (isHorizontal) {
449
- percent = (clientX - rect.left) / rect.width;
505
+ // In RTL the inline-start (value = min) is the right edge, so measure
506
+ // the pointer fraction from the right instead of the left. Detected
507
+ // from the track's computed direction (lazy, only on pointer move).
508
+ percent = isRtlElement(track)
509
+ ? (rect.right - clientX) / rect.width
510
+ : (clientX - rect.left) / rect.width;
450
511
  } else {
451
512
  // Vertical: bottom = min, top = max
452
513
  percent = 1 - (clientY - rect.top) / rect.height;
@@ -679,14 +740,28 @@ export function Slider({ref, ...props}: SliderProps) {
679
740
  const percent = getPercent(val, min, max);
680
741
 
681
742
  const positionStyle = isHorizontal
682
- ? {left: `${percent}%`}
743
+ ? {insetInlineStart: `${percent}%`}
683
744
  : {bottom: `${percent}%`, left: '50%'};
684
745
 
746
+ // In range mode each thumb keeps a short individual name that composes
747
+ // with the group label (announced via the group's aria-labelledby), per
748
+ // the APG multi-thumb slider pattern. In single mode the thumb takes its
749
+ // name from the visible label element via aria-labelledby.
685
750
  const thumbLabel = isRange
686
751
  ? thumbIndex === 0
687
- ? `${label}, minimum value`
688
- : `${label}, maximum value`
689
- : label;
752
+ ? 'Minimum value'
753
+ : 'Maximum value'
754
+ : undefined;
755
+
756
+ // ARIA bounds must agree with the movement clamping in updateValue: in
757
+ // range mode a thumb can't cross its sibling (minus the
758
+ // minStepsBetweenThumbs gap), and the result is always clamped to
759
+ // [min, max].
760
+ const minGap = minStepsBetweenThumbs * step;
761
+ const ariaValueMin =
762
+ isRange && thumbIndex === 1 ? clamp(values[0] + minGap, min, max) : min;
763
+ const ariaValueMax =
764
+ isRange && thumbIndex === 0 ? clamp(values[1] - minGap, min, max) : max;
690
765
 
691
766
  // Suppress the per-thumb value bubble while the disabled-message tooltip is
692
767
  // showing, so a disabled slider surfaces the *reason* on hover/focus rather
@@ -703,14 +778,15 @@ export function Slider({ref, ...props}: SliderProps) {
703
778
  // focus-discoverable; value changes stay blocked by the isDisabled
704
779
  // guards in the pointer/keyboard handlers.
705
780
  tabIndex={isDisabled && !showsDisabledMessage ? -1 : 0}
706
- aria-valuemin={min}
707
- aria-valuemax={max}
781
+ aria-valuemin={ariaValueMin}
782
+ aria-valuemax={ariaValueMax}
708
783
  aria-valuenow={val}
709
784
  aria-valuetext={formatValue ? formatValue(val) : undefined}
710
785
  aria-orientation={orientation}
711
786
  aria-disabled={isDisabled || undefined}
712
787
  aria-invalid={status?.type === 'error' ? true : undefined}
713
788
  aria-label={thumbLabel}
789
+ aria-labelledby={!isRange ? labelID : undefined}
714
790
  aria-describedby={ariaDescribedBy}
715
791
  onKeyDown={e => handleKeyDown(thumbIndex, e)}
716
792
  {...mergeProps(
@@ -755,13 +831,13 @@ export function Slider({ref, ...props}: SliderProps) {
755
831
  const p0 = getPercent(v0, min, max);
756
832
  const p1 = getPercent(v1, min, max);
757
833
  if (isHorizontal) {
758
- return {left: `${p0}%`, width: `${p1 - p0}%`};
834
+ return {insetInlineStart: `${p0}%`, width: `${p1 - p0}%`};
759
835
  }
760
836
  return {bottom: `${p0}%`, height: `${p1 - p0}%`};
761
837
  }
762
838
  const p = getPercent(values[0], min, max);
763
839
  if (isHorizontal) {
764
- return {left: '0%', width: `${p}%`};
840
+ return {insetInlineStart: '0%', width: `${p}%`};
765
841
  }
766
842
  return {bottom: '0%', height: `${p}%`};
767
843
  })();
@@ -783,6 +859,14 @@ export function Slider({ref, ...props}: SliderProps) {
783
859
  isLabelHidden={isLabelHidden}
784
860
  description={description}
785
861
  inputID={id}
862
+ labelID={labelID}
863
+ // The thumb is a div[role="slider"], which a <label htmlFor> can't
864
+ // name (only form-associated elements are labelable). Render the label
865
+ // as a group label and associate it via aria-labelledby instead: the
866
+ // single thumb references it directly, and in range mode the
867
+ // role="group" container references it while each thumb keeps its own
868
+ // "Minimum value"/"Maximum value" name.
869
+ isGroupLabel
786
870
  descriptionID={description ? descriptionID : undefined}
787
871
  isOptional={isOptional}
788
872
  isRequired={isRequired}
@@ -825,7 +909,9 @@ export function Slider({ref, ...props}: SliderProps) {
825
909
  ))}
826
910
  <div
827
911
  ref={mergeRefs(ref, trackRef, disabledMessageTooltip.ref)}
828
- {...(isRange ? {role: 'group', 'aria-label': label} : undefined)}
912
+ {...(isRange
913
+ ? {role: 'group', 'aria-labelledby': labelID}
914
+ : undefined)}
829
915
  onPointerDown={handlePointerDown}
830
916
  onPointerMove={handlePointerMove}
831
917
  onPointerUp={handlePointerUp}
@@ -876,7 +962,7 @@ export function Slider({ref, ...props}: SliderProps) {
876
962
  {marks.map(mark => {
877
963
  const percent = getPercent(mark.value, min, max);
878
964
  const markPos = isHorizontal
879
- ? {left: `${percent}%`}
965
+ ? {insetInlineStart: `${percent}%`}
880
966
  : {bottom: `${percent}%`};
881
967
  return (
882
968
  <div key={mark.value}>
@@ -921,6 +1007,9 @@ export function Slider({ref, ...props}: SliderProps) {
921
1007
 
922
1008
  {textDisplay}
923
1009
  </div>
1010
+ {conveysRequired && (
1011
+ <VisuallyHidden id={requiredID}>Required</VisuallyHidden>
1012
+ )}
924
1013
  {showsDisabledMessage &&
925
1014
  disabledMessageTooltip.renderTooltip(disabledMessage)}
926
1015
  </Field>
@@ -6,7 +6,14 @@ export const docs = {
6
6
  name: 'Switch',
7
7
  displayName: 'Switch',
8
8
  category: 'Data Input',
9
- keywords: ["switch","toggle","onoff","flipswitch","boolean","toggleswitch"],
9
+ keywords: [
10
+ 'switch',
11
+ 'toggle',
12
+ 'onoff',
13
+ 'flipswitch',
14
+ 'boolean',
15
+ 'toggleswitch',
16
+ ],
10
17
  props: [
11
18
  {
12
19
  name: 'ref',
@@ -62,6 +69,13 @@ export const docs = {
62
69
  description: 'Whether the switch is disabled.',
63
70
  default: 'false',
64
71
  },
72
+ {
73
+ name: 'size',
74
+ type: "'sm' | 'md'",
75
+ description:
76
+ 'Size variant controlling track and thumb dimensions. sm (32x20px) matches sm checkbox/radio vertical rhythm; md (40x24px, default) matches md checkbox/radio vertical rhythm.',
77
+ default: "'md'",
78
+ },
65
79
  {
66
80
  name: 'htmlName',
67
81
  type: 'string',
@@ -107,7 +121,8 @@ export const docs = {
107
121
  {
108
122
  name: 'labelIcon',
109
123
  type: 'IconType',
110
- description: 'Icon displayed before the label text. See `astryx docs icons` for valid semantic names.',
124
+ description:
125
+ 'Icon displayed before the label text. See `astryx docs icons` for valid semantic names.',
111
126
  },
112
127
  {
113
128
  name: 'labelTooltip',
@@ -129,23 +144,60 @@ export const docs = {
129
144
  'Spacing behavior between label and switch. "hug" places them next to each other; "spread" pushes them to opposite ends of the container (full width). "default" is a deprecated alias for "hug".',
130
145
  default: "'hug'",
131
146
  },
147
+ {
148
+ name: 'width',
149
+ type: 'SizeValue',
150
+ description:
151
+ 'Width of the field (number = pixels, string used as-is, e.g. "100%"). Sizes the whole field (label, control, and status) so they stay aligned.',
152
+ },
132
153
  ],
133
154
  theming: {
134
155
  targets: [
135
- {className: 'astryx-switch', states: ['checked', 'disabled']},
136
- {className: 'astryx-switch-thumb', states: ['checked']},
137
- {className: 'astryx-switch-field', visualProps: ['labelPosition', 'labelSpacing']},
156
+ {
157
+ className: 'astryx-switch',
158
+ visualProps: ['size'],
159
+ states: ['checked', 'disabled'],
160
+ },
161
+ {
162
+ className: 'astryx-switch-thumb',
163
+ visualProps: ['size'],
164
+ states: ['checked'],
165
+ },
166
+ {
167
+ className: 'astryx-switch-field',
168
+ visualProps: ['labelPosition', 'labelSpacing'],
169
+ },
138
170
  ],
139
171
  },
140
172
  usage: {
141
173
  description:
142
174
  'A toggle control for on/off states that take effect immediately. Supports labels, descriptions, loading states, and validation. Use it for settings or preferences that apply instantly. For changes requiring a form submission, use a checkbox instead.',
143
175
  bestPractices: [
144
- { guidance: true, description: 'Use for settings that apply immediately; the toggle should take effect without a separate save action.' },
145
- { guidance: true, description: 'Pair with a clear, concise label that describes the setting being controlled.' },
146
- { guidance: false, description: 'Use for options that require a form submission to take effect; use a checkbox instead.' },
147
- { guidance: false, description: 'Use a switch for multi-state values; it\'s strictly on/off.' },
148
- { guidance: false, description: 'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.' },
176
+ {
177
+ guidance: true,
178
+ description:
179
+ 'Use for settings that apply immediately; the toggle should take effect without a separate save action.',
180
+ },
181
+ {
182
+ guidance: true,
183
+ description:
184
+ 'Pair with a clear, concise label that describes the setting being controlled.',
185
+ },
186
+ {
187
+ guidance: false,
188
+ description:
189
+ 'Use for options that require a form submission to take effect; use a checkbox instead.',
190
+ },
191
+ {
192
+ guidance: false,
193
+ description:
194
+ "Use a switch for multi-state values; it's strictly on/off.",
195
+ },
196
+ {
197
+ guidance: false,
198
+ description:
199
+ 'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.',
200
+ },
149
201
  ],
150
202
  },
151
203
  };
@@ -163,8 +215,7 @@ export const docsZh = {
163
215
  {
164
216
  name: 'label',
165
217
  type: 'string',
166
- description:
167
- '开关的标签文本(始终渲染以确保无障碍性)。',
218
+ description: '开关的标签文本(始终渲染以确保无障碍性)。',
168
219
  required: true,
169
220
  },
170
221
  {
@@ -187,15 +238,13 @@ export const docsZh = {
187
238
  {
188
239
  name: 'isLoading',
189
240
  type: 'boolean',
190
- description:
191
- '开关是否处于加载状态,在滑块内显示旋转器。',
241
+ description: '开关是否处于加载状态,在滑块内显示旋转器。',
192
242
  default: 'false',
193
243
  },
194
244
  {
195
245
  name: 'isLabelHidden',
196
246
  type: 'boolean',
197
- description:
198
- '视觉上隐藏标签,同时保持屏幕阅读器的无障碍性。',
247
+ description: '视觉上隐藏标签,同时保持屏幕阅读器的无障碍性。',
199
248
  default: 'false',
200
249
  },
201
250
  {
@@ -212,7 +261,8 @@ export const docsZh = {
212
261
  {
213
262
  name: 'htmlName',
214
263
  type: 'string',
215
- description: '底层复选框输入的 HTML name 属性,用于表单提交(开启时提交 "on")。',
264
+ description:
265
+ '底层复选框输入的 HTML name 属性,用于表单提交(开启时提交 "on")。',
216
266
  },
217
267
  {
218
268
  name: 'disabledMessage',
@@ -223,15 +273,13 @@ export const docsZh = {
223
273
  {
224
274
  name: 'isOptional',
225
275
  type: 'boolean',
226
- description:
227
- '字段是否为可选。与 isRequired 互斥。',
276
+ description: '字段是否为可选。与 isRequired 互斥。',
228
277
  default: 'false',
229
278
  },
230
279
  {
231
280
  name: 'isRequired',
232
281
  type: 'boolean',
233
- description:
234
- '开关是否为必填。与 isOptional 互斥。',
282
+ description: '开关是否为必填。与 isOptional 互斥。',
235
283
  default: 'false',
236
284
  },
237
285
  {
@@ -258,14 +306,12 @@ export const docsZh = {
258
306
  {
259
307
  name: 'labelTooltip',
260
308
  type: 'string',
261
- description:
262
- '在标签末尾的信息图标中显示的工具提示文本。',
309
+ description: '在标签末尾的信息图标中显示的工具提示文本。',
263
310
  },
264
311
  {
265
312
  name: 'labelPosition',
266
313
  type: "'start' | 'end'",
267
- description:
268
- '标签出现在开关的哪一侧。"start" 将标签放在开关前面。',
314
+ description: '标签出现在开关的哪一侧。"start" 将标签放在开关前面。',
269
315
  default: "'end'",
270
316
  },
271
317
  {
@@ -278,20 +324,51 @@ export const docsZh = {
278
324
  ],
279
325
  theming: {
280
326
  targets: [
281
- {className: 'astryx-switch', states: ['checked', 'disabled']},
282
- {className: 'astryx-switch-thumb', states: ['checked']},
283
- {className: 'astryx-switch-field', visualProps: ['labelPosition', 'labelSpacing']},
327
+ {
328
+ className: 'astryx-switch',
329
+ visualProps: ['size'],
330
+ states: ['checked', 'disabled'],
331
+ },
332
+ {
333
+ className: 'astryx-switch-thumb',
334
+ visualProps: ['size'],
335
+ states: ['checked'],
336
+ },
337
+ {
338
+ className: 'astryx-switch-field',
339
+ visualProps: ['labelPosition', 'labelSpacing'],
340
+ },
284
341
  ],
285
342
  },
286
343
  usage: {
287
344
  description:
288
345
  'A toggle control for on/off states that take effect immediately. Supports labels, descriptions, loading states, and validation. Use it for settings or preferences that apply instantly. For changes requiring a form submission, use a checkbox instead.',
289
346
  bestPractices: [
290
- { guidance: true, description: 'Use for settings that apply immediately; the toggle should take effect without a separate save action.' },
291
- { guidance: true, description: 'Pair with a clear, concise label that describes the setting being controlled.' },
292
- { guidance: false, description: 'Use for options that require a form submission to take effect; use a checkbox instead.' },
293
- { guidance: false, description: 'Use a switch for multi-state values; it\'s strictly on/off.' },
294
- { guidance: false, description: 'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.' },
347
+ {
348
+ guidance: true,
349
+ description:
350
+ 'Use for settings that apply immediately; the toggle should take effect without a separate save action.',
351
+ },
352
+ {
353
+ guidance: true,
354
+ description:
355
+ 'Pair with a clear, concise label that describes the setting being controlled.',
356
+ },
357
+ {
358
+ guidance: false,
359
+ description:
360
+ 'Use for options that require a form submission to take effect; use a checkbox instead.',
361
+ },
362
+ {
363
+ guidance: false,
364
+ description:
365
+ "Use a switch for multi-state values; it's strictly on/off.",
366
+ },
367
+ {
368
+ guidance: false,
369
+ description:
370
+ 'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.',
371
+ },
295
372
  ],
296
373
  },
297
374
  };
@@ -303,11 +380,31 @@ export const docsDense = {
303
380
  description:
304
381
  'A toggle control for on/off states that take effect immediately. Supports labels, descriptions, loading states, and validation. Use it for settings or preferences that apply instantly. For changes requiring a form submission, use a checkbox instead.',
305
382
  bestPractices: [
306
- { guidance: true, description: 'Use for settings that apply immediately; the toggle should take effect without a separate save action.' },
307
- { guidance: true, description: 'Pair with a clear, concise label that describes the setting being controlled.' },
308
- { guidance: false, description: 'Use for options that require a form submission to take effect; use a checkbox instead.' },
309
- { guidance: false, description: 'Use a switch for multi-state values; it\'s strictly on/off.' },
310
- { guidance: false, description: 'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.' },
383
+ {
384
+ guidance: true,
385
+ description:
386
+ 'Use for settings that apply immediately; the toggle should take effect without a separate save action.',
387
+ },
388
+ {
389
+ guidance: true,
390
+ description:
391
+ 'Pair with a clear, concise label that describes the setting being controlled.',
392
+ },
393
+ {
394
+ guidance: false,
395
+ description:
396
+ 'Use for options that require a form submission to take effect; use a checkbox instead.',
397
+ },
398
+ {
399
+ guidance: false,
400
+ description:
401
+ "Use a switch for multi-state values; it's strictly on/off.",
402
+ },
403
+ {
404
+ guidance: false,
405
+ description:
406
+ 'Wrap a disabled switch in Tooltip to explain why it is disabled; disabled controls swallow the hover events the wrapper needs. Use the disabledMessage prop instead.',
407
+ },
311
408
  ],
312
409
  },
313
410
  propDescriptions: {
@@ -315,7 +412,8 @@ export const docsDense = {
315
412
  label: 'Label text (always rendered for a11y).',
316
413
  value: 'Whether switch is on or off.',
317
414
  onChange: 'Fired when switch state changes.',
318
- changeAction: 'Async action after onChange; triggers optimistic UI + loading spinner until resolved.',
415
+ changeAction:
416
+ 'Async action after onChange; triggers optimistic UI + loading spinner until resolved.',
319
417
  isLoading: 'Loading state; shows spinner in thumb.',
320
418
  isLabelHidden: 'Visually hides label; still accessible to screen readers.',
321
419
  description: 'Description text below label.',
@@ -323,12 +421,14 @@ export const docsDense = {
323
421
  htmlName: 'HTML name attr for the checkbox; submits "on" when on.',
324
422
  isOptional: 'Whether field is optional; mutually exclusive w/ isRequired.',
325
423
  isRequired: 'Whether switch is required; mutually exclusive w/ isOptional.',
326
- status: 'Status indicator w/ type + message; colored message box, sets aria-invalid on error.',
424
+ status:
425
+ 'Status indicator w/ type + message; colored message box, sets aria-invalid on error.',
327
426
  onFocus: 'Fired when switch receives focus.',
328
427
  onBlur: 'Fired when switch loses focus.',
329
428
  labelIcon: 'Icon before label text.',
330
429
  labelTooltip: 'Tooltip text in info icon at label end.',
331
430
  labelPosition: 'Which side label appears; "start" places before switch.',
332
- labelSpacing: 'Spacing behavior; "hug" places next to each other, "spread" pushes to opposite ends (full width). "default" is deprecated alias for "hug".',
431
+ labelSpacing:
432
+ 'Spacing behavior; "hug" places next to each other, "spread" pushes to opposite ends (full width). "default" is deprecated alias for "hug".',
333
433
  },
334
- };
434
+ };