@usefragments/ui 1.6.0 → 2.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (685) hide show
  1. package/README.md +54 -66
  2. package/dist/assets/fragments-wordmark.cjs +2 -2
  3. package/dist/assets/fragments-wordmark.d.ts.map +1 -1
  4. package/dist/assets/fragments-wordmark.js +2 -2
  5. package/dist/assets/nav-glyph.cjs +139 -0
  6. package/dist/assets/nav-glyph.d.ts +28 -0
  7. package/dist/assets/nav-glyph.d.ts.map +1 -0
  8. package/dist/assets/nav-glyph.js +139 -0
  9. package/dist/assets/nav-glyph.module.scss.cjs +71 -0
  10. package/dist/assets/nav-glyph.module.scss.js +71 -0
  11. package/dist/assets/ui.css +6885 -6308
  12. package/dist/blocks/components/StatsCard.d.ts +1 -1
  13. package/dist/blocks/components/StatsCard.d.ts.map +1 -1
  14. package/dist/chart.cjs +24 -6
  15. package/dist/chart.js +24 -6
  16. package/dist/codeblock.cjs +76 -43
  17. package/dist/codeblock.js +71 -38
  18. package/dist/colorpicker.cjs +4 -1
  19. package/dist/colorpicker.js +4 -1
  20. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  21. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  22. package/dist/components/Alert/Alert.module.scss.cjs +23 -20
  23. package/dist/components/Alert/Alert.module.scss.js +23 -20
  24. package/dist/components/Alert/index.cjs +20 -8
  25. package/dist/components/Alert/index.d.ts +17 -11
  26. package/dist/components/Alert/index.d.ts.map +1 -1
  27. package/dist/components/Alert/index.js +20 -8
  28. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  29. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  30. package/dist/components/AppShell/index.cjs +2 -2
  31. package/dist/components/AppShell/index.js +2 -2
  32. package/dist/components/Avatar/Avatar.module.scss.cjs +14 -14
  33. package/dist/components/Avatar/Avatar.module.scss.js +14 -14
  34. package/dist/components/Badge/Badge.module.scss.cjs +33 -31
  35. package/dist/components/Badge/Badge.module.scss.js +33 -31
  36. package/dist/components/Badge/index.cjs +13 -3
  37. package/dist/components/Badge/index.d.ts +18 -13
  38. package/dist/components/Badge/index.d.ts.map +1 -1
  39. package/dist/components/Badge/index.js +13 -3
  40. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  41. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  42. package/dist/components/Box/Box.module.scss.cjs +152 -152
  43. package/dist/components/Box/Box.module.scss.js +152 -152
  44. package/dist/components/Box/index.cjs +64 -75
  45. package/dist/components/Box/index.d.ts +16 -16
  46. package/dist/components/Box/index.d.ts.map +1 -1
  47. package/dist/components/Box/index.js +64 -75
  48. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +11 -8
  49. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +11 -8
  50. package/dist/components/Breadcrumbs/index.cjs +1 -1
  51. package/dist/components/Breadcrumbs/index.d.ts.map +1 -1
  52. package/dist/components/Breadcrumbs/index.js +1 -1
  53. package/dist/components/Button/Button.module.scss.cjs +36 -27
  54. package/dist/components/Button/Button.module.scss.js +36 -27
  55. package/dist/components/Button/index.cjs +20 -4
  56. package/dist/components/Button/index.d.ts +18 -10
  57. package/dist/components/Button/index.d.ts.map +1 -1
  58. package/dist/components/Button/index.js +20 -4
  59. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  60. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  61. package/dist/components/Card/Card.module.scss.cjs +31 -26
  62. package/dist/components/Card/Card.module.scss.js +32 -27
  63. package/dist/components/Card/index.cjs +16 -3
  64. package/dist/components/Card/index.d.ts +23 -15
  65. package/dist/components/Card/index.d.ts.map +1 -1
  66. package/dist/components/Card/index.js +16 -3
  67. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  68. package/dist/components/Chart/Chart.module.scss.js +15 -15
  69. package/dist/components/Chart/index.d.ts.map +1 -1
  70. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  71. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  72. package/dist/components/Checkbox/index.cjs +4 -4
  73. package/dist/components/Checkbox/index.d.ts +4 -6
  74. package/dist/components/Checkbox/index.d.ts.map +1 -1
  75. package/dist/components/Checkbox/index.js +4 -4
  76. package/dist/components/Chip/Chip.module.scss.cjs +19 -19
  77. package/dist/components/Chip/Chip.module.scss.js +19 -19
  78. package/dist/components/Chip/index.cjs +3 -3
  79. package/dist/components/Chip/index.d.ts +8 -3
  80. package/dist/components/Chip/index.d.ts.map +1 -1
  81. package/dist/components/Chip/index.js +3 -3
  82. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +26 -23
  83. package/dist/components/CodeBlock/CodeBlock.module.scss.js +26 -23
  84. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  85. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  86. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  87. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  88. package/dist/components/CodeBlock/index.d.ts +20 -5
  89. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  90. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -9
  91. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -9
  92. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  93. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  94. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  95. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -21
  96. package/dist/components/Combobox/Combobox.module.scss.js +21 -21
  97. package/dist/components/Combobox/index.cjs +26 -6
  98. package/dist/components/Combobox/index.d.ts.map +1 -1
  99. package/dist/components/Combobox/index.js +26 -6
  100. package/dist/components/Command/Command.module.scss.cjs +14 -11
  101. package/dist/components/Command/Command.module.scss.js +14 -11
  102. package/dist/components/Command/index.cjs +28 -16
  103. package/dist/components/Command/index.d.ts +8 -3
  104. package/dist/components/Command/index.d.ts.map +1 -1
  105. package/dist/components/Command/index.js +28 -16
  106. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  107. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  108. package/dist/components/ConversationList/index.cjs +2 -2
  109. package/dist/components/ConversationList/index.js +2 -2
  110. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  111. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  112. package/dist/components/DataTable/DataTable.icons.js +6 -33
  113. package/dist/components/DataTable/DataTable.module.scss.cjs +31 -28
  114. package/dist/components/DataTable/DataTable.module.scss.js +31 -28
  115. package/dist/components/DataTable/DataTable.virtual.d.ts.map +1 -1
  116. package/dist/components/DataTable/index.d.ts.map +1 -1
  117. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  118. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  119. package/dist/components/DatePicker/index.d.ts.map +1 -1
  120. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  121. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  122. package/dist/components/Dialog/index.cjs +13 -16
  123. package/dist/components/Dialog/index.d.ts +11 -10
  124. package/dist/components/Dialog/index.d.ts.map +1 -1
  125. package/dist/components/Dialog/index.js +13 -16
  126. package/dist/components/Drawer/Drawer.module.scss.cjs +39 -39
  127. package/dist/components/Drawer/Drawer.module.scss.js +40 -40
  128. package/dist/components/Drawer/index.cjs +2 -2
  129. package/dist/components/Drawer/index.d.ts +5 -4
  130. package/dist/components/Drawer/index.d.ts.map +1 -1
  131. package/dist/components/Drawer/index.js +2 -2
  132. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  133. package/dist/components/Editor/Editor.module.scss.js +17 -17
  134. package/dist/components/Editor/index.d.ts +10 -10
  135. package/dist/components/Editor/index.d.ts.map +1 -1
  136. package/dist/components/EmptyState/EmptyState.module.scss.cjs +11 -8
  137. package/dist/components/EmptyState/EmptyState.module.scss.js +11 -8
  138. package/dist/components/EmptyState/index.cjs +13 -6
  139. package/dist/components/EmptyState/index.d.ts +13 -5
  140. package/dist/components/EmptyState/index.d.ts.map +1 -1
  141. package/dist/components/EmptyState/index.js +13 -6
  142. package/dist/components/Field/Field.module.scss.cjs +5 -5
  143. package/dist/components/Field/Field.module.scss.js +5 -5
  144. package/dist/components/Field/index.cjs +9 -1
  145. package/dist/components/Field/index.d.ts.map +1 -1
  146. package/dist/components/Field/index.js +9 -1
  147. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  148. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  149. package/dist/components/Grid/Grid.module.scss.cjs +54 -54
  150. package/dist/components/Grid/Grid.module.scss.js +54 -54
  151. package/dist/components/Grid/index.cjs +1 -1
  152. package/dist/components/Grid/index.js +1 -1
  153. package/dist/components/Header/Header.module.scss.cjs +33 -33
  154. package/dist/components/Header/Header.module.scss.js +33 -33
  155. package/dist/components/Header/index.cjs +17 -38
  156. package/dist/components/Header/index.d.ts +15 -11
  157. package/dist/components/Header/index.d.ts.map +1 -1
  158. package/dist/components/Header/index.js +17 -38
  159. package/dist/components/Icon/Icon.module.scss.cjs +30 -33
  160. package/dist/components/Icon/Icon.module.scss.js +30 -33
  161. package/dist/components/Icon/index.cjs +15 -14
  162. package/dist/components/Icon/index.d.ts +23 -12
  163. package/dist/components/Icon/index.d.ts.map +1 -1
  164. package/dist/components/Icon/index.js +15 -14
  165. package/dist/components/IconButton/IconButton.module.scss.cjs +12 -12
  166. package/dist/components/IconButton/IconButton.module.scss.js +12 -12
  167. package/dist/components/IconButton/index.cjs +2 -1
  168. package/dist/components/IconButton/index.d.ts +4 -4
  169. package/dist/components/IconButton/index.d.ts.map +1 -1
  170. package/dist/components/IconButton/index.js +2 -1
  171. package/dist/components/Image/Image.module.scss.cjs +27 -27
  172. package/dist/components/Image/Image.module.scss.js +27 -27
  173. package/dist/components/Input/Input.module.scss.cjs +15 -21
  174. package/dist/components/Input/Input.module.scss.js +15 -21
  175. package/dist/components/Input/index.cjs +2 -14
  176. package/dist/components/Input/index.d.ts +0 -2
  177. package/dist/components/Input/index.d.ts.map +1 -1
  178. package/dist/components/Input/index.js +2 -14
  179. package/dist/components/Link/Link.module.scss.cjs +26 -14
  180. package/dist/components/Link/Link.module.scss.js +26 -14
  181. package/dist/components/Link/index.cjs +13 -2
  182. package/dist/components/Link/index.d.ts +11 -4
  183. package/dist/components/Link/index.d.ts.map +1 -1
  184. package/dist/components/Link/index.js +13 -2
  185. package/dist/components/List/List.module.scss.cjs +23 -19
  186. package/dist/components/List/List.module.scss.js +23 -19
  187. package/dist/components/List/index.cjs +7 -7
  188. package/dist/components/List/index.d.ts +10 -7
  189. package/dist/components/List/index.d.ts.map +1 -1
  190. package/dist/components/List/index.js +7 -7
  191. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  192. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  193. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  194. package/dist/components/Loading/Loading.module.scss.js +34 -34
  195. package/dist/components/Loading/index.cjs +5 -5
  196. package/dist/components/Loading/index.d.ts +8 -7
  197. package/dist/components/Loading/index.d.ts.map +1 -1
  198. package/dist/components/Loading/index.js +5 -5
  199. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  200. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  201. package/dist/components/Markdown/index.d.ts +2 -2
  202. package/dist/components/Markdown/index.d.ts.map +1 -1
  203. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  204. package/dist/components/Menu/Menu.module.scss.js +14 -14
  205. package/dist/components/Message/Message.module.scss.cjs +20 -20
  206. package/dist/components/Message/Message.module.scss.js +20 -20
  207. package/dist/components/Message/index.cjs +1 -1
  208. package/dist/components/Message/index.d.ts +1 -1
  209. package/dist/components/Message/index.js +1 -1
  210. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +34 -31
  211. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +34 -31
  212. package/dist/components/NavigationMenu/index.cjs +32 -15
  213. package/dist/components/NavigationMenu/index.d.ts +12 -6
  214. package/dist/components/NavigationMenu/index.d.ts.map +1 -1
  215. package/dist/components/NavigationMenu/index.js +32 -15
  216. package/dist/components/Pagination/Pagination.module.scss.cjs +10 -10
  217. package/dist/components/Pagination/Pagination.module.scss.js +10 -10
  218. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  219. package/dist/components/Popover/Popover.module.scss.js +10 -10
  220. package/dist/components/Progress/Progress.module.scss.cjs +28 -25
  221. package/dist/components/Progress/Progress.module.scss.js +28 -25
  222. package/dist/components/Progress/index.cjs +21 -12
  223. package/dist/components/Progress/index.d.ts +10 -6
  224. package/dist/components/Progress/index.d.ts.map +1 -1
  225. package/dist/components/Progress/index.js +21 -12
  226. package/dist/components/Prompt/Prompt.module.scss.cjs +30 -30
  227. package/dist/components/Prompt/Prompt.module.scss.js +30 -30
  228. package/dist/components/Prompt/index.cjs +7 -7
  229. package/dist/components/Prompt/index.d.ts +11 -9
  230. package/dist/components/Prompt/index.d.ts.map +1 -1
  231. package/dist/components/Prompt/index.js +7 -7
  232. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +20 -17
  233. package/dist/components/RadioGroup/RadioGroup.module.scss.js +20 -17
  234. package/dist/components/RadioGroup/index.cjs +10 -5
  235. package/dist/components/RadioGroup/index.d.ts +11 -7
  236. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  237. package/dist/components/RadioGroup/index.js +10 -5
  238. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +5 -5
  239. package/dist/components/ScrollArea/ScrollArea.module.scss.js +5 -5
  240. package/dist/components/ScrollArea/index.d.ts +4 -4
  241. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  242. package/dist/components/ScrollArea/scroll-state.d.ts +5 -5
  243. package/dist/components/Select/Select.module.scss.cjs +21 -21
  244. package/dist/components/Select/Select.module.scss.js +21 -21
  245. package/dist/components/Select/index.cjs +26 -20
  246. package/dist/components/Select/index.d.ts +5 -5
  247. package/dist/components/Select/index.d.ts.map +1 -1
  248. package/dist/components/Select/index.js +26 -20
  249. package/dist/components/Separator/Separator.module.scss.cjs +25 -19
  250. package/dist/components/Separator/Separator.module.scss.js +25 -19
  251. package/dist/components/Separator/index.cjs +10 -8
  252. package/dist/components/Separator/index.d.ts +4 -2
  253. package/dist/components/Separator/index.d.ts.map +1 -1
  254. package/dist/components/Separator/index.js +10 -8
  255. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  256. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  257. package/dist/components/Sidebar/index.cjs +15 -38
  258. package/dist/components/Sidebar/index.d.ts +19 -19
  259. package/dist/components/Sidebar/index.d.ts.map +1 -1
  260. package/dist/components/Sidebar/index.js +15 -38
  261. package/dist/components/Skeleton/Skeleton.module.scss.cjs +50 -46
  262. package/dist/components/Skeleton/Skeleton.module.scss.js +50 -46
  263. package/dist/components/Skeleton/index.cjs +7 -7
  264. package/dist/components/Skeleton/index.d.ts +8 -7
  265. package/dist/components/Skeleton/index.d.ts.map +1 -1
  266. package/dist/components/Skeleton/index.js +7 -7
  267. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  268. package/dist/components/Slider/Slider.module.scss.js +12 -12
  269. package/dist/components/Stack/Stack.module.scss.cjs +25 -25
  270. package/dist/components/Stack/Stack.module.scss.js +25 -25
  271. package/dist/components/Stack/index.cjs +1 -1
  272. package/dist/components/Stack/index.js +1 -1
  273. package/dist/components/Switch/Switch.module.scss.cjs +9 -9
  274. package/dist/components/Switch/Switch.module.scss.js +9 -9
  275. package/dist/components/Table/Table.module.scss.cjs +19 -19
  276. package/dist/components/Table/Table.module.scss.js +19 -19
  277. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  278. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  279. package/dist/components/TableOfContents/index.cjs +14 -10
  280. package/dist/components/TableOfContents/index.d.ts +5 -3
  281. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  282. package/dist/components/TableOfContents/index.js +14 -10
  283. package/dist/components/Tabs/Tabs.module.scss.cjs +18 -18
  284. package/dist/components/Tabs/Tabs.module.scss.js +18 -18
  285. package/dist/components/Tabs/index.cjs +30 -11
  286. package/dist/components/Tabs/index.d.ts +8 -6
  287. package/dist/components/Tabs/index.d.ts.map +1 -1
  288. package/dist/components/Tabs/index.js +30 -11
  289. package/dist/components/Text/Text.module.scss.cjs +109 -97
  290. package/dist/components/Text/Text.module.scss.js +109 -97
  291. package/dist/components/Text/index.cjs +45 -41
  292. package/dist/components/Text/index.d.ts +24 -19
  293. package/dist/components/Text/index.d.ts.map +1 -1
  294. package/dist/components/Text/index.js +45 -41
  295. package/dist/components/Textarea/Textarea.module.scss.cjs +22 -28
  296. package/dist/components/Textarea/Textarea.module.scss.js +22 -28
  297. package/dist/components/Textarea/index.cjs +3 -10
  298. package/dist/components/Textarea/index.d.ts +0 -2
  299. package/dist/components/Textarea/index.d.ts.map +1 -1
  300. package/dist/components/Textarea/index.js +3 -10
  301. package/dist/components/Theme/index.cjs +22 -5
  302. package/dist/components/Theme/index.d.ts +6 -12
  303. package/dist/components/Theme/index.d.ts.map +1 -1
  304. package/dist/components/Theme/index.js +22 -5
  305. package/dist/components/ThemeToggle/ThemeButton.cjs +51 -0
  306. package/dist/components/ThemeToggle/ThemeButton.d.ts +16 -0
  307. package/dist/components/ThemeToggle/ThemeButton.d.ts.map +1 -0
  308. package/dist/components/ThemeToggle/ThemeButton.js +34 -0
  309. package/dist/components/ThemeToggle/ThemeToggle.module.scss.cjs +6 -6
  310. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +6 -6
  311. package/dist/components/ThemeToggle/icons.cjs +48 -0
  312. package/dist/components/ThemeToggle/icons.d.ts +10 -0
  313. package/dist/components/ThemeToggle/icons.d.ts.map +1 -0
  314. package/dist/components/ThemeToggle/icons.js +48 -0
  315. package/dist/components/ThemeToggle/index.cjs +6 -50
  316. package/dist/components/ThemeToggle/index.d.ts +5 -3
  317. package/dist/components/ThemeToggle/index.d.ts.map +1 -1
  318. package/dist/components/ThemeToggle/index.js +3 -47
  319. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +18 -15
  320. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +18 -15
  321. package/dist/components/ThinkingIndicator/index.cjs +7 -8
  322. package/dist/components/ThinkingIndicator/index.d.ts +6 -5
  323. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  324. package/dist/components/ThinkingIndicator/index.js +7 -8
  325. package/dist/components/Toast/Toast.module.scss.cjs +28 -29
  326. package/dist/components/Toast/Toast.module.scss.js +29 -30
  327. package/dist/components/Toast/index.cjs +28 -30
  328. package/dist/components/Toast/index.d.ts +9 -8
  329. package/dist/components/Toast/index.d.ts.map +1 -1
  330. package/dist/components/Toast/index.js +28 -30
  331. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +21 -19
  332. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +22 -20
  333. package/dist/components/ToggleGroup/index.cjs +4 -5
  334. package/dist/components/ToggleGroup/index.d.ts +7 -6
  335. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  336. package/dist/components/ToggleGroup/index.js +4 -5
  337. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  338. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  339. package/dist/components/Tooltip/index.cjs +24 -40
  340. package/dist/components/Tooltip/index.d.ts +4 -4
  341. package/dist/components/Tooltip/index.d.ts.map +1 -1
  342. package/dist/components/Tooltip/index.js +24 -40
  343. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  344. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  345. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  346. package/dist/data-table-virtual.cjs +3 -2
  347. package/dist/data-table-virtual.js +3 -2
  348. package/dist/data-table.cjs +3 -2
  349. package/dist/data-table.js +3 -2
  350. package/dist/datepicker.cjs +26 -13
  351. package/dist/datepicker.js +26 -13
  352. package/dist/editor.cjs +68 -28
  353. package/dist/editor.js +68 -28
  354. package/dist/index.cjs +6 -2
  355. package/dist/index.d.ts +9 -9
  356. package/dist/index.d.ts.map +1 -1
  357. package/dist/index.js +8 -4
  358. package/dist/markdown.cjs +21 -29
  359. package/dist/markdown.js +21 -29
  360. package/dist/measurements/generated.cjs +46 -94
  361. package/dist/measurements/generated.d.ts +44 -92
  362. package/dist/measurements/generated.d.ts.map +1 -1
  363. package/dist/measurements/generated.js +46 -94
  364. package/dist/measurements/index.d.ts +1 -1
  365. package/dist/measurements/index.d.ts.map +1 -1
  366. package/dist/utils/a11y.cjs +5 -2
  367. package/dist/utils/a11y.d.ts +5 -5
  368. package/dist/utils/a11y.d.ts.map +1 -1
  369. package/dist/utils/a11y.js +5 -2
  370. package/dist/utils/canonical-stamp.cjs +2 -8
  371. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  372. package/dist/utils/canonical-stamp.js +1 -7
  373. package/dist/utils/css-warning.cjs +1 -1
  374. package/dist/utils/css-warning.js +1 -1
  375. package/dist/utils/env.cjs +17 -0
  376. package/dist/utils/env.d.ts +3 -0
  377. package/dist/utils/env.d.ts.map +1 -0
  378. package/dist/utils/env.js +17 -0
  379. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  380. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  381. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  382. package/dist/utils/keyboard-shortcuts.js +3 -10
  383. package/dist/utils/seed-derivation.cjs +10 -7
  384. package/dist/utils/seed-derivation.d.ts +1 -3
  385. package/dist/utils/seed-derivation.d.ts.map +1 -1
  386. package/dist/utils/seed-derivation.js +10 -7
  387. package/dist/utils/theme-presets.cjs +5 -10
  388. package/dist/utils/theme-presets.d.ts +1 -2
  389. package/dist/utils/theme-presets.d.ts.map +1 -1
  390. package/dist/utils/theme-presets.js +5 -10
  391. package/fragments.json +1 -1
  392. package/package.json +9 -10
  393. package/src/assets/fragments-logo.tsx +2 -2
  394. package/src/assets/fragments-wordmark.tsx +4 -2
  395. package/src/assets/nav-glyph.module.scss +166 -0
  396. package/src/assets/nav-glyph.tsx +188 -0
  397. package/src/components/Accordion/Accordion.contract.json +24 -48
  398. package/src/components/Accordion/Accordion.module.scss +5 -3
  399. package/src/components/Alert/Alert.contract.json +49 -65
  400. package/src/components/Alert/Alert.module.scss +57 -47
  401. package/src/components/Alert/index.tsx +72 -39
  402. package/src/components/AppShell/AppShell.contract.json +34 -51
  403. package/src/components/AppShell/AppShell.module.scss +99 -54
  404. package/src/components/AppShell/index.tsx +2 -2
  405. package/src/components/Avatar/Avatar.contract.json +31 -48
  406. package/src/components/Avatar/Avatar.module.scss +4 -2
  407. package/src/components/Badge/Badge.contract.json +86 -55
  408. package/src/components/Badge/Badge.module.scss +80 -48
  409. package/src/components/Badge/index.tsx +34 -17
  410. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  411. package/src/components/BentoGrid/BentoGrid.module.scss +4 -8
  412. package/src/components/Box/Box.contract.json +40 -148
  413. package/src/components/Box/Box.module.scss +7 -6
  414. package/src/components/Box/index.tsx +92 -99
  415. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  416. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +27 -12
  417. package/src/components/Breadcrumbs/index.tsx +5 -1
  418. package/src/components/Button/Button.module.scss +261 -185
  419. package/src/components/Button/index.tsx +41 -28
  420. package/src/components/ButtonGroup/ButtonGroup.contract.json +34 -49
  421. package/src/components/ButtonGroup/ButtonGroup.module.scss +8 -6
  422. package/src/components/Card/Card.consumer-fixture.module.scss +5 -2
  423. package/src/components/Card/Card.module.scss +97 -76
  424. package/src/components/Card/index.tsx +44 -20
  425. package/src/components/Chart/Chart.contract.json +21 -29
  426. package/src/components/Chart/Chart.module.scss +6 -5
  427. package/src/components/Chart/index.tsx +36 -6
  428. package/src/components/Checkbox/Checkbox.contract.json +28 -27
  429. package/src/components/Checkbox/Checkbox.module.scss +47 -54
  430. package/src/components/Checkbox/index.tsx +10 -10
  431. package/src/components/Chip/Chip.contract.json +38 -45
  432. package/src/components/Chip/Chip.module.scss +24 -23
  433. package/src/components/Chip/index.tsx +12 -7
  434. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  435. package/src/components/CodeBlock/CodeBlock.module.scss +75 -73
  436. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  437. package/src/components/CodeBlock/index.tsx +114 -51
  438. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  439. package/src/components/Collapsible/Collapsible.module.scss +1 -7
  440. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  441. package/src/components/ColorPicker/ColorPicker.module.scss +34 -24
  442. package/src/components/ColorPicker/index.tsx +6 -1
  443. package/src/components/Combobox/Combobox.contract.json +36 -37
  444. package/src/components/Combobox/Combobox.module.scss +16 -19
  445. package/src/components/Combobox/index.tsx +41 -6
  446. package/src/components/Command/Command.contract.json +28 -44
  447. package/src/components/Command/Command.module.scss +19 -21
  448. package/src/components/Command/index.tsx +64 -47
  449. package/src/components/ComponentDefaults/ComponentDefaults.contract.json +91 -0
  450. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  451. package/src/components/ConversationList/ConversationList.module.scss +2 -3
  452. package/src/components/ConversationList/index.tsx +2 -2
  453. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  454. package/src/components/DataTable/DataTable.module.scss +24 -17
  455. package/src/components/DataTable/DataTable.virtual.tsx +3 -2
  456. package/src/components/DataTable/index.tsx +9 -8
  457. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  458. package/src/components/DatePicker/DatePicker.module.scss +41 -44
  459. package/src/components/DatePicker/index.tsx +23 -9
  460. package/src/components/Dialog/Dialog.module.scss +26 -32
  461. package/src/components/Dialog/index.tsx +51 -39
  462. package/src/components/Drawer/Drawer.contract.json +28 -42
  463. package/src/components/Drawer/Drawer.module.scss +123 -64
  464. package/src/components/Drawer/index.tsx +7 -5
  465. package/src/components/Editor/Editor.contract.json +32 -49
  466. package/src/components/Editor/Editor.module.scss +60 -25
  467. package/src/components/Editor/index.tsx +240 -179
  468. package/src/components/EmptyState/EmptyState.contract.json +33 -45
  469. package/src/components/EmptyState/EmptyState.module.scss +37 -21
  470. package/src/components/EmptyState/index.tsx +56 -23
  471. package/src/components/Field/Field.contract.json +28 -46
  472. package/src/components/Field/Field.module.scss +2 -1
  473. package/src/components/Field/index.tsx +5 -1
  474. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  475. package/src/components/Fieldset/Fieldset.module.scss +15 -7
  476. package/src/components/Form/Form.contract.json +23 -23
  477. package/src/components/Grid/Grid.contract.json +28 -64
  478. package/src/components/Grid/Grid.module.scss +2 -2
  479. package/src/components/Grid/index.tsx +10 -10
  480. package/src/components/Header/Header.contract.json +31 -67
  481. package/src/components/Header/Header.module.scss +57 -54
  482. package/src/components/Header/index.tsx +134 -122
  483. package/src/components/Icon/Icon.contract.json +37 -81
  484. package/src/components/Icon/Icon.module.scss +13 -12
  485. package/src/components/Icon/index.tsx +31 -31
  486. package/src/components/IconButton/IconButton.contract.json +37 -21
  487. package/src/components/IconButton/IconButton.module.scss +19 -11
  488. package/src/components/IconButton/index.tsx +6 -5
  489. package/src/components/Image/Image.contract.json +23 -56
  490. package/src/components/Input/Input.contract.json +25 -44
  491. package/src/components/Input/Input.module.scss +6 -55
  492. package/src/components/Input/index.tsx +2 -18
  493. package/src/components/Link/Link.contract.json +46 -58
  494. package/src/components/Link/Link.module.scss +41 -10
  495. package/src/components/Link/index.tsx +27 -6
  496. package/src/components/List/List.contract.json +33 -62
  497. package/src/components/List/List.module.scss +10 -5
  498. package/src/components/List/index.tsx +17 -13
  499. package/src/components/Listbox/Listbox.contract.json +21 -37
  500. package/src/components/Listbox/Listbox.module.scss +14 -20
  501. package/src/components/Loading/Loading.contract.json +41 -65
  502. package/src/components/Loading/Loading.module.scss +37 -31
  503. package/src/components/Loading/index.tsx +15 -14
  504. package/src/components/Main/Main.contract.json +17 -9
  505. package/src/components/Markdown/Markdown.contract.json +22 -43
  506. package/src/components/Markdown/Markdown.module.scss +45 -6
  507. package/src/components/Markdown/index.tsx +48 -49
  508. package/src/components/Menu/Menu.contract.json +30 -46
  509. package/src/components/Menu/Menu.module.scss +32 -16
  510. package/src/components/Message/Message.contract.json +31 -54
  511. package/src/components/Message/Message.module.scss +18 -9
  512. package/src/components/Message/index.tsx +2 -2
  513. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  514. package/src/components/NavigationMenu/NavigationMenu.module.scss +66 -66
  515. package/src/components/NavigationMenu/index.tsx +105 -81
  516. package/src/components/Pagination/Pagination.contract.json +22 -40
  517. package/src/components/Pagination/Pagination.module.scss +9 -16
  518. package/src/components/Popover/Popover.contract.json +28 -50
  519. package/src/components/Popover/Popover.module.scss +30 -28
  520. package/src/components/Progress/Progress.contract.json +39 -35
  521. package/src/components/Progress/Progress.module.scss +16 -10
  522. package/src/components/Progress/index.tsx +34 -16
  523. package/src/components/Prompt/Prompt.contract.json +40 -56
  524. package/src/components/Prompt/Prompt.module.scss +49 -48
  525. package/src/components/Prompt/index.tsx +17 -15
  526. package/src/components/RadioGroup/RadioGroup.contract.json +29 -28
  527. package/src/components/RadioGroup/RadioGroup.module.scss +50 -45
  528. package/src/components/RadioGroup/index.tsx +23 -10
  529. package/src/components/ScrollArea/ScrollArea.contract.json +18 -19
  530. package/src/components/ScrollArea/ScrollArea.module.scss +45 -48
  531. package/src/components/ScrollArea/index.tsx +16 -16
  532. package/src/components/ScrollArea/scroll-state.ts +24 -24
  533. package/src/components/Select/Select.module.scss +20 -19
  534. package/src/components/Select/index.tsx +26 -24
  535. package/src/components/Separator/Separator.contract.json +29 -53
  536. package/src/components/Separator/Separator.module.scss +24 -40
  537. package/src/components/Separator/index.tsx +16 -11
  538. package/src/components/Sidebar/Sidebar.contract.json +35 -67
  539. package/src/components/Sidebar/Sidebar.module.scss +94 -88
  540. package/src/components/Sidebar/index.tsx +167 -167
  541. package/src/components/Skeleton/Skeleton.contract.json +34 -60
  542. package/src/components/Skeleton/Skeleton.module.scss +50 -26
  543. package/src/components/Skeleton/index.tsx +16 -15
  544. package/src/components/Slider/Slider.contract.json +27 -39
  545. package/src/components/Slider/Slider.module.scss +9 -22
  546. package/src/components/Stack/Stack.contract.json +30 -57
  547. package/src/components/Stack/Stack.module.scss +26 -24
  548. package/src/components/Stack/index.tsx +3 -3
  549. package/src/components/Switch/Switch.contract.json +33 -46
  550. package/src/components/Switch/Switch.module.scss +106 -59
  551. package/src/components/Table/Table.contract.json +28 -46
  552. package/src/components/Table/Table.module.scss +24 -16
  553. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  554. package/src/components/TableOfContents/TableOfContents.module.scss +17 -13
  555. package/src/components/TableOfContents/index.tsx +27 -10
  556. package/src/components/Tabs/Tabs.contract.json +35 -56
  557. package/src/components/Tabs/Tabs.module.scss +27 -31
  558. package/src/components/Tabs/index.tsx +30 -15
  559. package/src/components/Text/Text.contract.json +52 -72
  560. package/src/components/Text/Text.module.scss +34 -18
  561. package/src/components/Text/index.tsx +123 -83
  562. package/src/components/Textarea/Textarea.contract.json +24 -55
  563. package/src/components/Textarea/Textarea.module.scss +22 -52
  564. package/src/components/Textarea/index.tsx +3 -14
  565. package/src/components/Theme/Theme.contract.json +35 -53
  566. package/src/components/Theme/index.tsx +41 -13
  567. package/src/components/ThemeToggle/ThemeButton.tsx +49 -0
  568. package/src/components/ThemeToggle/ThemeToggle.module.scss +20 -27
  569. package/src/components/ThemeToggle/icons.tsx +46 -0
  570. package/src/components/ThemeToggle/index.tsx +9 -55
  571. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +34 -50
  572. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +9 -7
  573. package/src/components/ThinkingIndicator/index.tsx +12 -14
  574. package/src/components/Toast/Toast.contract.json +55 -49
  575. package/src/components/Toast/Toast.module.scss +50 -105
  576. package/src/components/Toast/index.tsx +39 -34
  577. package/src/components/ToggleGroup/ToggleGroup.contract.json +39 -40
  578. package/src/components/ToggleGroup/ToggleGroup.module.scss +30 -27
  579. package/src/components/ToggleGroup/index.tsx +11 -11
  580. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  581. package/src/components/Tooltip/Tooltip.module.scss +16 -10
  582. package/src/components/Tooltip/index.tsx +19 -24
  583. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  584. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +4 -14
  585. package/src/components/VisuallyHidden/index.tsx +5 -5
  586. package/src/index.ts +16 -12
  587. package/src/measurements/MeasurementTargets.module.scss +6 -7
  588. package/src/measurements/generated.ts +46 -97
  589. package/src/measurements/index.ts +0 -1
  590. package/src/measurements/measurements.json +44 -116
  591. package/src/recipes/_action.scss +4 -4
  592. package/src/recipes/_boolean-range.scss +12 -16
  593. package/src/recipes/_feedback.scss +17 -16
  594. package/src/recipes/_field.scss +28 -16
  595. package/src/recipes/_layout.scss +14 -7
  596. package/src/recipes/_navigation.scss +84 -29
  597. package/src/recipes/_overlay.scss +143 -43
  598. package/src/recipes/_popup.scss +54 -34
  599. package/src/recipes/_prose.scss +48 -28
  600. package/src/recipes/_representation.scss +10 -9
  601. package/src/recipes/_segmented.scss +1 -1
  602. package/src/recipes/_table-chrome.scss +42 -17
  603. package/src/recipes/_target.scss +2 -4
  604. package/src/recipes/_typography.scss +10 -0
  605. package/src/scss.d.ts +1 -1
  606. package/src/styles/globals.scss +31 -25
  607. package/src/tokens/_component-properties.scss +19 -1
  608. package/src/tokens/_computed.scss +32 -49
  609. package/src/tokens/_derive.scss +112 -210
  610. package/src/tokens/_measurements.catalog.generated.css +62 -44
  611. package/src/tokens/_measurements.generated.scss +119 -249
  612. package/src/tokens/_mixins.scss +49 -48
  613. package/src/tokens/_palettes.scss +39 -167
  614. package/src/tokens/_property-registrations.scss +9 -0
  615. package/src/tokens/_seeds.scss +20 -31
  616. package/src/tokens/_variables.scss +251 -94
  617. package/src/utils/a11y.tsx +69 -69
  618. package/src/utils/aria.ts +3 -3
  619. package/src/utils/canonical-stamp.ts +2 -12
  620. package/src/utils/css-warning.ts +7 -7
  621. package/src/utils/env.ts +25 -0
  622. package/src/utils/keyboard-shortcuts.ts +131 -126
  623. package/src/utils/seed-derivation.ts +11 -14
  624. package/src/utils/theme-presets.ts +5 -12
  625. package/dist/blocks/AccountSettings.block.d.ts +0 -3
  626. package/dist/blocks/AccountSettings.block.d.ts.map +0 -1
  627. package/dist/blocks/ActivityFeedSkeleton.block.d.ts +0 -3
  628. package/dist/blocks/ActivityFeedSkeleton.block.d.ts.map +0 -1
  629. package/dist/blocks/BlogEditor.block.d.ts +0 -3
  630. package/dist/blocks/BlogEditor.block.d.ts.map +0 -1
  631. package/dist/blocks/ChatInterface.block.d.ts +0 -3
  632. package/dist/blocks/ChatInterface.block.d.ts.map +0 -1
  633. package/dist/blocks/ChatMessages.block.d.ts +0 -3
  634. package/dist/blocks/ChatMessages.block.d.ts.map +0 -1
  635. package/dist/blocks/CheckoutForm.block.d.ts +0 -3
  636. package/dist/blocks/CheckoutForm.block.d.ts.map +0 -1
  637. package/dist/blocks/CommandPalette.block.d.ts +0 -3
  638. package/dist/blocks/CommandPalette.block.d.ts.map +0 -1
  639. package/dist/blocks/ContactForm.block.d.ts +0 -3
  640. package/dist/blocks/ContactForm.block.d.ts.map +0 -1
  641. package/dist/blocks/DashboardPage.block.d.ts +0 -3
  642. package/dist/blocks/DashboardPage.block.d.ts.map +0 -1
  643. package/dist/blocks/DashboardSkeleton.block.d.ts +0 -3
  644. package/dist/blocks/DashboardSkeleton.block.d.ts.map +0 -1
  645. package/dist/blocks/DataTable.block.d.ts +0 -3
  646. package/dist/blocks/DataTable.block.d.ts.map +0 -1
  647. package/dist/blocks/EmptyState.block.d.ts +0 -3
  648. package/dist/blocks/EmptyState.block.d.ts.map +0 -1
  649. package/dist/blocks/FAQSection.block.d.ts +0 -3
  650. package/dist/blocks/FAQSection.block.d.ts.map +0 -1
  651. package/dist/blocks/FeatureGrid.block.d.ts +0 -3
  652. package/dist/blocks/FeatureGrid.block.d.ts.map +0 -1
  653. package/dist/blocks/HeroSection.block.d.ts +0 -3
  654. package/dist/blocks/HeroSection.block.d.ts.map +0 -1
  655. package/dist/blocks/NavigationHeader.block.d.ts +0 -3
  656. package/dist/blocks/NavigationHeader.block.d.ts.map +0 -1
  657. package/dist/blocks/PaginatedTable.block.d.ts +0 -3
  658. package/dist/blocks/PaginatedTable.block.d.ts.map +0 -1
  659. package/dist/blocks/PricingComparison.block.d.ts +0 -3
  660. package/dist/blocks/PricingComparison.block.d.ts.map +0 -1
  661. package/dist/blocks/ProductCard.block.d.ts +0 -3
  662. package/dist/blocks/ProductCard.block.d.ts.map +0 -1
  663. package/dist/blocks/RegistrationForm.block.d.ts +0 -3
  664. package/dist/blocks/RegistrationForm.block.d.ts.map +0 -1
  665. package/dist/blocks/SettingsDrawer.block.d.ts +0 -3
  666. package/dist/blocks/SettingsDrawer.block.d.ts.map +0 -1
  667. package/dist/blocks/SettingsPanel.block.d.ts +0 -3
  668. package/dist/blocks/SettingsPanel.block.d.ts.map +0 -1
  669. package/dist/blocks/ShoppingCart.block.d.ts +0 -3
  670. package/dist/blocks/ShoppingCart.block.d.ts.map +0 -1
  671. package/dist/blocks/StatsCardSkeleton.block.d.ts +0 -3
  672. package/dist/blocks/StatsCardSkeleton.block.d.ts.map +0 -1
  673. package/dist/blocks/TableSkeleton.block.d.ts +0 -3
  674. package/dist/blocks/TableSkeleton.block.d.ts.map +0 -1
  675. package/dist/blocks/ThinkingStates.block.d.ts +0 -3
  676. package/dist/blocks/ThinkingStates.block.d.ts.map +0 -1
  677. package/dist/components/Toggle/index.d.ts +0 -3
  678. package/dist/components/Toggle/index.d.ts.map +0 -1
  679. package/src/components/Button/Button.contract.json +0 -218
  680. package/src/components/Card/Card.contract.json +0 -175
  681. package/src/components/DataTable/DataTable.contract.json +0 -302
  682. package/src/components/Dialog/Dialog.contract.json +0 -159
  683. package/src/components/Select/Select.contract.json +0 -259
  684. package/src/components/Toggle/index.ts +0 -7
  685. package/src/tokens/_density.scss +0 -85
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "RadioGroup",
4
- "description": "Single selection from a list of mutually exclusive options",
5
- "category": "forms",
4
+ "description": "Selects one option from a mutually exclusive set.",
5
+ "category": "inputs",
6
6
  "tags": ["form", "radio", "selection", "options"],
