@usefragments/ui 1.5.4 → 1.7.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 (667) hide show
  1. package/README.md +4 -4
  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/ui.css +10468 -6909
  6. package/dist/chart.cjs +31 -26
  7. package/dist/chart.js +31 -26
  8. package/dist/codeblock.cjs +55 -29
  9. package/dist/codeblock.js +55 -29
  10. package/dist/colorpicker.cjs +5 -2
  11. package/dist/colorpicker.js +5 -2
  12. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  13. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  14. package/dist/components/Alert/Alert.module.scss.cjs +15 -12
  15. package/dist/components/Alert/Alert.module.scss.js +15 -12
  16. package/dist/components/Alert/index.cjs +7 -1
  17. package/dist/components/Alert/index.d.ts +12 -6
  18. package/dist/components/Alert/index.d.ts.map +1 -1
  19. package/dist/components/Alert/index.js +7 -1
  20. package/dist/components/AppShell/AppShell.module.scss.cjs +14 -14
  21. package/dist/components/AppShell/AppShell.module.scss.js +14 -14
  22. package/dist/components/AppShell/index.cjs +5 -3
  23. package/dist/components/AppShell/index.d.ts +4 -2
  24. package/dist/components/AppShell/index.d.ts.map +1 -1
  25. package/dist/components/AppShell/index.js +5 -3
  26. package/dist/components/Avatar/Avatar.module.scss.cjs +17 -14
  27. package/dist/components/Avatar/Avatar.module.scss.js +17 -14
  28. package/dist/components/Avatar/index.cjs +100 -118
  29. package/dist/components/Avatar/index.d.ts +7 -5
  30. package/dist/components/Avatar/index.d.ts.map +1 -1
  31. package/dist/components/Avatar/index.js +100 -118
  32. package/dist/components/Badge/Badge.module.scss.cjs +19 -19
  33. package/dist/components/Badge/Badge.module.scss.js +19 -19
  34. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  35. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  36. package/dist/components/Box/Box.module.scss.cjs +152 -152
  37. package/dist/components/Box/Box.module.scss.js +152 -152
  38. package/dist/components/Box/index.cjs +64 -75
  39. package/dist/components/Box/index.d.ts +16 -16
  40. package/dist/components/Box/index.d.ts.map +1 -1
  41. package/dist/components/Box/index.js +64 -75
  42. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  43. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  44. package/dist/components/Button/Button.module.scss.cjs +14 -14
  45. package/dist/components/Button/Button.module.scss.js +14 -14
  46. package/dist/components/ButtonGroup/ButtonGroup.module.scss.cjs +15 -15
  47. package/dist/components/ButtonGroup/ButtonGroup.module.scss.js +15 -15
  48. package/dist/components/Card/Card.module.scss.cjs +30 -18
  49. package/dist/components/Card/Card.module.scss.js +31 -19
  50. package/dist/components/Card/index.cjs +8 -0
  51. package/dist/components/Card/index.d.ts +12 -2
  52. package/dist/components/Card/index.d.ts.map +1 -1
  53. package/dist/components/Card/index.js +8 -0
  54. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  55. package/dist/components/Chart/Chart.module.scss.js +15 -15
  56. package/dist/components/Chart/index.d.ts +7 -7
  57. package/dist/components/Chart/index.d.ts.map +1 -1
  58. package/dist/components/Checkbox/Checkbox.module.scss.cjs +9 -15
  59. package/dist/components/Checkbox/Checkbox.module.scss.js +9 -15
  60. package/dist/components/Checkbox/index.cjs +6 -8
  61. package/dist/components/Checkbox/index.d.ts.map +1 -1
  62. package/dist/components/Checkbox/index.js +6 -8
  63. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  64. package/dist/components/Chip/Chip.module.scss.js +15 -15
  65. package/dist/components/Chip/index.cjs +6 -6
  66. package/dist/components/Chip/index.d.ts +1 -1
  67. package/dist/components/Chip/index.js +4 -4
  68. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +27 -24
  69. package/dist/components/CodeBlock/CodeBlock.module.scss.js +27 -24
  70. package/dist/components/CodeBlock/css-variables-theme.cjs +98 -0
  71. package/dist/components/CodeBlock/css-variables-theme.d.ts +27 -0
  72. package/dist/components/CodeBlock/css-variables-theme.d.ts.map +1 -0
  73. package/dist/components/CodeBlock/css-variables-theme.js +98 -0
  74. package/dist/components/CodeBlock/index.d.ts +17 -3
  75. package/dist/components/CodeBlock/index.d.ts.map +1 -1
  76. package/dist/components/Collapsible/Collapsible.module.scss.cjs +9 -12
  77. package/dist/components/Collapsible/Collapsible.module.scss.js +9 -12
  78. package/dist/components/Collapsible/index.cjs +3 -2
  79. package/dist/components/Collapsible/index.d.ts +3 -3
  80. package/dist/components/Collapsible/index.d.ts.map +1 -1
  81. package/dist/components/Collapsible/index.js +3 -2
  82. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +16 -16
  83. package/dist/components/ColorPicker/ColorPicker.module.scss.js +16 -16
  84. package/dist/components/ColorPicker/index.d.ts.map +1 -1
  85. package/dist/components/Combobox/Combobox.module.scss.cjs +21 -27
  86. package/dist/components/Combobox/Combobox.module.scss.js +21 -27
  87. package/dist/components/Combobox/index.cjs +21 -5
  88. package/dist/components/Combobox/index.d.ts.map +1 -1
  89. package/dist/components/Combobox/index.js +21 -5
  90. package/dist/components/Command/Command.module.scss.cjs +11 -11
  91. package/dist/components/Command/Command.module.scss.js +11 -11
  92. package/dist/components/Command/index.cjs +26 -15
  93. package/dist/components/Command/index.d.ts +2 -2
  94. package/dist/components/Command/index.d.ts.map +1 -1
  95. package/dist/components/Command/index.js +26 -15
  96. package/dist/components/ConversationList/ConversationList.module.scss.cjs +11 -14
  97. package/dist/components/ConversationList/ConversationList.module.scss.js +11 -14
  98. package/dist/components/ConversationList/index.cjs +40 -44
  99. package/dist/components/ConversationList/index.d.ts +3 -3
  100. package/dist/components/ConversationList/index.d.ts.map +1 -1
  101. package/dist/components/ConversationList/index.js +40 -44
  102. package/dist/components/DataTable/DataTable.icons.cjs +6 -33
  103. package/dist/components/DataTable/DataTable.icons.d.ts.map +1 -1
  104. package/dist/components/DataTable/DataTable.icons.js +6 -33
  105. package/dist/components/DataTable/DataTable.module.scss.cjs +32 -56
  106. package/dist/components/DataTable/DataTable.module.scss.js +32 -56
  107. package/dist/components/DataTable/index.d.ts +5 -4
  108. package/dist/components/DataTable/index.d.ts.map +1 -1
  109. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  110. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  111. package/dist/components/DatePicker/index.d.ts.map +1 -1
  112. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  113. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  114. package/dist/components/Dialog/index.cjs +11 -14
  115. package/dist/components/Dialog/index.d.ts +7 -7
  116. package/dist/components/Dialog/index.d.ts.map +1 -1
  117. package/dist/components/Dialog/index.js +11 -14
  118. package/dist/components/Drawer/Drawer.module.scss.cjs +31 -28
  119. package/dist/components/Drawer/Drawer.module.scss.js +31 -28
  120. package/dist/components/Drawer/index.cjs +1 -1
  121. package/dist/components/Drawer/index.js +1 -1
  122. package/dist/components/Editor/Editor.module.scss.cjs +23 -23
  123. package/dist/components/Editor/Editor.module.scss.js +23 -23
  124. package/dist/components/Editor/index.d.ts +10 -10
  125. package/dist/components/Editor/index.d.ts.map +1 -1
  126. package/dist/components/EmptyState/EmptyState.module.scss.cjs +15 -12
  127. package/dist/components/EmptyState/EmptyState.module.scss.js +15 -12
  128. package/dist/components/EmptyState/index.cjs +8 -6
  129. package/dist/components/EmptyState/index.d.ts +9 -4
  130. package/dist/components/EmptyState/index.d.ts.map +1 -1
  131. package/dist/components/EmptyState/index.js +8 -6
  132. package/dist/components/Field/Field.module.scss.cjs +8 -5
  133. package/dist/components/Field/Field.module.scss.js +8 -5
  134. package/dist/components/Field/index.cjs +18 -1
  135. package/dist/components/Field/index.d.ts +9 -2
  136. package/dist/components/Field/index.d.ts.map +1 -1
  137. package/dist/components/Field/index.js +18 -1
  138. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  139. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  140. package/dist/components/Form/Form.module.scss.cjs +5 -2
  141. package/dist/components/Form/Form.module.scss.js +5 -2
  142. package/dist/components/Form/index.cjs +6 -1
  143. package/dist/components/Form/index.d.ts +8 -3
  144. package/dist/components/Form/index.d.ts.map +1 -1
  145. package/dist/components/Form/index.js +6 -1
  146. package/dist/components/Grid/Grid.module.scss.cjs +54 -72
  147. package/dist/components/Grid/Grid.module.scss.js +54 -72
  148. package/dist/components/Grid/index.cjs +57 -77
  149. package/dist/components/Grid/index.d.ts +11 -11
  150. package/dist/components/Grid/index.d.ts.map +1 -1
  151. package/dist/components/Grid/index.js +57 -77
  152. package/dist/components/Header/Header.module.scss.cjs +33 -33
  153. package/dist/components/Header/Header.module.scss.js +33 -33
  154. package/dist/components/Header/index.cjs +18 -38
  155. package/dist/components/Header/index.d.ts +15 -11
  156. package/dist/components/Header/index.d.ts.map +1 -1
  157. package/dist/components/Header/index.js +18 -38
  158. package/dist/components/Icon/Icon.module.scss.cjs +29 -8
  159. package/dist/components/Icon/Icon.module.scss.js +30 -9
  160. package/dist/components/Icon/index.cjs +30 -48
  161. package/dist/components/Icon/index.d.ts +6 -6
  162. package/dist/components/Icon/index.d.ts.map +1 -1
  163. package/dist/components/Icon/index.js +30 -48
  164. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  165. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  166. package/dist/components/IconButton/index.cjs +2 -1
  167. package/dist/components/IconButton/index.d.ts.map +1 -1
  168. package/dist/components/IconButton/index.js +2 -1
  169. package/dist/components/Image/Image.module.scss.cjs +27 -27
  170. package/dist/components/Image/Image.module.scss.js +27 -27
  171. package/dist/components/Input/Input.module.scss.cjs +19 -25
  172. package/dist/components/Input/Input.module.scss.js +19 -25
  173. package/dist/components/Input/index.cjs +1 -2
  174. package/dist/components/Input/index.d.ts.map +1 -1
  175. package/dist/components/Input/index.js +1 -2
  176. package/dist/components/Link/Link.module.scss.cjs +14 -10
  177. package/dist/components/Link/Link.module.scss.js +14 -10
  178. package/dist/components/Link/index.d.ts +1 -1
  179. package/dist/components/Link/index.d.ts.map +1 -1
  180. package/dist/components/List/List.module.scss.cjs +19 -19
  181. package/dist/components/List/List.module.scss.js +19 -19
  182. package/dist/components/List/index.cjs +4 -7
  183. package/dist/components/List/index.d.ts.map +1 -1
  184. package/dist/components/List/index.js +4 -7
  185. package/dist/components/Listbox/Listbox.module.scss.cjs +9 -9
  186. package/dist/components/Listbox/Listbox.module.scss.js +9 -9
  187. package/dist/components/Loading/Loading.module.scss.cjs +34 -34
  188. package/dist/components/Loading/Loading.module.scss.js +34 -34
  189. package/dist/components/Loading/index.cjs +39 -67
  190. package/dist/components/Loading/index.d.ts +6 -6
  191. package/dist/components/Loading/index.d.ts.map +1 -1
  192. package/dist/components/Loading/index.js +39 -67
  193. package/dist/components/Main/Main.module.scss.cjs +7 -7
  194. package/dist/components/Main/Main.module.scss.js +7 -7
  195. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  196. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  197. package/dist/components/Markdown/index.d.ts +2 -2
  198. package/dist/components/Markdown/index.d.ts.map +1 -1
  199. package/dist/components/Menu/Menu.module.scss.cjs +16 -16
  200. package/dist/components/Menu/Menu.module.scss.js +16 -16
  201. package/dist/components/Menu/index.cjs +19 -61
  202. package/dist/components/Menu/index.d.ts +10 -10
  203. package/dist/components/Menu/index.d.ts.map +1 -1
  204. package/dist/components/Menu/index.js +19 -61
  205. package/dist/components/Message/Message.module.scss.cjs +18 -21
  206. package/dist/components/Message/Message.module.scss.js +18 -21
  207. package/dist/components/Message/index.cjs +15 -2
  208. package/dist/components/Message/index.d.ts.map +1 -1
  209. package/dist/components/Message/index.js +15 -2
  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 +18 -9
  217. package/dist/components/Pagination/Pagination.module.scss.js +19 -10
  218. package/dist/components/Pagination/index.cjs +5 -2
  219. package/dist/components/Pagination/index.d.ts +3 -1
  220. package/dist/components/Pagination/index.d.ts.map +1 -1
  221. package/dist/components/Pagination/index.js +5 -2
  222. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  223. package/dist/components/Popover/Popover.module.scss.js +10 -10
  224. package/dist/components/Progress/Progress.module.scss.cjs +29 -32
  225. package/dist/components/Progress/Progress.module.scss.js +29 -32
  226. package/dist/components/Progress/geometry.cjs +30 -0
  227. package/dist/components/Progress/geometry.d.ts +8 -0
  228. package/dist/components/Progress/geometry.d.ts.map +1 -0
  229. package/dist/components/Progress/geometry.js +30 -0
  230. package/dist/components/Progress/index.cjs +40 -29
  231. package/dist/components/Progress/index.d.ts +4 -3
  232. package/dist/components/Progress/index.d.ts.map +1 -1
  233. package/dist/components/Progress/index.js +40 -29
  234. package/dist/components/Prompt/Prompt.module.scss.cjs +29 -29
  235. package/dist/components/Prompt/Prompt.module.scss.js +29 -29
  236. package/dist/components/Prompt/index.cjs +5 -4
  237. package/dist/components/Prompt/index.d.ts.map +1 -1
  238. package/dist/components/Prompt/index.js +5 -4
  239. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +15 -21
  240. package/dist/components/RadioGroup/RadioGroup.module.scss.js +15 -21
  241. package/dist/components/RadioGroup/index.cjs +7 -6
  242. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  243. package/dist/components/RadioGroup/index.js +7 -6
  244. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +7 -22
  245. package/dist/components/ScrollArea/ScrollArea.module.scss.js +7 -22
  246. package/dist/components/ScrollArea/index.cjs +66 -42
  247. package/dist/components/ScrollArea/index.d.ts +6 -5
  248. package/dist/components/ScrollArea/index.d.ts.map +1 -1
  249. package/dist/components/ScrollArea/index.js +66 -42
  250. package/dist/components/ScrollArea/scroll-state.cjs +58 -0
  251. package/dist/components/ScrollArea/scroll-state.d.ts +16 -0
  252. package/dist/components/ScrollArea/scroll-state.d.ts.map +1 -0
  253. package/dist/components/ScrollArea/scroll-state.js +58 -0
  254. package/dist/components/Select/Select.module.scss.cjs +21 -21
  255. package/dist/components/Select/Select.module.scss.js +21 -21
  256. package/dist/components/Select/index.cjs +3 -2
  257. package/dist/components/Select/index.d.ts.map +1 -1
  258. package/dist/components/Select/index.js +3 -2
  259. package/dist/components/Separator/Separator.module.scss.cjs +13 -10
  260. package/dist/components/Separator/Separator.module.scss.js +13 -10
  261. package/dist/components/Separator/index.cjs +37 -38
  262. package/dist/components/Separator/index.d.ts +4 -4
  263. package/dist/components/Separator/index.d.ts.map +1 -1
  264. package/dist/components/Separator/index.js +37 -38
  265. package/dist/components/Sidebar/Sidebar.module.scss.cjs +43 -43
  266. package/dist/components/Sidebar/Sidebar.module.scss.js +43 -43
  267. package/dist/components/Sidebar/index.cjs +17 -38
  268. package/dist/components/Sidebar/index.d.ts +23 -18
  269. package/dist/components/Sidebar/index.d.ts.map +1 -1
  270. package/dist/components/Sidebar/index.js +17 -38
  271. package/dist/components/Skeleton/Skeleton.module.scss.cjs +56 -40
  272. package/dist/components/Skeleton/Skeleton.module.scss.js +56 -40
  273. package/dist/components/Skeleton/index.cjs +41 -55
  274. package/dist/components/Skeleton/index.d.ts +7 -7
  275. package/dist/components/Skeleton/index.d.ts.map +1 -1
  276. package/dist/components/Skeleton/index.js +41 -55
  277. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  278. package/dist/components/Slider/Slider.module.scss.js +12 -12
  279. package/dist/components/Stack/Stack.module.scss.cjs +25 -45
  280. package/dist/components/Stack/Stack.module.scss.js +25 -45
  281. package/dist/components/Stack/index.cjs +106 -101
  282. package/dist/components/Stack/index.d.ts +7 -7
  283. package/dist/components/Stack/index.d.ts.map +1 -1
  284. package/dist/components/Stack/index.js +106 -101
  285. package/dist/components/Switch/Switch.module.scss.cjs +32 -0
  286. package/dist/components/Switch/Switch.module.scss.js +32 -0
  287. package/dist/components/{Toggle → Switch}/index.cjs +9 -14
  288. package/dist/components/Switch/index.d.ts +37 -1
  289. package/dist/components/Switch/index.d.ts.map +1 -1
  290. package/dist/components/{Toggle → Switch}/index.js +5 -10
  291. package/dist/components/Table/Table.module.scss.cjs +21 -30
  292. package/dist/components/Table/Table.module.scss.js +21 -30
  293. package/dist/components/Table/index.d.ts +6 -5
  294. package/dist/components/Table/index.d.ts.map +1 -1
  295. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  296. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  297. package/dist/components/TableOfContents/index.cjs +13 -9
  298. package/dist/components/TableOfContents/index.d.ts +5 -3
  299. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  300. package/dist/components/TableOfContents/index.js +13 -9
  301. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  302. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  303. package/dist/components/Tabs/index.cjs +28 -8
  304. package/dist/components/Tabs/index.d.ts.map +1 -1
  305. package/dist/components/Tabs/index.js +28 -8
  306. package/dist/components/Text/Text.module.scss.cjs +105 -57
  307. package/dist/components/Text/Text.module.scss.js +105 -57
  308. package/dist/components/Text/index.cjs +49 -33
  309. package/dist/components/Text/index.d.ts +30 -19
  310. package/dist/components/Text/index.d.ts.map +1 -1
  311. package/dist/components/Text/index.js +49 -33
  312. package/dist/components/Textarea/Textarea.module.scss.cjs +26 -23
  313. package/dist/components/Textarea/Textarea.module.scss.js +26 -23
  314. package/dist/components/Textarea/index.cjs +5 -10
  315. package/dist/components/Textarea/index.d.ts.map +1 -1
  316. package/dist/components/Textarea/index.js +5 -10
  317. package/dist/components/Theme/context.cjs +39 -0
  318. package/dist/components/Theme/context.d.ts +21 -0
  319. package/dist/components/Theme/context.d.ts.map +1 -0
  320. package/dist/components/Theme/context.js +22 -0
  321. package/dist/components/Theme/index.cjs +16 -210
  322. package/dist/components/Theme/index.d.ts +4 -37
  323. package/dist/components/Theme/index.d.ts.map +1 -1
  324. package/dist/components/Theme/index.js +11 -205
  325. package/dist/components/{Theme → ThemeToggle}/ThemeToggle.module.scss.cjs +9 -6
  326. package/dist/components/ThemeToggle/ThemeToggle.module.scss.js +26 -0
  327. package/dist/components/ThemeToggle/index.cjs +140 -0
  328. package/dist/components/ThemeToggle/index.d.ts +26 -0
  329. package/dist/components/ThemeToggle/index.d.ts.map +1 -0
  330. package/dist/components/ThemeToggle/index.js +140 -0
  331. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  332. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  333. package/dist/components/ThinkingIndicator/index.cjs +34 -41
  334. package/dist/components/ThinkingIndicator/index.d.ts +4 -4
  335. package/dist/components/ThinkingIndicator/index.d.ts.map +1 -1
  336. package/dist/components/ThinkingIndicator/index.js +34 -41
  337. package/dist/components/Toast/Toast.module.scss.cjs +20 -20
  338. package/dist/components/Toast/Toast.module.scss.js +20 -20
  339. package/dist/components/Toggle/index.d.ts +2 -42
  340. package/dist/components/Toggle/index.d.ts.map +1 -1
  341. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +20 -20
  342. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +20 -20
  343. package/dist/components/ToggleGroup/index.cjs +3 -2
  344. package/dist/components/ToggleGroup/index.d.ts +2 -1
  345. package/dist/components/ToggleGroup/index.d.ts.map +1 -1
  346. package/dist/components/ToggleGroup/index.js +3 -2
  347. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  348. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  349. package/dist/components/Tooltip/index.cjs +24 -40
  350. package/dist/components/Tooltip/index.d.ts +4 -4
  351. package/dist/components/Tooltip/index.d.ts.map +1 -1
  352. package/dist/components/Tooltip/index.js +24 -40
  353. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.cjs +1 -1
  354. package/dist/components/VisuallyHidden/VisuallyHidden.module.scss.js +1 -1
  355. package/dist/components/VisuallyHidden/index.d.ts +2 -2
  356. package/dist/data-table.cjs +14 -10
  357. package/dist/data-table.js +14 -10
  358. package/dist/datepicker.cjs +5 -3
  359. package/dist/datepicker.js +5 -3
  360. package/dist/editor.cjs +68 -28
  361. package/dist/editor.js +68 -28
  362. package/dist/index.cjs +101 -99
  363. package/dist/index.d.ts +3 -3
  364. package/dist/index.d.ts.map +1 -1
  365. package/dist/index.js +6 -4
  366. package/dist/markdown.cjs +21 -29
  367. package/dist/markdown.js +22 -30
  368. package/dist/measurements/generated.cjs +304 -0
  369. package/dist/measurements/generated.d.ts +268 -0
  370. package/dist/measurements/generated.d.ts.map +1 -0
  371. package/dist/measurements/generated.js +304 -0
  372. package/dist/measurements/index.d.ts +2 -0
  373. package/dist/measurements/index.d.ts.map +1 -0
  374. package/dist/measurements.cjs +6 -0
  375. package/dist/measurements.js +6 -0
  376. package/dist/recipes/popup.cjs +14 -0
  377. package/dist/recipes/popup.d.ts +4 -0
  378. package/dist/recipes/popup.d.ts.map +1 -0
  379. package/dist/recipes/popup.js +14 -0
  380. package/dist/recipes/table-chrome.cjs +18 -0
  381. package/dist/recipes/table-chrome.d.ts +10 -0
  382. package/dist/recipes/table-chrome.d.ts.map +1 -0
  383. package/dist/recipes/table-chrome.js +18 -0
  384. package/dist/table.cjs +5 -2
  385. package/dist/table.js +5 -2
  386. package/dist/utils/a11y.cjs +5 -2
  387. package/dist/utils/a11y.d.ts +5 -5
  388. package/dist/utils/a11y.d.ts.map +1 -1
  389. package/dist/utils/a11y.js +5 -2
  390. package/dist/utils/canonical-stamp.cjs +2 -8
  391. package/dist/utils/canonical-stamp.d.ts.map +1 -1
  392. package/dist/utils/canonical-stamp.js +1 -7
  393. package/dist/utils/css-warning.cjs +1 -1
  394. package/dist/utils/css-warning.js +1 -1
  395. package/dist/utils/env.cjs +17 -0
  396. package/dist/utils/env.d.ts +3 -0
  397. package/dist/utils/env.d.ts.map +1 -0
  398. package/dist/utils/env.js +17 -0
  399. package/dist/utils/keyboard-shortcuts.cjs +3 -10
  400. package/dist/utils/keyboard-shortcuts.d.ts +4 -4
  401. package/dist/utils/keyboard-shortcuts.d.ts.map +1 -1
  402. package/dist/utils/keyboard-shortcuts.js +3 -10
  403. package/dist/utils/layout-spacing.cjs +27 -0
  404. package/dist/utils/layout-spacing.d.ts +5 -0
  405. package/dist/utils/layout-spacing.d.ts.map +1 -0
  406. package/dist/utils/layout-spacing.js +27 -0
  407. package/dist/utils/seed-derivation.cjs +14 -48
  408. package/dist/utils/seed-derivation.d.ts +4 -3
  409. package/dist/utils/seed-derivation.d.ts.map +1 -1
  410. package/dist/utils/seed-derivation.js +14 -48
  411. package/dist/utils/theme-presets.cjs +1 -0
  412. package/dist/utils/theme-presets.d.ts +3 -2
  413. package/dist/utils/theme-presets.d.ts.map +1 -1
  414. package/dist/utils/theme-presets.js +1 -0
  415. package/fragments.json +1 -1
  416. package/package.json +25 -4
  417. package/src/assets/fragments-logo.tsx +2 -2
  418. package/src/assets/fragments-wordmark.tsx +4 -2
  419. package/src/components/Accordion/Accordion.contract.json +24 -48
  420. package/src/components/Accordion/Accordion.module.scss +31 -52
  421. package/src/components/Alert/Alert.contract.json +37 -53
  422. package/src/components/Alert/Alert.module.scss +52 -44
  423. package/src/components/Alert/index.tsx +55 -29
  424. package/src/components/AppShell/AppShell.contract.json +34 -51
  425. package/src/components/AppShell/AppShell.module.scss +59 -43
  426. package/src/components/AppShell/index.tsx +8 -4
  427. package/src/components/Avatar/Avatar.contract.json +31 -48
  428. package/src/components/Avatar/Avatar.module.scss +25 -60
  429. package/src/components/Avatar/index.tsx +152 -146
  430. package/src/components/Badge/Badge.contract.json +37 -42
  431. package/src/components/Badge/Badge.module.scss +59 -47
  432. package/src/components/BentoGrid/BentoGrid.contract.json +21 -45
  433. package/src/components/BentoGrid/BentoGrid.module.scss +11 -32
  434. package/src/components/Box/Box.contract.json +40 -148
  435. package/src/components/Box/Box.module.scss +253 -81
  436. package/src/components/Box/index.tsx +92 -99
  437. package/src/components/Breadcrumbs/Breadcrumbs.contract.json +21 -34
  438. package/src/components/Breadcrumbs/Breadcrumbs.module.scss +19 -15
  439. package/src/components/Button/Button.module.scss +60 -64
  440. package/src/components/ButtonGroup/ButtonGroup.contract.json +32 -47
  441. package/src/components/ButtonGroup/ButtonGroup.module.scss +5 -5
  442. package/src/components/Card/Card.consumer-fixture.module.scss +8 -0
  443. package/src/components/Card/Card.module.scss +284 -167
  444. package/src/components/Card/index.tsx +21 -2
  445. package/src/components/Chart/Chart.contract.json +21 -29
  446. package/src/components/Chart/Chart.module.scss +28 -29
  447. package/src/components/Chart/index.tsx +72 -55
  448. package/src/components/Checkbox/Checkbox.contract.json +24 -24
  449. package/src/components/Checkbox/Checkbox.module.scss +75 -87
  450. package/src/components/Checkbox/index.tsx +8 -11
  451. package/src/components/Chip/Chip.contract.json +36 -42
  452. package/src/components/Chip/Chip.module.scss +25 -36
  453. package/src/components/Chip/index.tsx +5 -5
  454. package/src/components/CodeBlock/CodeBlock.contract.json +46 -76
  455. package/src/components/CodeBlock/CodeBlock.module.scss +129 -217
  456. package/src/components/CodeBlock/css-variables-theme.ts +102 -0
  457. package/src/components/CodeBlock/index.tsx +91 -35
  458. package/src/components/Collapsible/Collapsible.contract.json +21 -36
  459. package/src/components/Collapsible/Collapsible.module.scss +29 -63
  460. package/src/components/Collapsible/index.tsx +22 -26
  461. package/src/components/ColorPicker/ColorPicker.contract.json +29 -48
  462. package/src/components/ColorPicker/ColorPicker.module.scss +54 -33
  463. package/src/components/ColorPicker/index.tsx +7 -2
  464. package/src/components/Combobox/Combobox.contract.json +36 -37
  465. package/src/components/Combobox/Combobox.module.scss +61 -74
  466. package/src/components/Combobox/index.tsx +34 -6
  467. package/src/components/Command/Command.contract.json +21 -43
  468. package/src/components/Command/Command.module.scss +47 -77
  469. package/src/components/Command/index.tsx +58 -47
  470. package/src/components/ConversationList/ConversationList.contract.json +27 -32
  471. package/src/components/ConversationList/ConversationList.module.scss +20 -78
  472. package/src/components/ConversationList/index.tsx +55 -59
  473. package/src/components/DataTable/DataTable.icons.tsx +4 -21
  474. package/src/components/DataTable/DataTable.module.scss +81 -217
  475. package/src/components/DataTable/index.tsx +28 -32
  476. package/src/components/DatePicker/DatePicker.contract.json +27 -28
  477. package/src/components/DatePicker/DatePicker.module.scss +66 -38
  478. package/src/components/DatePicker/index.tsx +7 -3
  479. package/src/components/Dialog/Dialog.module.scss +45 -69
  480. package/src/components/Dialog/index.tsx +47 -37
  481. package/src/components/Drawer/Drawer.contract.json +22 -36
  482. package/src/components/Drawer/Drawer.module.scss +93 -99
  483. package/src/components/Drawer/index.tsx +1 -1
  484. package/src/components/Editor/Editor.contract.json +31 -48
  485. package/src/components/Editor/Editor.module.scss +137 -220
  486. package/src/components/Editor/index.tsx +240 -179
  487. package/src/components/EmptyState/EmptyState.contract.json +31 -43
  488. package/src/components/EmptyState/EmptyState.module.scss +45 -84
  489. package/src/components/EmptyState/index.tsx +48 -23
  490. package/src/components/Field/Field.contract.json +28 -45
  491. package/src/components/Field/Field.module.scss +9 -11
  492. package/src/components/Field/index.tsx +31 -1
  493. package/src/components/Fieldset/Fieldset.contract.json +21 -38
  494. package/src/components/Fieldset/Fieldset.module.scss +23 -8
  495. package/src/components/Form/Form.contract.json +27 -40
  496. package/src/components/Form/Form.module.scss +9 -4
  497. package/src/components/Form/index.tsx +22 -7
  498. package/src/components/Grid/Grid.contract.json +28 -64
  499. package/src/components/Grid/Grid.module.scss +159 -63
  500. package/src/components/Grid/index.tsx +114 -133
  501. package/src/components/Header/Header.contract.json +31 -67
  502. package/src/components/Header/Header.module.scss +56 -48
  503. package/src/components/Header/index.tsx +134 -121
  504. package/src/components/Icon/Icon.contract.json +22 -62
  505. package/src/components/Icon/Icon.module.scss +16 -0
  506. package/src/components/Icon/index.tsx +74 -86
  507. package/src/components/IconButton/IconButton.contract.json +34 -18
  508. package/src/components/IconButton/IconButton.module.scss +15 -26
  509. package/src/components/IconButton/index.tsx +2 -1
  510. package/src/components/Image/Image.contract.json +23 -56
  511. package/src/components/Input/Input.contract.json +26 -32
  512. package/src/components/Input/Input.module.scss +69 -56
  513. package/src/components/Input/index.tsx +1 -2
  514. package/src/components/Link/Link.contract.json +32 -52
  515. package/src/components/Link/Link.module.scss +29 -13
  516. package/src/components/Link/index.tsx +1 -1
  517. package/src/components/List/List.contract.json +23 -52
  518. package/src/components/List/List.module.scss +16 -21
  519. package/src/components/List/index.tsx +4 -10
  520. package/src/components/Listbox/Listbox.contract.json +21 -37
  521. package/src/components/Listbox/Listbox.module.scss +26 -54
  522. package/src/components/Loading/Loading.contract.json +37 -61
  523. package/src/components/Loading/Loading.module.scss +33 -40
  524. package/src/components/Loading/index.tsx +68 -97
  525. package/src/components/Main/Main.contract.json +17 -9
  526. package/src/components/Main/Main.module.scss +3 -5
  527. package/src/components/Markdown/Markdown.contract.json +22 -43
  528. package/src/components/Markdown/Markdown.module.scss +72 -182
  529. package/src/components/Markdown/index.tsx +50 -51
  530. package/src/components/Menu/Menu.contract.json +25 -41
  531. package/src/components/Menu/Menu.module.scss +63 -133
  532. package/src/components/Menu/index.tsx +57 -89
  533. package/src/components/Message/Message.contract.json +29 -52
  534. package/src/components/Message/Message.module.scss +60 -143
  535. package/src/components/Message/index.tsx +16 -6
  536. package/src/components/NavigationMenu/NavigationMenu.contract.json +36 -45
  537. package/src/components/NavigationMenu/NavigationMenu.module.scss +123 -71
  538. package/src/components/NavigationMenu/index.tsx +105 -81
  539. package/src/components/Pagination/Pagination.contract.json +22 -40
  540. package/src/components/Pagination/Pagination.module.scss +34 -27
  541. package/src/components/Pagination/index.tsx +7 -2
  542. package/src/components/Popover/Popover.contract.json +24 -46
  543. package/src/components/Popover/Popover.module.scss +43 -78
  544. package/src/components/Progress/Progress.contract.json +32 -28
  545. package/src/components/Progress/Progress.module.scss +64 -43
  546. package/src/components/Progress/geometry.ts +41 -0
  547. package/src/components/Progress/index.tsx +44 -30
  548. package/src/components/Prompt/Prompt.contract.json +31 -47
  549. package/src/components/Prompt/Prompt.module.scss +58 -87
  550. package/src/components/Prompt/index.tsx +6 -5
  551. package/src/components/RadioGroup/RadioGroup.contract.json +23 -24
  552. package/src/components/RadioGroup/RadioGroup.module.scss +63 -83
  553. package/src/components/RadioGroup/index.tsx +7 -9
  554. package/src/components/ScrollArea/ScrollArea.contract.json +23 -40
  555. package/src/components/ScrollArea/ScrollArea.module.scss +123 -97
  556. package/src/components/ScrollArea/index.tsx +85 -67
  557. package/src/components/ScrollArea/scroll-state.ts +87 -0
  558. package/src/components/Select/Select.module.scss +55 -43
  559. package/src/components/Select/index.tsx +6 -2
  560. package/src/components/Separator/Separator.contract.json +24 -48
  561. package/src/components/Separator/Separator.module.scss +29 -19
  562. package/src/components/Separator/index.tsx +55 -51
  563. package/src/components/Sidebar/Sidebar.contract.json +42 -62
  564. package/src/components/Sidebar/Sidebar.module.scss +117 -106
  565. package/src/components/Sidebar/index.tsx +169 -162
  566. package/src/components/Skeleton/Skeleton.contract.json +28 -54
  567. package/src/components/Skeleton/Skeleton.module.scss +51 -34
  568. package/src/components/Skeleton/index.tsx +65 -72
  569. package/src/components/Slider/Slider.contract.json +27 -39
  570. package/src/components/Slider/Slider.module.scss +33 -27
  571. package/src/components/Stack/Stack.contract.json +29 -56
  572. package/src/components/Stack/Stack.module.scss +110 -38
  573. package/src/components/Stack/index.tsx +157 -127
  574. package/src/components/{Toggle/Toggle.contract.json → Switch/Switch.contract.json} +34 -47
  575. package/src/components/Switch/Switch.module.scss +255 -0
  576. package/src/components/{Toggle → Switch}/index.tsx +5 -21
  577. package/src/components/Table/Table.contract.json +28 -46
  578. package/src/components/Table/Table.module.scss +50 -129
  579. package/src/components/Table/index.tsx +13 -6
  580. package/src/components/TableOfContents/TableOfContents.contract.json +34 -21
  581. package/src/components/TableOfContents/TableOfContents.module.scss +35 -182
  582. package/src/components/TableOfContents/index.tsx +26 -9
  583. package/src/components/Tabs/Tabs.contract.json +24 -45
  584. package/src/components/Tabs/Tabs.module.scss +28 -23
  585. package/src/components/Tabs/index.tsx +17 -5
  586. package/src/components/Text/Text.contract.json +30 -72
  587. package/src/components/Text/Text.module.scss +43 -7
  588. package/src/components/Text/index.tsx +136 -63
  589. package/src/components/Textarea/Textarea.contract.json +25 -43
  590. package/src/components/Textarea/Textarea.module.scss +58 -40
  591. package/src/components/Textarea/index.tsx +5 -12
  592. package/src/components/Theme/Theme.contract.json +32 -51
  593. package/src/components/Theme/context.ts +42 -0
  594. package/src/components/Theme/index.tsx +16 -310
  595. package/src/components/ThemeToggle/ThemeToggle.module.scss +89 -0
  596. package/src/components/ThemeToggle/index.tsx +180 -0
  597. package/src/components/ThinkingIndicator/ThinkingIndicator.contract.json +23 -40
  598. package/src/components/ThinkingIndicator/ThinkingIndicator.module.scss +24 -19
  599. package/src/components/ThinkingIndicator/index.tsx +44 -54
  600. package/src/components/Toast/Toast.contract.json +35 -61
  601. package/src/components/Toast/Toast.module.scss +62 -139
  602. package/src/components/Toggle/index.ts +7 -0
  603. package/src/components/ToggleGroup/ToggleGroup.contract.json +40 -68
  604. package/src/components/ToggleGroup/ToggleGroup.module.scss +166 -89
  605. package/src/components/ToggleGroup/index.tsx +5 -3
  606. package/src/components/Tooltip/Tooltip.contract.json +31 -52
  607. package/src/components/Tooltip/Tooltip.module.scss +23 -39
  608. package/src/components/Tooltip/index.tsx +19 -24
  609. package/src/components/VisuallyHidden/VisuallyHidden.contract.json +22 -44
  610. package/src/components/VisuallyHidden/VisuallyHidden.module.scss +3 -0
  611. package/src/components/VisuallyHidden/index.tsx +5 -5
  612. package/src/index.ts +4 -3
  613. package/src/measurements/MeasurementTargets.module.scss +229 -0
  614. package/src/measurements/generated.ts +324 -0
  615. package/src/measurements/index.ts +8 -0
  616. package/src/measurements/measurements.json +368 -0
  617. package/src/recipes/_action.scss +138 -0
  618. package/src/recipes/_boolean-range.scss +116 -0
  619. package/src/recipes/_feedback.scss +171 -0
  620. package/src/recipes/_field.scss +102 -0
  621. package/src/recipes/_layout.scss +74 -0
  622. package/src/recipes/_navigation.scss +110 -0
  623. package/src/recipes/_overlay.scss +191 -0
  624. package/src/recipes/_popup.scss +102 -0
  625. package/src/recipes/_prose.scss +182 -0
  626. package/src/recipes/_representation.scss +193 -0
  627. package/src/recipes/_segmented.scss +26 -0
  628. package/src/recipes/_surface.scss +13 -0
  629. package/src/recipes/_table-chrome.scss +119 -0
  630. package/src/recipes/_target.scss +31 -0
  631. package/src/recipes/_typography.scss +38 -0
  632. package/src/recipes/popup.ts +12 -0
  633. package/src/recipes/table-chrome.ts +30 -0
  634. package/src/scss.d.ts +1 -1
  635. package/src/styles/globals.scss +21 -20
  636. package/src/tokens/_component-properties.scss +2 -2
  637. package/src/tokens/_computed.scss +14 -25
  638. package/src/tokens/_density.scss +41 -132
  639. package/src/tokens/_derive.scss +112 -210
  640. package/src/tokens/_measurements.catalog.generated.css +96 -0
  641. package/src/tokens/_measurements.generated.scss +617 -0
  642. package/src/tokens/_mixins.scss +7 -284
  643. package/src/tokens/_palettes.scss +39 -167
  644. package/src/tokens/_property-registrations.scss +96 -92
  645. package/src/tokens/_radius.scss +16 -70
  646. package/src/tokens/_seeds.scss +24 -23
  647. package/src/tokens/_variables.scss +338 -178
  648. package/src/utils/a11y.tsx +69 -69
  649. package/src/utils/aria.ts +3 -3
  650. package/src/utils/canonical-stamp.ts +2 -12
  651. package/src/utils/css-warning.ts +7 -7
  652. package/src/utils/env.ts +25 -0
  653. package/src/utils/keyboard-shortcuts.ts +131 -126
  654. package/src/utils/layout-spacing.ts +31 -0
  655. package/src/utils/seed-derivation.ts +144 -178
  656. package/src/utils/theme-presets.ts +58 -30
  657. package/dist/components/Theme/ThemeToggle.module.scss.js +0 -23
  658. package/dist/components/Toggle/Toggle.module.scss.cjs +0 -44
  659. package/dist/components/Toggle/Toggle.module.scss.js +0 -44
  660. package/src/components/Button/Button.contract.json +0 -218
  661. package/src/components/Card/Card.contract.json +0 -175
  662. package/src/components/DataTable/DataTable.contract.json +0 -302
  663. package/src/components/Dialog/Dialog.contract.json +0 -159
  664. package/src/components/Select/Select.contract.json +0 -259
  665. package/src/components/Switch/index.ts +0 -3
  666. package/src/components/Theme/ThemeToggle.module.scss +0 -91
  667. package/src/components/Toggle/Toggle.module.scss +0 -244
