@usefragments/ui 1.0.2 → 1.2.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 (326) hide show
  1. package/README.md +16 -16
  2. package/dist/assets/fragments-wordmark.cjs +30 -0
  3. package/dist/assets/fragments-wordmark.d.ts +13 -0
  4. package/dist/assets/fragments-wordmark.d.ts.map +1 -0
  5. package/dist/assets/fragments-wordmark.js +30 -0
  6. package/dist/assets/ui.css +3234 -3116
  7. package/dist/components/Accordion/Accordion.module.scss.cjs +8 -8
  8. package/dist/components/Accordion/Accordion.module.scss.js +8 -8
  9. package/dist/components/Accordion/index.cjs +22 -10
  10. package/dist/components/Accordion/index.d.ts.map +1 -1
  11. package/dist/components/Accordion/index.js +22 -10
  12. package/dist/components/Alert/Alert.module.scss.cjs +13 -13
  13. package/dist/components/Alert/Alert.module.scss.js +13 -13
  14. package/dist/components/AppShell/AppShell.module.scss.cjs +22 -10
  15. package/dist/components/AppShell/AppShell.module.scss.js +22 -10
  16. package/dist/components/AppShell/index.cjs +1 -1
  17. package/dist/components/AppShell/index.js +1 -1
  18. package/dist/components/Avatar/Avatar.module.scss.cjs +13 -13
  19. package/dist/components/Avatar/Avatar.module.scss.js +13 -13
  20. package/dist/components/Badge/Badge.module.scss.cjs +16 -16
  21. package/dist/components/Badge/Badge.module.scss.js +16 -16
  22. package/dist/components/BentoGrid/BentoGrid.module.scss.cjs +14 -14
  23. package/dist/components/BentoGrid/BentoGrid.module.scss.js +14 -14
  24. package/dist/components/Box/Box.module.scss.cjs +152 -152
  25. package/dist/components/Box/Box.module.scss.js +152 -152
  26. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.cjs +8 -8
  27. package/dist/components/Breadcrumbs/Breadcrumbs.module.scss.js +8 -8
  28. package/dist/components/Button/Button.module.scss.cjs +13 -13
  29. package/dist/components/Button/Button.module.scss.js +13 -13
  30. package/dist/components/Card/Card.module.scss.cjs +17 -17
  31. package/dist/components/Card/Card.module.scss.js +17 -17
  32. package/dist/components/Card/index.d.ts +3 -3
  33. package/dist/components/Card/index.d.ts.map +1 -1
  34. package/dist/components/Chart/Chart.module.scss.cjs +15 -15
  35. package/dist/components/Chart/Chart.module.scss.js +15 -15
  36. package/dist/components/Checkbox/Checkbox.module.scss.cjs +11 -11
  37. package/dist/components/Checkbox/Checkbox.module.scss.js +11 -11
  38. package/dist/components/Chip/Chip.module.scss.cjs +15 -15
  39. package/dist/components/Chip/Chip.module.scss.js +15 -15
  40. package/dist/components/CodeBlock/CodeBlock.module.scss.cjs +21 -21
  41. package/dist/components/CodeBlock/CodeBlock.module.scss.js +21 -21
  42. package/dist/components/Collapsible/Collapsible.module.scss.cjs +10 -10
  43. package/dist/components/Collapsible/Collapsible.module.scss.js +10 -10
  44. package/dist/components/ColorPicker/ColorPicker.module.scss.cjs +14 -14
  45. package/dist/components/ColorPicker/ColorPicker.module.scss.js +14 -14
  46. package/dist/components/Combobox/Combobox.module.scss.cjs +23 -23
  47. package/dist/components/Combobox/Combobox.module.scss.js +23 -23
  48. package/dist/components/Combobox/index.cjs +106 -9
  49. package/dist/components/Combobox/index.d.ts.map +1 -1
  50. package/dist/components/Combobox/index.js +106 -9
  51. package/dist/components/Command/Command.module.scss.cjs +11 -11
  52. package/dist/components/Command/Command.module.scss.js +11 -11
  53. package/dist/components/ConversationList/ConversationList.module.scss.cjs +10 -10
  54. package/dist/components/ConversationList/ConversationList.module.scss.js +10 -10
  55. package/dist/components/DataTable/DataTable.module.scss.cjs +37 -34
  56. package/dist/components/DataTable/DataTable.module.scss.js +37 -34
  57. package/dist/components/DataTable/index.d.ts +3 -1
  58. package/dist/components/DataTable/index.d.ts.map +1 -1
  59. package/dist/components/DatePicker/DatePicker.module.scss.cjs +33 -33
  60. package/dist/components/DatePicker/DatePicker.module.scss.js +33 -33
  61. package/dist/components/DatePicker/index.d.ts +1 -1
  62. package/dist/components/DatePicker/index.d.ts.map +1 -1
  63. package/dist/components/Dialog/Dialog.module.scss.cjs +14 -14
  64. package/dist/components/Dialog/Dialog.module.scss.js +14 -14
  65. package/dist/components/Drawer/Drawer.module.scss.cjs +28 -28
  66. package/dist/components/Drawer/Drawer.module.scss.js +28 -28
  67. package/dist/components/Drawer/index.cjs +20 -3
  68. package/dist/components/Drawer/index.d.ts.map +1 -1
  69. package/dist/components/Drawer/index.js +20 -3
  70. package/dist/components/Editor/Editor.module.scss.cjs +17 -17
  71. package/dist/components/Editor/Editor.module.scss.js +17 -17
  72. package/dist/components/EmptyState/EmptyState.module.scss.cjs +8 -8
  73. package/dist/components/EmptyState/EmptyState.module.scss.js +8 -8
  74. package/dist/components/Field/Field.module.scss.cjs +4 -4
  75. package/dist/components/Field/Field.module.scss.js +4 -4
  76. package/dist/components/Field/index.cjs +10 -9
  77. package/dist/components/Field/index.d.ts +7 -7
  78. package/dist/components/Field/index.d.ts.map +1 -1
  79. package/dist/components/Field/index.js +10 -9
  80. package/dist/components/Fieldset/Fieldset.module.scss.cjs +3 -3
  81. package/dist/components/Fieldset/Fieldset.module.scss.js +3 -3
  82. package/dist/components/Header/Header.module.scss.cjs +44 -29
  83. package/dist/components/Header/Header.module.scss.js +44 -29
  84. package/dist/components/Header/index.cjs +56 -3
  85. package/dist/components/Header/index.d.ts +25 -3
  86. package/dist/components/Header/index.d.ts.map +1 -1
  87. package/dist/components/Header/index.js +56 -3
  88. package/dist/components/Icon/Icon.module.scss.cjs +8 -8
  89. package/dist/components/Icon/Icon.module.scss.js +8 -8
  90. package/dist/components/IconButton/IconButton.module.scss.cjs +8 -8
  91. package/dist/components/IconButton/IconButton.module.scss.js +8 -8
  92. package/dist/components/Image/Image.module.scss.cjs +27 -27
  93. package/dist/components/Image/Image.module.scss.js +27 -27
  94. package/dist/components/Input/Input.module.scss.cjs +19 -19
  95. package/dist/components/Input/Input.module.scss.js +19 -19
  96. package/dist/components/Link/Link.module.scss.cjs +10 -10
  97. package/dist/components/Link/Link.module.scss.js +10 -10
  98. package/dist/components/List/List.module.scss.cjs +19 -19
  99. package/dist/components/List/List.module.scss.js +19 -19
  100. package/dist/components/Listbox/Listbox.module.scss.cjs +8 -8
  101. package/dist/components/Listbox/Listbox.module.scss.js +8 -8
  102. package/dist/components/Loading/Loading.module.scss.cjs +30 -30
  103. package/dist/components/Loading/Loading.module.scss.js +30 -30
  104. package/dist/components/Main/Main.module.scss.cjs +26 -0
  105. package/dist/components/Main/Main.module.scss.js +26 -0
  106. package/dist/components/Main/index.cjs +128 -0
  107. package/dist/components/Main/index.d.ts +22 -0
  108. package/dist/components/Main/index.d.ts.map +1 -0
  109. package/dist/components/Main/index.js +111 -0
  110. package/dist/components/Markdown/Markdown.module.scss.cjs +1 -1
  111. package/dist/components/Markdown/Markdown.module.scss.js +1 -1
  112. package/dist/components/Menu/Menu.module.scss.cjs +14 -14
  113. package/dist/components/Menu/Menu.module.scss.js +14 -14
  114. package/dist/components/Message/Message.module.scss.cjs +18 -18
  115. package/dist/components/Message/Message.module.scss.js +18 -18
  116. package/dist/components/NavigationMenu/NavigationMenu.module.scss.cjs +28 -28
  117. package/dist/components/NavigationMenu/NavigationMenu.module.scss.js +28 -28
  118. package/dist/components/Pagination/Pagination.module.scss.cjs +7 -7
  119. package/dist/components/Pagination/Pagination.module.scss.js +7 -7
  120. package/dist/components/Popover/Popover.module.scss.cjs +10 -10
  121. package/dist/components/Popover/Popover.module.scss.js +10 -10
  122. package/dist/components/Popover/index.cjs +27 -2
  123. package/dist/components/Popover/index.d.ts.map +1 -1
  124. package/dist/components/Popover/index.js +27 -2
  125. package/dist/components/Progress/Progress.module.scss.cjs +25 -25
  126. package/dist/components/Progress/Progress.module.scss.js +25 -25
  127. package/dist/components/Prompt/Prompt.module.scss.cjs +18 -18
  128. package/dist/components/Prompt/Prompt.module.scss.js +18 -18
  129. package/dist/components/RadioGroup/RadioGroup.module.scss.cjs +17 -17
  130. package/dist/components/RadioGroup/RadioGroup.module.scss.js +17 -17
  131. package/dist/components/RadioGroup/index.cjs +2 -0
  132. package/dist/components/RadioGroup/index.d.ts +2 -0
  133. package/dist/components/RadioGroup/index.d.ts.map +1 -1
  134. package/dist/components/RadioGroup/index.js +2 -0
  135. package/dist/components/ScrollArea/ScrollArea.module.scss.cjs +10 -10
  136. package/dist/components/ScrollArea/ScrollArea.module.scss.js +10 -10
  137. package/dist/components/Select/Select.module.scss.cjs +17 -17
  138. package/dist/components/Select/Select.module.scss.js +17 -17
  139. package/dist/components/Separator/Separator.module.scss.cjs +10 -10
  140. package/dist/components/Separator/Separator.module.scss.js +10 -10
  141. package/dist/components/Sidebar/Sidebar.module.scss.cjs +42 -42
  142. package/dist/components/Sidebar/Sidebar.module.scss.js +42 -42
  143. package/dist/components/Skeleton/Skeleton.module.scss.cjs +38 -38
  144. package/dist/components/Skeleton/Skeleton.module.scss.js +38 -38
  145. package/dist/components/Slider/Slider.module.scss.cjs +12 -12
  146. package/dist/components/Slider/Slider.module.scss.js +12 -12
  147. package/dist/components/Table/Table.module.scss.cjs +19 -19
  148. package/dist/components/Table/Table.module.scss.js +19 -19
  149. package/dist/components/TableOfContents/TableOfContents.module.scss.cjs +15 -15
  150. package/dist/components/TableOfContents/TableOfContents.module.scss.js +15 -15
  151. package/dist/components/TableOfContents/index.cjs +22 -42
  152. package/dist/components/TableOfContents/index.d.ts +3 -3
  153. package/dist/components/TableOfContents/index.d.ts.map +1 -1
  154. package/dist/components/TableOfContents/index.js +22 -42
  155. package/dist/components/Tabs/Tabs.module.scss.cjs +12 -12
  156. package/dist/components/Tabs/Tabs.module.scss.js +12 -12
  157. package/dist/components/Text/Text.module.scss.cjs +51 -51
  158. package/dist/components/Text/Text.module.scss.js +51 -51
  159. package/dist/components/Textarea/Textarea.module.scss.cjs +23 -23
  160. package/dist/components/Textarea/Textarea.module.scss.js +23 -23
  161. package/dist/components/Theme/ThemeToggle.module.scss.cjs +6 -6
  162. package/dist/components/Theme/ThemeToggle.module.scss.js +6 -6
  163. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.cjs +13 -13
  164. package/dist/components/ThinkingIndicator/ThinkingIndicator.module.scss.js +13 -13
  165. package/dist/components/Toast/Toast.module.scss.cjs +21 -21
  166. package/dist/components/Toast/Toast.module.scss.js +21 -21
  167. package/dist/components/Toggle/Toggle.module.scss.cjs +13 -13
  168. package/dist/components/Toggle/Toggle.module.scss.js +13 -13
  169. package/dist/components/ToggleGroup/ToggleGroup.module.scss.cjs +17 -17
  170. package/dist/components/ToggleGroup/ToggleGroup.module.scss.js +17 -17
  171. package/dist/components/Tooltip/Tooltip.module.scss.cjs +3 -3
  172. package/dist/components/Tooltip/Tooltip.module.scss.js +3 -3
  173. package/dist/data-table.cjs +58 -41
  174. package/dist/data-table.js +59 -41
  175. package/dist/datepicker.cjs +32 -72
  176. package/dist/datepicker.js +32 -72
  177. package/dist/index.cjs +89 -85
  178. package/dist/index.d.ts +2 -0
  179. package/dist/index.d.ts.map +1 -1
  180. package/dist/index.js +4 -0
  181. package/fragments.json +1 -1
  182. package/package.json +9 -8
  183. package/src/assets/fragments-wordmark.tsx +47 -0
  184. package/src/components/Accordion/index.tsx +13 -3
  185. package/src/components/Alert/Alert.module.scss +15 -2
  186. package/src/components/AppShell/AppShell.module.scss +73 -15
  187. package/src/components/AppShell/index.tsx +1 -1
  188. package/src/components/Button/Button.module.scss +19 -20
  189. package/src/components/Card/Card.module.scss +3 -3
  190. package/src/components/Card/index.tsx +3 -3
  191. package/src/components/Checkbox/Checkbox.contract.json +5 -24
  192. package/src/components/Checkbox/Checkbox.module.scss +4 -2
  193. package/src/components/Chip/Chip.contract.json +11 -28
  194. package/src/components/Chip/Chip.module.scss +21 -45
  195. package/src/components/CodeBlock/CodeBlock.module.scss +2 -7
  196. package/src/components/Combobox/Combobox.contract.json +6 -24
  197. package/src/components/Combobox/Combobox.module.scss +3 -2
  198. package/src/components/Combobox/index.tsx +132 -6
  199. package/src/components/DataTable/DataTable.contract.json +16 -23
  200. package/src/components/DataTable/DataTable.module.scss +31 -8
  201. package/src/components/DataTable/index.tsx +25 -4
  202. package/src/components/DatePicker/index.tsx +32 -84
  203. package/src/components/Drawer/index.tsx +38 -12
  204. package/src/components/Field/index.tsx +35 -35
  205. package/src/components/Header/Header.contract.json +41 -1
  206. package/src/components/Header/Header.module.scss +40 -0
  207. package/src/components/Header/index.tsx +88 -2
  208. package/src/components/IconButton/IconButton.contract.json +120 -0
  209. package/src/components/Listbox/Listbox.module.scss +5 -4
  210. package/src/components/Main/Main.contract.json +79 -0
  211. package/src/components/Main/Main.module.scss +31 -0
  212. package/src/components/Main/index.tsx +124 -0
  213. package/src/components/Menu/Menu.module.scss +8 -10
  214. package/src/components/Popover/index.tsx +34 -2
  215. package/src/components/RadioGroup/RadioGroup.contract.json +13 -27
  216. package/src/components/RadioGroup/index.tsx +4 -0
  217. package/src/components/Select/Select.module.scss +13 -12
  218. package/src/components/Table/Table.module.scss +22 -5
  219. package/src/components/TableOfContents/TableOfContents.contract.json +6 -16
  220. package/src/components/TableOfContents/TableOfContents.module.scss +20 -14
  221. package/src/components/TableOfContents/index.tsx +27 -38
  222. package/src/components/Toast/Toast.module.scss +15 -2
  223. package/src/components/ToggleGroup/ToggleGroup.module.scss +4 -1
  224. package/src/index.ts +4 -0
  225. package/src/styles/globals.scss +13 -10
  226. package/src/tokens/_component-properties.scss +26 -0
  227. package/src/tokens/_computed.scss +22 -4
  228. package/src/tokens/_derive.scss +55 -6
  229. package/src/tokens/_palettes.scss +24 -0
  230. package/src/tokens/_seeds.scss +20 -12
  231. package/src/tokens/_variables.scss +110 -63
  232. package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts +0 -33
  233. package/dist/components/Cloud/DashboardLayoutPrototypes.shared.d.ts.map +0 -1
  234. package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts +0 -11
  235. package/dist/components/Cloud/DashboardLayoutPrototypes.shell.d.ts.map +0 -1
  236. package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts +0 -5
  237. package/dist/components/Cloud/PullRequestsPrototypes.content.d.ts.map +0 -1
  238. package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts +0 -4
  239. package/dist/components/Cloud/PullRequestsPrototypes.detail-panels.d.ts.map +0 -1
  240. package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts +0 -3
  241. package/dist/components/Cloud/PullRequestsPrototypes.detail.d.ts.map +0 -1
  242. package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts +0 -86
  243. package/dist/components/Cloud/PullRequestsPrototypes.id-data.d.ts.map +0 -1
  244. package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts +0 -2
  245. package/dist/components/Cloud/PullRequestsPrototypes.id-page.d.ts.map +0 -1
  246. package/src/components/Accordion/Accordion.stories.tsx +0 -106
  247. package/src/components/Alert/Alert.stories.tsx +0 -119
  248. package/src/components/AppShell/AppShell.stories.tsx +0 -156
  249. package/src/components/Avatar/Avatar.stories.tsx +0 -74
  250. package/src/components/Badge/Badge.stories.tsx +0 -92
  251. package/src/components/BentoGrid/BentoGrid.stories.tsx +0 -98
  252. package/src/components/Box/Box.stories.tsx +0 -150
  253. package/src/components/Breadcrumbs/Breadcrumbs.stories.tsx +0 -87
  254. package/src/components/Button/Button.stories.tsx +0 -103
  255. package/src/components/ButtonGroup/ButtonGroup.stories.tsx +0 -97
  256. package/src/components/Card/Card.stories.tsx +0 -144
  257. package/src/components/Chart/Chart.stories.tsx +0 -119
  258. package/src/components/Checkbox/Checkbox.stories.tsx +0 -68
  259. package/src/components/Chip/Chip.stories.tsx +0 -70
  260. package/src/components/Cloud/CloudGovernanceShell.module.scss +0 -88
  261. package/src/components/Cloud/CloudGovernanceShell.stories.tsx +0 -446
  262. package/src/components/Cloud/ControlSizing.module.scss +0 -49
  263. package/src/components/Cloud/ControlSizing.stories.tsx +0 -238
  264. package/src/components/Cloud/DashboardLayoutPrototypes.module.scss +0 -462
  265. package/src/components/Cloud/DashboardLayoutPrototypes.shared.tsx +0 -375
  266. package/src/components/Cloud/DashboardLayoutPrototypes.shell.tsx +0 -147
  267. package/src/components/Cloud/DashboardLayoutPrototypes.stories.tsx +0 -328
  268. package/src/components/Cloud/PullRequestsPrototypes.content.tsx +0 -283
  269. package/src/components/Cloud/PullRequestsPrototypes.detail-panels.tsx +0 -381
  270. package/src/components/Cloud/PullRequestsPrototypes.detail.tsx +0 -204
  271. package/src/components/Cloud/PullRequestsPrototypes.id-data.ts +0 -395
  272. package/src/components/Cloud/PullRequestsPrototypes.id-page.tsx +0 -349
  273. package/src/components/Cloud/PullRequestsPrototypes.stories.tsx +0 -81
  274. package/src/components/CodeBlock/CodeBlock.stories.tsx +0 -147
  275. package/src/components/Collapsible/Collapsible.stories.tsx +0 -94
  276. package/src/components/ColorPicker/ColorPicker.stories.tsx +0 -74
  277. package/src/components/Combobox/Combobox.stories.tsx +0 -133
  278. package/src/components/Command/Command.stories.tsx +0 -102
  279. package/src/components/ConversationList/ConversationList.stories.tsx +0 -93
  280. package/src/components/DataTable/DataTable.stories.tsx +0 -129
  281. package/src/components/DatePicker/DatePicker.stories.tsx +0 -129
  282. package/src/components/Dialog/Dialog.stories.tsx +0 -154
  283. package/src/components/Drawer/Drawer.stories.tsx +0 -144
  284. package/src/components/Editor/Editor.stories.tsx +0 -99
  285. package/src/components/EmptyState/EmptyState.stories.tsx +0 -97
  286. package/src/components/Field/Field.stories.tsx +0 -109
  287. package/src/components/Fieldset/Fieldset.stories.tsx +0 -116
  288. package/src/components/Form/Form.stories.tsx +0 -142
  289. package/src/components/Grid/Grid.stories.tsx +0 -125
  290. package/src/components/Header/Header.stories.tsx +0 -133
  291. package/src/components/Icon/Icon.stories.tsx +0 -80
  292. package/src/components/IconButton/IconButton.stories.tsx +0 -78
  293. package/src/components/Image/Image.stories.tsx +0 -109
  294. package/src/components/Input/Input.stories.tsx +0 -104
  295. package/src/components/Link/Link.stories.tsx +0 -67
  296. package/src/components/List/List.stories.tsx +0 -95
  297. package/src/components/Listbox/Listbox.stories.tsx +0 -81
  298. package/src/components/Loading/Loading.stories.tsx +0 -69
  299. package/src/components/Markdown/Markdown.stories.tsx +0 -75
  300. package/src/components/Menu/Menu.stories.tsx +0 -113
  301. package/src/components/Message/Message.stories.tsx +0 -85
  302. package/src/components/NavigationMenu/NavigationMenu.stories.tsx +0 -161
  303. package/src/components/Pagination/Pagination.stories.tsx +0 -81
  304. package/src/components/Popover/Popover.stories.tsx +0 -152
  305. package/src/components/Progress/Progress.stories.tsx +0 -64
  306. package/src/components/Prompt/Prompt.stories.tsx +0 -93
  307. package/src/components/RadioGroup/RadioGroup.stories.tsx +0 -107
  308. package/src/components/ScrollArea/ScrollArea.stories.tsx +0 -97
  309. package/src/components/Select/Select.stories.tsx +0 -127
  310. package/src/components/Separator/Separator.stories.tsx +0 -84
  311. package/src/components/Sidebar/Sidebar.stories.tsx +0 -122
  312. package/src/components/Skeleton/Skeleton.stories.tsx +0 -80
  313. package/src/components/Slider/Slider.stories.tsx +0 -73
  314. package/src/components/Stack/Stack.stories.tsx +0 -73
  315. package/src/components/Switch/Switch.stories.tsx +0 -59
  316. package/src/components/Table/Table.stories.tsx +0 -219
  317. package/src/components/TableOfContents/TableOfContents.stories.tsx +0 -120
  318. package/src/components/Tabs/Tabs.stories.tsx +0 -136
  319. package/src/components/Text/Text.stories.tsx +0 -133
  320. package/src/components/Textarea/Textarea.stories.tsx +0 -107
  321. package/src/components/Theme/Theme.stories.tsx +0 -95
  322. package/src/components/ThinkingIndicator/ThinkingIndicator.stories.tsx +0 -85
  323. package/src/components/Toast/Toast.stories.tsx +0 -91
  324. package/src/components/ToggleGroup/ToggleGroup.stories.tsx +0 -114
  325. package/src/components/Tooltip/Tooltip.stories.tsx +0 -95
  326. package/src/components/VisuallyHidden/VisuallyHidden.stories.tsx +0 -78