7
7
  "status": "stable",
8
8
  "sourcePath": "src/components/RadioGroup/index.tsx",
@@ -19,6 +19,7 @@
19
19
  "helperText: string",
20
20
  "error: union",
21
21
  "size: sm|md|lg (default: md)",
22
+ "variant: outline",
22
23
  "wrapperClassName: string",
23
24
  "groupClassName: string",
24
25
  "groupId: string",
@@ -87,10 +88,9 @@
87
88
  },
88
89
  "variant": {
89
90
  "type": "enum",
90
- "description": "Visual variant. 'default' is the inline radio, 'card' renders each item as a full-width clickable card with the radio tucked inside.",
91
- "default": "default",
91
+ "description": "Chrome. Omit for the inline radio beside its label; 'outline' renders each item as a full-width bordered surface with the radio tucked inside.",
92
92
  "required": false,
93
- "values": ["default", "card"]
93
+ "values": ["outline"]
94
94
  },
95
95
  "wrapperClassName": {
96
96
  "type": "string",
@@ -115,63 +115,62 @@
115
115
  },
116
116
  "usage": {
117
117
  "when": [
118
- "User must select exactly one option from a small set",
119
- "Options are mutually exclusive",
120
- "All options should be visible at once",
121
- "2-5 options available"
118
+ "Exactly one answer out of two to five",
119
+ "Options rule each other out",
120
+ "Every option should be visible without opening anything"
122
121
  ],
123
122
  "whenNot": [
124
- "Multiple selections allowed (use Checkbox group)",
125
- "Many options (use Select)",
126
- "Binary on/off choice (use Switch)",
127
- "Options need to be searchable (use Combobox)"
123
+ "Several answers allowed (use a Checkbox group)",
124
+ "Long lists (use Select)",
125
+ "A single on/off (use Switch)",
126
+ "Options need searching (use Combobox)"
128
127
  ],
129
128
  "guidelines": [
130
- "Always have one option pre-selected when possible",
131
- "Order options logically (alphabetical, frequency, etc.)",
132
- "Keep option labels concise",
133
- "Use helperText on RadioGroup.Item for complex options"
129
+ "Pre-select a sensible default whenever one exists",
130
+ "Order options predictably: alphabetical, by frequency, or by cost",
131
+ "Keep labels short",
132
+ "Put the trade-off in each item's helperText"
134
133
  ],
135
134
  "accessibility": [
136
- "Group must have an accessible label",
137
- "Use arrow keys to navigate between options",
138
- "Selected option should be clearly indicated"
135
+ "The group carries its own label",
136
+ "Arrow keys move between options",
137
+ "The selected option reads as checked"
139
138
  ]
140
139
  },
