@astryxdesign/core 0.3.0-canary.fbc60c5 → 0.3.0-canary.fcbc342

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 (430) hide show
  1. package/dist/AlertDialog/AlertDialog.d.ts +10 -2
  2. package/dist/AlertDialog/AlertDialog.d.ts.map +1 -1
  3. package/dist/AlertDialog/AlertDialog.js +22 -3
  4. package/dist/Avatar/Avatar.d.ts.map +1 -1
  5. package/dist/Avatar/Avatar.js +2 -10
  6. package/dist/AvatarGroup/AvatarGroupOverflow.d.ts.map +1 -1
  7. package/dist/AvatarGroup/AvatarGroupOverflow.js +2 -3
  8. package/dist/Banner/Banner.d.ts.map +1 -1
  9. package/dist/Banner/Banner.js +15 -14
  10. package/dist/Breadcrumbs/BreadcrumbItem.d.ts.map +1 -1
  11. package/dist/Breadcrumbs/BreadcrumbItem.js +21 -8
  12. package/dist/Button/Button.d.ts.map +1 -1
  13. package/dist/Button/Button.js +11 -15
  14. package/dist/Calendar/Calendar.d.ts.map +1 -1
  15. package/dist/Calendar/Calendar.js +2 -1
  16. package/dist/Calendar/styles.d.ts +0 -2
  17. package/dist/Calendar/styles.d.ts.map +1 -1
  18. package/dist/Calendar/styles.js +0 -2
  19. package/dist/Carousel/Carousel.d.ts.map +1 -1
  20. package/dist/Carousel/Carousel.js +8 -12
  21. package/dist/Chat/ChatDictationButton.d.ts.map +1 -1
  22. package/dist/Chat/ChatDictationButton.js +2 -1
  23. package/dist/Chat/ChatLayoutScrollButton.d.ts.map +1 -1
  24. package/dist/Chat/ChatLayoutScrollButton.js +3 -1
  25. package/dist/Chat/ChatSendButton.d.ts.map +1 -1
  26. package/dist/Chat/ChatSendButton.js +4 -3
  27. package/dist/Chat/ChatToolCalls.d.ts.map +1 -1
  28. package/dist/Chat/ChatToolCalls.js +17 -17
  29. package/dist/CheckboxInput/CheckboxInput.d.ts.map +1 -1
  30. package/dist/CheckboxInput/CheckboxInput.js +36 -125
  31. package/dist/ClickableCard/ClickableCard.d.ts.map +1 -1
  32. package/dist/ClickableCard/ClickableCard.js +3 -11
  33. package/dist/CodeBlock/CodeBlock.d.ts.map +1 -1
  34. package/dist/CodeBlock/CodeBlock.js +73 -63
  35. package/dist/Collapsible/Collapsible.d.ts.map +1 -1
  36. package/dist/Collapsible/Collapsible.js +35 -15
  37. package/dist/CommandPalette/CommandPaletteItem.d.ts +1 -1
  38. package/dist/CommandPalette/CommandPaletteItem.d.ts.map +1 -1
  39. package/dist/CommandPalette/CommandPaletteItem.js +6 -3
  40. package/dist/CommandPalette/CommandPaletteList.js +1 -1
  41. package/dist/ComplexSelector/ComplexSelector.d.ts +1 -1
  42. package/dist/ComplexSelector/ComplexSelector.d.ts.map +1 -1
  43. package/dist/ComplexSelector/ComplexSelector.js +27 -30
  44. package/dist/ContextMenu/ContextMenu.js +1 -1
  45. package/dist/DateInput/DateInput.d.ts +9 -2
  46. package/dist/DateInput/DateInput.d.ts.map +1 -1
  47. package/dist/DateInput/DateInput.js +5 -2
  48. package/dist/DateRangeInput/DateRangeInput.d.ts +9 -2
  49. package/dist/DateRangeInput/DateRangeInput.d.ts.map +1 -1
  50. package/dist/DateRangeInput/DateRangeInput.js +5 -2
  51. package/dist/DateTimeInput/DateTimeInput.d.ts +9 -1
  52. package/dist/DateTimeInput/DateTimeInput.d.ts.map +1 -1
  53. package/dist/DateTimeInput/DateTimeInput.js +5 -2
  54. package/dist/Dialog/Dialog.d.ts.map +1 -1
  55. package/dist/Dialog/Dialog.js +4 -4
  56. package/dist/DropdownMenu/DropdownMenu.d.ts +19 -5
  57. package/dist/DropdownMenu/DropdownMenu.d.ts.map +1 -1
  58. package/dist/DropdownMenu/DropdownMenu.js +55 -7
  59. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts +8 -11
  60. package/dist/DropdownMenu/DropdownMenuCheckboxItem.d.ts.map +1 -1
  61. package/dist/DropdownMenu/DropdownMenuCheckboxItem.js +32 -31
  62. package/dist/DropdownMenu/DropdownMenuItem.d.ts +7 -2
  63. package/dist/DropdownMenu/DropdownMenuItem.d.ts.map +1 -1
  64. package/dist/DropdownMenu/DropdownMenuItem.js +13 -4
  65. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts +5 -5
  66. package/dist/DropdownMenu/DropdownMenuRadioItem.d.ts.map +1 -1
  67. package/dist/DropdownMenu/DropdownMenuRadioItem.js +24 -67
  68. package/dist/DropdownMenu/renderDropdownItems.d.ts.map +1 -1
  69. package/dist/DropdownMenu/renderDropdownItems.js +21 -12
  70. package/dist/EmptyState/EmptyState.js +1 -1
  71. package/dist/Indicator/CheckIndicator.d.ts +25 -0
  72. package/dist/Indicator/CheckIndicator.d.ts.map +1 -0
  73. package/dist/Indicator/CheckIndicator.js +155 -0
  74. package/dist/Indicator/CheckboxIndicator.d.ts +22 -0
  75. package/dist/Indicator/CheckboxIndicator.d.ts.map +1 -0
  76. package/dist/Indicator/CheckboxIndicator.js +173 -0
  77. package/dist/Indicator/RadioIndicator.d.ts +23 -0
  78. package/dist/Indicator/RadioIndicator.d.ts.map +1 -0
  79. package/dist/Indicator/RadioIndicator.js +137 -0
  80. package/dist/Indicator/index.d.ts +24 -0
  81. package/dist/Indicator/index.d.ts.map +1 -0
  82. package/dist/Indicator/index.js +26 -0
  83. package/dist/Indicator/indicator.markers.stylex.d.ts +16 -0
  84. package/dist/Indicator/indicator.markers.stylex.d.ts.map +1 -0
  85. package/dist/Indicator/indicator.markers.stylex.js +21 -0
  86. package/dist/Indicator/indicatorRegistry.d.ts +71 -0
  87. package/dist/Indicator/indicatorRegistry.d.ts.map +1 -0
  88. package/dist/Indicator/indicatorRegistry.js +93 -0
  89. package/dist/Indicator/types.d.ts +160 -0
  90. package/dist/Indicator/types.d.ts.map +1 -0
  91. package/dist/Indicator/types.js +1 -0
  92. package/dist/Indicator/useIndicator.d.ts +18 -0
  93. package/dist/Indicator/useIndicator.d.ts.map +1 -0
  94. package/dist/Indicator/useIndicator.js +30 -0
  95. package/dist/Item/Item.d.ts.map +1 -1
  96. package/dist/Item/Item.js +4 -8
  97. package/dist/Lightbox/Lightbox.d.ts.map +1 -1
  98. package/dist/Lightbox/Lightbox.js +56 -53
  99. package/dist/Link/Link.d.ts.map +1 -1
  100. package/dist/Link/Link.js +4 -5
  101. package/dist/MobileNav/MobileNav.js +8 -8
  102. package/dist/MultiSelector/MultiSelector.d.ts.map +1 -1
  103. package/dist/MultiSelector/MultiSelector.js +71 -54
  104. package/dist/NumberInput/NumberInput.d.ts +10 -1
  105. package/dist/NumberInput/NumberInput.d.ts.map +1 -1
  106. package/dist/NumberInput/NumberInput.js +9 -6
  107. package/dist/Outline/Outline.d.ts.map +1 -1
  108. package/dist/Outline/Outline.js +2 -3
  109. package/dist/Pagination/Pagination.d.ts.map +1 -1
  110. package/dist/Pagination/Pagination.js +53 -51
  111. package/dist/PowerSearch/PowerSearchEditPopover.d.ts.map +1 -1
  112. package/dist/PowerSearch/PowerSearchEditPopover.js +7 -0
  113. package/dist/RadioList/RadioListItem.d.ts.map +1 -1
  114. package/dist/RadioList/RadioListItem.js +29 -84
  115. package/dist/Resizable/ResizeHandle.d.ts.map +1 -1
  116. package/dist/Resizable/ResizeHandle.js +2 -3
  117. package/dist/SegmentedControl/SegmentedControlItem.d.ts.map +1 -1
  118. package/dist/SegmentedControl/SegmentedControlItem.js +2 -3
  119. package/dist/SelectableCard/SelectableCard.d.ts.map +1 -1
  120. package/dist/SelectableCard/SelectableCard.js +3 -11
  121. package/dist/Selector/Selector.d.ts +2 -1
  122. package/dist/Selector/Selector.d.ts.map +1 -1
  123. package/dist/Selector/Selector.js +160 -76
  124. package/dist/Selector/hooks.d.ts +18 -6
  125. package/dist/Selector/hooks.d.ts.map +1 -1
  126. package/dist/Selector/hooks.js +57 -40
  127. package/dist/SideNav/SideNav.d.ts.map +1 -1
  128. package/dist/SideNav/SideNav.js +1 -1
  129. package/dist/SideNav/SideNavCollapseButton.d.ts +1 -1
  130. package/dist/SideNav/SideNavCollapseButton.d.ts.map +1 -1
  131. package/dist/SideNav/SideNavCollapseButton.js +29 -14
  132. package/dist/SideNav/SideNavHeading.d.ts.map +1 -1
  133. package/dist/SideNav/SideNavHeading.js +56 -20
  134. package/dist/SideNav/SideNavItem.d.ts.map +1 -1
  135. package/dist/SideNav/SideNavItem.js +28 -22
  136. package/dist/Switch/Switch.js +11 -10
  137. package/dist/TabList/Tab.d.ts.map +1 -1
  138. package/dist/TabList/Tab.js +2 -3
  139. package/dist/TabList/TabMenu.d.ts.map +1 -1
  140. package/dist/TabList/TabMenu.js +41 -19
  141. package/dist/Table/BaseTable.d.ts.map +1 -1
  142. package/dist/Table/BaseTable.js +8 -0
  143. package/dist/Table/index.d.ts +1 -1
  144. package/dist/Table/index.d.ts.map +1 -1
  145. package/dist/Table/index.js +1 -1
  146. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts +1 -1
  147. package/dist/Table/plugins/groupedRows/useTableGroupedRows.d.ts.map +1 -1
  148. package/dist/Table/plugins/groupedRows/useTableGroupedRows.js +22 -18
  149. package/dist/Table/plugins/rowExpansion/index.d.ts +1 -1
  150. package/dist/Table/plugins/rowExpansion/index.d.ts.map +1 -1
  151. package/dist/Table/plugins/rowExpansion/index.js +1 -1
  152. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts +41 -76
  153. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.d.ts.map +1 -1
  154. package/dist/Table/plugins/rowExpansion/useTableRowExpansion.js +94 -345
  155. package/dist/Table/plugins/sortable/useTableSortable.d.ts.map +1 -1
  156. package/dist/Table/plugins/sortable/useTableSortable.js +23 -4
  157. package/dist/Table/plugins/tree/useTableTreeData.d.ts.map +1 -1
  158. package/dist/Table/plugins/tree/useTableTreeData.js +29 -33
  159. package/dist/Table/tableContextMenu.d.ts.map +1 -1
  160. package/dist/Table/tableContextMenu.js +2 -1
  161. package/dist/Table/types.d.ts +11 -0
  162. package/dist/Table/types.d.ts.map +1 -1
  163. package/dist/TextArea/TextArea.d.ts +10 -1
  164. package/dist/TextArea/TextArea.d.ts.map +1 -1
  165. package/dist/TextArea/TextArea.js +16 -6
  166. package/dist/TextInput/TextInput.d.ts +10 -1
  167. package/dist/TextInput/TextInput.d.ts.map +1 -1
  168. package/dist/TextInput/TextInput.js +8 -5
  169. package/dist/Thumbnail/Thumbnail.d.ts.map +1 -1
  170. package/dist/Thumbnail/Thumbnail.js +32 -26
  171. package/dist/TimeInput/TimeInput.d.ts.map +1 -1
  172. package/dist/TimeInput/TimeInput.js +2 -1
  173. package/dist/Timestamp/TimestampHoverCard.d.ts.map +1 -1
  174. package/dist/Timestamp/TimestampHoverCard.js +16 -34
  175. package/dist/Token/Token.d.ts.map +1 -1
  176. package/dist/Token/Token.js +20 -11
  177. package/dist/Tokenizer/Tokenizer.d.ts.map +1 -1
  178. package/dist/Tokenizer/Tokenizer.js +4 -2
  179. package/dist/TopNav/TopNav.d.ts.map +1 -1
  180. package/dist/TopNav/TopNav.js +6 -5
  181. package/dist/TopNav/TopNavHeading.d.ts.map +1 -1
  182. package/dist/TopNav/TopNavHeading.js +54 -16
  183. package/dist/TopNav/TopNavItem.d.ts.map +1 -1
  184. package/dist/TopNav/TopNavItem.js +3 -9
  185. package/dist/TopNav/TopNavMegaMenu.d.ts +7 -0
  186. package/dist/TopNav/TopNavMegaMenu.d.ts.map +1 -1
  187. package/dist/TopNav/TopNavMegaMenu.js +146 -60
  188. package/dist/TopNav/TopNavMegaMenuItem.d.ts.map +1 -1
  189. package/dist/TopNav/TopNavMegaMenuItem.js +22 -3
  190. package/dist/TopNav/TopNavMenu.d.ts.map +1 -1
  191. package/dist/TopNav/TopNavMenu.js +83 -33
  192. package/dist/TreeList/TreeList.d.ts.map +1 -1
  193. package/dist/TreeList/TreeList.js +13 -0
  194. package/dist/TreeList/TreeListBranches.d.ts +1 -1
  195. package/dist/TreeList/TreeListBranches.d.ts.map +1 -1
  196. package/dist/TreeList/TreeListBranches.js +14 -4
  197. package/dist/TreeList/TreeListItem.d.ts +11 -1
  198. package/dist/TreeList/TreeListItem.d.ts.map +1 -1
  199. package/dist/TreeList/TreeListItem.js +57 -30
  200. package/dist/Typeahead/BaseTypeahead.d.ts.map +1 -1
  201. package/dist/Typeahead/BaseTypeahead.js +14 -2
  202. package/dist/astryx.css +36 -28
  203. package/dist/astryx.umd.js +55 -55
  204. package/dist/astryx.umd.js.map +4 -4
  205. package/dist/hooks/index.d.ts +3 -0
  206. package/dist/hooks/index.d.ts.map +1 -1
  207. package/dist/hooks/index.js +2 -0
  208. package/dist/hooks/useClipboard.d.ts +59 -0
  209. package/dist/hooks/useClipboard.d.ts.map +1 -0
  210. package/dist/hooks/useClipboard.js +106 -0
  211. package/dist/hooks/useIndicatorFocusRing.d.ts +28 -0
  212. package/dist/hooks/useIndicatorFocusRing.d.ts.map +1 -0
  213. package/dist/hooks/useIndicatorFocusRing.js +96 -0
  214. package/dist/hooks/useStreamingText.d.ts +18 -3
  215. package/dist/hooks/useStreamingText.d.ts.map +1 -1
  216. package/dist/hooks/useStreamingText.js +47 -7
  217. package/dist/hooks/useTreeFocus.d.ts.map +1 -1
  218. package/dist/hooks/useTreeFocus.js +9 -3
  219. package/dist/hooks/useTypeahead.d.ts +3 -2
  220. package/dist/hooks/useTypeahead.d.ts.map +1 -1
  221. package/dist/hooks/useTypeahead.js +19 -7
  222. package/dist/index.d.ts +1 -0
  223. package/dist/index.d.ts.map +1 -1
  224. package/dist/index.js +1 -0
  225. package/dist/theme/defineTheme.d.ts +16 -0
  226. package/dist/theme/defineTheme.d.ts.map +1 -1
  227. package/dist/theme/defineTheme.js +8 -0
  228. package/dist/theme/derivedVarRegistry.d.ts +8 -0
  229. package/dist/theme/derivedVarRegistry.d.ts.map +1 -1
  230. package/dist/theme/derivedVarRegistry.js +5 -0
  231. package/dist/theme/expandTypeScale.d.ts.map +1 -1
  232. package/dist/theme/expandTypeScale.js +17 -0
  233. package/dist/theme/generateThemeRules.d.ts.map +1 -1
  234. package/dist/theme/generateThemeRules.js +11 -0
  235. package/dist/theme/index.d.ts +1 -0
  236. package/dist/theme/index.d.ts.map +1 -1
  237. package/dist/utils/focusOutline.stylex.d.ts +107 -0
  238. package/dist/utils/focusOutline.stylex.d.ts.map +1 -0
  239. package/dist/utils/focusOutline.stylex.js +130 -0
  240. package/dist/utils/rtlStyles.d.ts +2 -2
  241. package/dist/utils/rtlStyles.js +2 -2
  242. package/dist/utils/themeProps.d.ts +20 -1
  243. package/dist/utils/themeProps.d.ts.map +1 -1
  244. package/dist/utils/themeProps.js +8 -2
  245. package/locales/en.json +4 -0
  246. package/locales/pseudo.json +3 -0
  247. package/package.json +7 -2
  248. package/src/AlertDialog/AlertDialog.doc.mjs +16 -3
  249. package/src/AlertDialog/AlertDialog.test.tsx +208 -1
  250. package/src/AlertDialog/AlertDialog.tsx +21 -3
  251. package/src/Avatar/Avatar.doc.mjs +1 -1
  252. package/src/Avatar/Avatar.tsx +2 -28
  253. package/src/AvatarGroup/AvatarGroupOverflow.tsx +2 -9
  254. package/src/Banner/Banner.tsx +9 -6
  255. package/src/Breadcrumbs/BreadcrumbItem.tsx +16 -6
  256. package/src/Button/Button.tsx +21 -41
  257. package/src/Calendar/Calendar.tsx +2 -1
  258. package/src/Calendar/styles.ts +0 -8
  259. package/src/Carousel/Carousel.doc.mjs +3 -0
  260. package/src/Carousel/Carousel.tsx +10 -6
  261. package/src/Chat/Chat.doc.mjs +2 -0
  262. package/src/Chat/ChatDictationButton.tsx +7 -1
  263. package/src/Chat/ChatLayoutScrollButton.test.tsx +22 -0
  264. package/src/Chat/ChatLayoutScrollButton.tsx +8 -1
  265. package/src/Chat/ChatSendButton.tsx +2 -3
  266. package/src/Chat/ChatToolCalls.test.tsx +35 -0
  267. package/src/Chat/ChatToolCalls.tsx +36 -16
  268. package/src/CheckboxInput/CheckboxInput.doc.mjs +4 -2
  269. package/src/CheckboxInput/CheckboxInput.test.tsx +115 -0
  270. package/src/CheckboxInput/CheckboxInput.tsx +45 -202
  271. package/src/ClickableCard/ClickableCard.tsx +6 -11
  272. package/src/CodeBlock/CodeBlock.doc.mjs +1 -0
  273. package/src/CodeBlock/CodeBlock.test.tsx +24 -0
  274. package/src/CodeBlock/CodeBlock.tsx +46 -76
  275. package/src/Collapsible/Collapsible.tsx +22 -18
  276. package/src/CommandPalette/CommandPalette.test.tsx +29 -0
  277. package/src/CommandPalette/CommandPaletteItem.tsx +7 -4
  278. package/src/CommandPalette/CommandPaletteList.tsx +2 -2
  279. package/src/ComplexSelector/ComplexSelector.doc.mjs +41 -0
  280. package/src/ComplexSelector/ComplexSelector.test.tsx +25 -0
  281. package/src/ComplexSelector/ComplexSelector.tsx +42 -27
  282. package/src/ContextMenu/ContextMenu.doc.mjs +1 -1
  283. package/src/ContextMenu/ContextMenu.test.tsx +21 -0
  284. package/src/ContextMenu/ContextMenu.tsx +1 -1
  285. package/src/DateInput/DateInput.doc.mjs +16 -1
  286. package/src/DateInput/DateInput.test.tsx +72 -0
  287. package/src/DateInput/DateInput.tsx +22 -2
  288. package/src/DateRangeInput/DateRangeInput.doc.mjs +9 -1
  289. package/src/DateRangeInput/DateRangeInput.test.tsx +90 -0
  290. package/src/DateRangeInput/DateRangeInput.tsx +18 -1
  291. package/src/DateTimeInput/DateTimeInput.doc.mjs +16 -2
  292. package/src/DateTimeInput/DateTimeInput.test.tsx +75 -0
  293. package/src/DateTimeInput/DateTimeInput.tsx +18 -1
  294. package/src/Dialog/Dialog.tsx +2 -9
  295. package/src/DropdownMenu/DropdownMenu.doc.mjs +2 -7
  296. package/src/DropdownMenu/DropdownMenu.test.tsx +286 -4
  297. package/src/DropdownMenu/DropdownMenu.tsx +91 -35
  298. package/src/DropdownMenu/DropdownMenuCheckboxItem.tsx +27 -30
  299. package/src/DropdownMenu/DropdownMenuItem.doc.mjs +24 -4
  300. package/src/DropdownMenu/DropdownMenuItem.tsx +33 -6
  301. package/src/DropdownMenu/DropdownMenuRadioItem.tsx +30 -76
  302. package/src/DropdownMenu/DropdownMenuSelectable.test.tsx +25 -19
  303. package/src/DropdownMenu/DropdownMenuSubMenu.test.tsx +44 -14
  304. package/src/DropdownMenu/renderDropdownItems.tsx +17 -19
  305. package/src/EmptyState/EmptyState.tsx +2 -2
  306. package/src/Icon/Icon.doc.mjs +2 -1
  307. package/src/Indicator/CheckIndicator.tsx +174 -0
  308. package/src/Indicator/CheckboxIndicator.tsx +257 -0
  309. package/src/Indicator/Indicator.doc.mjs +344 -0
  310. package/src/Indicator/Indicator.test.tsx +369 -0
  311. package/src/Indicator/RadioIndicator.tsx +206 -0
  312. package/src/Indicator/index.ts +45 -0
  313. package/src/Indicator/indicator.markers.stylex.ts +19 -0
  314. package/src/Indicator/indicatorRegistry.test.tsx +106 -0
  315. package/src/Indicator/indicatorRegistry.ts +120 -0
  316. package/src/Indicator/types.ts +179 -0
  317. package/src/Indicator/useIndicator.ts +39 -0
  318. package/src/Item/Item.doc.mjs +1 -1
  319. package/src/Item/Item.tsx +7 -14
  320. package/src/Lightbox/Lightbox.doc.mjs +1 -1
  321. package/src/Lightbox/Lightbox.tsx +43 -38
  322. package/src/Link/Link.tsx +4 -11
  323. package/src/MobileNav/MobileNav.tsx +3 -3
  324. package/src/MoreMenu/MoreMenu.test.tsx +28 -1
  325. package/src/MultiSelector/MultiSelector.doc.mjs +7 -0
  326. package/src/MultiSelector/MultiSelector.test.tsx +210 -5
  327. package/src/MultiSelector/MultiSelector.tsx +91 -64
  328. package/src/NumberInput/NumberInput.doc.mjs +18 -2
  329. package/src/NumberInput/NumberInput.test.tsx +191 -0
  330. package/src/NumberInput/NumberInput.tsx +21 -6
  331. package/src/Outline/Outline.tsx +2 -5
  332. package/src/Pagination/Pagination.doc.mjs +1 -1
  333. package/src/Pagination/Pagination.tsx +28 -29
  334. package/src/PowerSearch/PowerSearchEditPopover.test.tsx +42 -0
  335. package/src/PowerSearch/PowerSearchEditPopover.tsx +7 -0
  336. package/src/ProgressBar/ProgressBar.doc.mjs +1 -1
  337. package/src/RadioList/RadioList.doc.mjs +4 -2
  338. package/src/RadioList/RadioListItem.tsx +31 -130
  339. package/src/Resizable/ResizeHandle.tsx +2 -9
  340. package/src/SegmentedControl/SegmentedControlItem.tsx +2 -9
  341. package/src/SelectableCard/SelectableCard.tsx +4 -9
  342. package/src/Selector/Selector.doc.mjs +6 -3
  343. package/src/Selector/Selector.test.tsx +911 -14
  344. package/src/Selector/Selector.tsx +183 -73
  345. package/src/Selector/hooks.ts +77 -50
  346. package/src/SideNav/SideNav.test.tsx +46 -0
  347. package/src/SideNav/SideNav.tsx +1 -0
  348. package/src/SideNav/SideNavCollapseButton.tsx +15 -10
  349. package/src/SideNav/SideNavHeading.tsx +48 -10
  350. package/src/SideNav/SideNavItem.tsx +20 -12
  351. package/src/Switch/Switch.test.tsx +32 -0
  352. package/src/Switch/Switch.tsx +8 -8
  353. package/src/TabList/Tab.tsx +2 -9
  354. package/src/TabList/TabMenu.tsx +14 -21
  355. package/src/Table/BaseTable.tsx +11 -0
  356. package/src/Table/index.ts +1 -4
  357. package/src/Table/plugins/groupedRows/useTableGroupedRows.tsx +30 -14
  358. package/src/Table/plugins/rowExpansion/index.ts +1 -4
  359. package/src/Table/plugins/rowExpansion/useTableRowExpansion.test.tsx +125 -175
  360. package/src/Table/plugins/rowExpansion/useTableRowExpansion.tsx +115 -458
  361. package/src/Table/plugins/sortable/useTableSortable.tsx +2 -6
  362. package/src/Table/plugins/tree/useTableTreeData.tsx +43 -24
  363. package/src/Table/tableContextMenu.test.tsx +27 -0
  364. package/src/Table/tableContextMenu.tsx +1 -0
  365. package/src/Table/types.ts +11 -0
  366. package/src/Table/useTableGroupedRows.doc.mjs +1 -1
  367. package/src/Table/useTableRowExpansion.doc.mjs +43 -66
  368. package/src/TextArea/TextArea.doc.mjs +42 -2
  369. package/src/TextArea/TextArea.test.tsx +219 -0
  370. package/src/TextArea/TextArea.tsx +34 -7
  371. package/src/TextInput/TextInput.doc.mjs +18 -2
  372. package/src/TextInput/TextInput.test.tsx +189 -0
  373. package/src/TextInput/TextInput.tsx +20 -5
  374. package/src/Thumbnail/Thumbnail.tsx +2 -9
  375. package/src/TimeInput/TimeInput.doc.mjs +2 -2
  376. package/src/TimeInput/TimeInput.test.tsx +30 -3
  377. package/src/TimeInput/TimeInput.tsx +5 -1
  378. package/src/Timestamp/TimestampHoverCard.tsx +13 -35
  379. package/src/Token/Token.tsx +5 -28
  380. package/src/Tokenizer/Tokenizer.doc.mjs +2 -2
  381. package/src/Tokenizer/Tokenizer.test.tsx +45 -3
  382. package/src/Tokenizer/Tokenizer.tsx +10 -2
  383. package/src/TopNav/TopNav.tsx +1 -3
  384. package/src/TopNav/TopNavHeading.tsx +42 -13
  385. package/src/TopNav/TopNavItem.tsx +3 -21
  386. package/src/TopNav/TopNavMegaMenu.test.tsx +433 -33
  387. package/src/TopNav/TopNavMegaMenu.tsx +118 -53
  388. package/src/TopNav/TopNavMegaMenuItem.tsx +2 -9
  389. package/src/TopNav/TopNavMenu.tsx +33 -32
  390. package/src/TreeList/TreeList.doc.mjs +5 -0
  391. package/src/TreeList/TreeList.test.tsx +206 -7
  392. package/src/TreeList/TreeList.tsx +22 -0
  393. package/src/TreeList/TreeListBranches.tsx +25 -2
  394. package/src/TreeList/TreeListItem.tsx +89 -52
  395. package/src/Typeahead/BaseTypeahead.tsx +17 -1
  396. package/src/Typeahead/Typeahead.doc.mjs +1 -0
  397. package/src/Typeahead/Typeahead.test.tsx +76 -3
  398. package/src/hooks/index.ts +4 -0
  399. package/src/hooks/useClipboard.doc.mjs +87 -0
  400. package/src/hooks/useClipboard.test.tsx +151 -0
  401. package/src/hooks/useClipboard.ts +135 -0
  402. package/src/hooks/useImageMode.test.ts +1 -1
  403. package/src/hooks/useIndicatorFocusRing.tsx +120 -0
  404. package/src/hooks/useStreamingText.test.ts +46 -1
  405. package/src/hooks/useStreamingText.ts +49 -7
  406. package/src/hooks/useTreeFocus.test.tsx +50 -0
  407. package/src/hooks/useTreeFocus.ts +14 -3
  408. package/src/hooks/useTypeahead.test.tsx +150 -0
  409. package/src/hooks/useTypeahead.ts +24 -9
  410. package/src/i18n/InternationalizationProvider.doc.mjs +7 -2
  411. package/src/index.ts +1 -0
  412. package/src/theme/defineTheme.ts +24 -0
  413. package/src/theme/derivedVarRegistry.test.ts +8 -0
  414. package/src/theme/derivedVarRegistry.ts +15 -0
  415. package/src/theme/expandTypeScale.test.ts +43 -0
  416. package/src/theme/expandTypeScale.ts +17 -0
  417. package/src/theme/generateThemeRules.test.ts +21 -0
  418. package/src/theme/generateThemeRules.ts +11 -0
  419. package/src/theme/index.ts +13 -0
  420. package/src/utils/focusOutline.stylex.ts +163 -0
  421. package/src/utils/rtlStyles.ts +2 -2
  422. package/src/utils/themeProps.ts +26 -4
  423. package/dist/CheckboxInput/checkbox.markers.stylex.d.ts +0 -9
  424. package/dist/CheckboxInput/checkbox.markers.stylex.d.ts.map +0 -1
  425. package/dist/CheckboxInput/checkbox.markers.stylex.js +0 -14
  426. package/dist/RadioList/radio.markers.stylex.d.ts +0 -7
  427. package/dist/RadioList/radio.markers.stylex.d.ts.map +0 -1
  428. package/dist/RadioList/radio.markers.stylex.js +0 -12
  429. package/src/CheckboxInput/checkbox.markers.stylex.ts +0 -12
  430. package/src/RadioList/radio.markers.stylex.ts +0 -10