@@ -1,212 +1,329 @@
1
1
  @use "../../tokens/variables" as *;
2
2
  @use "../../tokens/mixins" as *;
3
+ @use "../../recipes/action" as action;
4
+ @use "../../recipes/surface" as surface;
5
+ @use "../../recipes/typography" as typography;
3
6
 
4
- .card {
5
- @include surface-elevated;
6
- font-family: var(--fui-font-sans, $fui-font-sans);
7
- color: var(--fui-text-primary, $fui-text-primary);
8
- background-color: var(--fui-card-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
9
- border-color: var(--fui-card-border, var(--fui-border, #{$fui-border}));
10
- border-radius: var(--fui-card-radius, var(--fui-radius-lg, #{$fui-radius-lg}));
11
- box-shadow: var(--fui-card-shadow, none);
12
- transition:
13
- box-shadow var(--fui-transition-fast, $fui-transition-fast),
14
- border-color var(--fui-transition-fast, $fui-transition-fast),
15
- background-color var(--fui-transition-fast, $fui-transition-fast),
16
- transform var(--fui-transition-fast, $fui-transition-fast);
7
+ // The private inset channels are element-scoped signals between a card's own
8
+ // classes, but custom properties inherit by default — a Card nested inside
9
+ // another Card (docs previews, dashboard panels) would receive the outer
10
+ // card's forced/requested inset and lose its padding. Register them as
11
+ // non-inheriting so each card resolves only its own channels.
12
+ @property --_card-root-forced-inset {
13
+ syntax: "*";
14
+ inherits: false;
17
15
  }
18
16
 
19
- // Variants
20
- .default {
21
- background-color: var(--fui-card-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
22
- border-color: var(--fui-card-border, var(--fui-border, #{$fui-border}));
23
- box-shadow: var(--fui-card-shadow, none);
17
+ @property --_card-root-requested-inset {
18
+ syntax: "*";
19
+ inherits: false;
24
20
  }
25
21
 
26
- .outlined {
27
- background-color: transparent;
28
- border-color: var(
29
- --fui-card-outlined-border,
30
- var(--fui-card-border, var(--fui-border-strong, #{$fui-border-strong}))
31
- );
32
- box-shadow: none;
22
+ @property --_card-body-inset {
23
+ syntax: "*";
24
+ inherits: false;
33
25
  }
34
26
 
35
- .elevated {
36
- background-color: var(--fui-card-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
37
- border-color: var(--fui-card-border, var(--fui-border, #{$fui-border}));
38
- box-shadow: var(--fui-card-elevated-shadow, var(--fui-card-shadow, none));
39
- }
27
+ @layer fui.components {
28
+ .card {
29
+ @include surface-elevated;
30
+ @include typography.role("body-compact");
40
31
 
41
- // Compact metric tile for dashboard grids. It uses the same card radius and
42
- // hairline model as panels, with a quieter fill so adjacent metric tiles read
43
- // as one dashboard system rather than separate hero cards.
44
- .stat {
45
- background-color: var(
46
- --fui-card-stat-bg,
47
- var(
48
- --fui-card-bg,
49
- color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 2%, transparent)
50
- )
51
- );
52
- border-color: var(
53
- --fui-card-stat-border,
54
- var(--fui-card-border, var(--fui-border, #{$fui-border}))
55
- );
56
- box-shadow: var(--fui-card-stat-shadow, var(--fui-card-shadow, none));
57
- }
32
+ padding: var(
33
+ --_card-root-forced-inset,
34
+ var(--_card-root-requested-inset, #{surface.inset("default")})
35
+ );
36
+ color: var(--fui-text-primary, $fui-text-primary);
37
+ background-color: var(--fui-card-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
38
+ border-color: var(--fui-card-border, var(--fui-border, #{$fui-border}));
39
+ border-radius: var(--fui-card-radius, var(--fui-radius-lg, #{$fui-radius-lg}));
40
+ box-shadow: var(--fui-card-shadow, none);
41
+ transition:
42
+ box-shadow var(--fui-transition-fast, $fui-transition-fast),
43
+ border-color var(--fui-transition-fast, $fui-transition-fast),
44
+ background-color var(--fui-transition-fast, $fui-transition-fast),
45
+ transform var(--fui-transition-fast, $fui-transition-fast);
46
+ }
58
47
 
59
- // Hairline-bordered panel with no own padding — designed for compound use
60
- // with `Card.Header divided` + `Card.Body` inside dashboards. Each region
61
- // owns its spacing so panel headers can be full-bleed with a hairline
62
- // divider underneath. Uses the same surface-agnostic overlay as `.stat`.
63
- // Padding is forced to 0 here so the variant works regardless of the
64
- // `padding` prop — children manage their own spacing inside a panel.
65
- .panel {
66
- background-color: var(
67
- --fui-panel-bg,
68
- var(
69
- --fui-card-bg,
70
- color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 2%, transparent)
71
- )
72
- );
73
- border-color: var(--fui-panel-border, var(--fui-card-border, var(--fui-border, #{$fui-border})));
74
- box-shadow: var(--fui-card-panel-shadow, var(--fui-card-shadow, none));
75
- overflow: hidden;
76
- padding: 0;
77
- }
48
+ // Variants
49
+ .default {
50
+ background-color: var(--fui-card-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
51
+ border-color: var(--fui-card-border, var(--fui-border, #{$fui-border}));
52
+ box-shadow: var(--fui-card-shadow, none);
53
+ }
78
54
 
79
- // Padding
80
- .paddingNone {
81
- padding: 0;
82
- }
55
+ .outlined {
56
+ background-color: transparent;
57
+ border-color: var(
58
+ --fui-card-outlined-border,
59
+ var(--fui-card-border, var(--fui-border-strong, #{$fui-border-strong}))
60
+ );
61
+ box-shadow: none;
62
+ }
83
63
 
84
- // Canonical spacing scale (shared with Box/Stack/Grid/BentoGrid/List): sm=2 md=3 lg=4
85
- .paddingSm {
86
- padding: var(--fui-space-2, $fui-space-2);
87
- }
64
+ .elevated {
65
+ background-color: var(--fui-card-bg, var(--fui-bg-elevated, #{$fui-bg-elevated}));
66
+ border-color: var(--fui-card-border, var(--fui-border, #{$fui-border}));
67
+ box-shadow: var(--fui-card-elevated-shadow, var(--fui-card-shadow, none));
68
+ }
88
69
 
89
- .paddingMd {
90
- padding: var(--fui-space-3, $fui-space-3);
91
- }
70
+ // Compact metric tile for dashboard grids. It uses the same card radius and
71
+ // hairline model as panels, with a quieter fill so adjacent metric tiles read
72
+ // as one dashboard system rather than separate hero cards.
73
+ .stat {
74
+ background-color: var(
75
+ --fui-card-stat-bg,
76
+ var(
77
+ --fui-card-bg,
78
+ color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 2%, transparent)
79
+ )
80
+ );
81
+ border-color: var(
82
+ --fui-card-stat-border,
83
+ var(--fui-card-border, var(--fui-border, #{$fui-border}))
84
+ );
85
+ box-shadow: var(--fui-card-stat-shadow, var(--fui-card-shadow, none));
86
+ }
92
87
 
93
- .paddingLg {
94
- padding: var(--fui-space-4, $fui-space-4);
95
- }
88
+ // Hairline-bordered panel with no root inset — designed for compound use
89
+ // with `Card.Header divided` + `Card.Body` inside dashboards. Each region
90
+ // owns its spacing so panel headers can be full-bleed with a hairline
91
+ // divider underneath. Uses the same surface-agnostic overlay as `.stat`.
92
+ // The private forced-inset channel makes this deterministic regardless of the
93
+ // `padding` prop or DOM class order.
94
+ .panel {
95
+ --_card-root-forced-inset: #{surface.inset("panel")};
96
96
 
97
- // Interactive card (when onClick is provided).
98
- // Card renders as an `article`/`div`/`section` (never a real `<button>`), so
99
- // applying `button-reset` here was gratuitous — and it was silently wiping
100
- // out variant-applied borders and backgrounds (the reset sets
101
- // `border: none; background: transparent`). Keep only the clickable
102
- // affordances; variants keep their surface and border untouched.
103
- .interactive {
104
- @include interactive-base;
105
-
106
- display: block;
107
- width: 100%;
108
- text-align: left;
109
- cursor: pointer;
110
- font: inherit;
111
- color: inherit;
112
-
113
- &:hover {
114
- background-color: var(--fui-card-hover-bg, var(--fui-bg-hover, #{$fui-bg-hover}));
115
- border-color: var(--fui-card-hover-border, var(--fui-border-strong, #{$fui-border-strong}));
116
- box-shadow: none;
97
+ background-color: var(
98
+ --fui-panel-bg,
99
+ var(
100
+ --fui-card-bg,
101
+ color-mix(in srgb, var(--fui-text-primary, #{$fui-text-primary}) 2%, transparent)
102
+ )
103
+ );
104
+ border-color: var(
105
+ --fui-panel-border,
106
+ var(--fui-card-border, var(--fui-border, #{$fui-border}))
107
+ );
108
+ box-shadow: var(--fui-card-panel-shadow, var(--fui-card-shadow, none));
109
+ overflow: hidden;
117
110
  }
118
111
 
119
- &:active {
120
- background-color: var(--fui-card-active-bg, var(--fui-bg-active, $fui-bg-active));
121
- box-shadow: var(
122
- --fui-card-active-shadow,
123
- inset 0 1px 2px color-mix(in srgb, black 12%, transparent)
124
- );
112
+ // Accent capsule — the earned-moment surface (demo banner, upgrade panel,
113
+ // onboarding resume capsule). Accent-tinted hairline, radial accent wash
114
+ // from the top-right corner. Radius matches the default card.
115
+ .accent {
116
+ position: relative;
117
+ overflow: hidden;
118
+ background-color: var(--fui-card-accent-bg, #{$fui-card-accent-bg});
119
+ border-color: var(--fui-card-accent-border, #{$fui-card-accent-border});
120
+ border-radius: var(--fui-card-accent-radius, #{$fui-card-accent-radius});
121
+ box-shadow: none;
122
+
123
+ &::before {
124
+ content: "";
125
+ position: absolute;
126
+ inset: 0;
127
+ pointer-events: none;
128
+ background: radial-gradient(
129
+ 90% 70% at 100% -10%,
130
+ color-mix(in srgb, var(--fui-color-accent, #{$fui-color-accent}) 13%, transparent),
131
+ transparent 62%
132
+ );
133
+ }
125
134
  }
126
- }
127
135
 
128
- .header {
129
- margin-bottom: var(--fui-space-2, $fui-space-2);
130
- }
136
+ // Accent tones — same capsule, state-coloured hairline + wash. Chroma is
137
+ // earned by state (SPEC §4.4): danger = a merge is held, warning =
138
+ // enforcement lapsed, neutral = waiting (no wash at all).
139
+ .toneDanger {
140
+ border-color: var(--fui-color-danger-border, #{$fui-color-danger-border});
131
141
 
132
- // Full-bleed panel-header region with a 40px minimum height, canonical inset,
133
- // and a hairline bottom divider. No trailing margin — it sits flush above the
134
- // panel body, which manages its own padding. Use inside `variant="panel"`.
135
- .headerDivided {
136
- display: flex;
137
- align-items: center;
138
- gap: var(--fui-space-1, $fui-space-1);
139
- min-height: 2.857rem; // 40px
140
- padding: var(--fui-space-2, $fui-space-2);
141
- margin-bottom: 0;
142
- border-bottom: 1px solid var(--fui-border, $fui-border);
143
- }
142
+ &::before {
143
+ background: radial-gradient(
144
+ 90% 70% at 100% -10%,
145
+ var(--fui-color-danger-bg, #{$fui-color-danger-bg}),
146
+ transparent 62%
147
+ );
148
+ }
149
+ }
144
150
 
145
- .title {
146
- margin: 0;
147
- font-size: var(--fui-font-size-base, $fui-font-size-base);
148
- font-weight: var(--fui-font-weight-semibold, $fui-font-weight-semibold);
149
- color: var(--fui-text-primary, $fui-text-primary);
150
- line-height: var(--fui-line-height-tight, $fui-line-height-tight);
151
- }
151
+ .toneWarning {
152
+ border-color: var(--fui-color-warning-border, #{$fui-color-warning-border});
152
153
 
153
- .description {
154
- margin: 0 0 var(--fui-space-1, $fui-space-1) 0;
155
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
156
- color: var(--fui-text-secondary, $fui-text-secondary);
157
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
154
+ &::before {
155
+ background: radial-gradient(
156
+ 90% 70% at 100% -10%,
157
+ var(--fui-color-warning-bg, #{$fui-color-warning-bg}),
158
+ transparent 62%
159
+ );
160
+ }
161
+ }
158
162
 
159
- &:last-child {
160
- margin-bottom: 0;
163
+ .toneNeutral {
164
+ border-color: var(--fui-border, #{$fui-border});
165
+
166
+ &::before {
167
+ content: none;
168
+ }
161
169
  }
162
- }
163
170
 
164
- .body {
165
- color: var(--fui-text-primary, $fui-text-primary);
166
- font-size: var(--fui-font-size-sm, $fui-font-size-sm);
167
- line-height: var(--fui-line-height-normal, $fui-line-height-normal);
168
- }
171
+ // Padding
172
+ .paddingNone {
173
+ --_card-root-requested-inset: #{surface.inset("panel")};
174
+ }
169
175
 
170
- .footer {
171
- display: flex;
172
- align-items: center;
173
- gap: var(--fui-space-2, $fui-space-2);
174
- margin-top: var(--fui-space-2, $fui-space-2);
175
- padding-top: var(--fui-space-2, $fui-space-2);
176
- border-top: 1px solid var(--fui-border, $fui-border);
177
- }
176
+ .paddingSm {
177
+ --_card-root-requested-inset: #{surface.inset("compact")};
178
+ }
178
179
 
179
- // ============================================
180
- // Accessibility: Reduced Motion
181
- // ============================================
180
+ .paddingMd {
181
+ --_card-root-requested-inset: #{surface.inset("default")};
182
+ }
182
183
 
183
- @media (prefers-reduced-motion: reduce) {
184
- .card {
185
- transition: none;
184
+ .paddingLg {
185
+ --_card-root-requested-inset: #{surface.inset("roomy")};
186
186
  }
187
187
 
188
+ // Interactive card (when onClick is provided).
189
+ // Card renders as an `article`/`div`/`section` (never a real `<button>`), so
190
+ // applying `button-reset` here was gratuitous — and it was silently wiping
191
+ // out variant-applied borders and backgrounds (the reset sets
192
+ // `border: none; background: transparent`). Keep only the clickable
193
+ // affordances; variants keep their surface and border untouched.
188
194
  .interactive {
195
+ @include interactive-base;
196
+
197
+ display: block;
198
+ width: 100%;
199
+ text-align: left;
200
+ cursor: pointer;
201
+ font: inherit;
202
+ color: inherit;
203
+
189
204
  &:hover {
190
- transform: none;
205
+ background-color: var(--fui-card-hover-bg, var(--fui-bg-hover, #{$fui-bg-hover}));
206
+ border-color: var(--fui-card-hover-border, var(--fui-border-strong, #{$fui-border-strong}));
207
+ box-shadow: none;
191
208
  }
192
209
 
193
210
  &:active {
194
- transform: none;
211
+ background-color: var(--fui-card-active-bg, var(--fui-bg-active, $fui-bg-active));
212
+ box-shadow: var(
213
+ --fui-card-active-shadow,
214
+ inset 0 1px 2px color-mix(in srgb, black 12%, transparent)
215
+ );
195
216
  }
196
217
  }
197
- }
198
218
 
199
- // ============================================
200
- // Accessibility: High Contrast Mode
201
- // ============================================
219
+ .header {
220
+ display: grid;
221
+ gap: var(--fui-raw-space-4, 4px);
222
+ margin-bottom: var(--fui-raw-space-16, 16px);
223
+ }
202
224
 
203
- @media (prefers-contrast: more) {
204
- .card {
205
- border-width: 2px;
206
- border-color: var(--fui-text-primary, $fui-text-primary);
225
+ // Full-bleed panel-header region on the control-md track, canonical inset,
226
+ // and a hairline bottom divider. No trailing margin — it sits flush above the
227
+ // panel body, which manages its own padding. Use inside `variant="panel"`.
228
+ // Title cluster (left) and trailing controls (right) pin to opposite edges —
229
+ // wrap Title + Description in a stack so space-between has two children.
230
+ .headerDivided {
231
+ display: flex;
232
+ align-items: center;
233
+ justify-content: space-between;
234
+ gap: var(--fui-raw-space-12, 12px);
235
+ min-height: #{action.track("md")};
236
+ padding: #{surface.inset("compact")};
237
+ margin-bottom: 0;
238
+ background-color: var(--fui-card-header-bg, var(--fui-bg-subtle, #{$fui-bg-subtle}));
239
+ border-bottom: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
240
+
241
+ // Multi-line copy: top-align trailing controls with the title line.
242
+ &:has(.description) {
243
+ align-items: flex-start;
244
+ }
245
+ }
246
+
247
+ .title {
248
+ @include typography.role("title-sm");
249
+
250
+ margin: 0;
251
+ color: var(--fui-text-primary, $fui-text-primary);
252
+ }
253
+
254
+ .description {
255
+ @include typography.role("body-compact");
256
+
257
+ margin: 0;
258
+ color: var(--fui-text-secondary, $fui-text-secondary);
259
+ }
260
+
261
+ .body {
262
+ @include typography.role("body-compact");
263
+
264
+ padding: var(--_card-body-inset, 0);
265
+ color: var(--fui-text-primary, $fui-text-primary);
266
+ }
267
+
268
+ .body.paddingNone {
269
+ --_card-body-inset: #{surface.inset("panel")};
270
+ }
271
+
272
+ .body.paddingSm {
273
+ --_card-body-inset: #{surface.inset("compact")};
274
+ }
275
+
276
+ .body.paddingMd {
277
+ --_card-body-inset: #{surface.inset("default")};
278
+ }
279
+
280
+ .body.paddingLg {
281
+ --_card-body-inset: #{surface.inset("roomy")};
207
282
  }
208
283
 
209
284
  .footer {
210
- border-top-width: 2px;
285
+ display: flex;
286
+ align-items: center;
287
+ gap: var(--fui-raw-space-8, 8px);
288
+ margin-top: var(--fui-raw-space-16, 16px);
289
+ padding-top: var(--fui-raw-space-16, 16px);
290
+ border-top: var(--fui-stroke-hairline, 1px) solid var(--fui-border, $fui-border);
291
+ }
292
+
293
+ // ============================================
294
+ // Accessibility: Reduced Motion
295
+ // ============================================
296
+
297
+ @media (prefers-reduced-motion: reduce) {
298
+ .card {
299
+ transition: none;
300
+ }
301
+
302
+ .interactive {
303
+ &:hover {
304
+ transform: none;
305
+ }
306
+
307
+ &:active {
308
+ transform: none;
309
+ }
310
+ }
311
+ }
312
+
313
+ // ============================================
314
+ // Accessibility: High Contrast Mode
315
+ // ============================================
316
+
317
+ @media (prefers-contrast: more) {
318
+ .card {
319
+ border-color: var(--fui-text-primary, $fui-text-primary);
320
+ outline: var(--fui-stroke-hairline, 1px) solid var(--fui-text-primary, $fui-text-primary);
321
+ outline-offset: calc(-1 * var(--fui-stroke-default, 2px));
322
+ }
323
+
324
+ .footer {
325
+ box-shadow: inset 0 var(--fui-stroke-hairline, 1px) 0
326
+ var(--fui-text-primary, $fui-text-primary);
327
+ }
211
328
  }
212
329
  }
@@ -21,9 +21,19 @@ export interface CardProps extends Omit<React.HTMLAttributes<HTMLElement>, "chil
21
21
  * - `panel`: hairline-bordered panel with zero own padding, designed for
22
22
  * compound use with `Card.Header divided` + `Card.Body` so each region
23
23
  * manages its own spacing.
24
+ * - `accent`: the earned-moment capsule — accent-tinted hairline, radial
25
+ * accent wash, soft fixed radius. Reserve for the few surfaces that earn
26
+ * emphasis (demo banner, upgrade panel, onboarding resume), never for
27
+ * routine content.
24
28
  * @default "default"
25
29
  * @see https://usefragments.com/components/card#variants */
26
- variant?: "default" | "outlined" | "outline" | "elevated" | "stat" | "panel";
30
+ variant?: "default" | "outlined" | "outline" | "elevated" | "stat" | "panel" | "accent";
31
+ /** Semantic tone of the `accent` capsule. The wash and hairline follow the
32
+ * tone so the same earned-moment idiom can carry state: `danger` (a merge is
33
+ * held), `warning` (enforcement lapsed), `neutral` (waiting — ink hairline,
34
+ * no wash). Ignored for other variants.
35
+ * @default "accent" */
36
+ tone?: "accent" | "danger" | "warning" | "neutral";
27
37
  /** Inner padding.
28
38
  * @default "md" */
29
39
  padding?: "none" | "sm" | "md" | "lg";
@@ -67,7 +77,7 @@ export interface CardFooterProps extends React.HTMLAttributes<HTMLDivElement> {
67
77
  // ============================================
68
78
 
69
79
  interface CardContextValue {
70
- variant: "default" | "outlined" | "elevated" | "stat" | "panel";
80
+ variant: "default" | "outlined" | "elevated" | "stat" | "panel" | "accent";
71
81
  padding: "none" | "sm" | "md" | "lg";
72
82
  isInteractive: boolean;
73
83
  }
@@ -100,9 +110,17 @@ function composeEventHandlers<E extends { defaultPrevented: boolean }>(
100
110
  // Components
101
111
  // ============================================
102
112
 
113
+ const toneMap = {
114
+ accent: undefined,
115
+ danger: styles.toneDanger,
116
+ warning: styles.toneWarning,
117
+ neutral: styles.toneNeutral,
118
+ } as const;
119
+
103
120
  function CardRoot({
104
121
  children,
105
122
  variant: variantProp = "default",
123
+ tone = "accent",
106
124
  padding = "md",
107
125
  as: Component = "article",
108
126
  className,
@@ -120,6 +138,7 @@ function CardRoot({
120
138
  const classes = [
121
139
  styles.card,
122
140
  styles[variant],
141
+ variant === "accent" && tone !== "accent" && toneMap[tone],
123
142
  paddingMap[padding],
124
143
  isInteractive && styles.interactive,
125
144
  className,
@@ -1,14 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Chart",
4
- "description": "Composable chart wrapper for recharts with theme-aware tooltips, legends, and color integration.",
4
+ "description": "Plots your data with tooltips, legends, and colors that track the theme.",
5
5
  "category": "display",
6
- "tags": [
7
- "chart",
8
- "graph",
9
- "data-visualization",
10
- "recharts"
11
- ],
6
+ "tags": ["chart", "graph", "data-visualization", "recharts"],
12
7
  "status": "stable",
13
8
  "dependencies": [
14
9
  {
@@ -55,48 +50,47 @@
55
50
  },
56
51
  "usage": {
57
52
  "when": [
58
- "Displaying data trends over time",
59
- "Comparing categorical data",
60
- "Showing distribution or composition",
61
- "Dashboard data visualizations"
53
+ "A trend over time is the point",
54
+ "Categories need comparing side by side",
55
+ "A whole splits into parts worth seeing"
62
56
  ],
63
57
  "whenNot": [
64
- "Simple numeric values (use Text or Badge)",
65
- "Progress toward a goal (use Progress)",
66
- "Tabular data without visualization (use Table)"
58
+ "One number tells the story (use Text or Badge)",
59
+ "Distance to a goal (use Progress)",
60
+ "Readers need exact values (use Table)"
67
61
  ],
68
62
  "guidelines": [
69
- "Use ChartContainer to wrap recharts chart components",
70
- "Define a ChartConfig to map data keys to labels and colors (and optionally icons for custom legend/tooltip UIs)",
71
- "Use FUI CSS variables for colors so charts adapt to theme changes",
72
- "Use ChartTooltip and ChartLegend for consistent themed overlays",
73
- "ChartTooltip and ChartLegend accept custom content renderers for advanced formatting"
63
+ "Wrap every recharts chart in ChartContainer",
64
+ "Map each data key to a label and color in ChartConfig",
65
+ "Colors come from --fui-* variables so both themes stay readable",
66
+ "Pair with ChartTooltip and ChartLegend rather than recharts' own",
67
+ "Give the container a real height recharts cannot measure zero"
74
68
  ],
75
69
  "accessibility": [
76
- "Charts include recharts accessibilityLayer by default",
77
- "Provide meaningful labels in ChartConfig for screen readers",
78
- "Consider providing a data table alternative for complex charts"
70
+ "accessibilityLayer is on by default",
71
+ "ChartConfig labels are what screen readers read",
72
+ "Pass dataTable to offer the same numbers as text"
79
73
  ]
80
74
  },
81
75
  "examples": [
82
76
  {
83
77
  "name": "Line Chart",
84
- "description": "Multi-series line chart showing trends over time",
78
+ "description": "Two series share one scale, so the gap between them reads instantly.",
85
79
  "code": "<div style={{ width: '100%', height: 300 }}>\n <ChartContainer\n config={{\n revenue: { label: 'Revenue', color: 'var(--fui-color-accent)' },\n users: { label: 'Users', color: 'var(--fui-color-info)' },\n }}\n >\n <LineChart data={monthlyData} margin={{ top: 5, right: 20, bottom: 5, left: 0 }}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis dataKey=\"month\" />\n <YAxis />\n <ChartTooltip />\n <ChartLegend />\n <Line type=\"monotone\" dataKey=\"revenue\" stroke=\"var(--fui-color-accent)\" strokeWidth={2} dot={false} />\n <Line type=\"monotone\" dataKey=\"users\" stroke=\"var(--fui-color-info)\" strokeWidth={2} dot={false} />\n </LineChart>\n </ChartContainer>\n</div>"
86
80
  },
87
81
  {
88
82
  "name": "Bar Chart",
89
- "description": "Categorical bar chart comparing device sessions",
83
+ "description": "Fixed categories, compared by height — the safest default.",
90
84
  "code": "<div style={{ width: '100%', height: 300 }}>\n <ChartContainer\n config={{\n sessions: { label: 'Sessions', color: 'var(--fui-color-accent)' },\n }}\n >\n <BarChart data={deviceData} margin={{ top: 5, right: 20, bottom: 5, left: 0 }}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis dataKey=\"device\" />\n <YAxis />\n <ChartTooltip />\n <Bar dataKey=\"sessions\" fill=\"var(--fui-color-accent)\" radius={[4, 4, 0, 0]} />\n </BarChart>\n </ChartContainer>\n</div>"
91
85
  },
92
86
  {
93
87
  "name": "Area Chart",
94
- "description": "Filled area chart showing revenue trend",
88
+ "description": "The fill under the line stresses volume, not just direction.",
95
89
  "code": "<div style={{ width: '100%', height: 300 }}>\n <ChartContainer\n config={{\n revenue: { label: 'Revenue', color: 'var(--fui-color-accent)' },\n }}\n >\n <AreaChart data={monthlyData} margin={{ top: 5, right: 20, bottom: 5, left: 0 }}>\n <CartesianGrid strokeDasharray=\"3 3\" />\n <XAxis dataKey=\"month\" />\n <YAxis />\n <ChartTooltip />\n <Area type=\"monotone\" dataKey=\"revenue\" stroke=\"var(--fui-color-accent)\" fill=\"var(--fui-color-accent)\" fillOpacity={0.15} strokeWidth={2} />\n </AreaChart>\n </ChartContainer>\n</div>"
96
90
  },
97
91
  {
98
92
  "name": "Pie Chart",
99
- "description": "Donut chart showing browser share distribution",
93
+ "description": "Parts of one whole keep it under six slices or it stops reading.",
100
94
  "code": "<div style={{ width: '100%', height: 300 }}>\n <ChartContainer\n config={{\n Chrome: { label: 'Chrome', color: 'var(--fui-color-accent)' },\n Firefox: { label: 'Firefox', color: 'var(--fui-color-info)' },\n Safari: { label: 'Safari', color: 'var(--fui-color-success)' },\n Edge: { label: 'Edge', color: 'var(--fui-color-warning)' },\n }}\n >\n <PieChart>\n <ChartTooltip />\n <ChartLegend />\n <Pie\n data={browserData}\n dataKey=\"value\"\n nameKey=\"name\"\n cx=\"50%\"\n cy=\"50%\"\n innerRadius={60}\n outerRadius={90}\n strokeWidth={2}\n >\n {browserData.map((entry) => (\n <Cell key={entry.name} fill={entry.color} />\n ))}\n </Pie>\n </PieChart>\n </ChartContainer>\n</div>"
101
95
  }
102
96
  ],
@@ -123,9 +117,7 @@
123
117
  "children: ReactElement - recharts chart component",
124
118
  "Chart.Tooltip / Chart.Legend support custom content renderers for advanced overlays"
125
119
  ],
126
- "a11yRules": [
127
- "A11Y_CHART_LABEL"
128
- ]
120
+ "a11yRules": ["A11Y_CHART_LABEL"]
129
121
  },
130
122
  "provenance": {
131
123
  "source": "migrated",