141
140
  "examples": [
142
141
  {
143
142
  "name": "Default",
144
- "description": "Basic radio group with labels",
143
+ "description": "Three options stacked, the first already chosen.",
145
144
  "code": "<RadioGroup defaultValue=\"option1\" label=\"Select an option\">\n <RadioGroup.Item value=\"option1\" label=\"Option 1\" />\n <RadioGroup.Item value=\"option2\" label=\"Option 2\" />\n <RadioGroup.Item value=\"option3\" label=\"Option 3\" />\n</RadioGroup>"
146
145
  },
147
146
  {
148
147
  "name": "With Helper Text",
149
- "description": "Radio items with additional context",
148
+ "description": "Each option carries the trade-off under its label.",
150
149
  "code": "<RadioGroup defaultValue=\"standard\" label=\"Shipping Method\">\n <RadioGroup.Item\n value=\"standard\"\n label=\"Standard\"\n helperText=\"5-7 business days\"\n />\n <RadioGroup.Item\n value=\"express\"\n label=\"Express\"\n helperText=\"2-3 business days\"\n />\n <RadioGroup.Item\n value=\"overnight\"\n label=\"Overnight\"\n helperText=\"Next business day\"\n />\n</RadioGroup>"
151
150
  },
152
151
  {
153
152
  "name": "Horizontal",
154
- "description": "Side-by-side layout",
153
+ "description": "One row — good for short labels like sizes.",
155
154
  "code": "<RadioGroup orientation=\"horizontal\" defaultValue=\"small\" label=\"Size\">\n <RadioGroup.Item value=\"small\" label=\"S\" />\n <RadioGroup.Item value=\"medium\" label=\"M\" />\n <RadioGroup.Item value=\"large\" label=\"L\" />\n <RadioGroup.Item value=\"xlarge\" label=\"XL\" />\n</RadioGroup>"
156
155
  },
157
156
  {
158
157
  "name": "With Group Helper Text",
159
- "description": "Group-level helper text",
158
+ "description": "One note under the whole group instead of per option.",
160
159
  "code": "<RadioGroup defaultValue=\"standard\" label=\"Plan\" helperText=\"You can change your plan at any time\">\n <RadioGroup.Item value=\"free\" label=\"Free\" />\n <RadioGroup.Item value=\"standard\" label=\"Standard\" />\n <RadioGroup.Item value=\"pro\" label=\"Pro\" />\n</RadioGroup>"
161
160
  },
162
161
  {
163
162
  "name": "With Error",
164
- "description": "Validation error state (string shows error message)",
163
+ "description": "Passing a string to error tints the group and prints the reason.",
165
164
  "code": "<RadioGroup label=\"Required selection\" error=\"Please select an option\">\n <RadioGroup.Item value=\"a\" label=\"Option A\" />\n <RadioGroup.Item value=\"b\" label=\"Option B\" />\n</RadioGroup>"
166
165
  },
167
166
  {
168
167
  "name": "Disabled",
169
- "description": "Non-interactive state",
168
+ "description": "The choice stays visible but nothing can change it.",
170
169
  "code": "<RadioGroup disabled defaultValue=\"locked\" label=\"Locked selection\">\n <RadioGroup.Item value=\"locked\" label=\"This is locked\" />\n <RadioGroup.Item value=\"other\" label=\"Cannot select\" />\n</RadioGroup>"
171
170
  },
172
171
  {
173
172
  "name": "Styling Targets",
174
- "description": "Use explicit class names for wrapper/group/item styling hooks",
173
+ "description": "Named class hooks for the wrapper, the group, and each item.",
175
174
  "code": "<RadioGroup\n defaultValue=\"a\"\n label=\"Display mode\"\n wrapperClassName=\"demo-radio-wrapper\"\n groupClassName=\"demo-radio-group\"\n>\n <RadioGroup.Item value=\"a\" label=\"Compact\" controlClassName=\"demo-radio-control\" contentClassName=\"demo-radio-content\" />\n <RadioGroup.Item value=\"b\" label=\"Comfortable\" />\n</RadioGroup>"
176
175
  }
177
176
  ],