@@ -45,6 +45,14 @@ const styles = {
45
45
  keoZOQ: "xtbrsbv",
46
46
  $$css: true
47
47
  },
48
+ chevronTransition: {
49
+ kmkexE: "x1ob6yzd x9kvfbb",
50
+ $$css: true
51
+ },
52
+ chevronExpanded: {
53
+ k3aq6I: "x19jd1h0",
54
+ $$css: true
55
+ },
48
56
  statusIcon: {
49
57
  kVAEAm: "x1n2onr6",
50
58
  k1xSpc: "x3nfvp2",
@@ -202,17 +210,13 @@ function CallRow({
202
210
  children: call.duration
203
211
  }), hasDetail && /*#__PURE__*/_jsx("span", {
204
212
  ...{
205
- 0: {
206
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu x1ob6yzd x9kvfbb xvc5jky"
207
- },
208
- 1: {
209
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu x1ob6yzd x9kvfbb xvc5jky x19jd1h0"
210
- }
211
- }[!!isDetailOpen << 0],
213
+ className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu xvc5jky"
214
+ },
212
215
  children: /*#__PURE__*/_jsx(Icon, {
213
216
  icon: "chevronDown",
214
217
  size: "xsm",
215
- color: "inherit"
218
+ color: "inherit",
219
+ xstyle: [styles.chevronTransition, isDetailOpen && styles.chevronExpanded]
216
220
  })
217
221
  })]
