@misoto22/folio 0.0.0 → 0.17.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 (721) 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/Workbench.md +142 -0
  122. package/dist/agent/WorkflowFigure.md +51 -0
  123. package/dist/agent/catalog.json +8055 -0
  124. package/dist/agent/index.md +185 -0
  125. package/dist/article.css +407 -0
  126. package/dist/charts/AreaChart/AreaChart.d.ts +198 -0
  127. package/dist/charts/AreaChart/AreaChart.js +479 -0
  128. package/dist/charts/AreaChart/AreaChart.js.map +1 -0
  129. package/dist/charts/BarChart/BarChart.d.ts +190 -0
  130. package/dist/charts/BarChart/BarChart.js +599 -0
  131. package/dist/charts/BarChart/BarChart.js.map +1 -0
  132. package/dist/charts/BarList/BarList.d.ts +65 -0
  133. package/dist/charts/BarList/BarList.js +79 -0
  134. package/dist/charts/BarList/BarList.js.map +1 -0
  135. package/dist/charts/BigNumber/BigNumber.d.ts +72 -0
  136. package/dist/charts/BigNumber/BigNumber.js +51 -0
  137. package/dist/charts/BigNumber/BigNumber.js.map +1 -0
  138. package/dist/charts/BoxPlot/BoxPlot.d.ts +177 -0
  139. package/dist/charts/BoxPlot/BoxPlot.js +497 -0
  140. package/dist/charts/BoxPlot/BoxPlot.js.map +1 -0
  141. package/dist/charts/BulletChart/BulletChart.d.ts +100 -0
  142. package/dist/charts/BulletChart/BulletChart.js +197 -0
  143. package/dist/charts/BulletChart/BulletChart.js.map +1 -0
  144. package/dist/charts/CalendarHeatmap/CalendarHeatmap.d.ts +106 -0
  145. package/dist/charts/CalendarHeatmap/CalendarHeatmap.js +103 -0
  146. package/dist/charts/CalendarHeatmap/CalendarHeatmap.js.map +1 -0
  147. package/dist/charts/ComposedChart/ComposedChart.d.ts +178 -0
  148. package/dist/charts/ComposedChart/ComposedChart.js +667 -0
  149. package/dist/charts/ComposedChart/ComposedChart.js.map +1 -0
  150. package/dist/charts/Facet/Facet.d.ts +240 -0
  151. package/dist/charts/Facet/Facet.js +133 -0
  152. package/dist/charts/Facet/Facet.js.map +1 -0
  153. package/dist/charts/Facet/panels.d.ts +187 -0
  154. package/dist/charts/Facet/panels.js +203 -0
  155. package/dist/charts/Facet/panels.js.map +1 -0
  156. package/dist/charts/FunnelChart/FunnelChart.d.ts +106 -0
  157. package/dist/charts/FunnelChart/FunnelChart.js +137 -0
  158. package/dist/charts/FunnelChart/FunnelChart.js.map +1 -0
  159. package/dist/charts/Heatmap/Heatmap.d.ts +101 -0
  160. package/dist/charts/Heatmap/Heatmap.js +125 -0
  161. package/dist/charts/Heatmap/Heatmap.js.map +1 -0
  162. package/dist/charts/Histogram/Histogram.d.ts +188 -0
  163. package/dist/charts/Histogram/Histogram.js +382 -0
  164. package/dist/charts/Histogram/Histogram.js.map +1 -0
  165. package/dist/charts/LineChart/LineChart.d.ts +174 -0
  166. package/dist/charts/LineChart/LineChart.js +485 -0
  167. package/dist/charts/LineChart/LineChart.js.map +1 -0
  168. package/dist/charts/PieChart/PieChart.d.ts +140 -0
  169. package/dist/charts/PieChart/PieChart.js +317 -0
  170. package/dist/charts/PieChart/PieChart.js.map +1 -0
  171. package/dist/charts/RadarChart/RadarChart.d.ts +135 -0
  172. package/dist/charts/RadarChart/RadarChart.js +303 -0
  173. package/dist/charts/RadarChart/RadarChart.js.map +1 -0
  174. package/dist/charts/RadialChart/RadialChart.d.ts +142 -0
  175. package/dist/charts/RadialChart/RadialChart.js +279 -0
  176. package/dist/charts/RadialChart/RadialChart.js.map +1 -0
  177. package/dist/charts/SankeyChart/SankeyChart.d.ts +149 -0
  178. package/dist/charts/SankeyChart/SankeyChart.js +509 -0
  179. package/dist/charts/SankeyChart/SankeyChart.js.map +1 -0
  180. package/dist/charts/ScatterChart/ScatterChart.d.ts +149 -0
  181. package/dist/charts/ScatterChart/ScatterChart.js +275 -0
  182. package/dist/charts/ScatterChart/ScatterChart.js.map +1 -0
  183. package/dist/charts/Sparkline/Sparkline.d.ts +53 -0
  184. package/dist/charts/Sparkline/Sparkline.js +95 -0
  185. package/dist/charts/Sparkline/Sparkline.js.map +1 -0
  186. package/dist/charts/TreemapChart/TreemapChart.d.ts +98 -0
  187. package/dist/charts/TreemapChart/TreemapChart.js +127 -0
  188. package/dist/charts/TreemapChart/TreemapChart.js.map +1 -0
  189. package/dist/charts/WaterfallChart/WaterfallChart.d.ts +164 -0
  190. package/dist/charts/WaterfallChart/WaterfallChart.js +321 -0
  191. package/dist/charts/WaterfallChart/WaterfallChart.js.map +1 -0
  192. package/dist/charts/index.d.ts +43 -0
  193. package/dist/charts/index.js +130 -0
  194. package/dist/charts/index.js.map +1 -0
  195. package/dist/charts/lib/annotations.d.ts +103 -0
  196. package/dist/charts/lib/annotations.js +99 -0
  197. package/dist/charts/lib/annotations.js.map +1 -0
  198. package/dist/charts/lib/axis.d.ts +18 -0
  199. package/dist/charts/lib/axis.js +21 -0
  200. package/dist/charts/lib/axis.js.map +1 -0
  201. package/dist/charts/lib/background.d.ts +33 -0
  202. package/dist/charts/lib/background.js +173 -0
  203. package/dist/charts/lib/background.js.map +1 -0
  204. package/dist/charts/lib/brush.d.ts +94 -0
  205. package/dist/charts/lib/brush.js +535 -0
  206. package/dist/charts/lib/brush.js.map +1 -0
  207. package/dist/charts/lib/chart.d.ts +94 -0
  208. package/dist/charts/lib/chart.js +149 -0
  209. package/dist/charts/lib/chart.js.map +1 -0
  210. package/dist/charts/lib/dot.d.ts +29 -0
  211. package/dist/charts/lib/dot.js +78 -0
  212. package/dist/charts/lib/dot.js.map +1 -0
  213. package/dist/charts/lib/empty.d.ts +31 -0
  214. package/dist/charts/lib/empty.js +24 -0
  215. package/dist/charts/lib/empty.js.map +1 -0
  216. package/dist/charts/lib/export.d.ts +94 -0
  217. package/dist/charts/lib/export.js +62 -0
  218. package/dist/charts/lib/export.js.map +1 -0
  219. package/dist/charts/lib/figure.d.ts +81 -0
  220. package/dist/charts/lib/figure.js +62 -0
  221. package/dist/charts/lib/figure.js.map +1 -0
  222. package/dist/charts/lib/format.d.ts +46 -0
  223. package/dist/charts/lib/format.js +56 -0
  224. package/dist/charts/lib/format.js.map +1 -0
  225. package/dist/charts/lib/legend.d.ts +45 -0
  226. package/dist/charts/lib/legend.js +117 -0
  227. package/dist/charts/lib/legend.js.map +1 -0
  228. package/dist/charts/lib/loading.d.ts +48 -0
  229. package/dist/charts/lib/loading.js +105 -0
  230. package/dist/charts/lib/loading.js.map +1 -0
  231. package/dist/charts/lib/paint.d.ts +154 -0
  232. package/dist/charts/lib/paint.js +551 -0
  233. package/dist/charts/lib/paint.js.map +1 -0
  234. package/dist/charts/lib/scale.d.ts +23 -0
  235. package/dist/charts/lib/scale.js +13 -0
  236. package/dist/charts/lib/scale.js.map +1 -0
  237. package/dist/charts/lib/selection.d.ts +20 -0
  238. package/dist/charts/lib/selection.js +18 -0
  239. package/dist/charts/lib/selection.js.map +1 -0
  240. package/dist/charts/lib/sonify-control.d.ts +163 -0
  241. package/dist/charts/lib/sonify-control.js +172 -0
  242. package/dist/charts/lib/sonify-control.js.map +1 -0
  243. package/dist/charts/lib/sonify.d.ts +248 -0
  244. package/dist/charts/lib/sonify.js +262 -0
  245. package/dist/charts/lib/sonify.js.map +1 -0
  246. package/dist/charts/lib/toolbar.d.ts +144 -0
  247. package/dist/charts/lib/toolbar.js +156 -0
  248. package/dist/charts/lib/toolbar.js.map +1 -0
  249. package/dist/charts/lib/tooltip.d.ts +59 -0
  250. package/dist/charts/lib/tooltip.js +135 -0
  251. package/dist/charts/lib/tooltip.js.map +1 -0
  252. package/dist/charts/lib/values.d.ts +56 -0
  253. package/dist/charts/lib/values.js +71 -0
  254. package/dist/charts/lib/values.js.map +1 -0
  255. package/dist/charts/lib/zoom.d.ts +139 -0
  256. package/dist/charts/lib/zoom.js +314 -0
  257. package/dist/charts/lib/zoom.js.map +1 -0
  258. package/dist/components/Accordion/Accordion.d.ts +34 -0
  259. package/dist/components/Accordion/Accordion.js +43 -0
  260. package/dist/components/Accordion/Accordion.js.map +1 -0
  261. package/dist/components/Alert/Alert.d.ts +32 -0
  262. package/dist/components/Alert/Alert.js +49 -0
  263. package/dist/components/Alert/Alert.js.map +1 -0
  264. package/dist/components/AppShell/AppShell.d.ts +58 -0
  265. package/dist/components/AppShell/AppShell.js +126 -0
  266. package/dist/components/AppShell/AppShell.js.map +1 -0
  267. package/dist/components/Article/Article.d.ts +58 -0
  268. package/dist/components/Article/Article.js +34 -0
  269. package/dist/components/Article/Article.js.map +1 -0
  270. package/dist/components/AspectRatio/AspectRatio.d.ts +46 -0
  271. package/dist/components/AspectRatio/AspectRatio.js +33 -0
  272. package/dist/components/AspectRatio/AspectRatio.js.map +1 -0
  273. package/dist/components/Avatar/Avatar.d.ts +38 -0
  274. package/dist/components/Avatar/Avatar.js +44 -0
  275. package/dist/components/Avatar/Avatar.js.map +1 -0
  276. package/dist/components/Badge/Badge.d.ts +30 -0
  277. package/dist/components/Badge/Badge.js +29 -0
  278. package/dist/components/Badge/Badge.js.map +1 -0
  279. package/dist/components/Breadcrumb/Breadcrumb.d.ts +37 -0
  280. package/dist/components/Breadcrumb/Breadcrumb.js +46 -0
  281. package/dist/components/Breadcrumb/Breadcrumb.js.map +1 -0
  282. package/dist/components/Button/Button.d.ts +70 -0
  283. package/dist/components/Button/Button.js +95 -0
  284. package/dist/components/Button/Button.js.map +1 -0
  285. package/dist/components/Calendar/Calendar.d.ts +54 -0
  286. package/dist/components/Calendar/Calendar.js +369 -0
  287. package/dist/components/Calendar/Calendar.js.map +1 -0
  288. package/dist/components/Card/Card.d.ts +55 -0
  289. package/dist/components/Card/Card.js +64 -0
  290. package/dist/components/Card/Card.js.map +1 -0
  291. package/dist/components/Checkbox/Checkbox.d.ts +26 -0
  292. package/dist/components/Checkbox/Checkbox.js +34 -0
  293. package/dist/components/Checkbox/Checkbox.js.map +1 -0
  294. package/dist/components/Code/Code.d.ts +30 -0
  295. package/dist/components/Code/Code.js +21 -0
  296. package/dist/components/Code/Code.js.map +1 -0
  297. package/dist/components/CodeBlock/CodeBlock.d.ts +145 -0
  298. package/dist/components/CodeBlock/CodeBlock.js +114 -0
  299. package/dist/components/CodeBlock/CodeBlock.js.map +1 -0
  300. package/dist/components/Collapsible/Collapsible.d.ts +45 -0
  301. package/dist/components/Collapsible/Collapsible.js +60 -0
  302. package/dist/components/Collapsible/Collapsible.js.map +1 -0
  303. package/dist/components/ColorPicker/ColorPicker.d.ts +67 -0
  304. package/dist/components/ColorPicker/ColorPicker.js +334 -0
  305. package/dist/components/ColorPicker/ColorPicker.js.map +1 -0
  306. package/dist/components/Combobox/Combobox.d.ts +77 -0
  307. package/dist/components/Combobox/Combobox.js +170 -0
  308. package/dist/components/Combobox/Combobox.js.map +1 -0
  309. package/dist/components/Command/Command.d.ts +125 -0
  310. package/dist/components/Command/Command.js +204 -0
  311. package/dist/components/Command/Command.js.map +1 -0
  312. package/dist/components/ContextMenu/ContextMenu.d.ts +63 -0
  313. package/dist/components/ContextMenu/ContextMenu.js +109 -0
  314. package/dist/components/ContextMenu/ContextMenu.js.map +1 -0
  315. package/dist/components/DatePicker/DatePicker.d.ts +130 -0
  316. package/dist/components/DatePicker/DatePicker.js +257 -0
  317. package/dist/components/DatePicker/DatePicker.js.map +1 -0
  318. package/dist/components/DescriptionList/DescriptionList.d.ts +73 -0
  319. package/dist/components/DescriptionList/DescriptionList.js +35 -0
  320. package/dist/components/DescriptionList/DescriptionList.js.map +1 -0
  321. package/dist/components/Diagram/Diagram.d.ts +86 -0
  322. package/dist/components/Diagram/Diagram.js +211 -0
  323. package/dist/components/Diagram/Diagram.js.map +1 -0
  324. package/dist/components/Dialog/Dialog.d.ts +63 -0
  325. package/dist/components/Dialog/Dialog.js +90 -0
  326. package/dist/components/Dialog/Dialog.js.map +1 -0
  327. package/dist/components/DropdownMenu/DropdownMenu.d.ts +87 -0
  328. package/dist/components/DropdownMenu/DropdownMenu.js +120 -0
  329. package/dist/components/DropdownMenu/DropdownMenu.js.map +1 -0
  330. package/dist/components/EmptyState/EmptyState.d.ts +55 -0
  331. package/dist/components/EmptyState/EmptyState.js +32 -0
  332. package/dist/components/EmptyState/EmptyState.js.map +1 -0
  333. package/dist/components/ErrorState/ErrorState.d.ts +55 -0
  334. package/dist/components/ErrorState/ErrorState.js +41 -0
  335. package/dist/components/ErrorState/ErrorState.js.map +1 -0
  336. package/dist/components/Field/Field.d.ts +111 -0
  337. package/dist/components/Field/Field.js +95 -0
  338. package/dist/components/Field/Field.js.map +1 -0
  339. package/dist/components/Field/field-control.d.ts +31 -0
  340. package/dist/components/Field/field-control.js +12 -0
  341. package/dist/components/Field/field-control.js.map +1 -0
  342. package/dist/components/FigureBand/FigureBand.d.ts +31 -0
  343. package/dist/components/FigureBand/FigureBand.js +51 -0
  344. package/dist/components/FigureBand/FigureBand.js.map +1 -0
  345. package/dist/components/FloatingIconButton/FloatingIconButton.d.ts +29 -0
  346. package/dist/components/FloatingIconButton/FloatingIconButton.js +34 -0
  347. package/dist/components/FloatingIconButton/FloatingIconButton.js.map +1 -0
  348. package/dist/components/Heading/Heading.d.ts +62 -0
  349. package/dist/components/Heading/Heading.js +44 -0
  350. package/dist/components/Heading/Heading.js.map +1 -0
  351. package/dist/components/Input/Input.d.ts +22 -0
  352. package/dist/components/Input/Input.js +21 -0
  353. package/dist/components/Input/Input.js.map +1 -0
  354. package/dist/components/Kbd/Kbd.d.ts +27 -0
  355. package/dist/components/Kbd/Kbd.js +21 -0
  356. package/dist/components/Kbd/Kbd.js.map +1 -0
  357. package/dist/components/LinkArrow/LinkArrow.d.ts +24 -0
  358. package/dist/components/LinkArrow/LinkArrow.js +24 -0
  359. package/dist/components/LinkArrow/LinkArrow.js.map +1 -0
  360. package/dist/components/Markdown/Markdown.d.ts +139 -0
  361. package/dist/components/Markdown/Markdown.js +135 -0
  362. package/dist/components/Markdown/Markdown.js.map +1 -0
  363. package/dist/components/Markdown/inline.d.ts +29 -0
  364. package/dist/components/Markdown/inline.js +74 -0
  365. package/dist/components/Markdown/inline.js.map +1 -0
  366. package/dist/components/Markdown/nodes.d.ts +65 -0
  367. package/dist/components/Markdown/nodes.js +1 -0
  368. package/dist/components/Markdown/nodes.js.map +1 -0
  369. package/dist/components/Markdown/parse.d.ts +24 -0
  370. package/dist/components/Markdown/parse.js +110 -0
  371. package/dist/components/Markdown/parse.js.map +1 -0
  372. package/dist/components/Markdown/slug.d.ts +15 -0
  373. package/dist/components/Markdown/slug.js +7 -0
  374. package/dist/components/Markdown/slug.js.map +1 -0
  375. package/dist/components/Metric/Metric.d.ts +61 -0
  376. package/dist/components/Metric/Metric.js +51 -0
  377. package/dist/components/Metric/Metric.js.map +1 -0
  378. package/dist/components/NativeSelect/NativeSelect.d.ts +33 -0
  379. package/dist/components/NativeSelect/NativeSelect.js +44 -0
  380. package/dist/components/NativeSelect/NativeSelect.js.map +1 -0
  381. package/dist/components/NavItem/NavItem.d.ts +39 -0
  382. package/dist/components/NavItem/NavItem.js +31 -0
  383. package/dist/components/NavItem/NavItem.js.map +1 -0
  384. package/dist/components/NumberField/NumberField.d.ts +69 -0
  385. package/dist/components/NumberField/NumberField.js +162 -0
  386. package/dist/components/NumberField/NumberField.js.map +1 -0
  387. package/dist/components/PageHeader/PageHeader.d.ts +92 -0
  388. package/dist/components/PageHeader/PageHeader.js +37 -0
  389. package/dist/components/PageHeader/PageHeader.js.map +1 -0
  390. package/dist/components/Pagination/Pagination.d.ts +67 -0
  391. package/dist/components/Pagination/Pagination.js +112 -0
  392. package/dist/components/Pagination/Pagination.js.map +1 -0
  393. package/dist/components/Popover/Popover.d.ts +39 -0
  394. package/dist/components/Popover/Popover.js +57 -0
  395. package/dist/components/Popover/Popover.js.map +1 -0
  396. package/dist/components/Progress/Progress.d.ts +43 -0
  397. package/dist/components/Progress/Progress.js +57 -0
  398. package/dist/components/Progress/Progress.js.map +1 -0
  399. package/dist/components/RadioGroup/RadioGroup.d.ts +49 -0
  400. package/dist/components/RadioGroup/RadioGroup.js +53 -0
  401. package/dist/components/RadioGroup/RadioGroup.js.map +1 -0
  402. package/dist/components/ScrollArea/ScrollArea.d.ts +46 -0
  403. package/dist/components/ScrollArea/ScrollArea.js +54 -0
  404. package/dist/components/ScrollArea/ScrollArea.js.map +1 -0
  405. package/dist/components/SearchableMenu/SearchableMenu.d.ts +68 -0
  406. package/dist/components/SearchableMenu/SearchableMenu.js +101 -0
  407. package/dist/components/SearchableMenu/SearchableMenu.js.map +1 -0
  408. package/dist/components/Select/Select.d.ts +87 -0
  409. package/dist/components/Select/Select.js +130 -0
  410. package/dist/components/Select/Select.js.map +1 -0
  411. package/dist/components/Separator/Separator.d.ts +48 -0
  412. package/dist/components/Separator/Separator.js +43 -0
  413. package/dist/components/Separator/Separator.js.map +1 -0
  414. package/dist/components/Sheet/Sheet.d.ts +43 -0
  415. package/dist/components/Sheet/Sheet.js +79 -0
  416. package/dist/components/Sheet/Sheet.js.map +1 -0
  417. package/dist/components/Sidebar/Sidebar.d.ts +357 -0
  418. package/dist/components/Sidebar/Sidebar.js +447 -0
  419. package/dist/components/Sidebar/Sidebar.js.map +1 -0
  420. package/dist/components/Skeleton/Skeleton.d.ts +70 -0
  421. package/dist/components/Skeleton/Skeleton.js +44 -0
  422. package/dist/components/Skeleton/Skeleton.js.map +1 -0
  423. package/dist/components/Slider/Slider.d.ts +74 -0
  424. package/dist/components/Slider/Slider.js +143 -0
  425. package/dist/components/Slider/Slider.js.map +1 -0
  426. package/dist/components/Spinner/Spinner.d.ts +58 -0
  427. package/dist/components/Spinner/Spinner.js +49 -0
  428. package/dist/components/Spinner/Spinner.js.map +1 -0
  429. package/dist/components/StatusDot/StatusDot.d.ts +29 -0
  430. package/dist/components/StatusDot/StatusDot.js +44 -0
  431. package/dist/components/StatusDot/StatusDot.js.map +1 -0
  432. package/dist/components/StatusPill/StatusPill.d.ts +30 -0
  433. package/dist/components/StatusPill/StatusPill.js +37 -0
  434. package/dist/components/StatusPill/StatusPill.js.map +1 -0
  435. package/dist/components/Steps/Steps.d.ts +65 -0
  436. package/dist/components/Steps/Steps.js +25 -0
  437. package/dist/components/Steps/Steps.js.map +1 -0
  438. package/dist/components/Switch/Switch.d.ts +23 -0
  439. package/dist/components/Switch/Switch.js +23 -0
  440. package/dist/components/Switch/Switch.js.map +1 -0
  441. package/dist/components/Table/Table.d.ts +116 -0
  442. package/dist/components/Table/Table.js +137 -0
  443. package/dist/components/Table/Table.js.map +1 -0
  444. package/dist/components/Tabs/Tabs.d.ts +37 -0
  445. package/dist/components/Tabs/Tabs.js +205 -0
  446. package/dist/components/Tabs/Tabs.js.map +1 -0
  447. package/dist/components/Tag/Tag.d.ts +87 -0
  448. package/dist/components/Tag/Tag.js +62 -0
  449. package/dist/components/Tag/Tag.js.map +1 -0
  450. package/dist/components/Text/Text.d.ts +62 -0
  451. package/dist/components/Text/Text.js +30 -0
  452. package/dist/components/Text/Text.js.map +1 -0
  453. package/dist/components/Textarea/Textarea.d.ts +20 -0
  454. package/dist/components/Textarea/Textarea.js +32 -0
  455. package/dist/components/Textarea/Textarea.js.map +1 -0
  456. package/dist/components/Timestamp/Timestamp.d.ts +59 -0
  457. package/dist/components/Timestamp/Timestamp.js +56 -0
  458. package/dist/components/Timestamp/Timestamp.js.map +1 -0
  459. package/dist/components/Toast/Toast.d.ts +32 -0
  460. package/dist/components/Toast/Toast.js +64 -0
  461. package/dist/components/Toast/Toast.js.map +1 -0
  462. package/dist/components/ToggleGroup/ToggleGroup.d.ts +46 -0
  463. package/dist/components/ToggleGroup/ToggleGroup.js +88 -0
  464. package/dist/components/ToggleGroup/ToggleGroup.js.map +1 -0
  465. package/dist/components/Toolbar/Toolbar.d.ts +55 -0
  466. package/dist/components/Toolbar/Toolbar.js +43 -0
  467. package/dist/components/Toolbar/Toolbar.js.map +1 -0
  468. package/dist/components/Tooltip/Tooltip.d.ts +43 -0
  469. package/dist/components/Tooltip/Tooltip.js +40 -0
  470. package/dist/components/Tooltip/Tooltip.js.map +1 -0
  471. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.d.ts +55 -0
  472. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js +175 -0
  473. package/dist/diagrams/ArchitectureFigure/ArchitectureFigure.js.map +1 -0
  474. package/dist/diagrams/DataflowFigure/DataflowFigure.d.ts +28 -0
  475. package/dist/diagrams/DataflowFigure/DataflowFigure.js +148 -0
  476. package/dist/diagrams/DataflowFigure/DataflowFigure.js.map +1 -0
  477. package/dist/diagrams/DiagramCanvas/DiagramCanvas.d.ts +78 -0
  478. package/dist/diagrams/DiagramCanvas/DiagramCanvas.js +229 -0
  479. package/dist/diagrams/DiagramCanvas/DiagramCanvas.js.map +1 -0
  480. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.d.ts +106 -0
  481. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js +123 -0
  482. package/dist/diagrams/DiagramExportMenu/DiagramExportMenu.js.map +1 -0
  483. package/dist/diagrams/DiagramInspector/DiagramInspector.d.ts +70 -0
  484. package/dist/diagrams/DiagramInspector/DiagramInspector.js +94 -0
  485. package/dist/diagrams/DiagramInspector/DiagramInspector.js.map +1 -0
  486. package/dist/diagrams/DiagramLegend/DiagramLegend.d.ts +42 -0
  487. package/dist/diagrams/DiagramLegend/DiagramLegend.js +35 -0
  488. package/dist/diagrams/DiagramLegend/DiagramLegend.js.map +1 -0
  489. package/dist/diagrams/DiagramMinimap/DiagramMinimap.d.ts +77 -0
  490. package/dist/diagrams/DiagramMinimap/DiagramMinimap.js +106 -0
  491. package/dist/diagrams/DiagramMinimap/DiagramMinimap.js.map +1 -0
  492. package/dist/diagrams/DiagramToolbar/DiagramToolbar.d.ts +48 -0
  493. package/dist/diagrams/DiagramToolbar/DiagramToolbar.js +53 -0
  494. package/dist/diagrams/DiagramToolbar/DiagramToolbar.js.map +1 -0
  495. package/dist/diagrams/LifecycleFigure/LifecycleFigure.d.ts +31 -0
  496. package/dist/diagrams/LifecycleFigure/LifecycleFigure.js +234 -0
  497. package/dist/diagrams/LifecycleFigure/LifecycleFigure.js.map +1 -0
  498. package/dist/diagrams/SequenceFigure/SequenceFigure.d.ts +38 -0
  499. package/dist/diagrams/SequenceFigure/SequenceFigure.js +261 -0
  500. package/dist/diagrams/SequenceFigure/SequenceFigure.js.map +1 -0
  501. package/dist/diagrams/WorkflowFigure/WorkflowFigure.d.ts +36 -0
  502. package/dist/diagrams/WorkflowFigure/WorkflowFigure.js +259 -0
  503. package/dist/diagrams/WorkflowFigure/WorkflowFigure.js.map +1 -0
  504. package/dist/diagrams/index.d.ts +17 -0
  505. package/dist/diagrams/index.js +29 -0
  506. package/dist/diagrams/index.js.map +1 -0
  507. package/dist/diagrams/lib/dev.d.ts +61 -0
  508. package/dist/diagrams/lib/dev.js +96 -0
  509. package/dist/diagrams/lib/dev.js.map +1 -0
  510. package/dist/diagrams/lib/frame.d.ts +138 -0
  511. package/dist/diagrams/lib/frame.js +131 -0
  512. package/dist/diagrams/lib/frame.js.map +1 -0
  513. package/dist/diagrams/lib/geometry.d.ts +114 -0
  514. package/dist/diagrams/lib/geometry.js +113 -0
  515. package/dist/diagrams/lib/geometry.js.map +1 -0
  516. package/dist/diagrams/lib/legend.d.ts +32 -0
  517. package/dist/diagrams/lib/legend.js +84 -0
  518. package/dist/diagrams/lib/legend.js.map +1 -0
  519. package/dist/diagrams/lib/marks.d.ts +207 -0
  520. package/dist/diagrams/lib/marks.js +480 -0
  521. package/dist/diagrams/lib/marks.js.map +1 -0
  522. package/dist/diagrams/lib/route.d.ts +106 -0
  523. package/dist/diagrams/lib/route.js +201 -0
  524. package/dist/diagrams/lib/route.js.map +1 -0
  525. package/dist/diagrams/lib/wires.d.ts +59 -0
  526. package/dist/diagrams/lib/wires.js +94 -0
  527. package/dist/diagrams/lib/wires.js.map +1 -0
  528. package/dist/diagrams/spec.d.ts +405 -0
  529. package/dist/diagrams/spec.js +1 -0
  530. package/dist/diagrams/spec.js.map +1 -0
  531. package/dist/fonts/hanken-grotesk-300.woff2 +0 -0
  532. package/dist/fonts/hanken-grotesk-400.woff2 +0 -0
  533. package/dist/fonts/hanken-grotesk-500.woff2 +0 -0
  534. package/dist/fonts/hanken-grotesk-600.woff2 +0 -0
  535. package/dist/fonts/hanken-grotesk-700.woff2 +0 -0
  536. package/dist/fonts/ibm-plex-mono-400.woff2 +0 -0
  537. package/dist/fonts/ibm-plex-mono-500.woff2 +0 -0
  538. package/dist/fonts/ibm-plex-mono-600.woff2 +0 -0
  539. package/dist/fonts/newsreader-300.woff2 +0 -0
  540. package/dist/fonts/newsreader-400.woff2 +0 -0
  541. package/dist/fonts/newsreader-500.woff2 +0 -0
  542. package/dist/fonts/newsreader-600.woff2 +0 -0
  543. package/dist/fonts.css +96 -0
  544. package/dist/index.d.ts +97 -0
  545. package/dist/index.js +80 -0
  546. package/dist/index.js.map +1 -0
  547. package/dist/keyframes.css +300 -0
  548. package/dist/lib/cn.d.ts +21 -0
  549. package/dist/lib/cn.js +9 -0
  550. package/dist/lib/cn.js.map +1 -0
  551. package/dist/lib/color.d.ts +80 -0
  552. package/dist/lib/color.js +189 -0
  553. package/dist/lib/color.js.map +1 -0
  554. package/dist/lib/control.d.ts +32 -0
  555. package/dist/lib/control.js +14 -0
  556. package/dist/lib/control.js.map +1 -0
  557. package/dist/lib/index.d.ts +4 -0
  558. package/dist/lib/index.js +11 -0
  559. package/dist/lib/index.js.map +1 -0
  560. package/dist/lib/numeric.d.ts +35 -0
  561. package/dist/lib/numeric.js +29 -0
  562. package/dist/lib/numeric.js.map +1 -0
  563. package/dist/lib/overlay-container.d.ts +48 -0
  564. package/dist/lib/overlay-container.js +15 -0
  565. package/dist/lib/overlay-container.js.map +1 -0
  566. package/dist/lib/slot-content.d.ts +8 -0
  567. package/dist/lib/slot-content.js +17 -0
  568. package/dist/lib/slot-content.js.map +1 -0
  569. package/dist/lib/step-rail.d.ts +45 -0
  570. package/dist/lib/step-rail.js +47 -0
  571. package/dist/lib/step-rail.js.map +1 -0
  572. package/dist/lib/svg-export.d.ts +138 -0
  573. package/dist/lib/svg-export.js +198 -0
  574. package/dist/lib/svg-export.js.map +1 -0
  575. package/dist/lib/useClipboardCopy.d.ts +30 -0
  576. package/dist/lib/useClipboardCopy.js +37 -0
  577. package/dist/lib/useClipboardCopy.js.map +1 -0
  578. package/dist/lib/useSelectionIndicator.d.ts +29 -0
  579. package/dist/lib/useSelectionIndicator.js +49 -0
  580. package/dist/lib/useSelectionIndicator.js.map +1 -0
  581. package/dist/lib/warn.d.ts +73 -0
  582. package/dist/lib/warn.js +38 -0
  583. package/dist/lib/warn.js.map +1 -0
  584. package/dist/semantic.css +200 -0
  585. package/dist/styles.css +98 -0
  586. package/dist/themes.css +607 -0
  587. package/dist/tokens/brand.d.ts +47 -0
  588. package/dist/tokens/brand.js +38 -0
  589. package/dist/tokens/brand.js.map +1 -0
  590. package/dist/tokens.css +666 -0
  591. package/dist/tokens.d.ts +205 -0
  592. package/dist/tokens.js +1056 -0
  593. package/dist/tokens.json +1055 -0
  594. package/dist/website/Actions/Actions.d.ts +34 -0
  595. package/dist/website/Actions/Actions.js +29 -0
  596. package/dist/website/Actions/Actions.js.map +1 -0
  597. package/dist/website/Collection/Collection.d.ts +128 -0
  598. package/dist/website/Collection/Collection.js +162 -0
  599. package/dist/website/Collection/Collection.js.map +1 -0
  600. package/dist/website/Contact/Contact.d.ts +87 -0
  601. package/dist/website/Contact/Contact.js +94 -0
  602. package/dist/website/Contact/Contact.js.map +1 -0
  603. package/dist/website/Content/CodePanel.d.ts +27 -0
  604. package/dist/website/Content/CodePanel.js +30 -0
  605. package/dist/website/Content/CodePanel.js.map +1 -0
  606. package/dist/website/Content/Content.d.ts +29 -0
  607. package/dist/website/Content/Content.js +38 -0
  608. package/dist/website/Content/Content.js.map +1 -0
  609. package/dist/website/Conversation/Conversation.d.ts +193 -0
  610. package/dist/website/Conversation/Conversation.js +252 -0
  611. package/dist/website/Conversation/Conversation.js.map +1 -0
  612. package/dist/website/Evidence/Evidence.d.ts +116 -0
  613. package/dist/website/Evidence/Evidence.js +142 -0
  614. package/dist/website/Evidence/Evidence.js.map +1 -0
  615. package/dist/website/Media/Media.d.ts +173 -0
  616. package/dist/website/Media/Media.js +225 -0
  617. package/dist/website/Media/Media.js.map +1 -0
  618. package/dist/website/Media/MediaLightbox.d.ts +18 -0
  619. package/dist/website/Media/MediaLightbox.js +38 -0
  620. package/dist/website/Media/MediaLightbox.js.map +1 -0
  621. package/dist/website/Metrics/Metrics.d.ts +74 -0
  622. package/dist/website/Metrics/Metrics.js +96 -0
  623. package/dist/website/Metrics/Metrics.js.map +1 -0
  624. package/dist/website/Music/Music.d.ts +60 -0
  625. package/dist/website/Music/Music.js +80 -0
  626. package/dist/website/Music/Music.js.map +1 -0
  627. package/dist/website/Portfolio/FrameLayout.d.ts +9 -0
  628. package/dist/website/Portfolio/FrameLayout.js +42 -0
  629. package/dist/website/Portfolio/FrameLayout.js.map +1 -0
  630. package/dist/website/Portfolio/Portfolio.d.ts +49 -0
  631. package/dist/website/Portfolio/Portfolio.js +66 -0
  632. package/dist/website/Portfolio/Portfolio.js.map +1 -0
  633. package/dist/website/Portfolio/QuestionCard.d.ts +22 -0
  634. package/dist/website/Portfolio/QuestionCard.js +33 -0
  635. package/dist/website/Portfolio/QuestionCard.js.map +1 -0
  636. package/dist/website/PortfolioIndex/PortfolioIndex.d.ts +21 -0
  637. package/dist/website/PortfolioIndex/PortfolioIndex.js +31 -0
  638. package/dist/website/PortfolioIndex/PortfolioIndex.js.map +1 -0
  639. package/dist/website/Reading/Reading.d.ts +203 -0
  640. package/dist/website/Reading/Reading.js +357 -0
  641. package/dist/website/Reading/Reading.js.map +1 -0
  642. package/dist/website/Recovery/Recovery.d.ts +39 -0
  643. package/dist/website/Recovery/Recovery.js +96 -0
  644. package/dist/website/Recovery/Recovery.js.map +1 -0
  645. package/dist/website/SearchPalette/SearchPalette.d.ts +59 -0
  646. package/dist/website/SearchPalette/SearchPalette.js +120 -0
  647. package/dist/website/SearchPalette/SearchPalette.js.map +1 -0
  648. package/dist/website/SiteNavigation/SiteNavigation.d.ts +46 -0
  649. package/dist/website/SiteNavigation/SiteNavigation.js +101 -0
  650. package/dist/website/SiteNavigation/SiteNavigation.js.map +1 -0
  651. package/dist/website/SiteShell/SiteShell.d.ts +45 -0
  652. package/dist/website/SiteShell/SiteShell.js +46 -0
  653. package/dist/website/SiteShell/SiteShell.js.map +1 -0
  654. package/dist/website/Timeline/Timeline.d.ts +80 -0
  655. package/dist/website/Timeline/Timeline.js +99 -0
  656. package/dist/website/Timeline/Timeline.js.map +1 -0
  657. package/dist/website/Workbench/Chronology.d.ts +32 -0
  658. package/dist/website/Workbench/Chronology.js +32 -0
  659. package/dist/website/Workbench/Chronology.js.map +1 -0
  660. package/dist/website/Workbench/ContactRow.d.ts +13 -0
  661. package/dist/website/Workbench/ContactRow.js +11 -0
  662. package/dist/website/Workbench/ContactRow.js.map +1 -0
  663. package/dist/website/Workbench/PhotoMosaic.d.ts +13 -0
  664. package/dist/website/Workbench/PhotoMosaic.js +15 -0
  665. package/dist/website/Workbench/PhotoMosaic.js.map +1 -0
  666. package/dist/website/Workbench/Reveal.d.ts +19 -0
  667. package/dist/website/Workbench/Reveal.js +29 -0
  668. package/dist/website/Workbench/Reveal.js.map +1 -0
  669. package/dist/website/Workbench/ToolStrip.d.ts +18 -0
  670. package/dist/website/Workbench/ToolStrip.js +15 -0
  671. package/dist/website/Workbench/ToolStrip.js.map +1 -0
  672. package/dist/website/Workbench/Workbench.d.ts +23 -0
  673. package/dist/website/Workbench/Workbench.js +22 -0
  674. package/dist/website/Workbench/Workbench.js.map +1 -0
  675. package/dist/website/Workbench/WorkbenchCard.d.ts +29 -0
  676. package/dist/website/Workbench/WorkbenchCard.js +21 -0
  677. package/dist/website/Workbench/WorkbenchCard.js.map +1 -0
  678. package/dist/website/Workbench/WorkbenchEntries.d.ts +22 -0
  679. package/dist/website/Workbench/WorkbenchEntries.js +24 -0
  680. package/dist/website/Workbench/WorkbenchEntries.js.map +1 -0
  681. package/dist/website/Workbench/WorkbenchFigure.d.ts +20 -0
  682. package/dist/website/Workbench/WorkbenchFigure.js +15 -0
  683. package/dist/website/Workbench/WorkbenchFigure.js.map +1 -0
  684. package/dist/website/Workbench/WorkbenchHero.d.ts +24 -0
  685. package/dist/website/Workbench/WorkbenchHero.js +24 -0
  686. package/dist/website/Workbench/WorkbenchHero.js.map +1 -0
  687. package/dist/website/Workbench/theme.d.ts +22 -0
  688. package/dist/website/Workbench/theme.js +12 -0
  689. package/dist/website/Workbench/theme.js.map +1 -0
  690. package/dist/website/index.d.ts +38 -0
  691. package/dist/website/index.js +32 -0
  692. package/dist/website/index.js.map +1 -0
  693. package/dist/website-actions.css +6 -0
  694. package/dist/website-base.css +46 -0
  695. package/dist/website-collection.css +89 -0
  696. package/dist/website-contact.css +29 -0
  697. package/dist/website-content.css +20 -0
  698. package/dist/website-controls.css +91 -0
  699. package/dist/website-conversation.css +115 -0
  700. package/dist/website-evidence.css +56 -0
  701. package/dist/website-media.css +227 -0
  702. package/dist/website-metrics.css +15 -0
  703. package/dist/website-music.css +27 -0
  704. package/dist/website-portfolio.css +94 -0
  705. package/dist/website-reading.css +159 -0
  706. package/dist/website-recovery.css +28 -0
  707. package/dist/website-search.css +26 -0
  708. package/dist/website-shell.css +89 -0
  709. package/dist/website-timeline.css +43 -0
  710. package/dist/website-workbench.css +162 -0
  711. package/dist/website.css +26 -0
  712. package/llms.txt +35 -0
  713. package/package.json +163 -5
  714. package/skills/folio-design/SKILL.md +228 -0
  715. package/skills/folio-design/evals/claims.json +95 -0
  716. package/skills/folio-design/evals/evals.json +84 -0
  717. package/skills/folio-design/rules/a11y.md +167 -0
  718. package/skills/folio-design/rules/composition.md +108 -0
  719. package/skills/folio-design/rules/forms.md +135 -0
  720. package/skills/folio-design/rules/naming.md +155 -0
  721. package/skills/folio-design/rules/tokens.md +135 -0
