@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
@@ -6,8 +6,10 @@ import { useState, useCallback, useEffect, useMemo } from "react";
6
6
  // Lazy-loaded dependency (shiki)
7
7
  // ============================================
8
8
 
9
+ type ShikiThemeInput = string | typeof import("./css-variables-theme").FUI_CSS_VARIABLES_THEME;
10
+
9
11
  let _codeToHtml:
10
- | ((code: string, options: { lang: string; theme: string }) => Promise<string>)
12
+ | ((code: string, options: { lang: string; theme: ShikiThemeInput }) => Promise<string>)
11
13
  | null = null;
12
14
  let _shikiLoadPromise: Promise<void> | null = null;
13
15
  let _shikiFailed = false;
@@ -27,8 +29,12 @@ async function loadShikiDeps() {
27
29
  }
28
30
  await _shikiLoadPromise;
29
31
  }
30
- import { TabsRoot, TabsList, Tab, TabsPanel } from "../Tabs";
32
+ import { Button } from "../Button";
33
+ import { IconButton } from "../IconButton";
34
+ import { TabsRoot, TabsList, Tab, TabsPanel, type TabsVariant } from "../Tabs";
35
+ import { FUI_CSS_VARIABLES_THEME } from "./css-variables-theme";
31
36
  import styles from "./CodeBlock.module.scss";
37
+ import { isDevelopmentBuild, isProductionBuild } from "../../utils/env";
32
38
 
33
39
  export type CodeBlockLanguage =
34
40
  | "tsx"
@@ -76,6 +82,7 @@ const LANGUAGE_ALIASES: Partial<Record<CodeBlockLanguage, string>> = {
76
82
 
77
83
  /** Available syntax highlighting themes */
78
84
  export type CodeBlockTheme =
85
+ | "css-variables"
79
86
  | "synthwave-84"
80
87
  | "github-dark"
81
88
  | "github-light"
@@ -95,7 +102,7 @@ export interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
95
102
  code: string;
96
103
  /** Programming language for syntax highlighting */
97
104
  language?: CodeBlockLanguage;
98
- /** Syntax highlighting theme */
105
+ /** Syntax highlighting theme. Default follows `--fui-code-token-*` via shiki css-variables. */
99
106
  theme?: CodeBlockTheme;
100
107
  /** Show copy button */
101
108
  showCopy?: boolean;
@@ -125,6 +132,12 @@ export interface CodeBlockProps extends React.HTMLAttributes<HTMLDivElement> {
125
132
  defaultCollapsed?: boolean;
126
133
  /** Number of lines to show when collapsed */
127
134
  collapsedLines?: number;
135
+ /**
136
+ * Collapse control copy. `lines` keeps “Show N more lines” / “Show less”
137
+ * (docs prose). `expand` is one right-aligned Expand / Collapse control
138
+ * for preview+code capsules.
139
+ */
140
+ collapseAction?: "lines" | "expand";
128
141
  /** Compact mode with reduced padding */
129
142
  compact?: boolean;
130
143
  /** Show a persistent copy button (always visible, uses Button component) */
@@ -547,14 +560,22 @@ function processShikiHtml(html: string, options: ProcessOptions): string {
547
560
  const lineClass = lineClasses.join(" ");
548
561
  const diffMarker = isAdded ? "+" : isRemoved ? "-" : " ";
549
562
 
550
- if (showLineNumbers || hasDiff) {
551
- const lineNumHtml = showLineNumbers
552
- ? `<span class="line-number">${displayLineNum}</span>`
563
+ const lineNumHtml =
564
+ showLineNumbers || hasDiff
565
+ ? `${showLineNumbers ? `<span class="line-number">${displayLineNum}</span>` : ""}${
566
+ hasDiff ? `<span class="diff-marker">${diffMarker}</span>` : ""
567
+ }`
553
568
  : "";
554
- const diffMarkerHtml = hasDiff ? `<span class="diff-marker">${diffMarker}</span>` : "";
555
- return `<span class="${lineClass}">${lineNumHtml}${diffMarkerHtml}${line}</span>`;
569
+
570
+ // Shiki already wraps each row in <span class="line">; merge into that span
571
+ // instead of nesting a second .line (which breaks the inline-block row layout).
572
+ if (/^<span class="line([^"]*)">/.test(line)) {
573
+ return line.replace(
574
+ /^<span class="line([^"]*)">/,
575
+ `<span class="${lineClass}$1">${lineNumHtml}`
576
+ );
556
577
  }