@@ -199,13 +198,15 @@
199
198
  "onChange: (value: string) => void - alias for onValueChange",
200
199
  "orientation: horizontal|vertical (default: vertical)",
201
200
  "size: sm|md|lg (default: md)",
201
+ "variant: outline - each item a full-width bordered surface; omit for the inline control",
202
202
  "label: string - group label",
203
203
  "helperText: string - helper text below the group",
204
204
  "error: boolean | string - error styling and message",
205
205
  "disabled: boolean - disable all options",
206
206
  "wrapperClassName/groupClassName - explicit styling targets for wrapper and group",
207
207
  "groupId: string - ID forwarded to the inner radiogroup while id remains on the wrapper",
208
- "RadioGroup.Item supports helperText (preferred) and description (legacy alias) plus controlClassName/contentClassName for item-level styling"
208
+ "RadioGroup.Item supports helperText (preferred) and description (legacy alias) plus controlClassName/contentClassName for item-level styling",
209
+ "RadioGroup.Item trailing: ReactNode - a short value (price, count) at the end of the row on the label's line; pairs with variant=outline for plan pickers"
209
210
  ],
210
211
  "a11yRules": ["A11Y_RADIO_GROUP", "A11Y_LABEL_REQUIRED", "A11Y_TARGET_SIZE_MIN"]