218
222
  });
@@ -386,17 +390,13 @@ export function ChatToolCalls(props) {
386
390
  })
387
391
  }), /*#__PURE__*/_jsx("span", {
388
392
  ...{
389
- 0: {
390
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu x1ob6yzd x9kvfbb"
391
- },
392
- 1: {
393
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu x1ob6yzd x9kvfbb x19jd1h0"
394
- }
395
- }[!!isExpanded << 0],
393
+ className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnbbluu"
394
+ },
396
395
  children: /*#__PURE__*/_jsx(Icon, {
397
396
  icon: "chevronDown",
398
397
  size: "xsm",
399
- color: "inherit"
398
+ color: "inherit",
399
+ xstyle: [styles.chevronTransition, isExpanded && styles.chevronExpanded]
400
400
  })
401
401
  })]
402
402
  }), /*#__PURE__*/_jsx("div", {
@@ -411,7 +411,7 @@ export function ChatToolCalls(props) {
411
411
  }[!!isExpanded << 0],
412
412
  children: /*#__PURE__*/_jsx("div", {
413
413
  ...{
414
- className: "xb3r6kr x2lwn1j"
414
+ className: "xb3r6kr x2lwn1j x7a5moj xtedp8i"
415
415
  },
416
416
  children: /*#__PURE__*/_jsx("div", {
417
417
  ...{
@@ -1 +1 @@
1
- {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAML,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAY3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA6JhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAmCH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,QAAQ,EACR,eAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,kBAAkB,+BA0NpB;yBAnPe,aAAa"}
1
+ {"version":3,"file":"CheckboxInput.d.ts","sourceRoot":"","sources":["../../src/CheckboxInput/CheckboxInput.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;GAYG;AAEH,OAAO,EAOL,KAAK,WAAW,EAChB,KAAK,UAAU,EACf,KAAK,SAAS,EACf,MAAM,OAAO,CAAC;AACf,OAAO,KAAK,MAAM,MAAM,kBAAkB,CAAC;AAS3C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAC5C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAG9C,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,SAAS,CAAC;AACtC,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,gBAAgB,CAAC;AA0DhD,QAAA,MAAM,iBAAiB;;;;;;;;;EASrB,CAAC;AAEH,MAAM,MAAM,iBAAiB,GAAG,MAAM,OAAO,iBAAiB,CAAC;AAE/D,MAAM,WAAW,kBAAmB,SAAQ,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC;IACrE,wDAAwD;IACxD,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;IAClC;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB;;OAEG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;OAEG;IACH,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACxE;;OAEG;IACH,YAAY,CAAC,EAAE,CACb,OAAO,EAAE,OAAO,EAChB,CAAC,EAAE,WAAW,CAAC,gBAAgB,CAAC,KAC7B,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1B;;;OAGG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB;;OAEG;IACH,KAAK,EAAE,OAAO,GAAG,eAAe,CAAC;IACjC;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;OAGG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB;;;;;;;;;;;;;;;;;;;OAmBG;IACH,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB;;;;;OAKG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;OAGG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB;;;;OAIG;IACH,KAAK,CAAC,EAAE,SAAS,CAAC;IAClB;;;;;OAKG;IACH,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB;;OAEG;IACH,OAAO,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACpD;;OAEG;IACH,MAAM,CAAC,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,gBAAgB,CAAC,KAAK,IAAI,CAAC;IACnD;;OAEG;IACH,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,CAAC;IACjC;;;OAGG;IACH,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAOD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,aAAqB,EACrB,WAAW,EACX,QAAQ,EACR,YAAY,EACZ,SAAiB,EACjB,KAAK,EACL,UAAkB,EAClB,QAAQ,EACR,eAAe,EACf,UAAkB,EAClB,UAAkB,EAClB,UAAkB,EAClB,IAAW,EACX,OAAO,EACP,MAAM,EACN,SAAS,EACT,MAAM,EACN,KAAK,EACL,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,IAAI,EACR,EAAE,kBAAkB,+BAmMpB;yBA5Ne,aAAa"}
@@ -15,20 +15,21 @@
15
15
  * - /apps/storybook/stories/CheckboxInput.stories.tsx (storybook stories)
16
16
  * - /packages/cli/assets/templates/blocks/components/CheckboxInput/ (showcase blocks)
17
17
  */
18
- import { useId, useCallback, use, useOptimistic, useTransition } from 'react';
18
+ import { useId, useCallback, use, useOptimistic, useRef, useTransition } from 'react';
19
19
  import * as stylex from '@stylexjs/stylex';
20
20
  import "../theme/tokens.stylex.js";
21
- import { colorVars, spacingVars, radiusVars, durationVars, easeVars, typographyVars, typeScaleVars, fontWeightVars, borderVars } from "../theme/tokens.stylex.js";
21
+ import { colorVars, spacingVars, typographyVars, typeScaleVars, fontWeightVars } from "../theme/tokens.stylex.js";
22
22
  import { FieldLabel } from "../Field/FieldLabel.js";
23
23
  import { FieldStatus } from "../FieldStatus/FieldStatus.js";
24
24
  import { Spinner } from "../Spinner/index.js";
25
25
  import { useTooltip } from "../Tooltip/index.js";
26
26
  import { mergeProps, mergeRefs } from "../utils/index.js";
27
- import "./checkbox.markers.stylex.js";
28
- import { checkboxScope } from "./checkbox.markers.stylex.js";
27
+ import { indicatorScope } from "../Indicator/indicator.markers.stylex.js";
28
+ import { useIndicatorFocusRing } from "../hooks/useIndicatorFocusRing.js";
29
+ import { useIndicator } from "../Indicator/index.js";
29
30
  import { themeProps } from "../utils/themeProps.js";
30
31
  import { CheckboxListContext } from "../CheckboxList/CheckboxListContext.js";
31
- import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
32
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
32
33
  const styles = {
33
34
  container: {
34
35
  k1xSpc: "x78zum5",
@@ -61,63 +62,6 @@ const styles = {
61
62
  inputDisabled: {
62
63
  kkrTdU: "x1h6gzvc",
63
64
  $$css: true
64
- },
65
- checkbox: {
66
- k1xSpc: "x78zum5",
67
- kGNEyG: "x6s0dn4",
68
- kjj79g: "xl56j7k",
69
- kMzoRj: "x1litavf",
70
- ksu8eU: "x1y0btm7",
71
- kaIpWk: "xx3sua9",
72
- k1ekBW: "xts7igz",
73
- kIyJzY: "xuedmi6 x12w9bfk",
74
- kAMwcw: "xlr8y92",
75
- $$css: true
76
- },
77
- checkboxFocus: {
78
- kI3sdo: "x1a2a7pz xkri23q",
79
- kInvED: "x81n7kt",
80
- $$css: true
81
- },
82
- checkboxUnchecked: {
83
- kMwMTN: "xqwr325",
84
- kVAM5u: "xvy26l8 x1jtjlen",
85
- kWkggS: "x10xzikg xrsv7h",
86
- $$css: true
87
- },
88
- checkboxChecked: {
89
- kMwMTN: "x17wrial",
90
- kVAM5u: "xad5do x1od6ugu",
91
- kWkggS: "x1ewilqj x6aeo4j",
92
- $$css: true
93
- },
94
- checkboxDisabled: {
95
- kSiTet: "xbyyjgo",
96
- kVAM5u: "x14i3s5s xmt8yqp",
97
- $$css: true
98
- },
99
- checkboxDisabledUnchecked: {
100
- kWkggS: "xwmxj5m x1cjfj8k",
101
- $$css: true
102
- },
103
- checkmark: {
104
- k1xSpc: "x1s85apg",
105
- kMwMTN: "x17wrial xs5hli",
106
- $$css: true
107
- },
108
- checkmarkVisible: {
109
- k1xSpc: "x1lliihq",
110
- $$css: true
111
- },
112
- indeterminateMark: {
113
- k1xSpc: "x1s85apg",
114
- kWkggS: "x1azo05 xwvh9j7",
115
- kaIpWk: "xjspbzw",
116
- $$css: true
117
- },
118
- indeterminateMarkVisible: {
119
- k1xSpc: "x1lliihq",
120
- $$css: true
121
65
  }
122
66
  };
123
67
  const wrapperSizeStyles = {
@@ -132,42 +76,6 @@ const wrapperSizeStyles = {
132
76
  $$css: true
133
77
  }
134
78
  };
135
- const checkboxSizeStyles = {
136
- sm: {
137
- kzqmXN: "xw4jnvo",
138
- kZKoxP: "x1qx5ct2",
139
- $$css: true
140
- },
141
- md: {
142
- kzqmXN: "xvy4d1p",
143
- kZKoxP: "xxk0z11",
144
- $$css: true
145
- }
146
- };
147
- const checkmarkSizeStyles = {
148
- sm: {
149
- kzqmXN: "xsmyaan",
150
- kZKoxP: "x1kpxq89",
151
- $$css: true
152
- },
153
- md: {
154
- kzqmXN: "x6jxa94",
155
- kZKoxP: "x1v9usgg",
156
- $$css: true
157
- }
158
- };
159
- const indeterminateSizeStyles = {
160
- sm: {
161
- kzqmXN: "x1fsd2vl",
162
- kZKoxP: "x36qwtl",
163
- $$css: true
164
- },
165
- md: {
166
- kzqmXN: "xsmyaan",
167
- kZKoxP: "x36qwtl",
168
- $$css: true
169
- }
170
- };
171
79
  // Dynamic field width (number -> px, string used as-is).
172
80
  const dynamicWidthStyles = {
173
81
  width: width => [{
@@ -248,9 +156,19 @@ export function CheckboxInput({
248
156
  focusTrigger: 'always',
249
157
  isEnabled: showsDisabledMessage
250
158
  });
159
+
160
+ // The checkbox visual is an indicator: a theme can restyle it through the
161
+ // `checkbox` target or replace the component outright.
162
+ const CheckboxControl = useIndicator('checkbox');
163
+ // The ring is drawn on the indicator itself: the native input is
164
+ // `opacity: 0`, and only the indicator's own element can shape the outline
165
+ // to match it. See useIndicatorFocusRing.
166
+ const indicatorRef = useRef(null);
167
+ const {
168
+ focusProps
169
+ } = useIndicatorFocusRing(indicatorRef, isDisabled);
251
170
  const isIndeterminate = optimisticValue === 'indeterminate';
252
171
  const isChecked = optimisticValue === true;
253
- const isCheckedOrIndeterminate = isChecked || isIndeterminate;
254
172
 
255
173
  // Sync the native indeterminate DOM property (can't be set via JSX
256
174
  // attribute). On a native checkbox this is the authoritative way to expose
@@ -291,9 +209,13 @@ export function CheckboxInput({
291
209
  // unconditionally is safe.
292
210
  disabledMessageTooltip.interactionRef(el);
293
211
  },
294
- ...stylex.props(styles.container, isLabelHidden && styles.containerLabelHidden, !isDisabled && checkboxScope),
212
+ ...stylex.props(styles.container, isLabelHidden && styles.containerLabelHidden,
213
+ // Hover and focus reach the checkbox visual through this ancestor
214
+ // marker rather than props, so the whole row drives it.
215
+ !isDisabled && indicatorScope),
295
216
  children: [/*#__PURE__*/_jsxs("div", {
296
217
  ...stylex.props(styles.checkboxWrapper, wrapperSizeStyles[size]),
218
+ ...focusProps,
297
219
  children: [/*#__PURE__*/_jsx("input", {
298
220
  ...rest,
299
221
  ref: mergeRefs(ref, indeterminateRef, disabledMessageTooltip.positionRef),
@@ -311,6 +233,7 @@ export function CheckboxInput({
311
233
  ,
312
234
  disabled: isDisabled && !isFocusableDisabled,
313
235
  "aria-disabled": isFocusableDisabled ? 'true' : undefined,
236
+ form: isFocusableDisabled ? '' : undefined,
314
237
  readOnly: isReadOnly,
315
238
  required: isRequired,
316
239
  onChange: e => {
@@ -333,31 +256,19 @@ export function CheckboxInput({
333
256
  "aria-invalid": status?.type === 'error' ? true : undefined,
334
257
  "aria-busy": isBusy || undefined,
335
258
  ...stylex.props(styles.input, wrapperSizeStyles[size], isDisabled && styles.inputDisabled)
336
- }), /*#__PURE__*/_jsx("div", {
337
- "aria-hidden": "true",
338
- ...mergeProps(themeProps('checkbox', {
339
- size,
340
- checked: isChecked ? 'checked' : isIndeterminate ? 'indeterminate' : null,
341
- disabled: isDisabled ? 'disabled' : null
342
- }), stylex.props(styles.checkbox, checkboxSizeStyles[size], !isDisabled && styles.checkboxFocus, isCheckedOrIndeterminate ? styles.checkboxChecked : styles.checkboxUnchecked, isDisabled && styles.checkboxDisabled, isDisabled && !isCheckedOrIndeterminate && styles.checkboxDisabledUnchecked)),
343
- children: isBusy ? /*#__PURE__*/_jsx(Spinner, {
344
- size: "sm",
345
- shade: "inherit"
346
- }) : /*#__PURE__*/_jsxs(_Fragment, {
347
- children: [/*#__PURE__*/_jsx("svg", {
348
- viewBox: "0 0 10 10",
349
- ...stylex.props(styles.checkmark, checkmarkSizeStyles[size], isChecked && styles.checkmarkVisible),
350
- children: /*#__PURE__*/_jsx("path", {
351
- d: "M8.5 2.5L4 7.5L1.5 5",
352
- stroke: "currentColor",
353
- strokeWidth: "1.5",
354
- fill: "none",
355
- strokeLinecap: "round",
356
- strokeLinejoin: "round"
357
- })
358
- }), /*#__PURE__*/_jsx("div", {
359
- ...stylex.props(styles.indeterminateMark, indeterminateSizeStyles[size], isIndeterminate && styles.indeterminateMarkVisible)
360
- })]
259
+ }), /*#__PURE__*/_jsx("span", {
260
+ ref: indicatorRef,
261
+ ...{
262
+ className: "xjp7ctv"
263
+ },
264
+ children: /*#__PURE__*/_jsx(CheckboxControl, {
265
+ state: isIndeterminate ? 'indeterminate' : isChecked ? 'checked' : 'unchecked',
266
+ size: size,
267
+ isDisabled: isDisabled,
268
+ children: isBusy ? /*#__PURE__*/_jsx(Spinner, {
269
+ size: "sm",
270
+ shade: "inherit"
271
+ }) : null
361
272
  })
362
273
  })]
363
274
  }), /*#__PURE__*/_jsx("div", {
@@ -1 +1 @@
1
- {"version":3,"file":"ClickableCard.d.ts","sourceRoot":"","sources":["../../src/ClickableCard/ClickableCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,UAAU,EAAU,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AASxE,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAmG5C,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,yCAAyC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yBAAyB;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,kBAAkB,+BA+EpB;yBAlGe,aAAa"}
1
+ {"version":3,"file":"ClickableCard.d.ts","sourceRoot":"","sources":["../../src/ClickableCard/ClickableCard.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAC,KAAK,SAAS,EAAE,KAAK,UAAU,EAAU,KAAK,GAAG,EAAC,MAAM,OAAO,CAAC;AASxE,OAAO,KAAK,EAAC,SAAS,EAAE,WAAW,EAAE,SAAS,EAAC,MAAM,gBAAgB,CAAC;AAGtE,OAAO,KAAK,EAAC,WAAW,EAAC,MAAM,cAAc,CAAC;AAE9C,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6F5C,MAAM,WAAW,kBAAmB,SAAQ,SAAS;IACnD,yCAAyC;IACzC,GAAG,CAAC,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;IAE1B;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,UAAU,CAAC,WAAW,CAAC,KAAK,IAAI,CAAC;IAEnD;;;OAGG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC;IAEd;;;OAGG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAEhB;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;;;OAIG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;OAGG;IACH,OAAO,CAAC,EAAE,WAAW,CAAC;IAEtB;;;;OAIG;IACH,SAAS,CAAC,EAAE,SAAS,CAAC;IAEtB,yBAAyB;IACzB,KAAK,CAAC,EAAE,SAAS,CAAC;IAElB,0BAA0B;IAC1B,MAAM,CAAC,EAAE,SAAS,CAAC;IAEnB,iCAAiC;IACjC,QAAQ,CAAC,EAAE,SAAS,CAAC;CACtB;AAMD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;AACH,wBAAgB,aAAa,CAAC,EAC5B,KAAK,EACL,OAAO,EAAE,WAAW,EACpB,SAAS,EAAE,aAAa,EACxB,IAAI,EACJ,MAAM,EACN,UAAkB,EAClB,QAAQ,EACR,OAAO,EACP,OAAmB,EACnB,SAAkB,EAClB,KAAK,EACL,MAAM,EACN,QAAQ,EACR,GAAG,EACH,MAAM,EAAE,UAAU,EAClB,SAAS,EAAE,aAAa,EACxB,KAAK,EACL,GAAG,KAAK,EACT,EAAE,kBAAkB,+BAgFpB;yBAnGe,aAAa"}
@@ -37,6 +37,7 @@ import { Card } from "../Card/Card.js";
37
37
  import { useClickableContainer } from "../hooks/useClickableContainer.js";
38
38
  import { useLinkComponent } from "../Link/useLinkComponent.js";
39
39
  import { themeProps } from "../utils/themeProps.js";
40
+ import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
40
41
 
41
42
  // =============================================================================
42
43
  // Styles — only the interactive layer, Card handles everything else
@@ -48,12 +49,6 @@ const styles = {
48
49
  kkrTdU: "x1ypdohk",
49
50
  kybGjl: "x1hl2dhg",
50
51
  kMwMTN: "x1heor9g",
51
- kInvED: "x1hl8ikr",
52
- $$css: true
53
- },
54
- focusWithin: {
55
- kRYL1X: "x1irc7jg",
56
- koJ47v: "xdjuwb3",
57
52
  $$css: true
58
53
  },
59
54
  overlay: {
@@ -192,11 +187,8 @@ export function ClickableCard({
192
187
  elevation: elevation,
193
188
  ...mergeProps(themeProps('clickable-card', {
194
189
  variant
195
- }), {
196
- className: classNameProp,
197
- style
198
- }),
199
- xstyle: [styles.interactive, styles.focusWithin, hasBorder ? styles.bordered : styles.borderless, !isDisabled && styles.overlay, !isDisabled && styles.hoverOnPointer, !isDisabled && hasBorder && styles.borderedHoverOnPointer, isDisabled && styles.disabled, xstyleProp],
190
+ }), focusOutlineProps.focusWithin(), classNameProp, style),
191
+ xstyle: [styles.interactive, hasBorder ? styles.bordered : styles.borderless, !isDisabled && styles.overlay, !isDisabled && styles.hoverOnPointer, !isDisabled && hasBorder && styles.borderedHoverOnPointer, isDisabled && styles.disabled, xstyleProp],
200
192
  onClick: !isDisabled ? onClick : undefined,
201
193
  onMouseUp: !isDisabled ? handleMouseUp : undefined,
202
194
  ...props,
@@ -1 +1 @@
1
- {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA2B5C,OAAO,EAAc,KAAK,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAuXxE,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAqPD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBAuOhB;yBA/Pe,SAAS"}
1
+ {"version":3,"file":"CodeBlock.d.ts","sourceRoot":"","sources":["../../src/CodeBlock/CodeBlock.tsx"],"names":[],"mappings":"AAoBA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AA6B5C,OAAO,EAAc,KAAK,qBAAqB,EAAC,MAAM,iBAAiB,CAAC;AAwWxE,MAAM,WAAW,cAAe,SAAQ,SAAS,CAAC,cAAc,CAAC;IAC/D,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,MAAM,CAAC,EAAE,MAAM,IAAI,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;IAC5B,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,IAAI,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB;;;;;;OAMG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;;;;;;;;OAQG;IACH,SAAS,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC/B,SAAS,CAAC,EAAE,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,KACb;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,MAAM,CAAA;KAAC,EAAE,CAAC;IAClD,aAAa,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC5C;;;;;;OAMG;IACH,WAAW,CAAC,EAAE,qBAAqB,CAAC;CACrC;AAqPD;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CAAC,EACxB,IAAI,EACJ,QAAsB,EACtB,KAAK,EACL,gBAAuB,EACvB,cAAsB,EACtB,cAAc,EACd,aAAoB,EACpB,MAAM,EACN,SAAiB,EACjB,SAAS,EACT,aAAqB,EACrB,oBAAyB,EACzB,IAAW,EACX,KAAK,EAAE,SAAyB,EAChC,SAAkB,EAClB,SAAS,EAAE,eAAe,EAC1B,aAAsB,EACtB,WAAW,EACX,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,EACH,GAAG,KAAK,EACT,EAAE,cAAc,qBAsNhB;yBA9Oe,SAAS"}
@@ -14,12 +14,14 @@ import * as stylex from '@stylexjs/stylex';
14
14
  import "../theme/tokens.stylex.js";
15
15
  import { colorVars, spacingVars, radiusVars, typographyVars, fontWeightVars, typeScaleVars, borderVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
16
16
  import { mergeProps } from "../utils/index.js";
17
- import { useAnnounce } from "../hooks/useAnnounce.js";
17
+ import { useClipboard } from "../hooks/useClipboard.js";
18
18
  import { Icon } from "../Icon/index.js";
19
+ import { IconButton } from "../IconButton/index.js";
19
20
  import { tokenize, tokenizeAsync, flatTokensToLines, SYNC_TOKENIZE_THRESHOLD } from "./tokenizer.js";
20
21
  import { ensureHighlightStyles } from "./highlightStyles.js";
21
22
  import { applyHighlightRangesChunked } from "./highlightRanges.js";
22
23
  import { themeProps } from "../utils/themeProps.js";
24
+ import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
23
25
  import { useTranslator } from "../i18n/index.js";
24
26
  import { SyntaxTheme } from "../theme/syntax/index.js";
25
27
 
@@ -80,6 +82,33 @@ const styles = {
80
82
  kVQacm: "xb3r6kr",
81
83
  $$css: true
82
84
  },
85
+ header: {
86
+ k1xSpc: "x78zum5",
87
+ kGNEyG: "x6s0dn4",
88
+ kUk6DE: "x98rzlu",
89
+ k7Eaqz: "xeuugli",
90
+ kmVPX3: "x1717udv",
91
+ kWkggS: "xjbqb8w",
92
+ kMwMTN: "x1heor9g",
93
+ kVVagm: "xln7xf2",
94
+ k9WMMc: "x1yc453h",
95
+ $$css: true
96
+ },
97
+ collapseChevronIcon: {
98
+ k1ekBW: "x11xpdln",
99
+ kIyJzY: "xuedmi6",
100
+ kAMwcw: "xlr8y92",
101
+ $$css: true
102
+ },
103
+ collapseChevronExpanded: {
104
+ k3aq6I: "x1iffjtl",
105
+ $$css: true
106
+ },
107
+ headerCollapsible: {
108
+ kkrTdU: "x1ypdohk",
109
+ kfSwDN: "x87ps6o",
110
+ $$css: true
111
+ },
83
112
  code: {
84
113
  k1xSpc: "x1lliihq",
85
114
  kUk6DE: "x98rzlu",
@@ -120,6 +149,16 @@ const styles = {
120
149
  sizeMd: {
121
150
  kGuDYH: "xp03k98",
122
151
  $$css: true
152
+ },
153
+ copyButton: {
154
+ kMwMTN: "x1mjzq1q",
155
+ $$css: true
156
+ },
157
+ copyButtonAbsolute: {
158
+ kVAEAm: "x10l6tqk",
159
+ k87sOh: "xctzyg",
160
+ kt4wiu: "x72tfeb",
161
+ $$css: true
123
162
  }
124
163
  };
125
164
 
@@ -409,18 +448,15 @@ export function CodeBlock({
409
448
  ...props
410
449
  }) {
411
450
  const t = useTranslator();
412
- const [copied, setCopied] = useState(false);
413
- const copyResetTimerRef = useRef(null);
414
- const announce = useAnnounce();
415
-
416
- // Clear a pending "copied" reset when the block unmounts.
417
- useEffect(() => {
418
- return () => {
419
- if (copyResetTimerRef.current != null) {
420
- clearTimeout(copyResetTimerRef.current);
421
- }
422
- };
423
- }, []);
451
+ // Owns the clipboard write, the transient copied flag, its reset timer, and
452
+ // the polite copy announcement (a swapped aria-label alone is not reliably
453
+ // announced) — shared with Timestamp via the same hook.
454
+ const {
455
+ copy,
456
+ isCopied: copied
457
+ } = useClipboard({
458
+ announce: t('@astryx.codeBlock.copied')
459
+ });
424
460
  const useSpans = highlightMode === 'spans' || highlightMode === 'auto' && !hasHighlightAPI() || highlightMode === 'auto' && isSafari();
425
461
  const lines = useMemo(() => {
426
462
  const l = code.split('\n');
@@ -432,26 +468,11 @@ export function CodeBlock({
432
468
  const tokenLines = useTokenLines(code, language, customTokenizer);
433
469
  const highlightSet = useMemo(() => highlightLines ? new Set(highlightLines) : null, [highlightLines]);
434
470
  const handleCopy = useCallback(async () => {
435
- try {
436
- await navigator.clipboard.writeText(code);
437
- setCopied(true);
438
- // Swapping the button's aria-label alone isn't reliably announced by
439
- // screen readers, so confirm the copy via a polite live region.
440
- announce(t('@astryx.codeBlock.copied'));
471
+ const didCopy = await copy(code);
472
+ if (didCopy) {
441
473
  onCopy?.();
442
- // Restart the reset timer on every copy — otherwise a rapid re-copy
443
- // is reverted early by the previous click's timer.
444
- if (copyResetTimerRef.current != null) {
445
- clearTimeout(copyResetTimerRef.current);
446
- }
447
- copyResetTimerRef.current = setTimeout(() => {
448
- copyResetTimerRef.current = null;
449
- setCopied(false);
450
- }, 2000);
451
- } catch {
452
- // Clipboard failures leave the copied state unchanged.
453
474
  }
454
- }, [code, onCopy, announce, t]);
475
+ }, [code, copy, onCopy]);
455
476
  const sizeStyle = size === 'sm' ? styles.sizeSm : styles.sizeMd;
456
477
  // Digits in the largest line number — sizes the gutter column width.
457
478
  const maxLineDigits = String(lines.length).length;
@@ -468,28 +489,28 @@ export function CodeBlock({
468
489
  const scrollStyle = maxHeight ? {
469
490
  maxHeight: typeof maxHeight === 'number' ? `${maxHeight}px` : maxHeight
470
491
  } : undefined;
471
- const copyIcon = /*#__PURE__*/_jsx(Icon, {
472
- icon: copied ? 'check' : 'copy',
492
+ const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsx(IconButton, {
493
+ variant: "ghost",
473
494
  size: "sm",
474
- color: "inherit"
475
- });
476
- const copyButtonEl = hasCopyButton ? /*#__PURE__*/_jsx("button", {
477
- type: "button",
495
+ icon: /*#__PURE__*/_jsx(Icon, {
496
+ icon: copied ? 'check' : 'copy',
497
+ size: "sm",
498
+ color: "inherit"
499
+ })
500
+ // A visible "Copy" hover/focus hint via Button's built-in tooltip. It
501
+ // stays "Copy" after copying — the copy → check icon flip is the
502
+ // confirmation, not a tooltip change. The aria-label still swaps to the
503
+ // localized "Copied" for assistive tech, backed by the announcement.
504
+ ,
505
+ tooltip: t('@astryx.codeBlock.copyCode'),
506
+ label: copied ? t('@astryx.codeBlock.copied') : t('@astryx.codeBlock.copyCode'),
478
507
  onClick: e => {
479
508
  // Stop propagation so copying does not toggle the collapsible header.
480
509
  e.stopPropagation();
481
510
  void handleCopy();
482
511
  },
483
- "aria-label": copied ? t('@astryx.codeBlock.copied') : t('@astryx.codeBlock.copyCode'),
484
- ...{
485
- 0: {
486
- className: "x3nfvp2 x6s0dn4 xl56j7k x9epnlk x3kzqx6 xx3sua9 xjbqb8w xe9uy6x x1mjzq1q x1ypdohk x14ju556"
487
- },
488
- 1: {
489
- className: "x3nfvp2 x6s0dn4 xl56j7k x9epnlk x3kzqx6 xx3sua9 xjbqb8w xe9uy6x x1mjzq1q x1ypdohk x14ju556 x10l6tqk xctzyg x72tfeb"
490
- }
491
- }[!!!showHeader << 0],
492
- children: copyIcon
512
+ xstyle: [styles.copyButton, !showHeader && styles.copyButtonAbsolute],
513
+ ...themeProps('codeblock-copy-button')
493
514
  }) : null;
494
515
  const headerEl = showHeader ? /*#__PURE__*/_jsxs("div", {
495
516
  ...{
@@ -512,31 +533,20 @@ export function CodeBlock({
512
533
  setIsCollapsed(prev => !prev);
513
534
  }
514
535
  } : undefined,
515
- ...{
516
- 0: {
517
- className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h"
518
- },
519
- 1: {
520
- className: "x78zum5 x6s0dn4 x98rzlu xeuugli x1717udv xjbqb8w x1heor9g xln7xf2 x1yc453h x1ypdohk x87ps6o x17nn4n9 x1wfwxd8 x7s97pk"
521
- }
522
- }[!!canCollapse << 0],
536
+ ...focusOutlineProps.focusVisible(styles.header, canCollapse && styles.headerCollapsible),
523
537
  children: /*#__PURE__*/_jsxs("span", {
524
538
  ...{
525
539
  className: "x78zum5 x6s0dn4 x141an7d x9m5x89 x1e4wzip x1mjzq1q x1ghz6dp x1ltkj2j"
526
540
  },
527
541
  children: [canCollapse && /*#__PURE__*/_jsx("span", {
528
542
  ...{
529
- 0: {
530
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnur1sd xb3r6kr x1mjzq1q x1gbn2au x1aquc0h x12wqnr7 x128ha8g x11xpdln xuedmi6 xlr8y92"
531
- },
532
- 1: {
533
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnur1sd xb3r6kr x1mjzq1q x1gbn2au x1aquc0h x12wqnr7 x128ha8g x11xpdln xuedmi6 xlr8y92 x1iffjtl"
534
- }
535
- }[!!!isCollapsed << 0],
543
+ className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x6jxa94 x1v9usgg xnur1sd xb3r6kr x1mjzq1q x1gbn2au x1aquc0h x12wqnr7 x128ha8g"
544
+ },
536
545
  children: /*#__PURE__*/_jsx(Icon, {
537
546
  icon: "chevronRight",
538
547
  size: "xsm",
539
- color: "inherit"
548
+ color: "inherit",
549
+ xstyle: [styles.collapseChevronIcon, !isCollapsed && styles.collapseChevronExpanded]
540
550
  })
541
551
  }), title, title && languageLabel ? ' — ' : '', languageLabel]
542
552
  })
@@ -1 +1 @@
1
- {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuH5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,UAAkB,EAClB,YAAY,EACZ,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAkGlB;yBA/Ge,WAAW"}
1
+ {"version":3,"file":"Collapsible.d.ts","sourceRoot":"","sources":["../../src/Collapsible/Collapsible.tsx"],"names":[],"mappings":"AAIA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAEH,OAAO,EAAa,KAAK,SAAS,EAAC,MAAM,OAAO,CAAC;AAiBjD,OAAO,KAAK,EAAC,SAAS,EAAC,MAAM,cAAc,CAAC;AAuH5C,MAAM,WAAW,gBAAiB,SAAQ,SAAS;IACjD,wCAAwC;IACxC,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;IAChC;;;OAGG;IACH,OAAO,EAAE,SAAS,CAAC;IAEnB;;OAEG;IACH,QAAQ,CAAC,EAAE,SAAS,CAAC;IAErB;;;OAGG;IACH,aAAa,CAAC,EAAE,OAAO,CAAC;IAExB;;OAEG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;IAErB;;OAEG;IACH,YAAY,CAAC,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,IAAI,CAAC;IAEzC;;;OAGG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IAEf;;OAEG;IACH,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AACH,wBAAgB,WAAW,CAAC,EAC1B,OAAO,EACP,QAAQ,EACR,aAAa,EACb,MAAM,EAAE,gBAAgB,EACxB,UAAkB,EAClB,YAAY,EACZ,KAAK,EACL,GAAG,EACH,MAAM,EACN,SAAS,EACT,KAAK,EACL,GAAG,KAAK,EACT,EAAE,gBAAgB,+BAsGlB;yBAnHe,WAAW"}
@@ -32,9 +32,10 @@ import "../theme/tokens.stylex.js";
32
32
  import { borderVars, colorVars, typographyVars, fontWeightVars, spacingVars, typeScaleVars, durationVars, easeVars } from "../theme/tokens.stylex.js";
33
33
  import { useCollapsible } from "./useCollapsible.js";
34
34
  import { CollapsibleGroupPresentationContext } from "./CollapsibleGroupContext.js";
35
- import { useIcon } from "../Icon/index.js";
35
+ import { Icon } from "../Icon/index.js";
36
36
  import { mergeProps } from "../utils/index.js";
37
37
  import { themeProps } from "../utils/themeProps.js";
38
+ import { focusOutlineProps } from "../utils/focusOutline.stylex.js";
38
39
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
39
40
  const styles = {
40
41
  root: {
@@ -54,8 +55,6 @@ const styles = {
54
55
  kMwMTN: "x1tgivj0",
55
56
  k9WMMc: "x1yc453h",
56
57
  k8WAf4: "xt970qd",
57
- kI3sdo: "x17nn4n9",
58
- kInvED: "x1wfwxd8 x7s97pk",
59
58
  $$css: true
60
59
  },
61
60
  triggerDisabled: {
@@ -63,6 +62,27 @@ const styles = {
63
62
  kSiTet: "xbyyjgo",
64
63
  $$css: true
65
64
  },
65
+ chevron: {
66
+ k1xSpc: "x3nfvp2",
67
+ kGNEyG: "x6s0dn4",
68
+ kjj79g: "xl56j7k",
69
+ kmuXW: "x2lah0s",
70
+ kzqmXN: "xta46cu",
71
+ kZKoxP: "x1seg80s",
72
+ kGuDYH: "x18juvz8",
73
+ k1ekBW: "x11xpdln",
74
+ kIyJzY: "xuedmi6",
75
+ kAMwcw: "xlr8y92",
76
+ $$css: true
77
+ },
78
+ chevronOpen: {
79
+ k3aq6I: "x19jd1h0",
80
+ $$css: true
81
+ },
82
+ chevronClosed: {
83
+ k3aq6I: "x7p49u4",
84
+ $$css: true
85
+ },
66
86
  contentHidden: {
67
87
  k1xSpc: "x1s85apg",
68
88
  $$css: true
@@ -203,7 +223,6 @@ export function Collapsible({
203
223
  const presentation = use(CollapsibleGroupPresentationContext);
204
224
  const isDivided = presentation?.hasDividers ?? false;
205
225
  const density = presentation?.density ?? null;
206
- const chevronIcon = useIcon('chevronDown');
207
226
 
208
227
  // Links the trigger to the region it shows/hides so assistive tech can move
209
228
  // from the button to its controlled content (disclosure pattern).
@@ -229,22 +248,23 @@ export function Collapsible({
229
248
  tabIndex: isDisabled ? -1 : undefined,
230
249
  ...mergeProps(themeProps('collapsible-trigger', {
231
250
  density: density ?? undefined
232
- }), stylex.props(styles.trigger, density != null && triggerDensity[density], isDisabled && styles.triggerDisabled)),
251
+ }), focusOutlineProps.focusVisible(styles.trigger, density != null && triggerDensity[density], isDisabled && styles.triggerDisabled)),
233
252
  children: [/*#__PURE__*/_jsx("span", {
234
253
  ...{
235
254
  className: "x1b2iylo xwgcxoh"
236
255
  },
237
256
  children: trigger
238
- }), /*#__PURE__*/_jsx("span", {
239
- ...{
240
- 0: {
241
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x11xpdln xuedmi6 xlr8y92 xv9yike x7p49u4"
242
- },
243
- 1: {
244
- className: "x3nfvp2 x6s0dn4 xl56j7k x2lah0s x11xpdln xuedmi6 xlr8y92 xv9yike x19jd1h0"
245
- }
246
- }[!!isOpen << 0],
247
- children: chevronIcon
257
+ }), /*#__PURE__*/_jsx(Icon, {
258
+ icon: "chevronDown"
259
+ // Nearest size to the trigger's 17px type step; `chevron` re-pins the
260
+ // exact box (see the style) so the glyph does not resize.
261
+ ,
262
+ size: "sm"
263
+ // Was `--color-icon-secondary` on the old wrapper span; `secondary`
264
+ // is the same token, expressed as an Icon color.
265
+ ,
266
+ color: "secondary",
267
+ xstyle: [styles.chevron, isOpen ? styles.chevronOpen : styles.chevronClosed]
248
268
  })]
249
269
  }), /*#__PURE__*/_jsx("div", {
250
270
  id: contentId,