557
- return `<span class="${lineClass}">${line}</span>`;
578
+ return `<span class="${lineClass}">${lineNumHtml}${line}</span>`;
558
579
  });
559
580
 
560
581
  // Reconstruct the HTML
@@ -565,7 +586,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
565
586
  {
566
587
  code,
567
588
  language = "tsx",
568
- theme = "one-dark-pro",
589
+ theme = "css-variables",
569
590
  showCopy = true,
570
591
  title,
571
592
  filename,
@@ -580,6 +601,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
580
601
  collapsible = false,
581
602
  defaultCollapsed = false,
582
603
  collapsedLines = 5,
604
+ collapseAction = "lines",
583
605
  compact = false,
584
606
  persistentCopy = false,
585
607
  copyPlacement = "auto",
@@ -591,7 +613,10 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
591
613
  ref
592
614
  ) {
593
615
  const [copied, setCopied] = useState(false);
594
- const [highlight, setHighlight] = useState<{ html: string; loading: boolean }>({ html: '', loading: true });
616
+ const [highlight, setHighlight] = useState<{ html: string; loading: boolean }>({
617
+ html: "",
618
+ loading: true,
619
+ });
595
620
  const [isCollapsed, setIsCollapsed] = useState(defaultCollapsed);
596
621
 
597
622
  const trimmedCode = useMemo(() => normalizeCode(code, language), [code, language]);
@@ -624,7 +649,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
624
649
  const fallbackHtml = `<pre class="shiki"><code>${escapeHtml(visibleCode)}</code></pre>`;
625
650
 
626
651
  if (_shikiFailed || !_codeToHtml) {
627
- if (_shikiFailed && process.env.NODE_ENV === "development") {
652
+ if (_shikiFailed && isDevelopmentBuild()) {
628
653
  console.warn(
629
654
  "[@usefragments/ui] CodeBlock: shiki is not installed. " +
630
655
  "Install it with: npm install shiki"
@@ -635,7 +660,9 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
635
660
 
636
661
  try {
637
662
  const resolvedLang = LANGUAGE_ALIASES[language] || language;
638
- const html = await _codeToHtml(visibleCode, { lang: resolvedLang, theme });
663
+ const shikiTheme: ShikiThemeInput =
664
+ theme === "css-variables" ? FUI_CSS_VARIABLES_THEME : theme;
665
+ const html = await _codeToHtml(visibleCode, { lang: resolvedLang, theme: shikiTheme });
639
666
  return processShikiHtml(html, {
640
667
  showLineNumbers,
641
668
  startLineNumber,
@@ -644,7 +671,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
644
671
  removedLines: removedSet,
645
672
  });
646
673
  } catch (err) {
647
- if (process.env.NODE_ENV !== "production") {
674
+ if (!isProductionBuild()) {
648
675
  console.error("Syntax highlighting failed:", err);
649
676
  }
650
677
  return fallbackHtml;
@@ -679,7 +706,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
679
706
  setTimeout(() => setCopied(false), 2000);
680
707
  onCopy?.();
681
708
  } catch (err) {
682
- if (process.env.NODE_ENV !== "production") {
709
+ if (!isProductionBuild()) {
683
710
  console.error("Failed to copy:", err);
684
711
  }
685
712
  }
@@ -714,15 +741,20 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
714
741
  : undefined;
715
742
 
716
743
  return (
717
- <div ref={ref} {...htmlProps} className={classNames} data-theme="dark">
718
- {title && <div className={styles.title}>{title}</div>}
719
- <div className={wrapperClasses} style={wrapperStyle}>
744
+ <div ref={ref} {...htmlProps} className={classNames} data-slot="code-block">
745
+ {title && (
746
+ <div className={styles.title} data-slot="code-block-title">
747
+ {title}
748
+ </div>
749
+ )}
750
+ <div className={wrapperClasses} style={wrapperStyle} data-slot="code-block-frame">
720
751
  {shouldRenderHeader && (
721
752
  <div className={styles.header}>
722
753
  <span className={styles.filename}>{filename ?? ""}</span>
723
754
  {shouldShowHeaderCopy && (
724
- <button
725
- type="button"
755
+ <IconButton
756
+ variant="ghost"
757
+ size="sm"
726
758
  onClick={handleCopy}
727
759
  className={`${styles.copyButton} ${copied ? styles.copied : ""}`}
728
760
  aria-label={copied ? "Copied!" : "Copy code"}
@@ -732,19 +764,20 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
732
764
  ) : (
733
765
  <CopyIcon className={styles.icon} />
734
766
  )}
735
- </button>
767
+ </IconButton>
736
768
  )}
737
769
  </div>
738
770
  )}
739
771
  {shouldShowOverlayCopy && (
740
- <button
741
- type="button"
772
+ <IconButton
773
+ variant="ghost"
774
+ size="sm"
742
775
  onClick={handleCopy}
743
776
  className={`${styles.copyButton} ${styles.copyOverlay} ${copied ? styles.copied : ""}`}
744
777
  aria-label={copied ? "Copied!" : "Copy code"}
745
778
  >
746
779
  {copied ? <CheckIcon className={styles.icon} /> : <CopyIcon className={styles.icon} />}
747
- </button>
780
+ </IconButton>
748
781
  )}
749
782
  {highlight.loading ? (
750
783
  <div className={styles.loading} style={codeContainerStyle}>
@@ -760,24 +793,33 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
760
793
  />
761
794
  )}
762
795
  {persistentCopy && (
763
- <button
764
- type="button"
796
+ <IconButton
797
+ variant="ghost"
798
+ size="sm"
765
799
  onClick={handleCopy}
766
800
  className={`${styles.persistentCopy} ${styles.copyButton} ${styles.copyOverlay} ${copied ? styles.copied : ""}`}
767
801
  aria-label={copied ? "Copied!" : "Copy code"}
768
802
  >
769
803
  {copied ? <CheckIcon className={styles.icon} /> : <CopyIcon className={styles.icon} />}
770
- </button>
804
+ </IconButton>
771
805
  )}
772
806
  {shouldShowCollapse && (
773
- <button
774
- type="button"
807
+ <Button
808
+ variant="ghost"
809
+ size="sm"
810
+ fullWidth
775
811
  onClick={toggleCollapsed}
776
- className={styles.collapseButton}
812
+ className={
813
+ collapseAction === "expand"
814
+ ? `${styles.collapseButton} ${styles.collapseExpand}`
815
+ : styles.collapseButton
816
+ }
777
817
  aria-expanded={!isCollapsed}
778
818
  aria-label={isCollapsed ? "Expand code" : "Collapse code"}
779
819
  >
780
- {isCollapsed ? (
820
+ {collapseAction === "expand" ? (
821
+ <span>{isCollapsed ? "Expand" : "Collapse"}</span>
822
+ ) : isCollapsed ? (
781
823
  <>
782
824
  <ChevronDownIcon className={styles.icon} />
783
825
  <span>Show {totalLines - collapsedLines} more lines</span>
@@ -788,7 +830,7 @@ const CodeBlockBase = React.forwardRef<HTMLDivElement, CodeBlockProps>(function
788
830
  <span>Show less</span>
789
831
  </>
790
832
  )}
791
- </button>
833
+ </Button>
792
834
  )}
793
835
  </div>
794
836
  {caption && <div className={styles.caption}>{caption}</div>}
@@ -828,12 +870,20 @@ export interface TabbedCodeBlockProps {
828
870
  showLineNumbers?: boolean;
829
871
  /** Syntax highlighting theme (applies to all tabs) */
830
872
  theme?: CodeBlockTheme;
831
- /** Tab list visual style */
832
- tabsVariant?: "underline" | "pills";
873
+ /** Tab list chrome: `soft` (default) is the filled rail, `ghost` the underline strip. */
874
+ tabsVariant?: TabsVariant;
833
875
  /** Enable word wrapping for long lines */
834
876
  wordWrap?: boolean;
835
877
  /** Maximum height in pixels (enables scrolling) */
836
878
  maxHeight?: number;
879
+ /** Allow collapsing/expanding each tab's code (forwarded to every panel) */
880
+ collapsible?: boolean;
881
+ /** Initial collapsed state (only applies when collapsible is true) */
882
+ defaultCollapsed?: boolean;
883
+ /** Number of lines to show when collapsed */
884
+ collapsedLines?: number;
885
+ /** Forwarded to every panel (see CodeBlock `collapseAction`) */
886
+ collapseAction?: "lines" | "expand";
837
887
  /** Additional class name */
838
888
  className?: string;
839
889
  /** Callback fired when a tab's copy button is clicked. Receives the tab label. */
@@ -849,9 +899,13 @@ function TabbedCodeBlock({
849
899
  copyPlacement = "auto",
850
900
  showLineNumbers = false,
851
901
  theme,
852
- tabsVariant = "pills",
902
+ tabsVariant = "soft",
853
903
  wordWrap,
854
904
  maxHeight,
905
+ collapsible,
906
+ defaultCollapsed,
907
+ collapsedLines,
908
+ collapseAction,
855
909
  className,
856
910
  onCopy,
857
911
  }: TabbedCodeBlockProps) {
@@ -864,28 +918,37 @@ function TabbedCodeBlock({
864
918
  {tabs.map((tab, index) => {
865
919
  const tabValue = tab.value ?? tab.label;
866
920
  return (
867
- <Tab key={`${tabValue}-${index}`} value={tabValue}>
868
- {tab.label}
869
- </Tab>
921
+ <Tab key={`${tabValue}-${index}`} value={tabValue}>
922
+ {tab.label}
923
+ </Tab>
870
924
  );
871
925
  })}
872
926
  </TabsList>
873
927
  {tabs.map((tab, index) => {
874
928
  const tabValue = tab.value ?? tab.label;
875
929
  return (
876
- <TabsPanel key={`${tabValue}-panel-${index}`} value={tabValue} flush className={styles.tabbedPanel}>
877
- <CodeBlockBase
878
- code={tab.code}
879
- language={tab.language}
880
- theme={theme}
881
- showCopy={showCopy}
882
- copyPlacement={copyPlacement}
883
- showLineNumbers={showLineNumbers}
884
- wordWrap={wordWrap}
885
- maxHeight={maxHeight}
886
- onCopy={onCopy ? () => onCopy(tab.label) : undefined}
887
- />
888
- </TabsPanel>
930
+ <TabsPanel
931
+ key={`${tabValue}-panel-${index}`}
932
+ value={tabValue}
933
+ flush
934
+ className={styles.tabbedPanel}
935
+ >
936
+ <CodeBlockBase
937
+ code={tab.code}
938
+ language={tab.language}
939
+ theme={theme}
940
+ showCopy={showCopy}
941
+ copyPlacement={copyPlacement}
942
+ showLineNumbers={showLineNumbers}
943
+ wordWrap={wordWrap}
944
+ maxHeight={maxHeight}
945
+ collapsible={collapsible}
946
+ defaultCollapsed={defaultCollapsed}
947
+ collapsedLines={collapsedLines}
948
+ collapseAction={collapseAction}
949
+ onCopy={onCopy ? () => onCopy(tab.label) : undefined}
950
+ />
951
+ </TabsPanel>
889
952
  );
890
953
  })}
891
954
  </TabsRoot>
@@ -1,15 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "Collapsible",
4
- "description": "An interactive component that expands/collapses to show or hide content",
4
+ "description": "Shows or hides one region of content behind a trigger.",
5
5
  "category": "layout",
6
- "tags": [
7
- "collapsible",
8
- "expandable",
9
- "accordion",
10
- "disclosure",
11
- "toggle"
12
- ],
6
+ "tags": ["collapsible", "expandable", "accordion", "disclosure", "toggle"],
13
7
  "status": "stable",
14
8
  "sourcePath": "src/components/Collapsible/index.tsx",
15
9
  "exportName": "Collapsible",
@@ -51,22 +45,21 @@
51
45
  },
52
46
  "usage": {
53
47
  "when": [
54
- "Showing/hiding additional content on demand",
55
- "Building accordions or expandable sections",
56
- "Collapsible navigation sections",
57
- "FAQ sections with expandable answers",
58
- "Settings panels with grouped options"
48
+ "Detail most readers do not need",
49
+ "Optional or advanced settings",
50
+ "Navigation sections that fold away",
51
+ "Building a disclosure the other components do not cover"
59
52
  ],
60
53
  "whenNot": [
61
- "Single item disclosure (use Accordion instead)",
62
- "Navigation menus with complex interactions (use Menu)",
63
- "Modal or overlay content (use Dialog or Popover)"
54
+ "Several sections that should coordinate (use Accordion)",
55
+ "Content that must overlay the page (use Dialog or Popover)",
56
+ "Action lists (use Menu)"
64
57
  ],
65
58
  "guidelines": [
66
- "Use clear trigger labels that indicate expandable content",
67
- "Consider defaultOpen for primary content users often need",
68
- "Keep trigger text concise but descriptive",
69
- "Use chevron icons consistently to indicate collapsible state"
59
+ "The trigger should say what opens, not 'click here'",
60
+ "defaultOpen for content most users want on arrival",
61
+ "Keep the trigger to a short phrase",
62
+ "Keep the chevron direction consistent across the page"
70
63
  ],
71
64
  "accessibility": [
72
65
  "Trigger must have aria-expanded to indicate state",
@@ -78,32 +71,32 @@
78
71
  "examples": [
79
72
  {
80
73
  "name": "Default",
81
- "description": "Basic collapsible with trigger and content",
74
+ "description": "Starts closed and opens on click.",
82
75
  "code": "<Collapsible>\n <Collapsible.Trigger>Click to expand</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content is hidden by default and revealed when the trigger is clicked.</p>\n </Collapsible.Content>\n</Collapsible>"
83
76
  },
84
77
  {
85
78
  "name": "Default Open",
86
- "description": "Collapsible that starts in the expanded state",
79
+ "description": "Starts open for content most users want.",
87
80
  "code": "<Collapsible defaultOpen>\n <Collapsible.Trigger>Section Title</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content is visible by default. Click the trigger to collapse.</p>\n </Collapsible.Content>\n</Collapsible>"
88
81
  },
89
82
  {
90
83
  "name": "Chevron Start",
91
- "description": "Collapsible with chevron icon on the left",
84
+ "description": "Marker leads the label instead of trailing it.",
92
85
  "code": "<Collapsible>\n <Collapsible.Trigger chevronPosition=\"start\">Navigation</Collapsible.Trigger>\n <Collapsible.Content>\n <ul style={{ margin: 0, paddingLeft: '1.5rem' }}>\n <li>Dashboard</li>\n <li>Settings</li>\n <li>Profile</li>\n </ul>\n </Collapsible.Content>\n</Collapsible>"
93
86
  },
94
87
  {
95
88
  "name": "No Chevron",
96
- "description": "Collapsible without chevron indicator",
89
+ "description": "Bare trigger when the surrounding layout signals enough.",
97
90
  "code": "<Collapsible>\n <Collapsible.Trigger showChevron={false}>Show more details</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Hidden details that appear when triggered.</p>\n </Collapsible.Content>\n</Collapsible>"
98
91
  },
99
92
  {
100
93
  "name": "Disabled",
101
- "description": "Collapsible in disabled state",
94
+ "description": "Locked shut and skipped by the keyboard.",
102
95
  "code": "<Collapsible disabled>\n <Collapsible.Trigger>Cannot toggle (disabled)</Collapsible.Trigger>\n <Collapsible.Content>\n <p>This content cannot be shown because the collapsible is disabled.</p>\n </Collapsible.Content>\n</Collapsible>"
103
96
  },
104
97
  {
105
98
  "name": "Multiple Sections",
106
- "description": "Multiple independent collapsible sections",
99
+ "description": "Independent regions that ignore each other.",
107
100
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '4px' }}>\n <Collapsible defaultOpen>\n <Collapsible.Trigger>Getting Started</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Introduction and setup instructions.</p>\n </Collapsible.Content>\n </Collapsible>\n <Collapsible>\n <Collapsible.Trigger>Advanced Usage</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Advanced configuration options.</p>\n </Collapsible.Content>\n </Collapsible>\n <Collapsible>\n <Collapsible.Trigger>API Reference</Collapsible.Trigger>\n <Collapsible.Content>\n <p>Complete API documentation.</p>\n </Collapsible.Content>\n </Collapsible>\n</div>"
108
101
  }
109
102
  ],
@@ -131,19 +124,11 @@
131
124
  "onOpenChange: (open: boolean) => void - state change callback",
132
125
  "disabled: boolean - prevents interaction"
133
126
  ],
134
- "a11yRules": [
135
- "A11Y_EXPANDED_STATE",
136
- "A11Y_REGION_LABEL",
137
- "A11Y_KEYBOARD_NAV"
138
- ]
127
+ "a11yRules": ["A11Y_EXPANDED_STATE", "A11Y_REGION_LABEL", "A11Y_KEYBOARD_NAV"]
139
128
  },
140
129
  "ai": {
141
130
  "compositionPattern": "compound",
142
- "subComponents": [
143
- "Root",
144
- "Trigger",
145
- "Content"
146
- ]
131
+ "subComponents": ["Root", "Trigger", "Content"]
147
132
  },
148
133
  "provenance": {
149
134
  "source": "migrated",
@@ -25,11 +25,6 @@
25
25
  &:focus-visible {
26
26
  @include focus-ring;
27
27
  }
28
-
29
- &:disabled {
30
- opacity: 0.5;
31
- cursor: not-allowed;
32
- }
33
28
  }
34
29
 
35
30
  .triggerContent {
@@ -72,8 +67,7 @@
72
67
  }
73
68
 
74
69
  .disabled .trigger {
75
- opacity: 0.5;
76
- cursor: not-allowed;
70
+ @include disabled-state;
77
71
  }
78
72
 
79
73
  @media (prefers-reduced-motion: reduce) {
@@ -1,16 +1,9 @@
1
1
  {
2
2
  "$schema": "https://usefragments.com/schemas/contract.v1.json",
3
3
  "name": "ColorPicker",
4
- "description": "Color selection control with hex input and visual picker. Displays a swatch that opens a full color picker on click.",
5
- "category": "forms",
6
- "tags": [
7
- "color",
8
- "picker",
9
- "input",
10
- "hex",
11
- "swatch",
12
- "theme"
13
- ],
4
+ "description": "Selects a color through a visual picker and hexadecimal input.",
5
+ "category": "inputs",
6
+ "tags": ["color", "picker", "input", "hex", "swatch", "theme"],
14
7
  "status": "stable",
15
8
  "dependencies": [
16
9
  {
@@ -88,11 +81,7 @@
88
81
  "description": "Size variant",
89
82
  "default": "md",
90
83
  "required": false,
91
- "values": [
92
- "sm",
93
- "md",
94
- "lg"
95
- ]
84
+ "values": ["sm", "md", "lg"]
96
85
  },
97
86
  "showInput": {
98
87
  "type": "boolean",
@@ -103,68 +92,67 @@
103
92
  },
104
93
  "usage": {
105
94
  "when": [
106
- "Theme customization interfaces",
107
- "Brand color selection",
108
- "Design tool color inputs",
109
- "User preference settings for colors"
95
+ "Theme and brand customisation",
96
+ "Any colour the user must pick freely",
97
+ "Design tool inputs"
110
98
  ],
111
99
  "whenNot": [
112
- "Predefined color options only (use RadioGroup with swatches)",
113
- "Simple color display without editing (use a colored Badge)",
114
- "Color indication only (use semantic color tokens)"
100
+ "A fixed palette (use RadioGroup with swatches)",
101
+ "Showing a colour without editing it (use a tinted Badge)",
102
+ "Status colour that should come from a token"
115
103
  ],
116
104
  "guidelines": [
117
- "Always provide a label to describe what the color is for",
118
- "Use helperText to explain color usage or constraints",
119
- "Consider providing color presets alongside the picker for common choices",
120
- "Validate hex format (#RRGGBB) on input"
105
+ "Label says what the colour is for",
106
+ "Use helperText for constraints, such as contrast rules",
107
+ "Offer presets next to the picker for the common choices",
108
+ "Validate the hex as #RRGGBB before accepting it"
121
109
  ],
122
110
  "accessibility": [
123
- "Label is associated with the color input",
124
- "Swatch button has appropriate aria-label",
125
- "Color picker popup is keyboard accessible",
126
- "Hex input allows direct text entry"
111
+ "Label is tied to the hex input",
112
+ "The swatch button carries its own aria-label",
113
+ "The picker popup is reachable from the keyboard",
114
+ "Users can type a hex instead of dragging"
127
115
  ]
128
116
  },
129
117
  "examples": [
130
118
  {
131
119
  "name": "Default",
132
- "description": "Basic color picker with label",
120
+ "description": "Swatch opens the picker; the hex field accepts typing.",
133
121
  "code": "<ColorPicker\n label=\"Brand Color\"\n defaultValue=\"#3b82f6\"\n/>"
134
122
  },
135
123
  {
136
124
  "name": "With Helper Text",
137
- "description": "Color picker with helper text",
125
+ "description": "Supporting line says where the colour will be used.",
138
126
  "code": "<ColorPicker\n label=\"Primary Color\"\n defaultValue=\"#10b981\"\n helperText=\"This color will be used for buttons and links\"\n/>"
139
127
  },
140
128
  {
141
129
  "name": "Controlled",
142
- "description": "Controlled color picker that logs changes",
130
+ "description": "The parent owns the value and sees every change.",
143
131
  "code": "<ControlledColorPickerDemo />"
144
132
  },
145
133
  {
146
134
  "name": "Multiple Pickers",
147
- "description": "Multiple color pickers for theme configuration",
135
+ "description": "A stacked set reads as one palette.",
148
136
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '16px', maxWidth: '240px' }}>\n <ColorPicker label=\"Primary\" defaultValue=\"#3b82f6\" />\n <ColorPicker label=\"Success\" defaultValue=\"#22c55e\" />\n <ColorPicker label=\"Warning\" defaultValue=\"#f59e0b\" />\n <ColorPicker label=\"Danger\" defaultValue=\"#ef4444\" />\n</div>"
149
137
  },
150
138
  {
151
139
  "name": "Compact",
152
- "description": "Small size with swatch only (no input)",
140
+ "description": "showInput={false} drops the hex field, leaving a swatch row.",
153
141
  "code": "<div style={{ display: 'flex', gap: '8px', alignItems: 'center' }}>\n <ColorPicker defaultValue=\"#ef4444\" size=\"sm\" showInput={false} />\n <ColorPicker defaultValue=\"#f59e0b\" size=\"sm\" showInput={false} />\n <ColorPicker defaultValue=\"#22c55e\" size=\"sm\" showInput={false} />\n <ColorPicker defaultValue=\"#3b82f6\" size=\"sm\" showInput={false} />\n</div>"
154
142
  },
155
143
  {
156
144
  "name": "Sizes",
157
- "description": "Different size variants",
145
+ "description": "Three swatch sizes: sm, md, lg.",
158
146
  "code": "<div style={{ display: 'flex', flexDirection: 'column', gap: '16px', maxWidth: '240px' }}>\n <ColorPicker label=\"Small\" defaultValue=\"#3b82f6\" size=\"sm\" />\n <ColorPicker label=\"Medium (default)\" defaultValue=\"#3b82f6\" size=\"md\" />\n <ColorPicker label=\"Large\" defaultValue=\"#3b82f6\" size=\"lg\" />\n</div>"
159
147
  },
160
148
  {
161
149
  "name": "Error State",
162
- "description": "Color picker with error styling",
163
- "code": "<ColorPicker\n label=\"Brand Color\"\n defaultValue=\"#000000\"\n error\n helperText=\"Please select a valid brand color\"\n/>"
150
+ "description": "Red border on the hex field, and the reason below it.",
151
+ "code": "<ColorPicker\n label=\"Brand Color\"\n defaultValue=\"#7c3aed\"\n error\n helperText=\"This color fails contrast against the page background\"\n/>"
164
152
  },
165
153
  {
166
154
  "name": "Disabled",
167
- "description": "Disabled color picker",
155
+ "description": "Swatch will not open and the hex field will not accept typing.",
168
156
  "code": "<ColorPicker\n label=\"Locked Color\"\n defaultValue=\"#64748b\"\n helperText=\"This color cannot be changed\"\n disabled\n/>"
169
157
  }
170
158
  ],
@@ -198,18 +186,11 @@
198
186
  "size: sm|md|lg - size variant",
199
187
  "showInput: boolean - show hex input field"
200
188
  ],
201
- "a11yRules": [
202
- "A11Y_LABEL_REQUIRED",
203
- "A11Y_FOCUS_VISIBLE",
204
- "A11Y_TARGET_SIZE_MIN"
205
- ]
189
+ "a11yRules": ["A11Y_LABEL_REQUIRED", "A11Y_FOCUS_VISIBLE", "A11Y_TARGET_SIZE_MIN"]
206
190
  },
207
191
  "ai": {
208
192
  "compositionPattern": "compound",
209
- "subComponents": [
210
- "Root",
211
- "preload"
212
- ]
193
+ "subComponents": ["Root", "preload"]
213
194
  },
214
195
  "provenance": {
215
196
  "source": "migrated",