211
212
  },
@@ -45,11 +45,24 @@
45
45
  }
46
46
 
47
47
  &[data-disabled] {
48
- cursor: not-allowed;
49
- opacity: 0.5;
48
+ @include disabled-state;
49
+ }
50
+
51
+ // A trailing value takes a third column so the label and helper keep
52
+ // theirs; it sits on the label's line at the end of the row.
53
+ &[data-has-trailing] {
54
+ grid-template-columns:
55
+ var(--_fui-boolean-mark-size, #{boolean.mark-size("md")}) minmax(0, 1fr)
56
+ auto;
50
57
  }
51
58
  }
52
59
 
60
+ .trailing {
61
+ justify-self: end;
62
+ text-align: end;
63
+ white-space: nowrap;
64
+ }
65
+
53
66
  // The radio circle
54
67
  .radio {
55
68
  @include interactive-base;
@@ -62,39 +75,47 @@
62
75
  flex-shrink: 0;
63
76
  box-sizing: border-box;
64
77
  margin-block-start: var(--_fui-boolean-mark-offset, 0);
65
- background-color: var(--fui-field-bg, $fui-bg-elevated);
66
- border: var(--fui-stroke-hairline, 1px) solid var(--fui-field-border, $fui-border-strong);
78
+ background-color: var(--fui-bg-primary, $fui-bg-primary);
79
+ border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-strong, $fui-border-strong);
67
80
  border-radius: var(--fui-radius-full, $fui-radius-full);