@@ -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":[]}
@@ -0,0 +1,666 @@
1
+ /* ==========================================================================
2
+ WHITE RESET — design tokens
3
+ --------------------------------------------------------------------------
4
+ The portable layer of @misoto22/folio: plain CSS custom properties, no
5
+ Tailwind dependency. Import this alone and any consumer — a Tailwind app, a
6
+ plain-CSS app, a preview sandbox — gets the same look.
7
+
8
+ A pure-white monochrome system for software, writing, and photography. The
9
+ ground is paper-white, the mark is near-black, and the only chroma left in
10
+ the file is status, which is bound to state and never to brand.
11
+
12
+ Two blocks, and only two: the primitives below, and the semantic aliases in
13
+ `semantic.css` that name what a primitive is FOR. A component never reads a
14
+ primitive directly — it reads the alias — so recolouring the system is one
15
+ edit here rather than a sweep through every component.
16
+
17
+ Hex mirrors for surfaces that cannot read CSS custom properties (OpenGraph
18
+ cards, build scripts, `theme-color`) live in `tokens/brand.ts`, and a test
19
+ holds the two in sync.
20
+ ========================================================================== */
21
+
22
+ /* `[data-surface='paper']` is the surface axis's own default, WRITTEN. Every
23
+ other axis value has a name; this one was "leave the attribute off", which
24
+ works exactly once — at the root. A subtree cannot say "the White Reset"
25
+ inside a page whose root is warm, so five theme specimens on one page each
26
+ inherited whichever surface the reader had applied to the site and every one
27
+ of them showed the same colours. Naming the default is what lets a subtree
28
+ opt out of an ancestor's theme rather than only into a different one.
29
+
30
+ It sits on the ROOT's own rule rather than restating the values, so there is
31
+ nothing here to drift. Specificity ties with `[data-surface='warm']` in
32
+ themes.css and loses on source order, which is correct: a wrapper that says
33
+ `warm` does not match this selector at all. */
34
+ :root,
35
+ [data-mode='light'],
36
+ [data-surface='paper'],
37
+ [data-rules='hairline'] {
38
+ --paper: #ffffff;
39
+ --paper-2: #f7f7f5;
40
+ --bar: var(--stone);
41
+ --bar-2: var(--stone);
42
+
43
+ /* Two text steps and nothing lighter. --ink-3-aa is the floor — it clears
44
+ AA on white at 6.7:1, and every step above it is darker. --ink-3 is the
45
+ same weight expressed as alpha, for rules and washes that must sit over a
46
+ photograph as well as over paper. */
47
+ --ink: #101010;
48
+ --ink-2: #4a4a4a;
49
+ --ink-3: rgba(16, 16, 16, 0.55);
50
+ --ink-3-aa: #5c5c5c;
51
+
52
+ /* The second editorial voice is not a hue — it is one more neutral step,
53
+ sitting between --ink and --ink-2, so a byline separates from body copy
54
+ without introducing colour. */
55
+ --forest: #3a3a3a;
56
+ --mist: var(--stone);
57
+ --stone: #f2f1ee;
58
+
59
+ /* Monochrome collapses the pointer onto the mark: the accent IS ink. What
60
+ used to be carried by hue is now carried by weight, rule and reversal —
61
+ an ink pill, an ink underline, an ink-filled plate. */
62
+ --clay: var(--ink);
63
+ --clay-ink: var(--clay);
64
+
65
+ /* The one reversed plate, and the one place the ramp needs a tenth step.
66
+ Set to var(--ink) it was the page's darkest possible mark used as a field,
67
+ which on a white page reads as a hole punched through it rather than as a
68
+ panel. Two steps lighter keeps the reversal — 15.1:1 for paper-white type
69
+ on it — and matches the dark side. */
70
+ --feature-surface: #262626;
71
+ --on-feature: var(--paper);
72
+ --focus-on-feature: var(--on-feature);
73
+ --on-photo: var(--paper);
74
+ --photo-caption-surface: var(--ink);
75
+ --photo-shadow: 0 1px 6px rgb(0 0 0 / 0.72);
76
+
77
+ /* Three rule weights, because a monochrome page has no colour left to
78
+ separate one band from the next: hairline, edge, and hard. */
79
+ --rule: #edebe6;
80
+ --rule-2: #dbdbd6;
81
+ --rule-hard: var(--ink);
82
+
83
+ /* Historic role names, kept so a consumer written against the previous
84
+ palette keeps resolving. Their hue is now ink; the role remains "the
85
+ single editorial pointer". */
86
+ --red: var(--clay);
87
+ --red-ink: var(--clay);
88
+ --red-soft: rgba(16, 16, 16, 0.07);
89
+ --on-red: var(--paper);
90
+
91
+ --shadow-offset: var(--clay);
92
+
93
+ /* ─── Data ───────────────────────────────────────────────────────────────
94
+ The series ramp a chart paints with, and the one place the White Reset
95
+ has to answer a question a monochrome system would rather not be asked:
96
+ how do you tell six lines apart with no hue left to spend?
97
+
98
+ The answer is that hue was never the primary carrier here — TEXTURE is.
99
+ Every chart primitive ships a fill variant (hatched, dotted, lines,
100
+ stripped, duotone) and the series ramp below is the SECOND encoding, not
101
+ the first. That ordering is what makes the set legible to a colour-blind
102
+ reader, in greyscale print, and under forced-colours, none of which a
103
+ hue-first categorical palette survives.
104
+
105
+ The eight steps are interleaved rather than sequential — light, dark,
106
+ light, dark — so neighbouring series sit as far apart on the lightness
107
+ ramp as eight steps allow. Adjacent separation is ΔE 21.0 (OKLab ×100)
108
+ against a 15 floor, and every step clears 3:1 on its own ground.
109
+
110
+ Two checks a chromatic palette would pass fail here BY DESIGN, and are
111
+ stated rather than hidden: the chroma floor (these are greys) and the
112
+ lightness band (--series-1 is ink, and ink is the darkest mark the system
113
+ has). Texture plus a legend is the relief, and both are mandatory —
114
+ `Chart.Legend` is not optional above one series.
115
+
116
+ A consumer who genuinely needs hue does not hand-pick hexes: it sets
117
+ `data-chart-palette="chroma"` (see themes.css), which re-points these
118
+ eight names onto a categorical palette validated against both grounds —
119
+ or `"accent"`, which ladders the same eight names out of `--clay` when
120
+ what the charts have to carry is a brand rather than eight categories. */
121
+ --series-1: #101010;
122
+ --series-2: #565656;
123
+ --series-3: #202020;
124
+ --series-4: #6a6a6a;
125
+ --series-5: #313131;
126
+ --series-6: #7e7e7e;
127
+ --series-7: #434343;
128
+ --series-8: #939393;
129
+ /* The empty ground a part-of-whole mark is drawn against — the unfilled
130
+ remainder of a radial bar, the track behind a gauge. Not --rule: a track
131
+ is a field, and a field that reads as a hairline disappears at radius. */
132
+ --series-track: #eeece7;
133
+
134
+ /* How solid a translucent mark is, and the one pair of tokens in the file
135
+ that is NOT the same number on both grounds.
136
+
137
+ A wash is `ink at N% over the page`. On paper, ink at 14% lands around
138
+ #e3e3e3 — a legible, recessive band. Run the same 14% the other way and
139
+ paper-white over near-black lands around #2c2c2c, which on a #0d0d0d
140
+ ground is not a band, it is nothing. Perceived lightness is not linear and
141
+ the two directions do not meet in the middle, so a single number cannot
142
+ serve both: the dark side needs roughly twice the alpha to read as the
143
+ same weight of mark. Every area fill, texture and flow band in the chart
144
+ package reads these rather than carrying its own literal. */
145
+ --chart-fill: 0.14;
146
+ --chart-texture: 0.42;
147
+
148
+ color-scheme: light;
149
+ }
150
+
151
+ /* The dark half of the same reset. Without it, `paper` inside a dark page
152
+ would match the light rule above and light up one specimen in the middle of
153
+ a dark gallery. */
154
+ [data-mode='dark'],
155
+ /* BOTH forms, the way every dark rule in `themes.css` is written. The compound
156
+ is not the same selector as the descendant, and the compound is the one that
157
+ matters most: an app puts `data-mode` and its theme axes on the SAME element
158
+ — `<html data-mode="dark" data-surface="paper">` — where a descendant
159
+ selector matches nothing. Written descendant-only, every dark page took the
160
+ light rule above and painted light ink on a dark ground. */
161
+ [data-mode='dark'][data-surface='paper'],
162
+ [data-mode='dark'] [data-surface='paper'],
163
+ [data-mode='dark'][data-rules='hairline'],
164
+ [data-mode='dark'] [data-rules='hairline'] {
165
+ --paper: #0d0d0d;
166
+ --paper-2: #161616;
167
+ --bar: var(--stone);
168
+ --bar-2: var(--stone);
169
+
170
+ --ink: #f4f4f2;
171
+ --ink-2: #b4b4b0;
172
+ --ink-3: rgba(244, 244, 242, 0.55);
173
+ --ink-3-aa: #9a9a96;
174
+
175
+ --forest: #c9c9c5;
176
+ --mist: var(--stone);
177
+ --stone: #1f1f1f;
178
+ --clay: var(--ink);
179
+ --clay-ink: var(--clay);
180
+ --feature-surface: #1a1a1a;
181
+ --on-feature: var(--ink);
182
+ --focus-on-feature: var(--on-feature);
183
+
184
+ /* A photograph is a dark ground in both themes, so this one does not swap
185
+ with --paper. It sits a shade off pure white because the light side has
186
+ already spent pure white on the page ground, and one hex serves one role. */
187
+ --on-photo: #fbfbfa;
188
+ --photo-caption-surface: var(--paper);
189
+ --photo-shadow: 0 1px 6px rgb(0 0 0 / 0.72);
190
+
191
+ --rule: rgba(244, 244, 242, 0.14);
192
+ --rule-2: rgba(244, 244, 242, 0.26);
193
+ --rule-hard: var(--ink);
194
+
195
+ --red: var(--clay);
196
+ --red-ink: var(--clay);
197
+ --red-soft: rgba(244, 244, 242, 0.12);
198
+ --on-red: var(--paper);
199
+
200
+ --shadow-offset: var(--clay);
201
+
202
+ --series-1: #f4f4f2;
203
+ --series-2: #9b9b9b;
204
+ --series-3: #dddddd;
205
+ --series-4: #868686;
206
+ --series-5: #c7c7c7;
207
+ --series-6: #727272;
208
+ --series-7: #b0b0b0;
209
+ --series-8: #636363;
210
+ --series-track: #232323;
211
+
212
+ --chart-fill: 0.3;
213
+ --chart-texture: 0.72;
214
+
215
+ color-scheme: dark;
216
+ }
217
+
218
+ :root {
219
+ /* ─── Type ───────────────────────────────────────────────────────────────
220
+ Three faces and their CJK companions.
221
+
222
+ EVERY `var()` here carries a fallback, and that is load-bearing rather than
223
+ tidy. A `var(--font-hanken)` with no fallback, in a host that does not
224
+ define `--font-hanken`, is invalid at computed-value time — and IACVT does
225
+ not skip the one term, it discards the WHOLE declaration. So the entire
226
+ stack collapsed to nothing and every surface rendered in the platform's
227
+ system font. It worked inside the site, where next/font defines those
228
+ names, and failed everywhere else: for a package whose whole purpose is to
229
+ render the same on both sides, that is the worst possible bug.
230
+
231
+ With the fallback, a host that loads the faces itself (next/font, a CDN)
232
+ sets `--font-*` and wins; a host that does not falls through to the literal
233
+ family name, which is exactly the name `fonts.css` declares its vendored
234
+ @font-face rules under.
235
+
236
+ The CJK stacks deliberately end WITHOUT a generic family. They are spliced
237
+ into the middle of the three stacks above, and a generic in the middle
238
+ terminates a font stack — everything listed after it is unreachable. */
239
+ --sans: var(--font-hanken, 'Hanken Grotesk'), var(--cjk-sans), 'Helvetica Neue', Arial, sans-serif;
240
+ --serif: var(--font-newsreader, 'Newsreader'), var(--cjk-serif), Georgia, serif;
241
+ --mono: var(--font-plex-mono, 'IBM Plex Mono'), var(--cjk-sans), ui-monospace, SFMono-Regular, Menlo,
242
+ monospace;
243
+
244
+ --cjk-serif: var(--font-noto-serif-sc, 'Noto Serif SC'), 'Source Han Serif SC', 'Songti SC', STSong,
245
+ SimSun;
246
+ --cjk-sans: var(--font-noto-sans-sc, 'Noto Sans SC'), 'PingFang SC', 'Hiragino Sans GB',
247
+ 'Microsoft YaHei';
248
+
249
+ --lh-cjk: 1.8;
250
+ --ls-cjk: 0;
251
+
252
+ /* Heading scale — the single ladder every surface climbs. Five steps, each
253
+ fluid between a phone and the 1288px page, and nothing sits above
254
+ --fs-title: a page has exactly one thing larger than its own records.
255
+
256
+ Steps sit close together by design — the ladder separates records of the
257
+ same kind, not a heading from its own sub-heading. Two headings that nest
258
+ must skip a step: --fs-lead over --fs-sub reads as a hierarchy (1.33),
259
+ --fs-lead over --fs-heading does not (1.14). */
260
+ /* ─── The fluid base ──────────────────────────────────────────────────────
261
+ Every fluid step below is one percent of THIS, not of the viewport.
262
+
263
+ The default is `1vw`, which is what a page wants. A bounded frame — a
264
+ device preview, a documentation canvas, an embedded console — overrides it
265
+ to `1cqi` and declares itself a `container`, and the whole ramp re-bases
266
+ onto the frame's width. Without the seam a 390px preview inside a 1440px
267
+ window renders 54px headings and 64px gutters, which is not what a 390px
268
+ screen looks like and is exactly the bug this replaces.
269
+
270
+ The ramp itself is declared once, below, for BOTH `:root` and a frame —
271
+ rather than composed here and inherited. A custom property substitutes
272
+ `var()` where it is DECLARED, so a ramp written only on `:root` bakes in
273
+ `1vw` and a deeper `--fluid` never reaches it. */
274
+ --fluid: 1vw;
275
+
276
+ --maxw: 1288px;
277
+ --col: 8.3333%;
278
+ --row: 52px;
279
+
280
+ }
281
+
282
+ /* Display voice. How loud a page's display type and labels are, read by the
283
+ website compositions instead of literal values so the voice axis in
284
+ `themes.css` can quiet them. Declared on the root only — never on a fluid
285
+ frame — so an axis set on an ancestor is not reset inside one. */
286
+ :root {
287
+ --display-scale: 1;
288
+ --display-weight: 300;
289
+ --label-font: var(--font-mono);
290
+ --label-case: uppercase;
291
+ --label-tracking-scale: 1;
292
+ }
293
+
294
+ /* The fluid ramp, computed wherever `--fluid` is set.
295
+ `[data-fluid-frame]` must sit INSIDE the element carrying `container-type`:
296
+ a container query unit resolves against an ANCESTOR container, never against
297
+ the element that declares the container itself. */
298
+ :root,
299
+ [data-fluid-frame] {
300
+ /* `--display-scale` is the voice axis's lever on the two display steps; at
301
+ 1 they are the ramp as drawn. */
302
+ --fs-title: calc(clamp(2.5rem, calc(4.6 * var(--fluid)), 3.375rem) * var(--display-scale, 1)); /* page h1 40 → 54px */
303
+ --fs-lead: calc(clamp(1.875rem, calc(3 * var(--fluid)), 2.625rem) * var(--display-scale, 1)); /* band heading 30 → 42px */
304
+ --fs-heading: clamp(1.5rem, calc(2.1 * var(--fluid)), 1.8125rem); /* record title 24 → 29px */
305
+ --fs-sub: clamp(1.3125rem, calc(1.7 * var(--fluid)), 1.5625rem); /* card sub-head 21 → 25px */
306
+ --fs-item: clamp(1.125rem, calc(1.35 * var(--fluid)), 1.25rem); /* in-card title 18 → 20px */
307
+
308
+ --pad: clamp(18px, calc(4.4 * var(--fluid)), 64px);
309
+ --sec: clamp(54px, calc(7 * var(--fluid)), 96px);
310
+ --sec-tight: clamp(40px, calc(5 * var(--fluid)), 68px);
311
+ }
312
+
313
+ /* ─── Radius ───────────────────────────────────────────────────────────────
314
+ One ladder, and a single factor that moves the whole of it.
315
+
316
+ The four steps used to be four independent numbers, and a radius theme
317
+ re-typed all four. That is how the ladder went out of proportion with
318
+ itself: nothing held the steps in a fixed ratio, so a corner nested inside
319
+ another corner matched it at the one setting somebody checked and at no
320
+ other. Here the steps are derived, the factor is the only thing a theme
321
+ sets, and the proportions are the same at every setting by construction.
322
+
323
+ THE NESTING LAW. Two rounded edges separated by a gap of `p` are concentric
324
+ only when the inner radius is the outer minus `p`. Anything else pinches at
325
+ the corner — the gap narrows as it turns, which is the mismatch you see
326
+ before you can name it. Both directions are named below (`--radius-row`
327
+ subtracts, `--radius-frame` adds) so a surface never has to guess.
328
+
329
+ THE PILL IS ON THE LADDER, which is a change. It used to be exempt, on the
330
+ grounds that a pill is a shape rather than a corner. It is — but a square
331
+ theme that left every button a capsule was not a square theme, and that
332
+ exemption is what bought it. A true CIRCLE is still geometry and still
333
+ `rounded-full`: an avatar, a status dot, a spinner, a radio (which is round
334
+ so it cannot be mistaken for a checkbox).
335
+
336
+ Declared for `:root` AND for `[data-radius]`, rather than composed once and
337
+ inherited. A custom property substitutes `var()` where it is DECLARED, so a
338
+ ladder written only on `:root` bakes in the root's factor and a themed
339
+ subtree deeper in the page never reaches it — the same trap `--fluid` above
340
+ documents, and the reason five themes can share the themes page at all. */
341
+ :root,
342
+ [data-radius] {
343
+ --radius-factor: 1;
344
+ /* Clamps the factor at 1 for the ADDING direction only. A frame's air is a
345
+ fixed number of pixels, so `--radius-lg + 16px` would leave a rounded
346
+ frame around a square panel the moment the theme went square; gated, it
347
+ collapses to nothing along with everything else. */
348
+ --radius-gate: min(1, var(--radius-factor));
349
+
350
+ /* The numbers are the ones the rest of the industry settled on, and that is
351
+ the argument for them: 8px for a control, 12px for a panel, and 4/6 for the
352
+ small marks inside one. Tailwind's own scale, shadcn's `--radius` ± 2 and
353
+ ± 4, Radix Themes' steps 3 and 4, and Material's `xs`/`sm`/`md` all agree
354
+ within a pixel of this. The previous 2/4/6/10 was a step tighter than any
355
+ of them, which is what made a card read as a rectangle with the corners
356
+ shaved rather than as a rounded panel. */
357
+ --radius-xs: calc(4px * var(--radius-factor)); /* a mark inside a tight box */
358
+ --radius-sm: calc(6px * var(--radius-factor)); /* chips, keys, list rows */
359
+ --radius: calc(8px * var(--radius-factor)); /* inputs, code, small plates */
360
+ --radius-lg: calc(12px * var(--radius-factor)); /* cards, dialogs, menu panels */
361
+ --radius-pill: calc(999px * var(--radius-factor)); /* capsules and counters */
362
+
363
+ /* The nesting law, applied to the two insets this system actually uses. */
364
+ --radius-row: max(0px, calc(var(--radius-lg) - 0.375rem)); /* a row in a 6px-padded panel */
365
+ --radius-frame: calc(var(--radius-lg) + 1rem * var(--radius-gate)); /* a frame 16px outside a panel */
366
+ }
367
+
368
+ /* The density axis's own default, named — and on a rule that holds NOTHING
369
+ but density. It was on the block above, which also carries the status
370
+ colours, the floating surfaces and the motion steps: every element that
371
+ said `data-density="comfortable"` therefore re-declared the whole LIGHT
372
+ palette on itself, and in dark mode every example canvas on the site
373
+ painted a light --danger on a dark ground. A neutral value may only
374
+ restate the axis it belongs to. */
375
+ :root,
376
+ [data-density='comfortable'] {
377
+ /* ─── Density ────────────────────────────────────────────────────────────
378
+ The second theming axis, and the only other one. Light/dark swaps colour;
379
+ density swaps the size of anything a finger or a pointer has to hit.
380
+
381
+ `comfortable` is the default, and 44px is not an arbitrary number: it is
382
+ the pointer-target size WCAG 2.5.5 (AAA) asks for.
383
+
384
+ `compact` is for a dense desktop tool driven by a mouse — a data grid, an
385
+ admin console — and it is a real trade, stated rather than hidden. At 36px
386
+ it still clears WCAG 2.5.8 (AA, 24px) with room to spare, and no longer
387
+ meets 2.5.5. Do not put it on a page a phone will open.
388
+
389
+ Set it on any container: `<div data-density="compact">`. Controls read
390
+ these tokens, so the whole subtree changes together and nothing has to be
391
+ told twice. */
392
+ --control-h-sm: 2.25rem; /* 36px */
393
+ --control-h-md: 2.75rem; /* 44px — WCAG 2.5.5 */
394
+ --control-h-lg: 3rem; /* 48px */
395
+ --control-px-sm: 1rem;
396
+ --control-px-md: 1.5rem;
397
+ --control-px-lg: 1.75rem;
398
+ /* The vertical padding is part of the axis too, and has to be: a control
399
+ whose padding alone exceeds the compact height never shrinks, because
400
+ `min-height` is a floor and not a ceiling. */
401
+ --control-py-sm: 0.5rem;
402
+ --control-py-md: 0.75rem;
403
+ --control-py-lg: 0.75rem;
404
+ /* And so is the LEADING, which is the term that guard was missing.
405
+ `min-height` is a floor, and what has to stay under it is the whole box:
406
+ the line, the padding and the border. The padding was scaled and the line
407
+ was left inheriting the body's 1.6 — so `sm` measured 20.8 + 16 + 2 = 38.8
408
+ against a 36px token, `md` 46 against 44 and `lg` 50 against 48. Every
409
+ text button in the system was two to three pixels taller than the number
410
+ documenting it, and the floor never bound because the box had already
411
+ cleared it.
412
+
413
+ One value on both densities: the font sizes do not move with density, only
414
+ the padding and the heights do, so this does not have to. It is not a
415
+ reading leading — a control's label is one line, and 1.2 leaves every size
416
+ at every density inside its own height with room to spare. The test in
417
+ `tokens.test.ts` is what keeps that true. */
418
+ --control-lh: 1.2;
419
+ --control-gap: 0.625rem;
420
+ /* Text inputs are measured separately: they are read as much as they are
421
+ hit, so their padding tracks the type rather than the target. */
422
+ --field-px: 0.875rem;
423
+ --field-py: 0.625rem;
424
+
425
+ /* A table's own row padding. Separate from the control scale because a table
426
+ row is neither a control nor a field — it is a line of text with a rule
427
+ under it, and it tightens on its own axis. */
428
+ --table-pad-y: 0.875rem;
429
+ /* `0px`, not `0`. The cell rule adds to this inside a calc, and a unitless
430
+ zero makes `calc(0 + 1.5rem)` invalid at computed-value time — the whole
431
+ declaration is dropped and every column loses its gutter in silence. */
432
+ --table-pad-x: 0px;
433
+ }
434
+
435
+ :root {
436
+
437
+ /* ─── Sidebar ────────────────────────────────────────────────────────────
438
+ The two widths a navigation rail has, and the reason they are tokens
439
+ rather than numbers inside the component: an application shell has to
440
+ reserve exactly this much beside its content, and a shell that hard-codes
441
+ 17rem while the rail believes something else is a gap or an overlap that
442
+ appears only at one window size. Both sides read the same name.
443
+
444
+ `--sidebar-w-icon` is what is left when the rail collapses to icons. It is
445
+ `--control-h-md` plus the rail's own padding, so a 44px pointer target
446
+ still fits inside it at comfortable density — a collapsed rail whose rows
447
+ are too small to hit is a rail nobody can use in the state it spends most
448
+ of its life in. */
449
+ --sidebar-w: 16rem;
450
+ --sidebar-w-icon: 3.5rem;
451
+
452
+ /* ─── Bar ────────────────────────────────────────────────────────────────
453
+ How tall the band across the top of an application is — the masthead, and
454
+ the head of the rail beside it, which has to line up with it or the two
455
+ rules meeting at the corner are two different rules.
456
+
457
+ Derived, not typed. A bar is a row of controls and the air around them, so
458
+ it is the control it seats plus six pixels above and below — the same
459
+ twelve `--sidebar-w-icon` adds to a rail's collapsed width, for the same
460
+ reason.
461
+
462
+ WHICH control depends on the pointer, and that is the whole of the second
463
+ block. A bar is chrome: its controls are `sm`, the density this system
464
+ documents as a deliberate below-the-floor size for a mouse. A finger is
465
+ not a mouse, so on a coarse pointer they grow to the 44px target WCAG
466
+ 2.5.5 asks for, and the bar has to grow with them or it clips what it
467
+ seats. Sizing it from `--control-h-md` on both is what made it too tall:
468
+ 56px of bar around 39px of search field, holding room for a target that is
469
+ not on screen when a mouse is.
470
+
471
+ 48px comfortable / 42px compact with a pointer, 56px / 48px with a finger.
472
+ A bar cannot be set to a height its own controls do not fit in.
473
+
474
+ It was five literals before, in two packages, and they did not agree:
475
+ `AppShell` said `h-14` and the documentation site said `h-16`, so the same
476
+ role was 56px in the component this system ships and 64px on the site
477
+ documenting it. `--scroll-offset` in `semantic.css` is a sixth, and the
478
+ one that shows why this matters — it is "a masthead plus a line of air"
479
+ and was written as `88px`, a number derived by hand from whichever of the
480
+ two answers its author had on screen. It now derives from this. */
481
+ --bar-h: calc(var(--control-h-sm) + 0.75rem);
482
+
483
+ /* ─── Floating surfaces ──────────────────────────────────────────────────
484
+ What a panel that FLOATS fills with, and what it does to whatever is
485
+ behind it. A dialog, a menu, a popover, a palette — the surfaces that sit
486
+ OVER the page rather than in it, and therefore the only ones with anything
487
+ behind them to treat.
488
+
489
+ Both default to the plain surface and cost nothing. `--panel-filter: none`
490
+ matters more than it looks: a `backdrop-filter` of any value, `blur(0px)`
491
+ included, promotes its element to its own compositing layer and makes it a
492
+ containing block for fixed descendants. Paid on every menu in the system,
493
+ for a theme most readers will never turn on. `none` is not a blur of zero;
494
+ it is no filter at all.
495
+
496
+ A card is deliberately NOT on this list. It sits on the page ground, so
497
+ there is nothing behind it to see through, and a card that blurs its own
498
+ background is drawing an effect rather than an object. */
499
+ --panel-bg: var(--paper);
500
+ --panel-border: var(--rule-2);
501
+ --panel-filter: none;
502
+
503
+ /* The offset under a floating panel, and it does not break Law 2: the law
504
+ says a box-shadow is never BLURRED, not that there is never one. This is
505
+ the same hard-offset idiom as `--lift`, in the rule colour rather than the
506
+ accent — every menu in the system wearing a clay drop shadow would be a
507
+ louder claim than "this sits above the page".
508
+ Two steps, because one reads as a second border: a firm edge just below the
509
+ panel and a softer one below that is a stack seen from the front, which is
510
+ the flattest way to say depth without drawing light. */
511
+ --panel-lift: 0 2px 0 0 var(--rule-2), 0 5px 0 -1px var(--rule);
512
+
513
+ /* ─── Motion ─── */
514
+ --ease: cubic-bezier(0.2, 0.7, 0.3, 1);
515
+ --fast: 0.13s;
516
+ --mid: 0.22s;
517
+ --slow: 0.34s;
518
+
519
+ /* ─── Stacking ─── seven ranks, named for what sits at each.
520
+ Every overlay in the package portals to document.body, so all of them are
521
+ siblings in the ROOT stacking context and the rank is the whole of the
522
+ decision — there is no ancestor left to nest one inside another.
523
+
524
+ Read it as a sentence: a sticky header clears the page, a drawer clears the
525
+ header, a scrim covers both, a modal sits on its scrim, an ANCHORED panel
526
+ clears the modal it was opened from, and a toast clears everything because
527
+ it is the only rank that has to survive a modal asking a question.
528
+
529
+ --z-anchored is the one that is not obvious, and it is the one that was
530
+ wrong. A popover, a menu or a select listbox is opened FROM something, and
531
+ the surface it is most often opened from is a modal — a select inside a
532
+ modal form is one of the most ordinary shapes in an application. Ranked
533
+ below the modal, as it was, the panel is painted behind the very dialog
534
+ that summoned it. The rank it replaced, --z-palette, was read by nothing:
535
+ a command palette is a Dialog, so it lands at --z-modal, and its order
536
+ against a second modal is settled by document order — which is the right
537
+ answer, because it moves a scrim and its panel together. */
538
+ --z-rule: 1;
539
+ --z-sticky: 10;
540
+ --z-drawer: 100;
541
+ --z-scrim: 200;
542
+ --z-modal: 210;
543
+ --z-anchored: 220;
544
+ --z-toast: 300;
545
+
546
+ /* ─── Focus ─── */
547
+ --focus: var(--red);
548
+ --focus-w: 2px;
549
+ --focus-off: 3px;
550
+
551
+ /* ─── Icons ─── three sizes, and no weight: a Remix Icon glyph is a filled path. */
552
+ --ico-s: 14px;
553
+ --ico-m: 16px;
554
+ --ico-l: 20px;
555
+
556
+ /* ─── Status ─── the only chroma in the system, and it is bound to state. */
557
+ --ok: #3d6b34;
558
+ --ok-soft: rgba(61, 107, 52, 0.13);
559
+ --warn: #8a5a00;
560
+ --warn-soft: rgba(138, 90, 0, 0.13);
561
+ --danger: #a83214;
562
+ --danger-soft: rgba(168, 50, 20, 0.14);
563
+ --scrim: color-mix(in srgb, var(--ink) 62%, transparent);
564
+ }
565
+
566
+ [data-mode='dark'] {
567
+ --ok: #84b47b;
568
+ --ok-soft: rgba(132, 180, 123, 0.16);
569
+ --warn: #d9a55d;
570
+ --warn-soft: rgba(217, 165, 93, 0.16);
571
+ --danger: #ee8b68;
572
+ --danger-soft: rgba(238, 139, 104, 0.16);
573
+ --scrim: color-mix(in srgb, #000 72%, transparent);
574
+ }
575
+
576
+ /* The bar, on a finger.
577
+ *
578
+ * A bar's controls are `sm` — the size this system documents as a deliberate
579
+ * below-the-floor density for a mouse — and a coarse pointer grows them to the
580
+ * 44px target WCAG 2.5.5 asks for. The bar grows with them, or it clips what it
581
+ * seats. Declared on the ROOT like the base value, so the substitution argument
582
+ * above still holds: one answer, resolved once, inherited by a rail that pins
583
+ * its own density.
584
+ */
585
+ @media (pointer: coarse) {
586
+ :root,
587
+ [data-mode='light'],
588
+ [data-surface='paper'],
589
+ [data-rules='hairline'] {
590
+ --bar-h: calc(var(--control-h-md) + 0.75rem);
591
+ }
592
+ }
593
+
594
+ [data-density='compact'] {
595
+ --control-h-sm: 1.875rem; /* 30px */
596
+ --control-h-md: 2.25rem; /* 36px — clears WCAG 2.5.8, not 2.5.5 */
597
+ --control-h-lg: 2.5rem; /* 40px */
598
+ --control-px-sm: 0.75rem;
599
+ --control-px-md: 1rem;
600
+ --control-px-lg: 1.25rem;
601
+ --control-py-sm: 0.25rem;
602
+ --control-py-md: 0.375rem;
603
+ --control-py-lg: 0.5rem;
604
+ --control-gap: 0.5rem;
605
+ --field-px: 0.625rem;
606
+ --field-py: 0.375rem;
607
+ --table-pad-y: 0.5rem;
608
+ }
609
+
610
+ /* A table can be tightened on its own, without the whole subtree going
611
+ compact — a dashboard often wants a dense grid inside comfortable chrome. */
612
+ [data-table-density='compact'] {
613
+ --table-pad-y: 0.5rem;
614
+ }
615
+
616
+ /* ==========================================================================
617
+ FORCED COLOURS
618
+ --------------------------------------------------------------------------
619
+ What a chart does when the reader has taken the palette away.
620
+
621
+ Windows High Contrast (and any forced-colours mode) remaps CSS colours to a
622
+ small set of system keywords. It does that for HTML automatically — a
623
+ tooltip's border and ground are handled without us — but it does NOT reach
624
+ inside SVG: Chrome and Edge ship `forced-color-adjust: none` on SVG by
625
+ default, and a gradient paint server is not something a browser can remap
626
+ even where it tries. So a chart that says nothing here keeps painting its
627
+ greys onto a black ground, and the reader's setting is quietly ignored.
628
+
629
+ The eight-step ramp collapses to one colour, because forced-colours has one
630
+ colour to give. That would be fatal to a system where hue carried identity,
631
+ and is survivable here for the reason the ramp is second in the first place:
632
+ TEXTURE is the primary encoding, and a hatch is still a hatch when every
633
+ series is CanvasText. This block is where that design decision gets cashed.
634
+
635
+ Scoped to the chart tokens on purpose. Restyling every component's rules and
636
+ surfaces from here would be a system-wide change wearing a chart fix.
637
+ ========================================================================== */
638
+
639
+ @media (forced-colors: active) {
640
+ :root,
641
+ [data-mode='light'],
642
+ [data-mode='dark'] {
643
+ --series-1: CanvasText;
644
+ --series-2: CanvasText;
645
+ --series-3: CanvasText;
646
+ --series-4: CanvasText;
647
+ --series-5: CanvasText;
648
+ --series-6: CanvasText;
649
+ --series-7: CanvasText;
650
+ --series-8: CanvasText;
651
+ --series-track: Canvas;
652
+
653
+ --chart-surface: Canvas;
654
+ --chart-grid: GrayText;
655
+ --chart-cursor: CanvasText;
656
+ --chart-axis: CanvasText;
657
+ --chart-track: Canvas;
658
+ --chart-pattern: GrayText;
659
+
660
+ /* Textures go to full strength — they are now the only thing separating
661
+ one series from another. The wash stays under half so two overlapping
662
+ areas still read as two. */
663
+ --chart-fill: 0.45;
664
+ --chart-texture: 1;
665
+ }
666
+ }