@misoto22/folio 0.0.0 → 0.16.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 (686) hide show
  1. package/AGENTS.md +88 -0
  2. package/CLAUDE.md +1 -0
  3. package/LICENSE +21 -0
  4. package/README.md +208 -2
  5. package/bin/folio-design.mjs +277 -0
  6. package/bin/migrate-legacy.mjs +81 -0
  7. package/dist/agent/Accordion.md +65 -0
  8. package/dist/agent/Actions.md +49 -0
  9. package/dist/agent/Alert.md +65 -0
  10. package/dist/agent/AppShell.md +69 -0
  11. package/dist/agent/ArchitectureFigure.md +72 -0
  12. package/dist/agent/AreaChart.md +94 -0
  13. package/dist/agent/Article.md +65 -0
  14. package/dist/agent/AspectRatio.md +58 -0
  15. package/dist/agent/Avatar.md +53 -0
  16. package/dist/agent/Badge.md +62 -0
  17. package/dist/agent/BarChart.md +93 -0
  18. package/dist/agent/BarList.md +67 -0
  19. package/dist/agent/BigNumber.md +70 -0
  20. package/dist/agent/BoxPlot.md +82 -0
  21. package/dist/agent/Breadcrumb.md +55 -0
  22. package/dist/agent/BulletChart.md +71 -0
  23. package/dist/agent/Button.md +81 -0
  24. package/dist/agent/Calendar.md +77 -0
  25. package/dist/agent/CalendarHeatmap.md +75 -0
  26. package/dist/agent/Card.md +72 -0
  27. package/dist/agent/Checkbox.md +57 -0
  28. package/dist/agent/Code.md +51 -0
  29. package/dist/agent/CodeBlock.md +77 -0
  30. package/dist/agent/Collapsible.md +68 -0
  31. package/dist/agent/Collection.md +169 -0
  32. package/dist/agent/ColorPicker.md +76 -0
  33. package/dist/agent/Combobox.md +77 -0
  34. package/dist/agent/Command.md +122 -0
  35. package/dist/agent/ComposedChart.md +82 -0
  36. package/dist/agent/Contact.md +90 -0
  37. package/dist/agent/Content.md +70 -0
  38. package/dist/agent/ContextMenu.md +93 -0
  39. package/dist/agent/Conversation.md +247 -0
  40. package/dist/agent/DataflowFigure.md +49 -0
  41. package/dist/agent/DatePicker.md +104 -0
  42. package/dist/agent/DescriptionList.md +69 -0
  43. package/dist/agent/Diagram.md +71 -0
  44. package/dist/agent/DiagramCanvas.md +71 -0
  45. package/dist/agent/DiagramExportMenu.md +65 -0
  46. package/dist/agent/DiagramInspector.md +73 -0
  47. package/dist/agent/DiagramLegend.md +56 -0
  48. package/dist/agent/DiagramMinimap.md +69 -0
  49. package/dist/agent/DiagramToolbar.md +70 -0
  50. package/dist/agent/Dialog.md +76 -0
  51. package/dist/agent/DropdownMenu.md +110 -0
  52. package/dist/agent/EmptyState.md +63 -0
  53. package/dist/agent/ErrorState.md +67 -0
  54. package/dist/agent/Evidence.md +165 -0
  55. package/dist/agent/Facet.md +107 -0
  56. package/dist/agent/Field.md +79 -0
  57. package/dist/agent/FigureBand.md +49 -0
  58. package/dist/agent/FloatingIconButton.md +61 -0
  59. package/dist/agent/FunnelChart.md +75 -0
  60. package/dist/agent/Heading.md +65 -0
  61. package/dist/agent/Heatmap.md +78 -0
  62. package/dist/agent/Histogram.md +88 -0
  63. package/dist/agent/Input.md +52 -0
  64. package/dist/agent/Kbd.md +48 -0
  65. package/dist/agent/LifecycleFigure.md +50 -0
  66. package/dist/agent/LineChart.md +85 -0
  67. package/dist/agent/LinkArrow.md +49 -0
  68. package/dist/agent/Markdown.md +69 -0
  69. package/dist/agent/Media.md +261 -0
  70. package/dist/agent/Metric.md +70 -0
  71. package/dist/agent/Metrics.md +114 -0
  72. package/dist/agent/Music.md +86 -0
  73. package/dist/agent/NativeSelect.md +62 -0
  74. package/dist/agent/NavItem.md +56 -0
  75. package/dist/agent/NumberField.md +73 -0
  76. package/dist/agent/PageHeader.md +69 -0
  77. package/dist/agent/Pagination.md +70 -0
  78. package/dist/agent/PieChart.md +80 -0
  79. package/dist/agent/Popover.md +80 -0
  80. package/dist/agent/Portfolio.md +93 -0
  81. package/dist/agent/PortfolioIndex.md +34 -0
  82. package/dist/agent/Progress.md +58 -0
  83. package/dist/agent/RadarChart.md +79 -0
  84. package/dist/agent/RadialChart.md +81 -0
  85. package/dist/agent/RadioGroup.md +66 -0
  86. package/dist/agent/Reading.md +233 -0
  87. package/dist/agent/Recovery.md +72 -0
  88. package/dist/agent/SankeyChart.md +85 -0
  89. package/dist/agent/ScatterChart.md +80 -0
  90. package/dist/agent/ScrollArea.md +62 -0
  91. package/dist/agent/SearchPalette.md +51 -0
  92. package/dist/agent/SearchableMenu.md +69 -0
  93. package/dist/agent/Select.md +102 -0
  94. package/dist/agent/Separator.md +60 -0
  95. package/dist/agent/SequenceFigure.md +51 -0
  96. package/dist/agent/Sheet.md +82 -0
  97. package/dist/agent/Sidebar.md +194 -0
  98. package/dist/agent/SiteNavigation.md +62 -0
  99. package/dist/agent/SiteShell.md +67 -0
  100. package/dist/agent/Skeleton.md +96 -0
  101. package/dist/agent/Slider.md +67 -0
  102. package/dist/agent/Sparkline.md +68 -0
  103. package/dist/agent/Spinner.md +62 -0
  104. package/dist/agent/StatusDot.md +56 -0
  105. package/dist/agent/StatusPill.md +55 -0
  106. package/dist/agent/Steps.md +68 -0
  107. package/dist/agent/Switch.md +50 -0
  108. package/dist/agent/Table.md +111 -0
  109. package/dist/agent/Tabs.md +71 -0
  110. package/dist/agent/Tag.md +67 -0
  111. package/dist/agent/Text.md +66 -0
  112. package/dist/agent/Textarea.md +46 -0
  113. package/dist/agent/Timeline.md +114 -0
  114. package/dist/agent/Timestamp.md +65 -0
  115. package/dist/agent/Toast.md +51 -0
  116. package/dist/agent/ToggleGroup.md +67 -0
  117. package/dist/agent/Toolbar.md +72 -0
  118. package/dist/agent/Tooltip.md +74 -0
  119. package/dist/agent/TreemapChart.md +76 -0
  120. package/dist/agent/WaterfallChart.md +86 -0
  121. package/dist/agent/WorkflowFigure.md +51 -0
  122. package/dist/agent/catalog.json +8006 -0
  123. package/dist/agent/index.md +182 -0
  124. package/dist/article.css +407 -0
  125. package/dist/charts/AreaChart/AreaChart.d.ts +198 -0
  126. package/dist/charts/AreaChart/AreaChart.js +479 -0
  127. package/dist/charts/AreaChart/AreaChart.js.map +1 -0
  128. package/dist/charts/BarChart/BarChart.d.ts +190 -0
  129. package/dist/charts/BarChart/BarChart.js +599 -0
  130. package/dist/charts/BarChart/BarChart.js.map +1 -0
  131. package/dist/charts/BarList/BarList.d.ts +65 -0
  132. package/dist/charts/BarList/BarList.js +79 -0
  133. package/dist/charts/BarList/BarList.js.map +1 -0
  134. package/dist/charts/BigNumber/BigNumber.d.ts +72 -0
  135. package/dist/charts/BigNumber/BigNumber.js +51 -0
  136. package/dist/charts/BigNumber/BigNumber.js.map +1 -0
  137. package/dist/charts/BoxPlot/BoxPlot.d.ts +177 -0
  138. package/dist/charts/BoxPlot/BoxPlot.js +497 -0
  139. package/dist/charts/BoxPlot/BoxPlot.js.map +1 -0
  140. package/dist/charts/BulletChart/BulletChart.d.ts +100 -0
  141. package/dist/charts/BulletChart/BulletChart.js +197 -0
  142. package/dist/charts/BulletChart/BulletChart.js.map +1 -0
  143. package/dist/charts/CalendarHeatmap/CalendarHeatmap.d.ts +106 -0
  144. package/dist/charts/CalendarHeatmap/CalendarHeatmap.js +103 -0
  145. package/dist/charts/CalendarHeatmap/CalendarHeatmap.js.map +1 -0
  146. package/dist/charts/ComposedChart/ComposedChart.d.ts +178 -0
  147. package/dist/charts/ComposedChart/ComposedChart.js +667 -0
  148. package/dist/charts/ComposedChart/ComposedChart.js.map +1 -0
  149. package/dist/charts/Facet/Facet.d.ts +240 -0
  150. package/dist/charts/Facet/Facet.js +133 -0
  151. package/dist/charts/Facet/Facet.js.map +1 -0
  152. package/dist/charts/Facet/panels.d.ts +187 -0
  153. package/dist/charts/Facet/panels.js +203 -0
  154. package/dist/charts/Facet/panels.js.map +1 -0
  155. package/dist/charts/FunnelChart/FunnelChart.d.ts +106 -0
  156. package/dist/charts/FunnelChart/FunnelChart.js +137 -0
  157. package/dist/charts/FunnelChart/FunnelChart.js.map +1 -0
  158. package/dist/charts/Heatmap/Heatmap.d.ts +101 -0
  159. package/dist/charts/Heatmap/Heatmap.js +125 -0
  160. package/dist/charts/Heatmap/Heatmap.js.map +1 -0
  161. package/dist/charts/Histogram/Histogram.d.ts +188 -0
  162. package/dist/charts/Histogram/Histogram.js +382 -0
  163. package/dist/charts/Histogram/Histogram.js.map +1 -0
  164. package/dist/charts/LineChart/LineChart.d.ts +174 -0
  165. package/dist/charts/LineChart/LineChart.js +485 -0
  166. package/dist/charts/LineChart/LineChart.js.map +1 -0
  167. package/dist/charts/PieChart/PieChart.d.ts +140 -0
  168. package/dist/charts/PieChart/PieChart.js +317 -0
  169. package/dist/charts/PieChart/PieChart.js.map +1 -0
  170. package/dist/charts/RadarChart/RadarChart.d.ts +135 -0
  171. package/dist/charts/RadarChart/RadarChart.js +303 -0
  172. package/dist/charts/RadarChart/RadarChart.js.map +1 -0
  173. package/dist/charts/RadialChart/RadialChart.d.ts +142 -0
  174. package/dist/charts/RadialChart/RadialChart.js +279 -0
  175. package/dist/charts/RadialChart/RadialChart.js.map +1 -0
  176. package/dist/charts/SankeyChart/SankeyChart.d.ts +149 -0
  177. package/dist/charts/SankeyChart/SankeyChart.js +509 -0
  178. package/dist/charts/SankeyChart/SankeyChart.js.map +1 -0
  179. package/dist/charts/ScatterChart/ScatterChart.d.ts +149 -0
  180. package/dist/charts/ScatterChart/ScatterChart.js +275 -0
  181. package/dist/charts/ScatterChart/ScatterChart.js.map +1 -0
  182. package/dist/charts/Sparkline/Sparkline.d.ts +53 -0
  183. package/dist/charts/Sparkline/Sparkline.js +95 -0
  184. package/dist/charts/Sparkline/Sparkline.js.map +1 -0
  185. package/dist/charts/TreemapChart/TreemapChart.d.ts +98 -0
  186. package/dist/charts/TreemapChart/TreemapChart.js +127 -0
  187. package/dist/charts/TreemapChart/TreemapChart.js.map +1 -0
  188. package/dist/charts/WaterfallChart/WaterfallChart.d.ts +164 -0
  189. package/dist/charts/WaterfallChart/WaterfallChart.js +321 -0
  190. package/dist/charts/WaterfallChart/WaterfallChart.js.map +1 -0
  191. package/dist/charts/index.d.ts +43 -0
  192. package/dist/charts/index.js +130 -0
  193. package/dist/charts/index.js.map +1 -0
  194. package/dist/charts/lib/annotations.d.ts +103 -0
  195. package/dist/charts/lib/annotations.js +99 -0
  196. package/dist/charts/lib/annotations.js.map +1 -0
  197. package/dist/charts/lib/axis.d.ts +18 -0
  198. package/dist/charts/lib/axis.js +21 -0
  199. package/dist/charts/lib/axis.js.map +1 -0
  200. package/dist/charts/lib/background.d.ts +33 -0
  201. package/dist/charts/lib/background.js +173 -0
  202. package/dist/charts/lib/background.js.map +1 -0
  203. package/dist/charts/lib/brush.d.ts +94 -0
  204. package/dist/charts/lib/brush.js +535 -0
  205. package/dist/charts/lib/brush.js.map +1 -0
  206. package/dist/charts/lib/chart.d.ts +94 -0
  207. package/dist/charts/lib/chart.js +149 -0
  208. package/dist/charts/lib/chart.js.map +1 -0
  209. package/dist/charts/lib/dot.d.ts +29 -0
  210. package/dist/charts/lib/dot.js +78 -0
  211. package/dist/charts/lib/dot.js.map +1 -0
  212. package/dist/charts/lib/empty.d.ts +31 -0
  213. package/dist/charts/lib/empty.js +24 -0
  214. package/dist/charts/lib/empty.js.map +1 -0
  215. package/dist/charts/lib/export.d.ts +94 -0
  216. package/dist/charts/lib/export.js +62 -0
  217. package/dist/charts/lib/export.js.map +1 -0
  218. package/dist/charts/lib/figure.d.ts +81 -0
  219. package/dist/charts/lib/figure.js +62 -0
  220. package/dist/charts/lib/figure.js.map +1 -0
  221. package/dist/charts/lib/format.d.ts +46 -0
  222. package/dist/charts/lib/format.js +56 -0
  223. package/dist/charts/lib/format.js.map +1 -0
  224. package/dist/charts/lib/legend.d.ts +45 -0
  225. package/dist/charts/lib/legend.js +117 -0
  226. package/dist/charts/lib/legend.js.map +1 -0
  227. package/dist/charts/lib/loading.d.ts +48 -0
  228. package/dist/charts/lib/loading.js +105 -0
  229. package/dist/charts/lib/loading.js.map +1 -0
  230. package/dist/charts/lib/paint.d.ts +154 -0
  231. package/dist/charts/lib/paint.js +551 -0
  232. package/dist/charts/lib/paint.js.map +1 -0
  233. package/dist/charts/lib/scale.d.ts +23 -0
  234. package/dist/charts/lib/scale.js +13 -0
  235. package/dist/charts/lib/scale.js.map +1 -0
  236. package/dist/charts/lib/selection.d.ts +20 -0
  237. package/dist/charts/lib/selection.js +18 -0
  238. package/dist/charts/lib/selection.js.map +1 -0
  239. package/dist/charts/lib/sonify-control.d.ts +163 -0
  240. package/dist/charts/lib/sonify-control.js +172 -0
  241. package/dist/charts/lib/sonify-control.js.map +1 -0
  242. package/dist/charts/lib/sonify.d.ts +248 -0
  243. package/dist/charts/lib/sonify.js +262 -0
  244. package/dist/charts/lib/sonify.js.map +1 -0
  245. package/dist/charts/lib/toolbar.d.ts +144 -0
  246. package/dist/charts/lib/toolbar.js +156 -0
  247. package/dist/charts/lib/toolbar.js.map +1 -0
  248. package/dist/charts/lib/tooltip.d.ts +59 -0
  249. package/dist/charts/lib/tooltip.js +135 -0
  250. package/dist/charts/lib/tooltip.js.map +1 -0
  251. package/dist/charts/lib/values.d.ts +56 -0
  252. package/dist/charts/lib/values.js +71 -0
  253. package/dist/charts/lib/values.js.map +1 -0
  254. package/dist/charts/lib/zoom.d.ts +139 -0
  255. package/dist/charts/lib/zoom.js +314 -0
  256. package/dist/charts/lib/zoom.js.map +1 -0
  257. package/dist/components/Accordion/Accordion.d.ts +34 -0
  258. package/dist/components/Accordion/Accordion.js +43 -0
  259. package/dist/components/Accordion/Accordion.js.map +1 -0
  260. package/dist/components/Alert/Alert.d.ts +32 -0
  261. package/dist/components/Alert/Alert.js +49 -0
  262. package/dist/components/Alert/Alert.js.map +1 -0
  263. package/dist/components/AppShell/AppShell.d.ts +58 -0
  264. package/dist/components/AppShell/AppShell.js +126 -0
  265. package/dist/components/AppShell/AppShell.js.map +1 -0
  266. package/dist/components/Article/Article.d.ts +58 -0
  267. package/dist/components/Article/Article.js +34 -0
  268. package/dist/components/Article/Article.js.map +1 -0
  269. package/dist/components/AspectRatio/AspectRatio.d.ts +46 -0
  270. package/dist/components/AspectRatio/AspectRatio.js +33 -0
  271. package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
  272. package/dist/components/Avatar/Avatar.d.ts +38 -0
  273. package/dist/components/Avatar/Avatar.js +44 -0
  274. package/dist/components/Avatar/Avatar.js.map +1 -0
  275. package/dist/components/Badge/Badge.d.ts +30 -0
  276. package/dist/components/Badge/Badge.js +29 -0
  277. package/dist/components/Badge/Badge.js.map +1 -0
  278. package/dist/components/Breadcrumb/Breadcrumb.d.ts +37 -0
  279. package/dist/components/Breadcrumb/Breadcrumb.js +46 -0
  280. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
  281. package/dist/components/Button/Button.d.ts +70 -0
  282. package/dist/components/Button/Button.js +95 -0
  283. package/dist/components/Button/Button.js.map +1 -0
  284. package/dist/components/Calendar/Calendar.d.ts +54 -0
  285. package/dist/components/Calendar/Calendar.js +369 -0
  286. package/dist/components/Calendar/Calendar.js.map +1 -0
  287. package/dist/components/Card/Card.d.ts +55 -0
  288. package/dist/components/Card/Card.js +64 -0
  289. package/dist/components/Card/Card.js.map +1 -0
  290. package/dist/components/Checkbox/Checkbox.d.ts +26 -0
  291. package/dist/components/Checkbox/Checkbox.js +34 -0
  292. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  293. package/dist/components/Code/Code.d.ts +30 -0
  294. package/dist/components/Code/Code.js +21 -0
  295. package/dist/components/Code/Code.js.map +1 -0
  296. package/dist/components/CodeBlock/CodeBlock.d.ts +145 -0
  297. package/dist/components/CodeBlock/CodeBlock.js +114 -0
  298. package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
  299. package/dist/components/Collapsible/Collapsible.d.ts +45 -0
  300. package/dist/components/Collapsible/Collapsible.js +60 -0
  301. package/dist/components/Collapsible/Collapsible.js.map +1 -0
  302. package/dist/components/ColorPicker/ColorPicker.d.ts +67 -0
  303. package/dist/components/ColorPicker/ColorPicker.js +334 -0
  304. package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
  305. package/dist/components/Combobox/Combobox.d.ts +77 -0
  306. package/dist/components/Combobox/Combobox.js +170 -0
  307. package/dist/components/Combobox/Combobox.js.map +1 -0
  308. package/dist/components/Command/Command.d.ts +125 -0
  309. package/dist/components/Command/Command.js +204 -0
  310. package/dist/components/Command/Command.js.map +1 -0
  311. package/dist/components/ContextMenu/ContextMenu.d.ts +63 -0
  312. package/dist/components/ContextMenu/ContextMenu.js +109 -0
  313. package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
  314. package/dist/components/DatePicker/DatePicker.d.ts +130 -0
  315. package/dist/components/DatePicker/DatePicker.js +257 -0
  316. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  317. package/dist/components/DescriptionList/DescriptionList.d.ts +73 -0
  318. package/dist/components/DescriptionList/DescriptionList.js +35 -0
  319. package/dist/components/DescriptionList/DescriptionList.js.map +1 -0
  320. package/dist/components/Diagram/Diagram.d.ts +86 -0
  321. package/dist/components/Diagram/Diagram.js +211 -0
  322. package/dist/components/Diagram/Diagram.js.map +1 -0
  323. package/dist/components/Dialog/Dialog.d.ts +63 -0
  324. package/dist/components/Dialog/Dialog.js +90 -0
  325. package/dist/components/Dialog/Dialog.js.map +1 -0
  326. package/dist/components/DropdownMenu/DropdownMenu.d.ts +87 -0
  327. package/dist/components/DropdownMenu/DropdownMenu.js +120 -0
  328. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
  329. package/dist/components/EmptyState/EmptyState.d.ts +55 -0
  330. package/dist/components/EmptyState/EmptyState.js +32 -0
  331. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  332. package/dist/components/ErrorState/ErrorState.d.ts +55 -0
  333. package/dist/components/ErrorState/ErrorState.js +41 -0
  334. package/dist/components/ErrorState/ErrorState.js.map +1 -0
  335. package/dist/components/Field/Field.d.ts +111 -0
  336. package/dist/components/Field/Field.js +95 -0
  337. package/dist/components/Field/Field.js.map +1 -0
  338. package/dist/components/Field/field-control.d.ts +31 -0
  339. package/dist/components/Field/field-control.js +12 -0
  340. package/dist/components/Field/field-control.js.map +1 -0
  341. package/dist/components/FigureBand/FigureBand.d.ts +31 -0
  342. package/dist/components/FigureBand/FigureBand.js +51 -0
  343. package/dist/components/FigureBand/FigureBand.js.map +1 -0
  344. package/dist/components/FloatingIconButton/FloatingIconButton.d.ts +29 -0
  345. package/dist/components/FloatingIconButton/FloatingIconButton.js +34 -0
  346. package/dist/components/FloatingIconButton/FloatingIconButton.js.map +1 -0
  347. package/dist/components/Heading/Heading.d.ts +62 -0
  348. package/dist/components/Heading/Heading.js +44 -0
  349. package/dist/components/Heading/Heading.js.map +1 -0
  350. package/dist/components/Input/Input.d.ts +22 -0
  351. package/dist/components/Input/Input.js +21 -0
  352. package/dist/components/Input/Input.js.map +1 -0
  353. package/dist/components/Kbd/Kbd.d.ts +27 -0
  354. package/dist/components/Kbd/Kbd.js +21 -0
  355. package/dist/components/Kbd/Kbd.js.map +1 -0
  356. package/dist/components/LinkArrow/LinkArrow.d.ts +24 -0
  357. package/dist/components/LinkArrow/LinkArrow.js +24 -0
  358. package/dist/components/LinkArrow/LinkArrow.js.map +1 -0
  359. package/dist/components/Markdown/Markdown.d.ts +139 -0
  360. package/dist/components/Markdown/Markdown.js +135 -0
  361. package/dist/components/Markdown/Markdown.js.map +1 -0
  362. package/dist/components/Markdown/inline.d.ts +29 -0
  363. package/dist/components/Markdown/inline.js +74 -0
  364. package/dist/components/Markdown/inline.js.map +1 -0
  365. package/dist/components/Markdown/nodes.d.ts +65 -0
  366. package/dist/components/Markdown/nodes.js +1 -0
  367. package/dist/components/Markdown/nodes.js.map +1 -0
  368. package/dist/components/Markdown/parse.d.ts +24 -0
  369. package/dist/components/Markdown/parse.js +110 -0
  370. package/dist/components/Markdown/parse.js.map +1 -0
  371. package/dist/components/Markdown/slug.d.ts +15 -0
  372. package/dist/components/Markdown/slug.js +7 -0
  373. package/dist/components/Markdown/slug.js.map +1 -0
  374. package/dist/components/Metric/Metric.d.ts +61 -0
  375. package/dist/components/Metric/Metric.js +51 -0
  376. package/dist/components/Metric/Metric.js.map +1 -0
  377. package/dist/components/NativeSelect/NativeSelect.d.ts +33 -0
  378. package/dist/components/NativeSelect/NativeSelect.js +44 -0
  379. package/dist/components/NativeSelect/NativeSelect.js.map +1 -0
  380. package/dist/components/NavItem/NavItem.d.ts +39 -0
  381. package/dist/components/NavItem/NavItem.js +31 -0
  382. package/dist/components/NavItem/NavItem.js.map +1 -0
  383. package/dist/components/NumberField/NumberField.d.ts +69 -0
  384. package/dist/components/NumberField/NumberField.js +162 -0
  385. package/dist/components/NumberField/NumberField.js.map +1 -0
  386. package/dist/components/PageHeader/PageHeader.d.ts +92 -0
  387. package/dist/components/PageHeader/PageHeader.js +37 -0
  388. package/dist/components/PageHeader/PageHeader.js.map +1 -0
  389. package/dist/components/Pagination/Pagination.d.ts +67 -0
  390. package/dist/components/Pagination/Pagination.js +112 -0
  391. package/dist/components/Pagination/Pagination.js.map +1 -0
  392. package/dist/components/Popover/Popover.d.ts +39 -0
  393. package/dist/components/Popover/Popover.js +57 -0
  394. package/dist/components/Popover/Popover.js.map +1 -0
  395. package/dist/components/Progress/Progress.d.ts +43 -0
  396. package/dist/components/Progress/Progress.js +57 -0
  397. package/dist/components/Progress/Progress.js.map +1 -0
  398. package/dist/components/RadioGroup/RadioGroup.d.ts +49 -0
  399. package/dist/components/RadioGroup/RadioGroup.js +53 -0
  400. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  401. package/dist/components/ScrollArea/ScrollArea.d.ts +46 -0
  402. package/dist/components/ScrollArea/ScrollArea.js +54 -0
  403. package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
  404. package/dist/components/SearchableMenu/SearchableMenu.d.ts +68 -0
  405. package/dist/components/SearchableMenu/SearchableMenu.js +101 -0
  406. package/dist/components/SearchableMenu/SearchableMenu.js.map +1 -0
  407. package/dist/components/Select/Select.d.ts +87 -0
  408. package/dist/components/Select/Select.js +130 -0
  409. package/dist/components/Select/Select.js.map +1 -0
  410. package/dist/components/Separator/Separator.d.ts +48 -0
  411. package/dist/components/Separator/Separator.js +43 -0
  412. package/dist/components/Separator/Separator.js.map +1 -0
  413. package/dist/components/Sheet/Sheet.d.ts +43 -0
  414. package/dist/components/Sheet/Sheet.js +79 -0
  415. package/dist/components/Sheet/Sheet.js.map +1 -0
  416. package/dist/components/Sidebar/Sidebar.d.ts +357 -0
  417. package/dist/components/Sidebar/Sidebar.js +447 -0
  418. package/dist/components/Sidebar/Sidebar.js.map +1 -0
  419. package/dist/components/Skeleton/Skeleton.d.ts +70 -0
  420. package/dist/components/Skeleton/Skeleton.js +44 -0
  421. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  422. package/dist/components/Slider/Slider.d.ts +74 -0
  423. package/dist/components/Slider/Slider.js +143 -0
  424. package/dist/components/Slider/Slider.js.map +1 -0
  425. package/dist/components/Spinner/Spinner.d.ts +58 -0
  426. package/dist/components/Spinner/Spinner.js +49 -0
  427. package/dist/components/Spinner/Spinner.js.map +1 -0
  428. package/dist/components/StatusDot/StatusDot.d.ts +29 -0
  429. package/dist/components/StatusDot/StatusDot.js +44 -0
  430. package/dist/components/StatusDot/StatusDot.js.map +1 -0
  431. package/dist/components/StatusPill/StatusPill.d.ts +30 -0
  432. package/dist/components/StatusPill/StatusPill.js +37 -0
  433. package/dist/components/StatusPill/StatusPill.js.map +1 -0
  434. package/dist/components/Steps/Steps.d.ts +65 -0
  435. package/dist/components/Steps/Steps.js +25 -0
  436. package/dist/components/Steps/Steps.js.map +1 -0
  437. package/dist/components/Switch/Switch.d.ts +23 -0
  438. package/dist/components/Switch/Switch.js +23 -0
  439. package/dist/components/Switch/Switch.js.map +1 -0
  440. package/dist/components/Table/Table.d.ts +116 -0
  441. package/dist/components/Table/Table.js +137 -0
  442. package/dist/components/Table/Table.js.map +1 -0
  443. package/dist/components/Tabs/Tabs.d.ts +37 -0
  444. package/dist/components/Tabs/Tabs.js +205 -0
  445. package/dist/components/Tabs/Tabs.js.map +1 -0
  446. package/dist/components/Tag/Tag.d.ts +87 -0
  447. package/dist/components/Tag/Tag.js +62 -0
  448. package/dist/components/Tag/Tag.js.map +1 -0
  449. package/dist/components/Text/Text.d.ts +62 -0
  450. package/dist/components/Text/Text.js +30 -0
  451. package/dist/components/Text/Text.js.map +1 -0
  452. package/dist/components/Textarea/Textarea.d.ts +20 -0
  453. package/dist/components/Textarea/Textarea.js +32 -0
  454. package/dist/components/Textarea/Textarea.js.map +1 -0
  455. package/dist/components/Timestamp/Timestamp.d.ts +59 -0
  456. package/dist/components/Timestamp/Timestamp.js +56 -0
  457. package/dist/components/Timestamp/Timestamp.js.map +1 -0
  458. package/dist/components/Toast/Toast.d.ts +32 -0
  459. package/dist/components/Toast/Toast.js +64 -0
  460. package/dist/components/Toast/Toast.js.map +1 -0
  461. package/dist/components/ToggleGroup/ToggleGroup.d.ts +46 -0
  462. package/dist/components/ToggleGroup/ToggleGroup.js +88 -0
  463. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
  464. package/dist/components/Toolbar/Toolbar.d.ts +55 -0
  465. package/dist/components/Toolbar/Toolbar.js +43 -0
  466. package/dist/components/Toolbar/Toolbar.js.map +1 -0
  467. package/dist/components/Tooltip/Tooltip.d.ts +43 -0
  468. package/dist/components/Tooltip/Tooltip.js +40 -0
  469. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  470. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.d.ts +55 -0
  471. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js +175 -0
  472. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js.map +1 -0
  473. package/dist/diagrams/DataflowFigure/DataflowFigure.d.ts +28 -0
  474. package/dist/diagrams/DataflowFigure/DataflowFigure.js +148 -0
  475. package/dist/diagrams/DataflowFigure/DataflowFigure.js.map +1 -0
  476. package/dist/diagrams/DiagramCanvas/DiagramCanvas.d.ts +78 -0
  477. package/dist/diagrams/DiagramCanvas/DiagramCanvas.js +229 -0
  478. package/dist/diagrams/DiagramCanvas/DiagramCanvas.js.map +1 -0
  479. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.d.ts +106 -0
  480. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js +123 -0
  481. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js.map +1 -0
  482. package/dist/diagrams/DiagramInspector/DiagramInspector.d.ts +70 -0
  483. package/dist/diagrams/DiagramInspector/DiagramInspector.js +94 -0
  484. package/dist/diagrams/DiagramInspector/DiagramInspector.js.map +1 -0
  485. package/dist/diagrams/DiagramLegend/DiagramLegend.d.ts +42 -0
  486. package/dist/diagrams/DiagramLegend/DiagramLegend.js +35 -0
  487. package/dist/diagrams/DiagramLegend/DiagramLegend.js.map +1 -0
  488. package/dist/diagrams/DiagramMinimap/DiagramMinimap.d.ts +77 -0
  489. package/dist/diagrams/DiagramMinimap/DiagramMinimap.js +106 -0
  490. package/dist/diagrams/DiagramMinimap/DiagramMinimap.js.map +1 -0
  491. package/dist/diagrams/DiagramToolbar/DiagramToolbar.d.ts +48 -0
  492. package/dist/diagrams/DiagramToolbar/DiagramToolbar.js +53 -0
  493. package/dist/diagrams/DiagramToolbar/DiagramToolbar.js.map +1 -0
  494. package/dist/diagrams/LifecycleFigure/LifecycleFigure.d.ts +31 -0
  495. package/dist/diagrams/LifecycleFigure/LifecycleFigure.js +234 -0
  496. package/dist/diagrams/LifecycleFigure/LifecycleFigure.js.map +1 -0
  497. package/dist/diagrams/SequenceFigure/SequenceFigure.d.ts +38 -0
  498. package/dist/diagrams/SequenceFigure/SequenceFigure.js +261 -0
  499. package/dist/diagrams/SequenceFigure/SequenceFigure.js.map +1 -0
  500. package/dist/diagrams/WorkflowFigure/WorkflowFigure.d.ts +36 -0
  501. package/dist/diagrams/WorkflowFigure/WorkflowFigure.js +259 -0
  502. package/dist/diagrams/WorkflowFigure/WorkflowFigure.js.map +1 -0
  503. package/dist/diagrams/index.d.ts +17 -0
  504. package/dist/diagrams/index.js +29 -0
  505. package/dist/diagrams/index.js.map +1 -0
  506. package/dist/diagrams/lib/dev.d.ts +61 -0
  507. package/dist/diagrams/lib/dev.js +96 -0
  508. package/dist/diagrams/lib/dev.js.map +1 -0
  509. package/dist/diagrams/lib/frame.d.ts +138 -0
  510. package/dist/diagrams/lib/frame.js +131 -0
  511. package/dist/diagrams/lib/frame.js.map +1 -0
  512. package/dist/diagrams/lib/geometry.d.ts +114 -0
  513. package/dist/diagrams/lib/geometry.js +113 -0
  514. package/dist/diagrams/lib/geometry.js.map +1 -0
  515. package/dist/diagrams/lib/legend.d.ts +32 -0
  516. package/dist/diagrams/lib/legend.js +84 -0
  517. package/dist/diagrams/lib/legend.js.map +1 -0
  518. package/dist/diagrams/lib/marks.d.ts +207 -0
  519. package/dist/diagrams/lib/marks.js +480 -0
  520. package/dist/diagrams/lib/marks.js.map +1 -0
  521. package/dist/diagrams/lib/route.d.ts +106 -0
  522. package/dist/diagrams/lib/route.js +201 -0
  523. package/dist/diagrams/lib/route.js.map +1 -0
  524. package/dist/diagrams/lib/wires.d.ts +59 -0
  525. package/dist/diagrams/lib/wires.js +94 -0
  526. package/dist/diagrams/lib/wires.js.map +1 -0
  527. package/dist/diagrams/spec.d.ts +405 -0
  528. package/dist/diagrams/spec.js +1 -0
  529. package/dist/diagrams/spec.js.map +1 -0
  530. package/dist/fonts/hanken-grotesk-300.woff2 +0 -0
  531. package/dist/fonts/hanken-grotesk-400.woff2 +0 -0
  532. package/dist/fonts/hanken-grotesk-500.woff2 +0 -0
  533. package/dist/fonts/hanken-grotesk-600.woff2 +0 -0
  534. package/dist/fonts/hanken-grotesk-700.woff2 +0 -0
  535. package/dist/fonts/ibm-plex-mono-400.woff2 +0 -0
  536. package/dist/fonts/ibm-plex-mono-500.woff2 +0 -0
  537. package/dist/fonts/ibm-plex-mono-600.woff2 +0 -0
  538. package/dist/fonts/newsreader-300.woff2 +0 -0
  539. package/dist/fonts/newsreader-400.woff2 +0 -0
  540. package/dist/fonts/newsreader-500.woff2 +0 -0
  541. package/dist/fonts/newsreader-600.woff2 +0 -0
  542. package/dist/fonts.css +96 -0
  543. package/dist/index.d.ts +97 -0
  544. package/dist/index.js +80 -0
  545. package/dist/index.js.map +1 -0
  546. package/dist/keyframes.css +300 -0
  547. package/dist/lib/cn.d.ts +21 -0
  548. package/dist/lib/cn.js +9 -0
  549. package/dist/lib/cn.js.map +1 -0
  550. package/dist/lib/color.d.ts +80 -0
  551. package/dist/lib/color.js +189 -0
  552. package/dist/lib/color.js.map +1 -0
  553. package/dist/lib/control.d.ts +32 -0
  554. package/dist/lib/control.js +14 -0
  555. package/dist/lib/control.js.map +1 -0
  556. package/dist/lib/index.d.ts +4 -0
  557. package/dist/lib/index.js +11 -0
  558. package/dist/lib/index.js.map +1 -0
  559. package/dist/lib/numeric.d.ts +35 -0
  560. package/dist/lib/numeric.js +29 -0
  561. package/dist/lib/numeric.js.map +1 -0
  562. package/dist/lib/overlay-container.d.ts +48 -0
  563. package/dist/lib/overlay-container.js +15 -0
  564. package/dist/lib/overlay-container.js.map +1 -0
  565. package/dist/lib/slot-content.d.ts +8 -0
  566. package/dist/lib/slot-content.js +17 -0
  567. package/dist/lib/slot-content.js.map +1 -0
  568. package/dist/lib/step-rail.d.ts +45 -0
  569. package/dist/lib/step-rail.js +47 -0
  570. package/dist/lib/step-rail.js.map +1 -0
  571. package/dist/lib/svg-export.d.ts +138 -0
  572. package/dist/lib/svg-export.js +198 -0
  573. package/dist/lib/svg-export.js.map +1 -0
  574. package/dist/lib/useClipboardCopy.d.ts +30 -0
  575. package/dist/lib/useClipboardCopy.js +37 -0
  576. package/dist/lib/useClipboardCopy.js.map +1 -0
  577. package/dist/lib/useSelectionIndicator.d.ts +29 -0
  578. package/dist/lib/useSelectionIndicator.js +49 -0
  579. package/dist/lib/useSelectionIndicator.js.map +1 -0
  580. package/dist/lib/warn.d.ts +73 -0
  581. package/dist/lib/warn.js +38 -0
  582. package/dist/lib/warn.js.map +1 -0
  583. package/dist/semantic.css +193 -0
  584. package/dist/styles.css +98 -0
  585. package/dist/themes.css +514 -0
  586. package/dist/tokens/brand.d.ts +47 -0
  587. package/dist/tokens/brand.js +38 -0
  588. package/dist/tokens/brand.js.map +1 -0
  589. package/dist/tokens.css +652 -0
  590. package/dist/tokens.d.ts +198 -0
  591. package/dist/tokens.js +1020 -0
  592. package/dist/tokens.json +1019 -0
  593. package/dist/website/Actions/Actions.d.ts +34 -0
  594. package/dist/website/Actions/Actions.js +29 -0
  595. package/dist/website/Actions/Actions.js.map +1 -0
  596. package/dist/website/Collection/Collection.d.ts +128 -0
  597. package/dist/website/Collection/Collection.js +162 -0
  598. package/dist/website/Collection/Collection.js.map +1 -0
  599. package/dist/website/Contact/Contact.d.ts +87 -0
  600. package/dist/website/Contact/Contact.js +94 -0
  601. package/dist/website/Contact/Contact.js.map +1 -0
  602. package/dist/website/Content/CodePanel.d.ts +27 -0
  603. package/dist/website/Content/CodePanel.js +30 -0
  604. package/dist/website/Content/CodePanel.js.map +1 -0
  605. package/dist/website/Content/Content.d.ts +29 -0
  606. package/dist/website/Content/Content.js +38 -0
  607. package/dist/website/Content/Content.js.map +1 -0
  608. package/dist/website/Conversation/Conversation.d.ts +193 -0
  609. package/dist/website/Conversation/Conversation.js +252 -0
  610. package/dist/website/Conversation/Conversation.js.map +1 -0
  611. package/dist/website/Evidence/Evidence.d.ts +116 -0
  612. package/dist/website/Evidence/Evidence.js +142 -0
  613. package/dist/website/Evidence/Evidence.js.map +1 -0
  614. package/dist/website/Media/Media.d.ts +173 -0
  615. package/dist/website/Media/Media.js +225 -0
  616. package/dist/website/Media/Media.js.map +1 -0
  617. package/dist/website/Media/MediaLightbox.d.ts +18 -0
  618. package/dist/website/Media/MediaLightbox.js +38 -0
  619. package/dist/website/Media/MediaLightbox.js.map +1 -0
  620. package/dist/website/Metrics/Metrics.d.ts +74 -0
  621. package/dist/website/Metrics/Metrics.js +96 -0
  622. package/dist/website/Metrics/Metrics.js.map +1 -0
  623. package/dist/website/Music/Music.d.ts +60 -0
  624. package/dist/website/Music/Music.js +80 -0
  625. package/dist/website/Music/Music.js.map +1 -0
  626. package/dist/website/Portfolio/FrameLayout.d.ts +9 -0
  627. package/dist/website/Portfolio/FrameLayout.js +42 -0
  628. package/dist/website/Portfolio/FrameLayout.js.map +1 -0
  629. package/dist/website/Portfolio/Portfolio.d.ts +49 -0
  630. package/dist/website/Portfolio/Portfolio.js +66 -0
  631. package/dist/website/Portfolio/Portfolio.js.map +1 -0
  632. package/dist/website/Portfolio/QuestionCard.d.ts +22 -0
  633. package/dist/website/Portfolio/QuestionCard.js +33 -0
  634. package/dist/website/Portfolio/QuestionCard.js.map +1 -0
  635. package/dist/website/PortfolioIndex/PortfolioIndex.d.ts +21 -0
  636. package/dist/website/PortfolioIndex/PortfolioIndex.js +31 -0
  637. package/dist/website/PortfolioIndex/PortfolioIndex.js.map +1 -0
  638. package/dist/website/Reading/Reading.d.ts +203 -0
  639. package/dist/website/Reading/Reading.js +357 -0
  640. package/dist/website/Reading/Reading.js.map +1 -0
  641. package/dist/website/Recovery/Recovery.d.ts +39 -0
  642. package/dist/website/Recovery/Recovery.js +96 -0
  643. package/dist/website/Recovery/Recovery.js.map +1 -0
  644. package/dist/website/SearchPalette/SearchPalette.d.ts +59 -0
  645. package/dist/website/SearchPalette/SearchPalette.js +120 -0
  646. package/dist/website/SearchPalette/SearchPalette.js.map +1 -0
  647. package/dist/website/SiteNavigation/SiteNavigation.d.ts +46 -0
  648. package/dist/website/SiteNavigation/SiteNavigation.js +101 -0
  649. package/dist/website/SiteNavigation/SiteNavigation.js.map +1 -0
  650. package/dist/website/SiteShell/SiteShell.d.ts +45 -0
  651. package/dist/website/SiteShell/SiteShell.js +46 -0
  652. package/dist/website/SiteShell/SiteShell.js.map +1 -0
  653. package/dist/website/Timeline/Timeline.d.ts +80 -0
  654. package/dist/website/Timeline/Timeline.js +99 -0
  655. package/dist/website/Timeline/Timeline.js.map +1 -0
  656. package/dist/website/index.d.ts +27 -0
  657. package/dist/website/index.js +21 -0
  658. package/dist/website/index.js.map +1 -0
  659. package/dist/website-actions.css +6 -0
  660. package/dist/website-base.css +46 -0
  661. package/dist/website-collection.css +89 -0
  662. package/dist/website-contact.css +29 -0
  663. package/dist/website-content.css +17 -0
  664. package/dist/website-controls.css +91 -0
  665. package/dist/website-conversation.css +115 -0
  666. package/dist/website-evidence.css +56 -0
  667. package/dist/website-media.css +227 -0
  668. package/dist/website-metrics.css +15 -0
  669. package/dist/website-music.css +27 -0
  670. package/dist/website-portfolio.css +94 -0
  671. package/dist/website-reading.css +159 -0
  672. package/dist/website-recovery.css +28 -0
  673. package/dist/website-search.css +26 -0
  674. package/dist/website-shell.css +89 -0
  675. package/dist/website-timeline.css +43 -0
  676. package/dist/website.css +25 -0
  677. package/llms.txt +35 -0
  678. package/package.json +163 -5
  679. package/skills/folio-design/SKILL.md +228 -0
  680. package/skills/folio-design/evals/claims.json +95 -0
  681. package/skills/folio-design/evals/evals.json +84 -0
  682. package/skills/folio-design/rules/a11y.md +167 -0
  683. package/skills/folio-design/rules/composition.md +108 -0
  684. package/skills/folio-design/rules/forms.md +135 -0
  685. package/skills/folio-design/rules/naming.md +155 -0
  686. package/skills/folio-design/rules/tokens.md +133 -0