68
81
  cursor: inherit;
82
+ @include high-contrast-outline;
69
83
 
70
84
  &:hover:not([data-disabled]) {
71
- border-color: var(--fui-field-border-hover, $fui-text-tertiary);
85
+ border-color: var(--fui-text-tertiary, $fui-text-tertiary);
86
+ }
87
+
88
+ &:focus-visible {
89
+ @include field.focus-state;
72
90
  }
73
91
 
74
92
  &[data-checked] {
75
93
  background-color: color-mix(
76
94
  in srgb,
77
- var(--fui-button-primary-base, #{$fui-color-accent}) 8%,
78
- var(--fui-field-bg, #{$fui-bg-elevated})
95
+ var(--fui-control-checked-bg, #{$fui-color-accent}) 8%,
96
+ var(--fui-bg-primary, #{$fui-bg-primary})
79
97
  );
80
- border-color: var(--fui-button-primary-base, $fui-color-accent);
81
- box-shadow: inset 0 0 0 1px
82
- color-mix(in srgb, var(--fui-button-primary-base, #{$fui-color-accent}) 55%, transparent);
98
+ border-color: var(--fui-control-checked-border, $fui-color-accent);
99
+ box-shadow: inset 0 0 0 var(--fui-stroke-hairline, 1px)
100
+ color-mix(in srgb, var(--fui-control-checked-border, #{$fui-color-accent}) 55%, transparent);
83
101
  }
84
102
 
85
103
  &[data-checked]:hover:not([data-disabled]) {
86
104
  background-color: color-mix(
87
105
  in srgb,
88
- var(--fui-button-primary-hover, #{$fui-color-accent}) 12%,
89
- var(--fui-field-bg, #{$fui-bg-elevated})
106
+ var(--fui-control-checked-bg-hover, #{$fui-color-accent-hover}) 12%,
107
+ var(--fui-bg-primary, #{$fui-bg-primary})
90
108
  );
91
- border-color: var(--fui-button-primary-hover, $fui-color-accent);
109
+ border-color: var(--fui-control-checked-border-hover, $fui-color-accent-hover);
92
110
  }
93
111
 
94
112
  &[data-invalid] {
95
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
96
- }
113
+ @include field.invalid-state;
97
114
 
115
+ &:focus-visible {
116
+ @include field.invalid-focus-state;
117
+ }
118
+ }
98
119
  }
99
120
 
100
121
  // Size variants
@@ -114,7 +135,7 @@
114
135
  left: 50%;
115
136
  width: var(--fui-raw-space-8, 8px);
116
137
  height: var(--fui-raw-space-8, 8px);
117
- background-color: var(--fui-button-primary-base, $fui-color-accent);
138
+ background-color: var(--fui-control-checked-bg, $fui-color-accent);
118
139
  border-radius: var(--fui-radius-full, $fui-radius-full);
119
140
 
120
141
  // Animation - use translate for centering combined with scale
@@ -161,16 +182,16 @@
161
182
  }
162
183
 
163
184
  // ============================================
164
- // Card variant: each item is a full-width clickable surface that signals
185
+ // Outline variant: each item is a full-width bordered surface that signals
165
186
  // selection via background + border tint while keeping the inline radio
166
187
  // circle as the canonical control. The `:has([data-checked])` selector is
167
188
  // the source of truth for selected styling — no extra attribute plumbing
168
189
  // required from JS.
169
190
  // ============================================
170
- // Card variant uses a transparent base so the selected accent tint reads
171
- // as a deliberate state change rather than a small shift between two grey
172
- // surfaces. Mirrors the pattern used by the Checkbox card variant.
173
- .itemWrapperCard {
191
+ // The outline variant uses a transparent base so the selected accent tint
192
+ // reads as a deliberate state change rather than a small shift between two
193
+ // grey surfaces. Mirrors the pattern used by the Checkbox outline variant.
194
+ .itemWrapperOutline {
174
195
  width: 100%;
175
196
  border-radius: var(--fui-radius-md, $fui-radius-md);
176
197
  border: var(--fui-stroke-hairline, 1px) solid var(--fui-border-default, $fui-border-default);
@@ -186,23 +207,23 @@
186
207
  }
187
208
 
188
209
  &:focus-within:not([data-disabled]) {
189
- border-color: var(--fui-button-primary-base, $fui-color-accent);
210
+ border-color: var(--fui-control-checked-border, $fui-color-accent);
190
211
  @include focus-ring;
191
212
  }
192
213
 
193
214
  &:has([data-checked]) {
194
215
  background: color-mix(
195
216
  in srgb,
196
- var(--fui-button-primary-base, #{$fui-color-accent}) 13%,
217
+ var(--fui-control-checked-bg, #{$fui-color-accent}) 13%,
197
218
  transparent
198
219
  );
199
220
  border-color: color-mix(
200
221
  in srgb,
201
- var(--fui-button-primary-base, #{$fui-color-accent}) 62%,
222
+ var(--fui-control-checked-border, #{$fui-color-accent}) 62%,
202
223
  transparent
203
224
  );
204
- box-shadow: 0 0 0 1px
205
- color-mix(in srgb, var(--fui-button-primary-base, #{$fui-color-accent}) 28%, transparent);
225
+ box-shadow: 0 0 0 var(--fui-stroke-hairline, 1px)
226
+ color-mix(in srgb, var(--fui-control-checked-border, #{$fui-color-accent}) 28%, transparent);
206
227
  }
207
228
 
208
229
  &[data-size="sm"] {
@@ -219,26 +240,10 @@
219
240
  }
220
241
 
221
242
  .group[data-invalid] .radio {
222
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
223
- }
224
-
225
- // ============================================
226
- // Accessibility: High Contrast Mode
227
- // ============================================
243
+ @include field.invalid-state;
228
244
 
229
- @media (prefers-contrast: more) {
230
- .radio {
231
- border-color: var(--fui-text-primary, $fui-text-primary);
232
- outline: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
233
- outline-offset: calc(-1 * var(--fui-stroke-default, 2px));
234
-
235
- &[data-checked] {
236
- border-color: var(--fui-button-primary-base, $fui-color-accent);
237
- }
238
-
239
- &[data-invalid] {
240
- border-color: var(--fui-color-danger-text, $fui-color-danger-text);
241
- }
245
+ &:focus-visible {
246
+ @include field.invalid-focus-state;
242
247
  }
243
248
  }
244
249
 
@@ -50,13 +50,11 @@ export interface RadioGroupProps extends Omit<
50
50
  /** Size variant */
51
51
  size?: "sm" | "md" | "lg";
52
52
  /**
53
- * Visual variant.
54
- * - `default`: inline radio circle next to a label (form-control style).
55
- * - `card`: each item is a full-width clickable card with the radio circle
56
- * tucked inside. Useful for high-stakes choices, surveys, plan pickers.
57
- * @default "default"
53
+ * Chrome. Omit it for the inline radio circle next to a label (form-control
54
+ * style); `outline` renders each item as a full-width bordered surface with
55
+ * the radio circle tucked inside high-stakes choices, surveys, plan pickers.
58
56
  */
59
- variant?: "default" | "card";
57
+ variant?: "outline";
60
58
  /** Class applied to the outer wrapper (label + group + error) */
61
59
  wrapperClassName?: string;
62
60
  /** Class applied to the inner radio group container */
@@ -76,6 +74,12 @@ export interface RadioItemProps {
76
74
  helperText?: string;
77
75
  /** @deprecated Use helperText instead. Description text below the label. */
78
76
  description?: string;
77
+ /**
78
+ * A value at the end of the row, on the label's line — a price, a count,
79
+ * a date. Read by the label's accessible name, so keep it short and put
80
+ * the explanation in `helperText`.
81
+ */
82
+ trailing?: React.ReactNode;
79
83
  /** Whether this item is disabled */
80
84
  disabled?: boolean;
81
85
  /** Accessible name for icon-only mode */
@@ -97,7 +101,7 @@ export interface RadioItemProps {
97
101
  // ============================================
98
102
 
99
103
  const RadioSizeContext = React.createContext<ControlSize>("md");
100
- const RadioVariantContext = React.createContext<"default" | "card">("default");
104
+ const RadioVariantContext = React.createContext<"outline" | undefined>(undefined);
101
105
 
102
106
  // ============================================
103
107
  // Radio Item Component
@@ -108,6 +112,7 @@ function RadioItem({
108
112
  label,
109
113
  helperText,
110
114
  description,
115
+ trailing,
111
116
  disabled = false,
112
117
  "aria-label": ariaLabel,
113
118
  "aria-labelledby": ariaLabelledBy,
@@ -122,6 +127,7 @@ function RadioItem({
122
127
  const id = React.useId();
123
128
  const labelId = label ? `radio-label-${id}` : undefined;
124
129
  const descriptionId = resolvedHelperText ? `radio-desc-${id}` : undefined;
130
+ const trailingId = trailing != null ? `radio-trailing-${id}` : undefined;
125
131
 
126
132
  const radioClasses = [
127
133
  styles.radio,
@@ -134,7 +140,7 @@ function RadioItem({
134
140
 
135
141
  const wrapperClasses = [
136
142
  styles.itemWrapper,
137
- variant === "card" && styles.itemWrapperCard,
143
+ variant === "outline" && styles.itemWrapperOutline,
138
144
  className,
139
145
  ]
140
146
  .filter(Boolean)
@@ -162,13 +168,14 @@ function RadioItem({
162
168
  className={wrapperClasses}
163
169
  data-disabled={disabled || undefined}
164
170
  data-has-description={resolvedHelperText ? true : undefined}
171
+ data-has-trailing={trailing != null ? true : undefined}
165
172
  data-size={size}
166
173
  >
167
174
  <BaseRadio.Root
168
175
  value={value}
169
176
  disabled={disabled}
170
177
  aria-label={ariaLabel}
171
- aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId)}
178
+ aria-labelledby={mergeAriaIds(ariaLabelledBy, labelId, trailingId)}
172
179
  aria-describedby={mergeAriaIds(ariaDescribedBy, descriptionId)}
173
180
  data-size={size}
174
181
  className={radioClasses}
@@ -185,6 +192,11 @@ function RadioItem({
185
192
  </span>
186
193
  )}
187
194
  </div>
195
+ {trailing != null && (
196
+ <span id={trailingId} className={styles.trailing}>
197
+ {trailing}
198
+ </span>
199
+ )}
188
200
  </label>
189
201
  );
190
202
  }
@@ -210,7 +222,7 @@ const RadioGroupRoot = React.forwardRef<HTMLDivElement, RadioGroupProps>(functio
210
222
  helperText,
211
223
  error,
212
224
  size: sizeProp,
213
- variant = "default",
225
+ variant,
214
226
  wrapperClassName,
215
227
  groupClassName,
216
228
  groupId,
@@ -266,6 +278,7 @@ const RadioGroupRoot = React.forwardRef<HTMLDivElement, RadioGroupProps>(functio
266
278
  aria-describedby={mergeAriaIds(ariaDescribedBy, errorId, helperId)}
267
279
  data-size={size}
268
280
  data-invalid={hasError || undefined}
281
+ aria-invalid={hasError || undefined}
269
282
  className={groupClasses}
270
283
  >
271
284
  {children}
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "ScrollArea",
4
- "description": "A styled scrollable container with thin scrollbars and optional fade indicators.",
4
+ "description": "Scrolls overflowing content with a slim scrollbar and optional edge fades.",
5
5
  "category": "layout",
6
6
  "tags": ["scroll", "overflow", "scrollbar", "container", "layout"],
7
7
  "status": "stable",
@@ -48,20 +48,19 @@
48
48
  },
49
49
  "usage": {
50
50
  "when": [
51
- "Content overflows its container and needs scrolling",
52
- "Horizontal tab bars or chip lists that may overflow",
53
- "Scrollable panels, sidebars, or dropdown content",
54
- "Any area where native scrollbars look too heavy"
51
+ "Content that overflows a fixed-size container",
52
+ "Tab bars or chip rows that may run past the edge",
53
+ "Scrollable panels, sidebars, and menu content"
55
54
  ],
56
55
  "whenNot": [
57
- "Page-level scrolling (use native body scroll)",
58
- "Very short content that never overflows"
56
+ "Whole-page scrolling (use the native body scroll)",
57
+ "Content that can never overflow"
59
58
  ],
60
59
  "guidelines": [
61
- "Use `orientation` to constrain scroll direction",
62
- "Use `showFades` to hint at hidden content beyond the viewport",
63
- "The `auto` and `hover` modes keep the thumb quiet until hover or keyboard focus without changing track geometry",
64
- "Combine with `orientation=\"horizontal\"` for tab bars and chip rows"
60
+ "orientation constrains which axis can scroll",
61
+ "showFades hints at hidden content when nothing else does",
62
+ "scrollbarVisibility=\"hover\" hides the thumb without shifting layout",
63
+ "The container needs a fixed height or the area cannot scroll"
65
64
  ],
66
65
  "accessibility": [
67
66
  "Preserves native scroll behavior and keyboard support across both axes",
@@ -72,23 +71,23 @@
72
71
  "examples": [
73
72
  {
74
73
  "name": "Vertical",
75
- "description": "Vertical scrollable area with thin scrollbar.",
76
- "code": "<ScrollArea style={{ height: '200px' }}>\n {/* Long content */}\n</ScrollArea>"
74
+ "description": "Scrolls down with a thin, always-visible thumb.",
75
+ "code": "import { Box } from '@/components/Box';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\nimport { Text } from '@/components/Text';\n\n<Box width=\"100%\">\n <ScrollArea style={{ height: '200px' }}>\n <Box padding=\"sm\">\n <Stack gap=\"sm\">\n <Text>Row 1</Text>\n <Text>Row 2</Text>\n <Text>Row 3</Text>\n <Text>Row 4</Text>\n <Text>Row 5</Text>\n <Text>Row 6</Text>\n <Text>Row 7</Text>\n <Text>Row 8</Text>\n <Text>Row 9</Text>\n <Text>Row 10</Text>\n <Text>Row 11</Text>\n <Text>Row 12</Text>\n </Stack>\n </Box>\n </ScrollArea>\n</Box>"
77
76
  },
78
77
  {
79
78
  "name": "Horizontal",
80
- "description": "Horizontal scrollable area for overflowing inline content like tabs or chips.",
81
- "code": "<ScrollArea orientation=\"horizontal\">\n <div style={{ display: 'flex', gap: '8px' }}>\n {tags.map(tag => <Chip key={tag}>{tag}</Chip>)}\n </div>\n</ScrollArea>"
79
+ "description": "Keeps an overflowing row of chips on one line.",
80
+ "code": "import { Box } from '@/components/Box';\nimport { Chip } from '@/components/Chip';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\n\n<Box width=\"100%\">\n <ScrollArea orientation=\"horizontal\">\n <Stack direction=\"row\" gap=\"sm\">\n <Chip>React</Chip>\n <Chip>TypeScript</Chip>\n <Chip>Accessibility</Chip>\n <Chip>Docs</Chip>\n <Chip>Playground</Chip>\n <Chip>CLI</Chip>\n <Chip>Tokens</Chip>\n <Chip>Governance</Chip>\n <Chip>Contracts</Chip>\n <Chip>Registry</Chip>\n </Stack>\n </ScrollArea>\n</Box>"
82
81
  },
83
82
  {
84
83
  "name": "With Fades",
85
- "description": "Fade indicators independently show the available logical direction on each scrollable axis.",
86
- "code": "<ScrollArea orientation=\"horizontal\" showFades>\n {/* Overflowing content */}\n</ScrollArea>"
84
+ "description": "Edge fades signal there is more content each way.",
85
+ "code": "import { Box } from '@/components/Box';\nimport { Chip } from '@/components/Chip';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\n\n<Box width=\"100%\">\n <ScrollArea orientation=\"horizontal\" showFades>\n <Stack direction=\"row\" gap=\"sm\">\n <Chip>React</Chip>\n <Chip>TypeScript</Chip>\n <Chip>Accessibility</Chip>\n <Chip>Docs</Chip>\n <Chip>Playground</Chip>\n <Chip>CLI</Chip>\n <Chip>Tokens</Chip>\n <Chip>Governance</Chip>\n <Chip>Contracts</Chip>\n <Chip>Registry</Chip>\n </Stack>\n </ScrollArea>\n</Box>"
87
86
  },
88
87
  {
89
88
  "name": "Hover Scrollbar",
90
- "description": "Scrollbar thumb paint appears on hover or keyboard focus without changing track dimensions.",
91
- "code": "<ScrollArea scrollbarVisibility=\"hover\" style={{ height: '200px' }}>\n {/* Content */}\n</ScrollArea>"
89
+ "description": "Thumb stays invisible until hover or keyboard focus.",
90
+ "code": "import { Box } from '@/components/Box';\nimport { ScrollArea } from '@/components/ScrollArea';\nimport { Stack } from '@/components/Stack';\nimport { Text } from '@/components/Text';\n\n<Box width=\"100%\">\n <ScrollArea scrollbarVisibility=\"hover\" style={{ height: '200px' }}>\n <Box padding=\"sm\">\n <Stack gap=\"sm\">\n <Text>Row 1</Text>\n <Text>Row 2</Text>\n <Text>Row 3</Text>\n <Text>Row 4</Text>\n <Text>Row 5</Text>\n <Text>Row 6</Text>\n <Text>Row 7</Text>\n <Text>Row 8</Text>\n <Text>Row 9</Text>\n <Text>Row 10</Text>\n <Text>Row 11</Text>\n <Text>Row 12</Text>\n </Stack>\n </Box>\n </ScrollArea>\n</Box>"
92
91
  }
93
92
  ],
94
93
  "contract": {