@@ -27,6 +27,11 @@ $_radius: radius.get-radius-style(seeds.$fui-radius-style);
27
27
  // Derive spacing from density
28
28
  $_spacing: density.derive-spacing($_density);
29
29
 
30
+ // True when the brand seed is the Fragments default (pine). Lets the default
31
+ // theme emit exact Flight Recorder accents (sage dark / pine light) while any
32
+ // consumer-supplied $fui-brand keeps the full seed→accent derivation.
33
+ $brand-is-fragments-default: seeds.$fui-brand == #006b57;
34
+
30
35
  // --------------------------------------------
31
36
  // Computed: Base Configuration
32
37
  // --------------------------------------------
@@ -87,7 +92,12 @@ $computed-sidebar-item-height: density.px-to-rem($_density, map.get($_density, s
87
92
 
88
93
  // Accent colors (from brand seed)
89
94
  $computed-color-accent: seeds.$fui-brand;
95
+ // Default (pine) fill needs white text; contrast-color mis-scores mid-dark
96
+ // brands, so pin on-accent to white for the Fragments default.
90
97
  $computed-color-on-accent: derive.contrast-color(seeds.$fui-brand);
98
+ @if $brand-is-fragments-default {
99
+ $computed-color-on-accent: #ffffff;
100
+ }
91
101
  $computed-color-accent-hover: derive.derive-accent-hover(seeds.$fui-brand, false);
92
102
  $computed-color-accent-active: derive.derive-accent-active(seeds.$fui-brand, false);
93
103
 
@@ -148,7 +158,7 @@ $computed-shadow-lg: map.get($_shadows-light, lg);
148
158
  $computed-focus-ring-color: derive.derive-focus-ring(seeds.$fui-brand, false);
149
159
 
150
160
  // Scrollbar
151
- $_scrollbar-light: derive.derive-scrollbar($_palette, false);
161
+ $_scrollbar-light: derive.derive-scrollbar($_palette, false, seeds.$fui-neutral);
152
162
  $computed-scrollbar-track: map.get($_scrollbar-light, track);
153
163
  $computed-scrollbar-thumb: map.get($_scrollbar-light, thumb);
154
164
  $computed-scrollbar-thumb-hover: map.get($_scrollbar-light, thumb-hover);
@@ -160,8 +170,12 @@ $computed-backdrop: derive.derive-backdrop(false);
160
170
  // Computed: Colors - Dark Mode
161
171
  // --------------------------------------------
162
172
 
163
- // Accent colors — dark brands lightened for visibility; on-accent handles text contrast
173
+ // Accent colors — dark brands lightened for visibility; on-accent handles text contrast.
174
+ // The Fragments default resolves to exact sage; overrides keep the chroma-aware lift.
164
175
  $computed-dark-color-accent: derive.derive-dark-accent(seeds.$fui-brand);
176
+ @if $brand-is-fragments-default {
177
+ $computed-dark-color-accent: #7fc9b3;
178
+ }
165
179
  $computed-dark-color-on-accent: derive.contrast-color($computed-dark-color-accent);
166
180
  $computed-dark-color-accent-hover: derive.derive-accent-hover($computed-dark-color-accent, true);
167
181
  $computed-dark-color-accent-active: derive.derive-accent-active($computed-dark-color-accent, true);
@@ -212,11 +226,15 @@ $computed-dark-shadow-sm: map.get($_shadows-dark, sm);
212
226
  $computed-dark-shadow-md: map.get($_shadows-dark, md);
213
227
  $computed-dark-shadow-lg: map.get($_shadows-dark, lg);
214
228
 
215
- // Focus ring (dark mode)
229
+ // Focus ring (dark mode) — follows the dark accent. Pinned to sage for the
230
+ // Fragments default (derive-focus-ring mis-scores the mid-dark pine brand).
216
231
  $computed-dark-focus-ring-color: derive.derive-focus-ring(seeds.$fui-brand, true);
232
+ @if $brand-is-fragments-default {
233
+ $computed-dark-focus-ring-color: #7fc9b3;
234
+ }
217
235
 
218
236
  // Scrollbar (dark mode)
219
- $_scrollbar-dark: derive.derive-scrollbar($_palette, true);
237
+ $_scrollbar-dark: derive.derive-scrollbar($_palette, true, seeds.$fui-neutral);
220
238
  $computed-dark-scrollbar-track: map.get($_scrollbar-dark, track);
221
239
  $computed-dark-scrollbar-thumb: map.get($_scrollbar-dark, thumb);
222
240
  $computed-dark-scrollbar-thumb-hover: map.get($_scrollbar-dark, thumb-hover);
@@ -155,6 +155,19 @@
155
155
  /// @return {Map} Surface token values
156
156
  @function derive-surfaces($palette, $is-dark: false, $palette-name: 'stone') {
157
157
  @if $is-dark {
158
+ // Carbon (Fragments default) — charcoal material surfaces, not voids.
159
+ @if $palette-name == 'carbon' {
160
+ @return (
161
+ primary: #212121, // page / body background
162
+ secondary: #171717, // sidebar, recessed panels, surface
163
+ tertiary: #2f2f2f, // raised / hover / active row (surface-2)
164
+ elevated: #2f2f2f, // cards float above the page tone
165
+ subtle: #171717, // recessed (code wells, insets)
166
+ hover: rgba(255, 255, 255, 0.055),
167
+ active: rgba(255, 255, 255, 0.085)
168
+ );
169
+ }
170
+
158
171
  @if $palette-name == 'stone' or $palette-name == 'mono' {
159
172
  @return (
160
173
  primary: #000000,
@@ -181,8 +194,9 @@
181
194
  );
182
195
  }
183
196
 
184
- // Light mode: colorful palettes get tinted backgrounds
185
- $is-colorful: $palette-name != 'stone';
197
+ // Light mode: colorful palettes get tinted backgrounds. Carbon is a neutral
198
+ // (like stone) — white surfaces in light mode.
199
+ $is-colorful: $palette-name != 'stone' and $palette-name != 'carbon';
186
200
  @if $is-colorful {
187
201
  @return (
188
202
  primary: get-shade($palette, 50), // Tinted page background
@@ -217,6 +231,14 @@
217
231
  /// @return {Map} Body and main background values
218
232
  @function derive-app-surfaces($palette, $is-dark: false, $palette-name: 'stone') {
219
233
  @if $is-dark {
234
+ // Carbon (Fragments default) — flat page canvas at #212121.
235
+ @if $palette-name == 'carbon' {
236
+ @return (
237
+ body: #212121,
238
+ main: #212121
239
+ );
240
+ }
241
+
220
242
  @if $palette-name == 'stone' or $palette-name == 'mono' or $palette-name == 'wind' {
221
243
  @return (
222
244
  body: #000000,
@@ -230,7 +252,7 @@
230
252
  );
231
253
  }
232
254
 
233
- @if $palette-name == 'stone' or $palette-name == 'wind' {
255
+ @if $palette-name == 'stone' or $palette-name == 'carbon' or $palette-name == 'wind' {
234
256
  @return (
235
257
  body: get-shade($palette, 100),
236
258
  main: #ffffff
@@ -256,6 +278,16 @@
256
278
  /// @return {Map} Text token values
257
279
  @function derive-text($palette, $is-dark: false, $palette-name: 'stone') {
258
280
  @if $is-dark {
281
+ // Carbon (Fragments default) — ink / muted / faint text tiers.
282
+ @if $palette-name == 'carbon' {
283
+ @return (
284
+ primary: #ececec, // ink
285
+ secondary: #b4b4b4, // muted
286
+ tertiary: #8f8f8f, // faint / placeholder
287
+ inverse: #212121 // text on light (sage) accents
288
+ );
289
+ }
290
+
259
291
  @if $palette-name == 'stone' or $palette-name == 'mono' {
260
292
  @return (
261
293
  primary: #ededed,
@@ -280,9 +312,9 @@
280
312
  );
281
313
  }
282
314
 
283
- // Light mode background — stone uses white, colorful palettes use palette[50]
315
+ // Light mode background — stone/carbon use white, colorful palettes use palette[50]
284
316
  $bg: #ffffff;
285
- @if $palette-name != 'stone' {
317
+ @if $palette-name != 'stone' and $palette-name != 'carbon' {
286
318
  $bg: get-shade($palette, 50);
287
319
  }
288
320
 
@@ -306,6 +338,14 @@
306
338
  /// @return {Map} Border token values
307
339
  @function derive-borders($palette, $is-dark: false, $palette-name: 'stone') {
308
340
  @if $is-dark {
341
+ // Carbon (Fragments default) — solid hairline + strong border.
342
+ @if $palette-name == 'carbon' {
343
+ @return (
344
+ default: #323232, // hairline
345
+ strong: #4b4b4b // strong border
346
+ );
347
+ }
348
+
309
349
  @if $palette-name == 'stone' or $palette-name == 'mono' {
310
350
  @return (
311
351
  default: rgba(255, 255, 255, 0.075),
@@ -364,8 +404,17 @@
364
404
  /// @param {Map} $palette - Neutral palette map
365
405
  /// @param {Boolean} $is-dark - Whether in dark mode
366
406
  /// @return {Map} Scrollbar token values
367
- @function derive-scrollbar($palette, $is-dark: false) {
407
+ @function derive-scrollbar($palette, $is-dark: false, $palette-name: 'stone') {
368
408
  @if $is-dark {
409
+ // Carbon (Fragments default) — transparent track, strong-border thumb.
410
+ @if $palette-name == 'carbon' {
411
+ @return (
412
+ track: transparent,
413
+ thumb: #4b4b4b,
414
+ thumb-hover: #b4b4b4
415
+ );
416
+ }
417
+
369
418
  @return (
370
419
  track: get-shade($palette, 800),
371
420
  thumb: get-shade($palette, 600),
@@ -120,6 +120,29 @@ $palette-fragments: (
120
120
  950: #0d1f17 // Darkest bg
121
121
  );
122
122
 
123
+ // --------------------------------------------
124
+ // Carbon - Fragments brand neutral (DEFAULT)
125
+ // The hybrid-skin charcoal ramp. Distinct from `mono` (true black) — carbon's
126
+ // dark surfaces sit at #212121 (page) with #171717 recessed panels and #2f2f2f
127
+ // raised/elevated so panels read as material, not voids. Dark surface/text/
128
+ // border values are emitted explicitly by the derive-* branches; light mode
129
+ // behaves like a neutral white palette. Key stops: 900 = page bg,
130
+ // 950 = recessed surface, 800 = hairline, 700 = strong border, 500 = faint text.
131
+ // --------------------------------------------
132
+ $palette-carbon: (
133
+ 50: #fafafa,
134
+ 100: #f4f4f4,
135
+ 200: #e4e4e4,
136
+ 300: #d1d1d1,
137
+ 400: #b0b0b0,
138
+ 500: #8f8f8f, // faint / placeholder text
139
+ 600: #5a5a5a,
140
+ 700: #4b4b4b, // strong border
141
+ 800: #323232, // hairline / default border
142
+ 900: #212121, // page / body background
143
+ 950: #171717 // recessed surface (cards, panels, code wells)
144
+ );
145
+
123
146
  // --------------------------------------------
124
147
  // Fire - Warm red/orange tones
125
148
  // Energy, passion feel
@@ -149,6 +172,7 @@ $palettes: (
149
172
  "earth": $palette-earth,
150
173
  "fire": $palette-fire,
151
174
  "fragments": $palette-fragments,
175
+ "carbon": $palette-carbon,
152
176
  "wind": $palette-stone // Legacy alias — "wind" was renamed to "stone"
153
177
  );
154
178
 
@@ -22,13 +22,16 @@
22
22
  // --------------------------------------------
23
23
 
24
24
  /// Primary brand color - derives accent colors, focus rings, etc.
25
+ /// Default = Fragments "pine" (the fill/foreground accent). The out-of-box
26
+ /// theme derives a sage foreground accent in dark mode from this seed.
25
27
  /// @type Color
26
- $fui-brand: #18181b !default;
28
+ $fui-brand: #006b57 !default;
27
29
 
28
30
  /// Neutral palette name for surfaces, text, and borders
29
- /// Options: "stone" | "mono" | "ice" | "earth" | "sand" | "fire" | "fragments"
31
+ /// Options: "carbon" | "stone" | "mono" | "ice" | "earth" | "sand" | "fire" | "fragments"
32
+ /// Default = "carbon" (the Fragments "Flight Recorder" near-black ramp).
30
33
  /// @type String
31
- $fui-neutral: "stone" !default;
34
+ $fui-neutral: "carbon" !default;
32
35
 
33
36
  /// Density preset controlling spacing scale
34
37
  /// Options: "compact" | "default" | "relaxed"
@@ -45,7 +48,7 @@ $fui-radius-style: "default" !default;
45
48
  // --------------------------------------------
46
49
  // Fail fast at compile time if invalid seed values are provided.
47
50
 
48
- $_valid-neutrals: "stone", "mono", "ice", "earth", "sand", "fire", "fragments";
51
+ $_valid-neutrals: "carbon", "stone", "mono", "ice", "earth", "sand", "fire", "fragments";
49
52
  @if not list.index($_valid-neutrals, $fui-neutral) {
50
53
  @error "Invalid $fui-neutral: '#{$fui-neutral}'. Must be one of: #{$_valid-neutrals}";
51
54
  }
@@ -66,18 +69,23 @@ $_valid-radii: "sharp", "subtle", "default", "rounded", "pill";
66
69
  // Override these to customize semantic colors.
67
70
  // If not overridden, they use sensible defaults.
68
71
 
69
- /// Danger/error color (defaults to red-500)
72
+ // The status seeds below are tuned to sit in one family with the sage brand
73
+ // (`$fui-brand` / success `#7fc9b3`): soft, muted, ~60% lightness rather than
74
+ // neon. Danger is the warm complement of sage, warning its split-complement,
75
+ // info a cool teal-adjacent slate — so they read as one palette, not bolted-on.
76
+
77
+ /// Danger/error color — muted coral-terracotta, sage's warm complement.
70
78
  /// @type Color
71
- $fui-danger: #ef4444 !default;
79
+ $fui-danger: #d97066 !default;
72
80
 
73
- /// Success color (defaults to green-500)
81
+ /// Success color (Fragments brand default — sage; green means "contract passing")
74
82
  /// @type Color
75
- $fui-success: #22c55e !default;
83
+ $fui-success: #7fc9b3 !default;
76
84
 
77
- /// Warning color (defaults to amber-500)
85
+ /// Warning color honey amber, muted to match the sage family.
78
86
  /// @type Color
79
- $fui-warning: #f59e0b !default;
87
+ $fui-warning: #e0aa5c !default;
80
88
 
81
- /// Info color (defaults to blue-500)
89
+ /// Info color dusty slate-blue, a cool teal-adjacent tone (was flat grey).
82
90
  /// @type Color
83
- $fui-info: #3b82f6 !default;
91
+ $fui-info: #7fa6c4 !default;
@@ -22,6 +22,7 @@
22
22
  // ============================================
23
23
 
24
24
  // Import computed values from seed system
25
+ @use "sass:string";
25
26
  @use "computed" as computed;
26
27
 
27
28
  // --------------------------------------------
@@ -44,17 +45,15 @@ $fui-base-unit: computed.$computed-base-unit !default;
44
45
  // Typography
45
46
  // --------------------------------------------
46
47
  $fui-font-sans:
47
- "Geist Sans",
48
- "Geist",
48
+ "Inter Variable",
49
49
  Inter,
50
- system-ui,
51
50
  -apple-system,
52
51
  BlinkMacSystemFont,
53
52
  "Segoe UI",
54
- Roboto,
53
+ system-ui,
55
54
  sans-serif !default;
56
55
  $fui-font-mono:
57
- "Geist Mono", "SF Mono", SFMono-Regular, ui-monospace, "Cascadia Code", Menlo, monospace !default;
56
+ "JetBrains Mono Variable", "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace !default;
58
57
 
59
58
  // Font sizes (rem based on 14px root).
60
59
  // Scale ladder tuned for industry-leading docs hierarchy:
@@ -197,7 +196,7 @@ $fui-shadow-lg: computed.$computed-shadow-lg !default;
197
196
  // Focus ring (derived from $fui-brand)
198
197
  $fui-focus-ring-color: computed.$computed-focus-ring-color !default;
199
198
  $fui-focus-ring-offset: 2px !default;
200
- $fui-focus-ring-width: 1px !default;
199
+ $fui-focus-ring-width: 2px !default;
201
200
 
202
201
  // Scrollbar (derived from $fui-neutral palette)
203
202
  $fui-scrollbar-width: 8px !default;
@@ -214,6 +213,28 @@ $fui-dark-color-on-accent: computed.$computed-dark-color-on-accent !default;
214
213
  $fui-dark-color-accent-hover: computed.$computed-dark-color-accent-hover !default;
215
214
  $fui-dark-color-accent-active: computed.$computed-dark-color-accent-active !default;
216
215
 
216
+ // True when the brand seed is the Fragments default (pine). When true, the
217
+ // runtime (relative-color) dark accent is pinned to the exact SCSS-computed
218
+ // sage values so the ~93% relative-color path and the SCSS fallback agree.
219
+ // Any consumer-supplied $fui-brand flips this false and restores the reactive
220
+ // OKLCH derivation that tracks --fui-seed-brand at runtime.
221
+ $fui-brand-is-default: computed.$brand-is-fragments-default !default;
222
+
223
+ $_rt-dark-accent: $fui-dark-color-accent;
224
+ $_rt-dark-accent-hover: $fui-dark-color-accent-hover;
225
+ $_rt-dark-accent-active: $fui-dark-color-accent-active;
226
+ @if not $fui-brand-is-default {
227
+ $_rt-dark-accent: string.unquote(
228
+ "oklch(from var(--fui-seed-brand) clamp(0.55, max(l, calc(0.95 - 2 * c)), 0.85) c h)"
229
+ );
230
+ $_rt-dark-accent-hover: string.unquote(
231
+ "oklch(from var(--fui-seed-brand) clamp(0.6, max(calc(l + 0.06), calc(0.97 - 2 * c)), 0.9) c h)"
232
+ );
233
+ $_rt-dark-accent-active: string.unquote(
234
+ "oklch(from var(--fui-seed-brand) clamp(0.5, max(calc(l - 0.04), calc(0.9 - 2 * c)), 0.82) c h)"
235
+ );
236
+ }
237
+
217
238
  // Surface colors (dark) - derived from $fui-neutral palette
218
239
  $fui-dark-bg-primary: computed.$computed-dark-bg-primary !default;
219
240
  $fui-dark-bg-secondary: computed.$computed-dark-bg-secondary !default;
@@ -285,6 +306,8 @@ $fui-button-height-xs: computed.$computed-button-height-xs !default;
285
306
  $fui-button-height-sm: computed.$computed-button-height-sm !default;
286
307
  $fui-button-height-md: computed.$computed-button-height-md !default;
287
308
  $fui-button-height-lg: computed.$computed-button-height-lg !default;
309
+ $fui-button-outlined-shadow: inset 0 1px 0
310
+ light-dark(color-mix(in srgb, white 72%, transparent), color-mix(in srgb, white 5%, transparent)) !default;
288
311
 
289
312
  // Input heights (derived from density seed)
290
313
  // Note: These are dedicated input tokens, not reusing button heights
@@ -323,9 +346,15 @@ $fui-sidebar-item-height: computed.$computed-sidebar-item-height !default; // de
323
346
  $fui-appshell-header-height: 56px !default;
324
347
  $fui-header-z-index: 40 !default;
325
348
 
326
- // CodeBlock background — shared with Markdown's <pre> prose styling.
327
- // Other code/tooltip styling tokens live in their component modules.
328
- $fui-code-bg: #0c0c0e !default;
349
+ // CodeBlock background — shared with Markdown's <pre> prose styling — and
350
+ // selection tint are runtime hooks so consuming apps can preserve their own
351
+ // code-surface treatment without forking either component.
352
+ $fui-code-bg: #171717 !default;
353
+ $fui-code-selection-bg: color-mix(
354
+ in srgb,
355
+ var(--fui-button-primary-base, #006b57) 30%,
356
+ transparent
357
+ ) !default;
329
358
 
330
359
  // --------------------------------------------
331
360
  // CSS Custom Properties Export
@@ -508,12 +537,14 @@ $fui-code-bg: #0c0c0e !default;
508
537
  --fui-border: light-dark(#{$fui-border}, #{$fui-dark-border});
509
538
  --fui-border-default: light-dark(#{$fui-border-default}, #{$fui-dark-border-default});
510
539
  --fui-border-strong: light-dark(#{$fui-border-strong}, #{$fui-dark-border-strong});
540
+ --fui-border-subtle: color-mix(in srgb, var(--fui-border-default) 68%, transparent);
511
541
 
512
- // Native browser text selection. This should track the primary action blue,
513
- // while component-selected states can stay tuned per control density.
542
+ // Native browser text selection tracks the accent (pine in light, sage in
543
+ // dark) as a soft wash matching the Flight Recorder accent-tint.
544
+ // Component-selected states stay tuned per control density.
514
545
  --fui-selection-bg: light-dark(
515
- color-mix(in srgb, var(--fui-button-primary-base, #0a84ff) 18%, transparent),
516
- color-mix(in srgb, var(--fui-button-primary-base, #0a84ff) 32%, transparent)
546
+ color-mix(in srgb, var(--fui-color-accent, #006b57) 18%, transparent),
547
+ color-mix(in srgb, var(--fui-color-accent, #7fc9b3) 22%, transparent)
517
548
  );
518
549
  --fui-selection-color: var(--fui-text-primary);
519
550
 
@@ -553,30 +584,13 @@ $fui-code-bg: #0c0c0e !default;
553
584
  --fui-kbd-radius: var(--fui-radius-sm);
554
585
  --fui-kbd-reserved-width: 2.714rem; // 38px, enough for "⌘K"
555
586
 
556
- // Button chrome. Neutral and primary buttons use the same raised-edge
557
- // recipe in light and dark: crisp border, subtle top highlight, and a
558
- // pressed inset state.
559
- --fui-button-radius: var(--fui-radius-lg);
560
- --fui-button-primary-base: light-dark(#0a84ff, #0a84ff);
561
- --fui-button-primary-hover: light-dark(#1994ff, #2f9bff);
562
- --fui-button-primary-active: light-dark(#006edb, #0068d6);
563
- --fui-button-primary-bg: linear-gradient(
564
- to bottom,
565
- color-mix(in srgb, var(--fui-button-primary-base) 78%, white 22%) 0%,
566
- var(--fui-button-primary-base) 52%,
567
- color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 100%
568
- );
569
- --fui-button-primary-bg-hover: linear-gradient(
570
- to bottom,
571
- color-mix(in srgb, var(--fui-button-primary-hover) 76%, white 24%) 0%,
572
- var(--fui-button-primary-hover) 52%,
573
- color-mix(in srgb, var(--fui-button-primary-active) 84%, black 16%) 100%
574
- );
575
- --fui-button-primary-bg-active: linear-gradient(
576
- to bottom,
577
- color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 0%,
578
- var(--fui-button-primary-active) 100%
579
- );
587
+ // Button chrome. Primary fill = pine. Border/color are shared; the fill
588
+ // treatment and radius branch on the brand: the Fragments default renders a
589
+ // FLAT solid pill (hybrid-skin), while consumer-branded builds keep the
590
+ // raised-gradient recipe with crisp border, top highlight, and pressed inset.
591
+ --fui-button-primary-base: light-dark(#006b57, #006b57);
592
+ --fui-button-primary-hover: light-dark(#187762, #187762);
593
+ --fui-button-primary-active: light-dark(#005f4c, #005f4c);
580
594
  --fui-button-primary-border-hover: color-mix(
581
595
  in srgb,
582
596
  var(--fui-button-primary-active) 86%,
@@ -588,13 +602,47 @@ $fui-code-bg: #0c0c0e !default;
588
602
  black 26%
589
603
  );
590
604
  --fui-button-primary-color: #fff;
591
- --fui-button-primary-shadow:
592
- inset 0 1px 0 color-mix(in srgb, white 30%, transparent),
593
- inset 0 -1px 0 color-mix(in srgb, black 18%, transparent),
594
- 0 1px 1px color-mix(in srgb, black 16%, transparent);
595
- --fui-button-primary-shadow-active:
596
- inset 0 1px 2px color-mix(in srgb, black 30%, transparent),
597
- 0 1px 0 color-mix(in srgb, white 8%, transparent);
605
+
606
+ @if $fui-brand-is-default {
607
+ // Flat solid pill — hybrid-skin treatment.
608
+ --fui-button-radius: var(--fui-radius-full);
609
+ --fui-button-primary-bg: var(--fui-button-primary-base);
610
+ --fui-button-primary-bg-hover: var(--fui-button-primary-hover);
611
+ --fui-button-primary-bg-active: var(--fui-button-primary-active);
612
+ --fui-button-primary-shadow: none;
613
+ --fui-button-primary-shadow-active: inset
614
+ 0
615
+ 1px
616
+ 2px
617
+ color-mix(in srgb, black 22%, transparent);
618
+ } @else {
619
+ // Raised-gradient recipe for consumer-branded builds.
620
+ --fui-button-radius: var(--fui-radius-lg);
621
+ --fui-button-primary-bg: linear-gradient(
622
+ to bottom,
623
+ color-mix(in srgb, var(--fui-button-primary-base) 78%, white 22%) 0%,
624
+ var(--fui-button-primary-base) 52%,
625
+ color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 100%
626
+ );
627
+ --fui-button-primary-bg-hover: linear-gradient(
628
+ to bottom,
629
+ color-mix(in srgb, var(--fui-button-primary-hover) 76%, white 24%) 0%,
630
+ var(--fui-button-primary-hover) 52%,
631
+ color-mix(in srgb, var(--fui-button-primary-active) 84%, black 16%) 100%
632
+ );
633
+ --fui-button-primary-bg-active: linear-gradient(
634
+ to bottom,
635
+ color-mix(in srgb, var(--fui-button-primary-active) 88%, black 12%) 0%,
636
+ var(--fui-button-primary-active) 100%
637
+ );
638
+ --fui-button-primary-shadow:
639
+ inset 0 1px 0 color-mix(in srgb, white 30%, transparent),
640
+ inset 0 -1px 0 color-mix(in srgb, black 18%, transparent),
641
+ 0 1px 1px color-mix(in srgb, black 16%, transparent);
642
+ --fui-button-primary-shadow-active:
643
+ inset 0 1px 2px color-mix(in srgb, black 30%, transparent),
644
+ 0 1px 0 color-mix(in srgb, white 8%, transparent);
645
+ }
598
646
 
599
647
  --fui-button-neutral-bg: linear-gradient(
600
648
  to bottom,
@@ -638,6 +686,7 @@ $fui-code-bg: #0c0c0e !default;
638
686
  var(--fui-text-primary) 42%
639
687
  );
640
688
  --fui-button-neutral-color: var(--fui-text-primary);
689
+ --fui-button-outlined-shadow: #{$fui-button-outlined-shadow};
641
690
  --fui-button-neutral-shadow:
642
691
  inset 0 1px 0
643
692
  light-dark(
@@ -650,6 +699,9 @@ $fui-code-bg: #0c0c0e !default;
650
699
  inset 0 1px 2px color-mix(in srgb, black 16%, transparent),
651
700
  inset 0 0 0 1px color-mix(in srgb, var(--fui-text-primary) 6%, transparent);
652
701
 
702
+ --fui-code-bg: #{$fui-code-bg};
703
+ --fui-code-selection-bg: #{$fui-code-selection-bg};
704
+
653
705
  // Popup/menu active-item highlight — neutral, deliberately stronger than
654
706
  // --fui-bg-hover (which is tuned for subtle surface hovers and reads as ~invisible
655
707
  // on menu items, esp. in dark mode). Shared by every popup-list surface. Accent is
@@ -674,9 +726,12 @@ $fui-code-bg: #0c0c0e !default;
674
726
  --fui-sidebar-footer-border: color-mix(in srgb, var(--fui-border-default) 68%, transparent);
675
727
 
676
728
  // Card/panel surfaces.
729
+ --fui-badge-radius: var(--fui-radius-lg);
730
+ --fui-badge-dot-color: currentColor;
677
731
  --fui-card-radius: var(--fui-radius-lg);
678
732
  --fui-card-bg: color-mix(in srgb, var(--fui-bg-elevated) 92%, transparent);
679
733
  --fui-card-border: color-mix(in srgb, var(--fui-border-default) 86%, transparent);
734
+ --fui-card-outlined-border: var(--fui-card-border);
680
735
  --fui-card-shadow: inset 0 1px 0
681
736
  light-dark(
682
737
  color-mix(in srgb, white 86%, transparent),
@@ -692,6 +747,8 @@ $fui-code-bg: #0c0c0e !default;
692
747
  var(--fui-bg-elevated) 84%,
693
748
  var(--fui-text-primary) 6%
694
749
  );
750
+ --fui-card-active-shadow: inset 0 1px 2px color-mix(in srgb, black 12%, transparent);
751
+ --fui-card-panel-shadow: var(--fui-card-shadow);
695
752
  --fui-card-stat-bg: color-mix(in srgb, var(--fui-bg-elevated) 74%, transparent);
696
753
  --fui-card-stat-border: color-mix(in srgb, var(--fui-border-default) 78%, transparent);
697
754
  --fui-card-stat-shadow: var(--fui-card-shadow);
@@ -810,10 +867,10 @@ $fui-code-bg: #0c0c0e !default;
810
867
  // brand (high c) keeps its own lightness, while a neutral grey brand (c≈0) lifts
811
868
  // toward ~0.85 so it stays visible on dark surfaces where lightness is the only
812
869
  // perceptual cue. Final L is clamped to [0.55, 0.85].
813
- --fui-color-accent: light-dark(
814
- var(--fui-seed-brand),
815
- oklch(from var(--fui-seed-brand) clamp(0.55, max(l, calc(0.95 - 2 * c)), 0.85) c h)
816
- );
870
+ // Dark half is gated: the Fragments default emits the exact SCSS-computed
871
+ // sage constants (#{$_rt-dark-accent}) so this path and the fallback agree;
872
+ // any consumer $fui-brand restores the reactive chroma-aware OKLCH lift.
873
+ --fui-color-accent: light-dark(var(--fui-seed-brand), #{$_rt-dark-accent});
817
874
 
818
875
  // Auto-contrast text for elements on accent backgrounds (buttons, chips, etc.)
819
876
  // Lightness > 0.6 → dark text; otherwise → white. Users can override this token.
@@ -822,15 +879,11 @@ $fui-code-bg: #0c0c0e !default;
822
879
  );
823
880
  --fui-color-accent-hover: light-dark(
824
881
  oklch(from var(--fui-seed-brand) max(0.05, calc(l - 0.06)) c h),
825
- oklch(
826
- from var(--fui-seed-brand) clamp(0.6, max(calc(l + 0.06), calc(0.97 - 2 * c)), 0.9) c h
827
- )
882
+ #{$_rt-dark-accent-hover}
828
883
  );
829
884
  --fui-color-accent-active: light-dark(
830
885
  oklch(from var(--fui-seed-brand) max(0.05, calc(l - 0.12)) c h),
831
- oklch(
832
- from var(--fui-seed-brand) clamp(0.5, max(calc(l - 0.04), calc(0.9 - 2 * c)), 0.82) c h
833
- )
886
+ #{$_rt-dark-accent-active}
834
887
  );
835
888
 
836
889
  // Semantic hover derived from seed
@@ -881,18 +934,12 @@ $fui-code-bg: #0c0c0e !default;
881
934
  // is never clamped, so saturated brands (e.g. blue-600) stay true in dark mode.
882
935
  :root[data-theme="dark"],
883
936
  :root.dark {
884
- --fui-color-accent: oklch(
885
- from var(--fui-seed-brand) clamp(0.55, max(l, calc(0.95 - 2 * c)), 0.85) c h
886
- );
937
+ --fui-color-accent: #{$_rt-dark-accent};
887
938
  --fui-color-on-accent: oklch(
888
939
  from var(--fui-color-accent) calc(0 + (1 - clamp(0, calc((l - 0.6) * 999), 1))) 0 0
889
940
  );
890
- --fui-color-accent-hover: oklch(
891
- from var(--fui-seed-brand) clamp(0.6, max(calc(l + 0.06), calc(0.97 - 2 * c)), 0.9) c h
892
- );
893
- --fui-color-accent-active: oklch(
894
- from var(--fui-seed-brand) clamp(0.5, max(calc(l - 0.04), calc(0.9 - 2 * c)), 0.82) c h
895
- );
941
+ --fui-color-accent-hover: #{$_rt-dark-accent-hover};
942
+ --fui-color-accent-active: #{$_rt-dark-accent-active};
896
943
  --fui-color-danger-bg: color-mix(in oklch, var(--fui-seed-danger) 24%, black);
897
944
  --fui-color-success-bg: color-mix(in oklch, var(--fui-seed-success) 24%, black);
898
945
  --fui-color-warning-bg: color-mix(in oklch, var(--fui-seed-warning) 24%, black);
@@ -1,33 +0,0 @@
1
- import { type ProgressProps } from "../Progress";
2
- export { PrototypeShell } from "./DashboardLayoutPrototypes.shell";
3
- export type StateVariant = "success" | "warning" | "error" | "info";
4
- export type AreaRow = {
5
- area: string;
6
- owner: string;
7
- coverage: number;
8
- drift: number;
9
- criticality: string;
10
- state: "Healthy" | "Watching" | "Blocked" | "Review";
11
- variant: StateVariant;
12
- };
13
- export declare const areas: AreaRow[];
14
- export declare function MetricPanel({ label, value, progress, variant, }: {
15
- label: string;
16
- value: string;
17
- progress: number;
18
- variant?: ProgressProps["variant"];
19
- }): import("react/jsx-runtime").JSX.Element;
20
- export declare function CoverageHero({ className }?: {
21
- className?: string;
22
- }): import("react/jsx-runtime").JSX.Element;
23
- export declare function AreasTable({ title }: {
24
- title?: string;
25
- }): import("react/jsx-runtime").JSX.Element;
26
- export declare function ActionPanel({ className }?: {
27
- className?: string;
28
- }): import("react/jsx-runtime").JSX.Element;
29
- export declare function ActivityPanel(): import("react/jsx-runtime").JSX.Element;
30
- export declare function ActivityTable(): import("react/jsx-runtime").JSX.Element;
31
- export declare function StatePanel(): import("react/jsx-runtime").JSX.Element;
32
- export declare function FindingsToolbar(): import("react/jsx-runtime").JSX.Element;
33
- //# sourceMappingURL=DashboardLayoutPrototypes.shared.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DashboardLayoutPrototypes.shared.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/DashboardLayoutPrototypes.shared.tsx"],"names":[],"mappings":"AAOA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,aAAa,CAAC;AAK3D,OAAO,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGnE,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,GAAG,MAAM,CAAC;AAEpE,MAAM,MAAM,OAAO,GAAG;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,QAAQ,CAAC;IACrD,OAAO,EAAE,YAAY,CAAC;CACvB,CAAC;AAUF,eAAO,MAAM,KAAK,EAAE,OAAO,EAqC1B,CAAC;AAyFF,wBAAgB,WAAW,CAAC,EAC1B,KAAK,EACL,KAAK,EACL,QAAQ,EACR,OAAmB,GACpB,EAAE;IACD,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,aAAa,CAAC,SAAS,CAAC,CAAC;CACpC,2CAgBA;AAED,wBAAgB,YAAY,CAAC,EAAE,SAAS,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,2CAsDtE;AAED,wBAAgB,UAAU,CAAC,EAAE,KAAuB,EAAE,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,2CAwBzE;AAED,wBAAgB,WAAW,CAAC,EAAE,SAAS,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,2CAuBrE;AAED,wBAAgB,aAAa,4CAW5B;AAED,wBAAgB,aAAa,4CAY5B;AAED,wBAAgB,UAAU,4CA6BzB;AAED,wBAAgB,eAAe,4CAoB9B"}
@@ -1,11 +0,0 @@
1
- import type { ReactNode } from "react";
2
- export type CloudNavLabel = "Dashboard" | "Pull Requests" | "Backlog" | "Governance" | "Developer setup" | "Settings";
3
- export declare function PrototypeShell({ activeNav, eyebrow, title, description, actions, children, }: {
4
- activeNav?: CloudNavLabel;
5
- eyebrow?: string;
6
- title: string;
7
- description?: string;
8
- actions?: ReactNode;
9
- children: ReactNode;
10
- }): import("react/jsx-runtime").JSX.Element;
11
- //# sourceMappingURL=DashboardLayoutPrototypes.shell.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"DashboardLayoutPrototypes.shell.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/DashboardLayoutPrototypes.shell.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,OAAO,CAAC;AAmBvC,MAAM,MAAM,aAAa,GACrB,WAAW,GACX,eAAe,GACf,SAAS,GACT,YAAY,GACZ,iBAAiB,GACjB,UAAU,CAAC;AAmEf,wBAAgB,cAAc,CAAC,EAC7B,SAAuB,EACvB,OAAO,EACP,KAAK,EACL,WAA+E,EAC/E,OAAO,EACP,QAAQ,GACT,EAAE;IACD,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,SAAS,CAAC;IACpB,QAAQ,EAAE,SAAS,CAAC;CACrB,2CAwCA"}
@@ -1,5 +0,0 @@
1
- export declare function PrototypeActions(): import("react/jsx-runtime").JSX.Element;
2
- export declare function PullRequestInbox({ density }: {
3
- density?: "condensed" | "regular";
4
- }): import("react/jsx-runtime").JSX.Element;
5
- //# sourceMappingURL=PullRequestsPrototypes.content.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PullRequestsPrototypes.content.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/PullRequestsPrototypes.content.tsx"],"names":[],"mappings":"AAsLA,wBAAgB,gBAAgB,4CAQ/B;AAqFD,wBAAgB,gBAAgB,CAAC,EAAE,OAAqB,EAAE,EAAE;IAAE,OAAO,CAAC,EAAE,WAAW,GAAG,SAAS,CAAA;CAAE,2CAOhG"}
@@ -1,4 +0,0 @@
1
- export declare function FindingsPanel(): import("react/jsx-runtime").JSX.Element;
2
- export declare function ConversationPanel(): import("react/jsx-runtime").JSX.Element;
3
- export declare function ChangedFilesPanel(): import("react/jsx-runtime").JSX.Element;
4
- //# sourceMappingURL=PullRequestsPrototypes.detail-panels.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"PullRequestsPrototypes.detail-panels.d.ts","sourceRoot":"","sources":["../../../src/components/Cloud/PullRequestsPrototypes.detail-panels.tsx"],"names":[],"mappings":"AAiHA,wBAAgB,aAAa,4CAyD5B;AAMD,wBAAgB,iBAAiB,4CA8ChC;AAiJD,wBAAgB,iBAAiB,4CAahC"}