@@ -0,0 +1,514 @@
1
+ /*
2
+ * The theming axes.
3
+ *
4
+ * Seven of them, each an attribute, each re-pointing tokens that already
5
+ * exist. No component is touched by any of it, and nothing here introduces a
6
+ * token — a theme that needed a new token would be a second design system
7
+ * wearing the first one's name.
8
+ *
9
+ * The axes are independent on purpose. A named preset is a combination, not a
10
+ * block of its own, so "warm surface with sharp corners" is reachable even
11
+ * though nobody shipped it as a preset.
12
+ *
13
+ * Every axis has an unset default: the White Reset is what you get by writing
14
+ * no attribute at all.
15
+ */
16
+
17
+ /* ─── Accent ───────────────────────────────────────────────────────────────
18
+ The one token every other axis was written to prove could move.
19
+
20
+ Law 7 says the accent IS ink, and this does not walk that back — `ink` is
21
+ the default and it is the system as it ships. What this axis demonstrates is
22
+ the thing underneath the law: every component reads `--accent`, which points
23
+ at `--red`, which points at `--clay`. ONE token. A consumer whose brand is
24
+ not monochrome re-points it and the whole system follows without a component
25
+ being touched.
26
+
27
+ This lived in the documentation site's own stylesheet for four releases,
28
+ which meant the site could show it and no consumer could have it — and the
29
+ package meanwhile said in three places that no such attribute existed. It
30
+ does now, and it is derived from these selectors like every other axis.
31
+
32
+ Two values per accent, not one. `--clay` is the MARK — a fill, a rule, a
33
+ pill — and `--clay-ink` is the same colour set as TEXT, which has to clear
34
+ AA against paper and therefore cannot always be the same hex. That
35
+ distinction already existed in the token layer for exactly this reason;
36
+ these are the first accents to need it.
37
+
38
+ Measured with the WCAG 2.x relative-luminance formula, against the White
39
+ Reset's own grounds (`--paper` #ffffff light, #0d0d0d dark). AA is 4.5:1 for
40
+ text and 3:1 for a UI mark; the third column is `--clay-ink` over the 10% /
41
+ 14% wash `--accent-on-muted` is printed on.
42
+
43
+ accent light: mark / ink / on wash dark: mark / ink / on wash
44
+ ink 19.03 19.03 15.39 17.65 17.65 12.51
45
+ clay 7.45 8.77 7.51 7.41 9.13 7.51
46
+ forest 7.59 8.66 7.44 8.91 10.52 8.42
47
+ cobalt 8.05 9.21 7.86 8.41 10.23 8.27
48
+ plum 8.49 9.55 8.12 8.74 10.43 8.41
49
+ moss 5.80 8.30 7.24 8.76 11.32 9.06
50
+
51
+ `--accent-foreground` resolves to `--paper`, so paper printed ON the accent
52
+ fill is the mark column read the other way up. */
53
+
54
+ /* The default, NAMED. "Ink" used to be spelled "write no attribute", which
55
+ works exactly once, at the root: inside an element that already carries an
56
+ accent, an unset accent is not ink, it is whatever the ancestor said. */
57
+ [data-accent='ink'] {
58
+ --clay: var(--ink);
59
+ --clay-ink: var(--ink);
60
+ --red-soft: rgba(16, 16, 16, 0.07);
61
+ }
62
+
63
+ /* The warm editorial red the site carried before the White Reset. */
64
+ [data-accent='clay'] {
65
+ --clay: #8a3f24;
66
+ --clay-ink: #7a3720;
67
+ --red-soft: rgba(138, 63, 36, 0.1);
68
+ }
69
+ /* A cool neutral green — quiet enough to sit under a lot of type. */
70
+ [data-accent='forest'] {
71
+ --clay: #2f5d42;
72
+ --clay-ink: #2a5439;
73
+ --red-soft: rgba(47, 93, 66, 0.1);
74
+ }
75
+ /* The most conventional software blue that still clears AA on paper. */
76
+ [data-accent='cobalt'] {
77
+ --clay: #2b4c9b;
78
+ --clay-ink: #27448a;
79
+ --red-soft: rgba(43, 76, 155, 0.1);
80
+ }
81
+ /* A darker chroma for a brand that wants presence without heat. */
82
+ [data-accent='plum'] {
83
+ --clay: #6b3a72;
84
+ --clay-ink: #613468;
85
+ --red-soft: rgba(107, 58, 114, 0.1);
86
+ }
87
+ /* A green-grey with almost no chroma left in it, for a dense working screen
88
+ where the accent has to mark a choice without becoming the loudest thing on
89
+ the page. The lowest-contrast mark of the six on paper, and deliberately so:
90
+ it is a rule and a fill more often than it is a word. */
91
+ [data-accent='moss'] {
92
+ --clay: #566b52;
93
+ --clay-ink: #41533e;
94
+ --red-soft: rgba(86, 107, 82, 0.1);
95
+ }
96
+
97
+ /* Re-derives the chain, on any element that names an accent.
98
+
99
+ A `var()` is substituted where it is DECLARED, not where it is read:
100
+ `--accent: var(--red)` is written on `:root` in `semantic.css`, so it
101
+ computes THERE — against the root's `--clay` — and what inherits down is the
102
+ answer, not the question. Re-pointing `--clay` on a descendant therefore
103
+ changed nothing at all, and every accent swatch, preview and thumbnail on a
104
+ themes rail painted the accent of the page rather than its own.
105
+
106
+ `--on-red` is here for the same reason: it resolves to `--paper`, so an
107
+ element naming its own surface needs the foreground re-derived against that
108
+ surface rather than against the document's. */
109
+ [data-accent] {
110
+ --red: var(--clay);
111
+ --red-ink: var(--clay);
112
+ --on-red: var(--paper);
113
+ --accent: var(--red);
114
+ --accent-hover: var(--red-ink);
115
+ --accent-muted: var(--red-soft);
116
+ --accent-wash: var(--red-soft);
117
+ --accent-foreground: var(--on-red);
118
+ --accent-on-dark: var(--red);
119
+ --accent-on-muted: var(--red-ink);
120
+ }
121
+
122
+ /* On the dark ground the same hues have to come UP to clear AA, not down. An
123
+ accent with only a light value fails contrast the moment someone switches
124
+ mode — which is why the token layer swaps by value rather than by block. */
125
+
126
+ [data-mode='dark'][data-accent='ink'],
127
+ [data-mode='dark'] [data-accent='ink'] {
128
+ --clay: var(--ink);
129
+ --clay-ink: var(--ink);
130
+ --red-soft: rgba(244, 244, 242, 0.12);
131
+ }
132
+
133
+ [data-mode='dark'][data-accent='clay'],
134
+ [data-mode='dark'] [data-accent='clay'] {
135
+ --clay: #e08a68;
136
+ --clay-ink: #e8a184;
137
+ --red-soft: rgba(224, 138, 104, 0.14);
138
+ }
139
+ [data-mode='dark'][data-accent='forest'],
140
+ [data-mode='dark'] [data-accent='forest'] {
141
+ --clay: #7fbd97;
142
+ --clay-ink: #98caab;
143
+ --red-soft: rgba(127, 189, 151, 0.14);
144
+ }
145
+ [data-mode='dark'][data-accent='cobalt'],
146
+ [data-mode='dark'] [data-accent='cobalt'] {
147
+ --clay: #8aaaf0;
148
+ --clay-ink: #a3bcf4;
149
+ --red-soft: rgba(138, 170, 240, 0.14);
150
+ }
151
+ [data-mode='dark'][data-accent='plum'],
152
+ [data-mode='dark'] [data-accent='plum'] {
153
+ --clay: #cf9dd6;
154
+ --clay-ink: #dab0e0;
155
+ --red-soft: rgba(207, 157, 214, 0.14);
156
+ }
157
+ [data-mode='dark'][data-accent='moss'],
158
+ [data-mode='dark'] [data-accent='moss'] {
159
+ --clay: #9cb597;
160
+ --clay-ink: #b8cbb3;
161
+ --red-soft: rgba(156, 181, 151, 0.14);
162
+ }
163
+
164
+ /* ─── Surface ──────────────────────────────────────────────────────────────
165
+ The ground and its two steps. Law 8 still holds — dark is a value swap, so
166
+ each surface defines both and neither is a separate palette.
167
+
168
+ THE RULES ARE PART OF THE SURFACE, and for four releases only half of them
169
+ swapped. `warm` and `cool` set `--rule` and `--rule-2` unqualified by mode
170
+ and then restated only the three grounds in dark, so the LIGHT hairline
171
+ survived onto the dark page: #e8e4da at 14.86:1 against warm's own dark
172
+ `--paper`, #e4e9ee at 15.82:1 against cool's, where the neutral dark rule
173
+ sits at 1.42:1. Every border and divider on the page came out near-white —
174
+ measured in a console on this package at up to 174 such elements on one of
175
+ 33 routes. `glass` restates both and was never affected.
176
+
177
+ The dark values are built the way `tokens.css` builds its own: the system's
178
+ near-white at an alpha over whatever ground is under it, at the SAME alphas,
179
+ 0.14 and 0.26, because the alpha is what a rule's WEIGHT is. Composited on
180
+ each surface's own dark `--paper` that is 1.45 / 2.19 on warm and
181
+ 1.42 / 2.17 on cool against the root's 1.42 / 2.16, at ΔE 13.5 / 23.9 and
182
+ 13.8 / 24.5 against its 13.8 / 24.6 (OKLab ×100). Same rule, same weight, a
183
+ differently tinted ground.
184
+
185
+ What moves is the near-white. `#f4f4f2` held at its own lightness (L 0.967)
186
+ and turned onto the surface's dark hue — 84.6° warm and 258.4° cool, the hue
187
+ `--paper`, `--paper-2` and `--stone` already carry there — at the chroma that
188
+ surface's LIGHT `--rule` carries (C 0.0141 and 0.0087). Tinting it is not
189
+ decoration: the light halves ladder chroma UP with rule weight, warm running
190
+ C 0.0111 at `--stone`, 0.0141 at `--rule` and 0.0185 at `--rule-2`, and the
191
+ root's neutral ink inverts that on the dark ground — at 26% it washes the
192
+ ground's tint out, leaving warm's heaviest rule at C 0.0075 over a `--stone`
193
+ of C 0.0103, the least warm thing on a warm page. Tinted, it lands at
194
+ C 0.0109, on the ground's own hue.
195
+
196
+ Not restated under forced colours, unlike the accent below. `tokens.css`
197
+ does not collapse `--rule` there because it does not have to: a border is an
198
+ element's own colour and the browser remaps it, and nothing in the package
199
+ draws these two into an SVG or a `color-mix()`, which is the gap the accent
200
+ block exists to close. */
201
+
202
+ [data-surface='warm'] {
203
+ --paper: #fdfcf9;
204
+ --paper-2: #f6f4ee;
205
+ --stone: #efece4;
206
+ --rule: #e8e4da;
207
+ --rule-2: #d8d3c6;
208
+ }
209
+ [data-mode='dark'][data-surface='warm'],
210
+ [data-mode='dark'] [data-surface='warm'] {
211
+ --paper: #12110f;
212
+ --paper-2: #1a1814;
213
+ --stone: #221f1a;
214
+ /* #f4f4f2 at L 0.967, hue 84.6°, C 0.0143 — warm's own hue at the chroma its
215
+ light `--rule` carries. */
216
+ --rule: rgba(248, 243, 233, 0.14);
217
+ --rule-2: rgba(248, 243, 233, 0.26);
218
+ }
219
+
220
+ [data-surface='cool'] {
221
+ --paper: #fcfdfe;
222
+ --paper-2: #f2f5f8;
223
+ --stone: #eceff3;
224
+ --rule: #e4e9ee;
225
+ --rule-2: #d2d9e1;
226
+ }
227
+ [data-mode='dark'][data-surface='cool'],
228
+ [data-mode='dark'] [data-surface='cool'] {
229
+ --paper: #0c0e11;
230
+ --paper-2: #14171b;
231
+ --stone: #1c2026;
232
+ /* The same construction on cool's hue, 258.4°, at C 0.0091. */
233
+ --rule: rgba(240, 244, 250, 0.14);
234
+ --rule-2: rgba(240, 244, 250, 0.26);
235
+ }
236
+
237
+ /* Glass, and the one place this system allows a blur.
238
+ *
239
+ * Law 2 says depth is a hairline and never a blur, and this does not break it:
240
+ * the blur is not UNDER a surface pretending to be a shadow, it is BEHIND one,
241
+ * which is a different claim. A shadow says "this is raised above the page"; a
242
+ * frosted panel says "the page is still there, and you are looking through
243
+ * something at it". The first is a fiction about light the White Reset has no
244
+ * source for. The second is a material, and it is honest about what it costs:
245
+ * only surfaces that actually float get it, because a card on the page ground
246
+ * has nothing behind it and would be blurring its own background.
247
+ *
248
+ * The panel's own edge is brighter than the page's rules on purpose. Glass has
249
+ * a specular edge — it is the one cue that says the surface is a sheet rather
250
+ * than a hole, and without it a translucent panel reads as a smudge.
251
+ */
252
+
253
+ [data-surface='glass'] {
254
+ --paper: #f7f8fa;
255
+ --paper-2: #eef0f4;
256
+ --stone: #e7eaf0;
257
+ --rule: #e2e5ec;
258
+ --rule-2: #ced3dd;
259
+
260
+ --panel-bg: color-mix(in srgb, #ffffff 62%, transparent);
261
+ --panel-border: color-mix(in srgb, #ffffff 85%, transparent);
262
+ /* Saturation as well as blur. A blur alone greys whatever is behind it,
263
+ because averaging colour is what a blur does; pushing saturation back is
264
+ what makes the result read as glass rather than as fog. */
265
+ --panel-filter: blur(20px) saturate(180%);
266
+ }
267
+ [data-mode='dark'][data-surface='glass'],
268
+ [data-mode='dark'] [data-surface='glass'] {
269
+ --paper: #0e1013;
270
+ --paper-2: #16191e;
271
+ --stone: #1d2127;
272
+ --rule: rgba(244, 244, 242, 0.12);
273
+ --rule-2: rgba(244, 244, 242, 0.22);
274
+
275
+ --panel-bg: color-mix(in srgb, #1b1f26 62%, transparent);
276
+ --panel-border: color-mix(in srgb, #ffffff 16%, transparent);
277
+ --panel-filter: blur(20px) saturate(160%);
278
+ }
279
+
280
+ /* ─── Radius ───────────────────────────────────────────────────────────────
281
+ One number, not four.
282
+
283
+ This axis used to re-type every step, which let the ladder go out of
284
+ proportion with itself — and a corner nested inside another corner is only
285
+ ever right when the two are in proportion. The factor scales the whole
286
+ ladder, the pill included, so `sharp` means square everywhere a corner is a
287
+ corner: a square theme that left every button a capsule was not a square
288
+ theme. A true circle is geometry and is not on this axis at all. */
289
+
290
+ [data-radius='sharp'] {
291
+ --radius-factor: 0;
292
+ }
293
+ [data-radius='round'] {
294
+ --radius-factor: 2;
295
+ }
296
+
297
+ /* ─── Rules ────────────────────────────────────────────────────────────────
298
+ How much the system draws its own edges. `firm` is the setting for a dense
299
+ console; `quiet` leans on the surface steps and is what a reading page
300
+ wants. */
301
+
302
+ [data-rules='firm'] {
303
+ --rule: #cfccc4;
304
+ --rule-2: #a8a49a;
305
+ }
306
+ [data-mode='dark'][data-rules='firm'],
307
+ [data-mode='dark'] [data-rules='firm'] {
308
+ --rule: rgba(244, 244, 242, 0.28);
309
+ --rule-2: rgba(244, 244, 242, 0.46);
310
+ }
311
+
312
+ [data-rules='quiet'] {
313
+ --rule: #f4f2ee;
314
+ --rule-2: #e8e5df;
315
+ }
316
+ [data-mode='dark'][data-rules='quiet'],
317
+ [data-mode='dark'] [data-rules='quiet'] {
318
+ --rule: rgba(244, 244, 242, 0.08);
319
+ --rule-2: rgba(244, 244, 242, 0.15);
320
+ }
321
+
322
+ /* ─── Type ─────────────────────────────────────────────────────────────────
323
+ Which face carries a heading. The ramp itself does not move: the steps are a
324
+ hierarchy, and a theme that re-sized them would be re-deciding the
325
+ hierarchy rather than re-dressing it. */
326
+
327
+ /* The default, named. It restates the two role tokens rather than any face:
328
+ `index.css` decides what `--sans` and `--serif` are, and this only says which
329
+ role each one plays — so there is no list of families to drift. */
330
+ [data-type='editorial'] {
331
+ --font-sans: var(--sans);
332
+ --font-heading: var(--serif);
333
+ }
334
+
335
+ [data-type='grotesk'] {
336
+ --font-heading: var(--sans);
337
+ }
338
+ [data-type='bookish'] {
339
+ --font-sans: var(--serif);
340
+ --font-heading: var(--serif);
341
+ }
342
+
343
+ /* ─── Motion ───────────────────────────────────────────────────────────────
344
+ `prefers-reduced-motion` is honoured separately and is not a theme: a
345
+ reader's stated need is not one of five looks. This axis is taste. */
346
+
347
+ [data-motion='snappy'] {
348
+ --fast: 90ms;
349
+ --mid: 140ms;
350
+ --slow: 220ms;
351
+ }
352
+ [data-motion='still'] {
353
+ --fast: 1ms;
354
+ --mid: 1ms;
355
+ --slow: 1ms;
356
+ }
357
+
358
+ /* ─── Chart palette ────────────────────────────────────────────────────────
359
+ The one axis that adds hue back, and the only sanctioned way to do it.
360
+
361
+ The White Reset's default series ramp is neutral (see tokens.css): texture
362
+ carries identity, lightness supports it. That is right for a console whose
363
+ whole page is monochrome, and wrong for a chart that has to sit beside a
364
+ product whose users already read its categories by colour. So rather than
365
+ leave that consumer hand-picking hexes into a `colors` config — which is
366
+ where an unvalidated, colour-blind-hostile palette gets born — the system
367
+ ships one, as an attribute, on the same terms as every other theme here.
368
+
369
+ These eight hues are a validated categorical set: adjacent-pair separation
370
+ ΔE 9.1 light / 8.4 dark under simulated protanopia, ΔE 19.6 / 19.3 with
371
+ normal vision (OKLab ×100), every step inside its mode's lightness band and
372
+ above the chroma floor, and every dark step at or above 3:1 on the dark
373
+ ground. The ORDER is the safety mechanism, not decoration — re-ordering
374
+ these values re-opens every adjacency and invalidates the numbers above.
375
+
376
+ Three light steps (aqua, yellow, magenta) sit below 3:1 on paper. That is a
377
+ documented relief case rather than a defect: a chart using more than two
378
+ series must show its legend, and `Chart.Legend` is required above one
379
+ series for exactly this reason.
380
+
381
+ Scoped to any container, like every other axis:
382
+ <div data-chart-palette="chroma"> */
383
+
384
+ [data-chart-palette='chroma'] {
385
+ --series-1: #2a78d6; /* blue */
386
+ --series-2: #eb6834; /* orange */
387
+ --series-3: #1baf7a; /* aqua */
388
+ --series-4: #eda100; /* yellow */
389
+ --series-5: #e87ba4; /* magenta */
390
+ --series-6: #008300; /* green */
391
+ --series-7: #4a3aa7; /* violet */
392
+ --series-8: #e34948; /* red */
393
+ }
394
+ [data-mode='dark'][data-chart-palette='chroma'],
395
+ [data-mode='dark'] [data-chart-palette='chroma'] {
396
+ /* The same eight hues re-stepped for the dark ground — not an inversion and
397
+ not a second palette. Law 8 holds: the names swap, the roles do not. */
398
+ --series-1: #3987e5;
399
+ --series-2: #d95926;
400
+ --series-3: #199e70;
401
+ --series-4: #c98500;
402
+ --series-5: #d55181;
403
+ --series-6: #008300;
404
+ --series-7: #9085e9;
405
+ --series-8: #e66767;
406
+ }
407
+
408
+ /* The third value, and the one a branded consumer actually asks for.
409
+ *
410
+ * `chroma` answers "my users read categories by colour"; this answers a
411
+ * different question — "our accent is not ink, and a chart that ignores it
412
+ * looks like someone else's chart". Those are not the same need and one value
413
+ * could not serve both: eight distinguishable hues are a categorical palette,
414
+ * and one hue laddered by lightness is a brand mark. This is the second.
415
+ *
416
+ * It derives every step from `--clay` rather than listing colours, so it works
417
+ * for an accent nobody here has seen. Relative colour syntax holds the hue and
418
+ * chroma and re-states the LIGHTNESS, which is what makes the numbers below
419
+ * portable: separation and contrast are carried almost entirely by lightness,
420
+ * so pinning it pins both regardless of which hue arrives. A chroma the
421
+ * lightness cannot hold is gamut-mapped by the browser, which reduces chroma
422
+ * and preserves L — so the ladder survives the mapping intact.
423
+ *
424
+ * The ladder is eight even steps across L 0.173–0.640 on paper and
425
+ * L 0.967–0.530 on the dark ground. The top of each band is where it is
426
+ * because of the weakest hue rather than the prettiest: at maximum chroma the
427
+ * worst hue on paper (green, ~144°) clears 3:1 up to L 0.640 and fails above
428
+ * it, and the worst on the dark ground (violet, ~294°) clears it down to
429
+ * L 0.530. Measured across all 360 hues at maximum chroma: adjacent-pair
430
+ * separation ΔE 26.7 light / 25.0 dark (OKLab ×100, against a floor of 15),
431
+ * minimum contrast 3.11 on both grounds.
432
+ *
433
+ * The interleave differs from the mono ramp's by one position, and that is the
434
+ * whole point of the value. `--series-1` sits at L 0.440 — the band the five
435
+ * shipped accents already occupy — so a one-series chart paints in a colour
436
+ * within ΔE 2 of the accent itself rather than in the accent's darkest
437
+ * possible shade. Ink stays available as `--series-2`, which is the pairing a
438
+ * two-series chart wants anyway. Every adjacent index is four ladder steps
439
+ * apart, one better than the mono ramp manages.
440
+ *
441
+ * What this is NOT is a categorical palette. One hue laddered eight ways is
442
+ * legible for two or three series and is guesswork at eight; a consumer
443
+ * plotting eight categories wants `chroma`. Texture and `Chart.Legend` carry
444
+ * identity here for the same reason they do under `mono`.
445
+ */
446
+ [data-chart-palette='accent'] {
447
+ --series-1: oklch(from var(--clay) 0.44 c h);
448
+ --series-2: oklch(from var(--clay) 0.173 c h);
449
+ --series-3: oklch(from var(--clay) 0.507 c h);
450
+ --series-4: oklch(from var(--clay) 0.24 c h);
451
+ --series-5: oklch(from var(--clay) 0.573 c h);
452
+ --series-6: oklch(from var(--clay) 0.306 c h);
453
+ --series-7: oklch(from var(--clay) 0.64 c h);
454
+ --series-8: oklch(from var(--clay) 0.373 c h);
455
+ }
456
+ [data-mode='dark'][data-chart-palette='accent'],
457
+ [data-mode='dark'] [data-chart-palette='accent'] {
458
+ /* The band mirrored, not the palette rebuilt — Law 8 again. `--clay` has
459
+ already swapped to its dark value by the time this reads it, so the only
460
+ thing restated here is where the ladder sits. */
461
+ --series-1: oklch(from var(--clay) 0.717 c h);
462
+ --series-2: oklch(from var(--clay) 0.967 c h);
463
+ --series-3: oklch(from var(--clay) 0.655 c h);
464
+ --series-4: oklch(from var(--clay) 0.905 c h);
465
+ --series-5: oklch(from var(--clay) 0.592 c h);
466
+ --series-6: oklch(from var(--clay) 0.842 c h);
467
+ --series-7: oklch(from var(--clay) 0.53 c h);
468
+ --series-8: oklch(from var(--clay) 0.78 c h);
469
+ }
470
+
471
+ /* ─── Forced colours, for every axis that carries a hue ────────────────────
472
+ `tokens.css` collapses the ramp to `CanvasText` when the reader has taken
473
+ the palette away, and it writes that on `:root` — which a palette attribute
474
+ then outranks, because an element that matches `[data-chart-palette]`
475
+ directly beats a value it merely inherits from the root, and beats it on
476
+ source order even at the root itself. So a reader in Windows High Contrast
477
+ who was on `chroma` kept getting the eight hues, which is the setting being
478
+ ignored rather than honoured.
479
+
480
+ Restated here, after the palettes, at the specificity the dark blocks use.
481
+ The values are `tokens.css`'s, unchanged — this only puts them back on top.
482
+ `--chart-*` is untouched: those declarations are already unopposed. */
483
+ @media (forced-colors: active) {
484
+ [data-chart-palette],
485
+ [data-mode][data-chart-palette],
486
+ [data-mode] [data-chart-palette] {
487
+ --series-1: CanvasText;
488
+ --series-2: CanvasText;
489
+ --series-3: CanvasText;
490
+ --series-4: CanvasText;
491
+ --series-5: CanvasText;
492
+ --series-6: CanvasText;
493
+ --series-7: CanvasText;
494
+ --series-8: CanvasText;
495
+ --series-track: Canvas;
496
+ }
497
+
498
+ /* The accent has the same problem and needs the same answer.
499
+
500
+ A browser remaps an HTML element's own colours and does not reach inside
501
+ an SVG or a `color-mix()`, so a fill drawn from `--clay` survived forced
502
+ colours as a hue nobody asked for — and `[data-accent='moss']` matches the
503
+ element directly, which outranks anything the root merely offers. Under
504
+ forced colours the system owns what a chosen state looks like, so every
505
+ accent collapses to the reader's own ink. */
506
+ [data-accent],
507
+ [data-mode][data-accent],
508
+ [data-mode] [data-accent] {
509
+ --clay: CanvasText;
510
+ --clay-ink: CanvasText;
511
+ --red-soft: Canvas;
512
+ --on-red: Canvas;
513
+ }
514
+ }
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Brand colour mirrors for surfaces that cannot read CSS custom properties —
3
+ * OpenGraph/Satori cards, build-time scripts, `theme-color` in a web manifest,
4
+ * a canvas.
5
+ *
6
+ * The RUNTIME theme lives in `styles/tokens.css` (`:root` + `[data-mode="dark"]`)
7
+ * and that is the single place to recolour the system. These literals mirror
8
+ * specific tokens; `brand.test.ts` parses the CSS and fails if the two drift,
9
+ * so this file cannot quietly fall behind the thing it mirrors.
10
+ */
11
+ declare const BRAND: {
12
+ /** = light --paper. The page ground. */
13
+ readonly paper: "#ffffff";
14
+ /** = dark --paper. The dark viewport's `theme-color`. */
15
+ readonly paperDark: "#0d0d0d";
16
+ /** = light --paper-2. One step off the ground. */
17
+ readonly paperElevated: "#f7f7f5";
18
+ /** = light --ink. The mark. */
19
+ readonly ink: "#101010";
20
+ /** = dark --ink. */
21
+ readonly inkDark: "#f4f4f2";
22
+ /** = light --ink-2. Body copy that is not the mark. */
23
+ readonly body: "#4a4a4a";
24
+ /** = light --ink-3-aa. The lightest text step that still clears AA on paper. */
25
+ readonly muted: "#5c5c5c";
26
+ /** = light --stone. The fill under a skeleton, a bar, a quiet plate. */
27
+ readonly stone: "#f2f1ee";
28
+ /** = light --rule. Hairline. */
29
+ readonly rule: "#edebe6";
30
+ /** = light --rule-2. Edge. */
31
+ readonly ruleStrong: "#dbdbd6";
32
+ /** = --feature-surface. The one reversed plate. */
33
+ readonly feature: "#262626";
34
+ /** = --on-dark. Type over a photograph — a dark ground in BOTH themes. */
35
+ readonly onDark: "#fbfbfa";
36
+ /** Byline weight over a photograph. */
37
+ readonly onDarkMuted: "rgba(251,251,250,0.82)";
38
+ /** = --photo-scrim, as an "r, g, b" tuple for a gradient. */
39
+ readonly scrimRgb: "16, 16, 16";
40
+ /** = light --ok / --warn / --danger. The only chroma in the system. */
41
+ readonly success: "#3d6b34";
42
+ readonly warning: "#8a5a00";
43
+ readonly danger: "#a83214";
44
+ };
45
+ type BrandColor = keyof typeof BRAND;
46
+
47
+ export { BRAND, type BrandColor };
@@ -0,0 +1,38 @@
1
+ const BRAND = {
2
+ /** = light --paper. The page ground. */
3
+ paper: "#ffffff",
4
+ /** = dark --paper. The dark viewport's `theme-color`. */
5
+ paperDark: "#0d0d0d",
6
+ /** = light --paper-2. One step off the ground. */
7
+ paperElevated: "#f7f7f5",
8
+ /** = light --ink. The mark. */
9
+ ink: "#101010",
10
+ /** = dark --ink. */
11
+ inkDark: "#f4f4f2",
12
+ /** = light --ink-2. Body copy that is not the mark. */
13
+ body: "#4a4a4a",
14
+ /** = light --ink-3-aa. The lightest text step that still clears AA on paper. */
15
+ muted: "#5c5c5c",
16
+ /** = light --stone. The fill under a skeleton, a bar, a quiet plate. */
17
+ stone: "#f2f1ee",
18
+ /** = light --rule. Hairline. */
19
+ rule: "#edebe6",
20
+ /** = light --rule-2. Edge. */
21
+ ruleStrong: "#dbdbd6",
22
+ /** = --feature-surface. The one reversed plate. */
23
+ feature: "#262626",
24
+ /** = --on-dark. Type over a photograph — a dark ground in BOTH themes. */
25
+ onDark: "#fbfbfa",
26
+ /** Byline weight over a photograph. */
27
+ onDarkMuted: "rgba(251,251,250,0.82)",
28
+ /** = --photo-scrim, as an "r, g, b" tuple for a gradient. */
29
+ scrimRgb: "16, 16, 16",
30
+ /** = light --ok / --warn / --danger. The only chroma in the system. */
31
+ success: "#3d6b34",
32
+ warning: "#8a5a00",
33
+ danger: "#a83214"
34
+ };
35
+ export {
36
+ BRAND
37
+ };
38
+ //# sourceMappingURL=brand.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/tokens/brand.ts"],"sourcesContent":["/**\n * Brand colour mirrors for surfaces that cannot read CSS custom properties —\n * OpenGraph/Satori cards, build-time scripts, `theme-color` in a web manifest,\n * a canvas.\n *\n * The RUNTIME theme lives in `styles/tokens.css` (`:root` + `[data-mode=\"dark\"]`)\n * and that is the single place to recolour the system. These literals mirror\n * specific tokens; `brand.test.ts` parses the CSS and fails if the two drift,\n * so this file cannot quietly fall behind the thing it mirrors.\n */\nexport const BRAND = {\n /** = light --paper. The page ground. */\n paper: '#ffffff',\n /** = dark --paper. The dark viewport's `theme-color`. */\n paperDark: '#0d0d0d',\n /** = light --paper-2. One step off the ground. */\n paperElevated: '#f7f7f5',\n /** = light --ink. The mark. */\n ink: '#101010',\n /** = dark --ink. */\n inkDark: '#f4f4f2',\n /** = light --ink-2. Body copy that is not the mark. */\n body: '#4a4a4a',\n /** = light --ink-3-aa. The lightest text step that still clears AA on paper. */\n muted: '#5c5c5c',\n /** = light --stone. The fill under a skeleton, a bar, a quiet plate. */\n stone: '#f2f1ee',\n /** = light --rule. Hairline. */\n rule: '#edebe6',\n /** = light --rule-2. Edge. */\n ruleStrong: '#dbdbd6',\n /** = --feature-surface. The one reversed plate. */\n feature: '#262626',\n /** = --on-dark. Type over a photograph — a dark ground in BOTH themes. */\n onDark: '#fbfbfa',\n /** Byline weight over a photograph. */\n onDarkMuted: 'rgba(251,251,250,0.82)',\n /** = --photo-scrim, as an \"r, g, b\" tuple for a gradient. */\n scrimRgb: '16, 16, 16',\n /** = light --ok / --warn / --danger. The only chroma in the system. */\n success: '#3d6b34',\n warning: '#8a5a00',\n danger: '#a83214',\n} as const\n\nexport type BrandColor = keyof typeof BRAND\n"],"mappings":"AAUO,MAAM,QAAQ;AAAA;AAAA,EAEnB,OAAO;AAAA;AAAA,EAEP,WAAW;AAAA;AAAA,EAEX,eAAe;AAAA;AAAA,EAEf,KAAK;AAAA;AAAA,EAEL,SAAS;AAAA;AAAA,EAET,MAAM;AAAA;AAAA,EAEN,OAAO;AAAA;AAAA,EAEP,OAAO;AAAA;AAAA,EAEP,MAAM;AAAA;AAAA,EAEN,YAAY;AAAA;AAAA,EAEZ,SAAS;AAAA;AAAA,EAET,QAAQ;AAAA;AAAA,EAER,aAAa;AAAA;AAAA,EAEb,UAAU;AAAA;AAAA,EAEV,SAAS;AAAA,EACT,SAAS;AAAA,EACT,QAAQ;AACV;","names":[]}