@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,24 @@
1
+ import { Fragment, jsx, jsxs } from "react/jsx-runtime";
2
+ function WorkbenchHero({ statement, lead, actions, stats = [], figure }) {
3
+ return /* @__PURE__ */ jsxs("section", { className: "folio-wb-hero", children: [
4
+ /* @__PURE__ */ jsxs("div", { className: "folio-wb-hero-copy", children: [
5
+ /* @__PURE__ */ jsxs("h1", { className: "folio-wb-heading folio-wb-hero-statement", children: [
6
+ /* @__PURE__ */ jsx("span", { children: statement }),
7
+ lead && /* @__PURE__ */ jsxs(Fragment, { children: [
8
+ " ",
9
+ /* @__PURE__ */ jsx("span", { className: "folio-wb-heading-lead", children: lead })
10
+ ] })
11
+ ] }),
12
+ actions && /* @__PURE__ */ jsx("div", { className: "folio-wb-hero-actions", children: actions })
13
+ ] }),
14
+ stats.length > 0 && /* @__PURE__ */ jsx("dl", { className: "folio-wb-hero-stats", children: stats.map((stat) => /* @__PURE__ */ jsxs("div", { children: [
15
+ /* @__PURE__ */ jsx("dt", { children: stat.label }),
16
+ /* @__PURE__ */ jsx("dd", { children: stat.value })
17
+ ] }, stat.id)) }),
18
+ figure && /* @__PURE__ */ jsx("div", { className: "folio-wb-hero-figure", children: figure })
19
+ ] });
20
+ }
21
+ export {
22
+ WorkbenchHero
23
+ };
24
+ //# sourceMappingURL=WorkbenchHero.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/website/Workbench/WorkbenchHero.tsx"],"sourcesContent":["import type { ReactNode } from 'react'\n\nexport interface WorkbenchStat {\n id: string\n value: ReactNode\n label: ReactNode\n}\n\nexport interface WorkbenchHeroProps {\n /** The ink clause of the statement; it is the page's h1. */\n statement: ReactNode\n /** The muted continuation of the statement. */\n lead?: ReactNode\n /** Up to two buttons or links, primary first. */\n actions?: ReactNode\n /** Small counts beside the statement, such as projects and posts. */\n stats?: WorkbenchStat[]\n /** One captioned photograph under the statement — a `WorkbenchFigure`. */\n figure?: ReactNode\n}\n\n/** The Workbench opening: a two-tone statement, its actions, a few counts and one photograph. */\nexport function WorkbenchHero({ statement, lead, actions, stats = [], figure }: WorkbenchHeroProps) {\n return (\n <section className=\"folio-wb-hero\">\n <div className=\"folio-wb-hero-copy\">\n <h1 className=\"folio-wb-heading folio-wb-hero-statement\">\n <span>{statement}</span>\n {lead && <> <span className=\"folio-wb-heading-lead\">{lead}</span></>}\n </h1>\n {actions && <div className=\"folio-wb-hero-actions\">{actions}</div>}\n </div>\n {stats.length > 0 && (\n <dl className=\"folio-wb-hero-stats\">\n {stats.map((stat) => (\n <div key={stat.id}>\n <dt>{stat.label}</dt>\n <dd>{stat.value}</dd>\n </div>\n ))}\n </dl>\n )}\n {figure && <div className=\"folio-wb-hero-figure\">{figure}</div>}\n </section>\n )\n}\n"],"mappings":"AA2BU,SACS,UADT,KACS,YADT;AALH,SAAS,cAAc,EAAE,WAAW,MAAM,SAAS,QAAQ,CAAC,GAAG,OAAO,GAAuB;AAClG,SACE,qBAAC,aAAQ,WAAU,iBACjB;AAAA,yBAAC,SAAI,WAAU,sBACb;AAAA,2BAAC,QAAG,WAAU,4CACZ;AAAA,4BAAC,UAAM,qBAAU;AAAA,QAChB,QAAQ,iCAAE;AAAA;AAAA,UAAC,oBAAC,UAAK,WAAU,yBAAyB,gBAAK;AAAA,WAAO;AAAA,SACnE;AAAA,MACC,WAAW,oBAAC,SAAI,WAAU,yBAAyB,mBAAQ;AAAA,OAC9D;AAAA,IACC,MAAM,SAAS,KACd,oBAAC,QAAG,WAAU,uBACX,gBAAM,IAAI,CAAC,SACV,qBAAC,SACC;AAAA,0BAAC,QAAI,eAAK,OAAM;AAAA,MAChB,oBAAC,QAAI,eAAK,OAAM;AAAA,SAFR,KAAK,EAGf,CACD,GACH;AAAA,IAED,UAAU,oBAAC,SAAI,WAAU,wBAAwB,kBAAO;AAAA,KAC3D;AAEJ;","names":[]}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * The Workbench preset as the attributes a host writes on `<html>`.
3
+ *
4
+ * A preset is a combination of theme axes, never a block of its own, so this
5
+ * is the whole of it: linen ground and warm ink, an ember accent for links and
6
+ * the current state, primary buttons in ink, headings in the grotesk at a quiet voice, and quiet rules. Radius, motion
7
+ * and density stay on their defaults. Spread it onto the root element:
8
+ *
9
+ * ```tsx
10
+ * <html {...WORKBENCH_THEME} data-mode="light">
11
+ * ```
12
+ */
13
+ declare const WORKBENCH_THEME: {
14
+ readonly 'data-surface': "linen";
15
+ readonly 'data-accent': "ember";
16
+ readonly 'data-action': "ink";
17
+ readonly 'data-type': "grotesk";
18
+ readonly 'data-rules': "quiet";
19
+ readonly 'data-voice': "quiet";
20
+ };
21
+
22
+ export { WORKBENCH_THEME };
@@ -0,0 +1,12 @@
1
+ const WORKBENCH_THEME = {
2
+ "data-surface": "linen",
3
+ "data-accent": "ember",
4
+ "data-action": "ink",
5
+ "data-type": "grotesk",
6
+ "data-rules": "quiet",
7
+ "data-voice": "quiet"
8
+ };
9
+ export {
10
+ WORKBENCH_THEME
11
+ };
12
+ //# sourceMappingURL=theme.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../../src/website/Workbench/theme.ts"],"sourcesContent":["/**\n * The Workbench preset as the attributes a host writes on `<html>`.\n *\n * A preset is a combination of theme axes, never a block of its own, so this\n * is the whole of it: linen ground and warm ink, an ember accent for links and\n * the current state, primary buttons in ink, headings in the grotesk at a quiet voice, and quiet rules. Radius, motion\n * and density stay on their defaults. Spread it onto the root element:\n *\n * ```tsx\n * <html {...WORKBENCH_THEME} data-mode=\"light\">\n * ```\n */\nexport const WORKBENCH_THEME = {\n 'data-surface': 'linen',\n 'data-accent': 'ember',\n 'data-action': 'ink',\n 'data-type': 'grotesk',\n 'data-rules': 'quiet',\n 'data-voice': 'quiet',\n} as const\n"],"mappings":"AAYO,MAAM,kBAAkB;AAAA,EAC7B,gBAAgB;AAAA,EAChB,eAAe;AAAA,EACf,eAAe;AAAA,EACf,aAAa;AAAA,EACb,cAAc;AAAA,EACd,cAAc;AAChB;","names":[]}
@@ -0,0 +1,38 @@
1
+ export { SiteFooter, SiteFooterGroup, SiteFooterProps, SiteLink, SiteLinkProps, SiteSectionHeading, SiteSectionHeadingProps, SiteShell, SiteShellProps } from './SiteShell/SiteShell.js';
2
+ export { NavigationSearchTrigger, NavigationSearchTriggerProps, PreferenceMenu, PreferenceMenuProps, SiteNavigation, SiteNavigationItem, SiteNavigationProps } from './SiteNavigation/SiteNavigation.js';
3
+ export { Portfolio, PortfolioCategories, PortfolioCategoriesProps, PortfolioImage, PortfolioImageProps, PortfolioList, PortfolioListProps, PortfolioProps, PortfolioRecord, PortfolioRecordProps } from './Portfolio/Portfolio.js';
4
+ export { QuestionCard, QuestionCardProps } from './Portfolio/QuestionCard.js';
5
+ export { PortfolioIndex, PortfolioIndexItem, PortfolioIndexProps } from './PortfolioIndex/PortfolioIndex.js';
6
+ export { CollectionControls, CollectionControlsProps, CollectionEmpty, CollectionEmptyProps, CollectionFilter, CollectionFooter, CollectionFooterProps, CollectionGroup, CollectionGroupProps, CollectionIntro, CollectionIntroProps, CollectionLink, CollectionList, CollectionListProps, CollectionMetadata, CollectionMetadataItem, CollectionMetadataProps, CollectionSearch, CollectionSearchProps, CollectionTally, CollectionTallyProps, ContentBand, ContentBandProps, FeaturedRecord, FeaturedRecordProps, HighlightedText, HighlightedTextProps, RecordRow, RecordRowProps, ReferenceLink, ReferenceRows, ReferenceRowsProps, TaxonomyLinks, TaxonomyLinksProps } from './Collection/Collection.js';
7
+ export { ActionBand, ActionBandProps, ArchitectureColumnNode, ArchitectureColumns, ArchitectureColumnsProps, AuthorPanel, AuthorPanelProps, CommandPiece, CommandSnippet, CommandSnippetProps, CommandTab, CommandTabs, CommandTabsProps, ContentFigure, ContentFigureProps, DetailMasthead, DetailMastheadProps, DevicePreview, DevicePreviewProps, FeaturePairs, FeaturePairsProps, MediaPlayback, MediaPlaybackProps, MobileOutline, MobileOutlineProps, OutlineItem, PreviewPair, PreviewPairProps, ReadingFigure, ReadingFigureProps, ReadingForm, ReadingFormProps, ReadingLayout, ReadingLayoutProps, ReadingLead, ReadingLeadProps, ReadingMetadataItem, ReadingPage, ReadingPageProps, ReadingPagerItem, ReadingProgress, ReadingSection, ReadingSectionProps, ReadingSurface, ReadingSurfaceProps, RecordPager, RecordPagerProps, TableOfContents, TableOfContentsProps, TokenLine, TokenLineProps, isSelfNumbered, numberToc } from './Reading/Reading.js';
8
+ export { ContactFacts, ContactFactsProps, ContactFormLabels, ContactFormValues, ContactFormView, ContactFormViewProps, CorrespondenceSection, CorrespondenceSectionProps, LocationFigure, LocationFigureProps, QuestionList, QuestionListProps } from './Contact/Contact.js';
9
+ export { MediaCollectionCard, MediaCollectionCardProps, MediaListRow, MediaListRowProps, MediaPreviewAction, MusicFeature, MusicFeatureProps, MusicSection, MusicSectionProps } from './Music/Music.js';
10
+ export { CareerRecord, CareerRecordProps, ProfileFigure, ProfileFigureProps, ProfileInterests, ProfileInterestsProps, ProfileNarrative, ProfileNarrativeProps, ProfileSection, ProfileSectionProps, ProfileSkill, ProfileSkills, ProfileSkillsProps, RecordSection, RecordSectionProps, Timeline, TimelineItem } from './Timeline/Timeline.js';
11
+ export { LoadingRecords, LoadingRecordsProps, LoadingRouteIntro, LoadingRouteIntroProps, RecoveryLinks, RecoveryLinksProps, RecoveryState, RecoveryStateProps, WebsiteLoading, WebsiteLoadingProps } from './Recovery/Recovery.js';
12
+ export { MediaCollection, MediaCollectionProps, MediaDetailLayout, MediaDetailLayoutProps, MediaGallery, MediaGalleryItem, MediaGalleryItemProps, MediaGalleryProps, MediaGallerySkeleton, MediaGallerySkeletonProps, MediaLightNote, MediaLightNoteLine, MediaLightNoteProps, MediaMapArea, MediaMapAreaList, MediaMapAreaListProps, MediaMapCanvas, MediaMapCanvasProps, MediaMapFrame, MediaMapFrameProps, MediaMapMarker, MediaMapMarkerProps, MediaMapNavigation, MediaMapNavigationProps, MediaMapPin, MediaMapPinProps, MediaMapPreview, MediaMapPreviewProps, MediaMapSection, MediaMapSectionProps, MediaMapSkeleton, MediaMasthead, MediaMastheadProps, MediaMetadata, MediaMetadataProps, MediaPager, MediaPagerItem, MediaPagerItemProps, MediaPagerProps, MediaThumbnail, MediaThumbnailProps, MediaThumbnailStrip, MediaThumbnailStripProps, PhotographFeature, PhotographFeatureProps } from './Media/Media.js';
13
+ export { MediaLightbox, MediaLightboxProps } from './Media/MediaLightbox.js';
14
+ export { LiveCount, LiveCountProps, MetricDelta, MetricDeltaProps, MetricValue, MetricValueProps, MetricsEmptyState, MetricsEmptyStateProps, MetricsList, MetricsListProps, MetricsPanel, MetricsPanelGrid, MetricsPanelGridProps, MetricsPanelProps, MetricsRange, MetricsRangeProps, MetricsSection, MetricsSectionProps } from './Metrics/Metrics.js';
15
+ export { SearchExcerpt, SearchExcerptProps, SearchPalette, SearchPaletteGroup, SearchPaletteItem, SearchPaletteProps } from './SearchPalette/SearchPalette.js';
16
+ export { ContentTable, ContentTableProps, ExternalLinkMark, ExternalLinkMarkProps, SequenceStep, StepSequence, StepSequenceProps, StepSequenceSpec } from './Content/Content.js';
17
+ export { ClipboardButton, ClipboardButtonProps, CodePanel, CodePanelProps } from './Content/CodePanel.js';
18
+ export { ActionMenu, ActionMenuItem, ActionMenuProps, ScrollControl, ScrollControlProps } from './Actions/Actions.js';
19
+ export { ActionProposal, ActionProposalProps, ConversationAnswer, ConversationAnswerHeading, ConversationAnswerProps, ConversationControl, ConversationDock, ConversationDockCorner, ConversationDockProps, ConversationDockWelcome, ConversationDockWelcomeProps, ConversationFacts, ConversationFactsProps, ConversationLauncher, ConversationLauncherProps, ConversationLayout, ConversationLayoutProps, ConversationLog, ConversationLogProps, ConversationProse, ConversationQuote, ConversationQuoteProps, ConversationResizeHandle, ConversationResizeHandleProps, ConversationRoomLink, ConversationSource, ConversationSources, ConversationSourcesProps, ConversationSuggestion, ConversationSuggestions, ConversationSuggestionsProps, ConversationThread, ConversationThreadProps, ConversationTurn, ConversationTurnProps, QuestionComposer, QuestionComposerProps, SelectionToolbar, SelectionToolbarAction, SelectionToolbarProps, StreamingCaret } from './Conversation/Conversation.js';
20
+ export { ActivityTrace, ActivityTraceItem, ActivityTraceProps, EvidenceDisclosure, EvidenceDisclosureProps, EvidenceDuration, EvidenceDurations, EvidenceDurationsProps, EvidenceFacts, EvidenceFactsProps, EvidenceMeter, EvidenceMeterProps, EvidencePanel, EvidencePanelProps, EvidenceQuery, EvidenceQueryProps, EvidenceScore, EvidenceScores, EvidenceScoresProps, EvidenceSelection, EvidenceSelectionProps, EvidenceStage, EvidenceStageProps, EvidenceStages, EvidenceState, EvidenceStatus, EvidenceStatusProps, EvidenceSummary, EvidenceSummaryProps, SignalFigure, SignalFigureProps } from './Evidence/Evidence.js';
21
+ export { Reveal, RevealProps } from './Workbench/Reveal.js';
22
+ export { WorkbenchSection, WorkbenchSectionProps } from './Workbench/Workbench.js';
23
+ export { WorkbenchHero, WorkbenchHeroProps, WorkbenchStat } from './Workbench/WorkbenchHero.js';
24
+ export { WorkbenchFigure, WorkbenchFigureProps } from './Workbench/WorkbenchFigure.js';
25
+ export { ToolStrip, ToolStripItem, ToolStripProps } from './Workbench/ToolStrip.js';
26
+ export { WorkbenchCard, WorkbenchCardGrid, WorkbenchCardGridProps, WorkbenchCardProps, WorkbenchTile, WorkbenchTileProps } from './Workbench/WorkbenchCard.js';
27
+ export { WorkbenchEntries, WorkbenchEntriesProps, WorkbenchEntry } from './Workbench/WorkbenchEntries.js';
28
+ export { Chronology, ChronologyItem, ChronologyProps } from './Workbench/Chronology.js';
29
+ export { PhotoMosaic, PhotoMosaicProps } from './Workbench/PhotoMosaic.js';
30
+ export { ContactRow, ContactRowProps } from './Workbench/ContactRow.js';
31
+ export { WORKBENCH_THEME } from './Workbench/theme.js';
32
+ import 'react';
33
+ import '../components/DescriptionList/DescriptionList.js';
34
+ import '../components/ErrorState/ErrorState.js';
35
+ import '../components/Heading/Heading.js';
36
+ import '../components/Button/Button.js';
37
+ import '../components/Dialog/Dialog.js';
38
+ import '@radix-ui/react-dialog';
@@ -0,0 +1,32 @@
1
+ export * from "./SiteShell/SiteShell.js";
2
+ export * from "./SiteNavigation/SiteNavigation.js";
3
+ export * from "./Portfolio/Portfolio.js";
4
+ export * from "./Portfolio/QuestionCard.js";
5
+ export * from "./PortfolioIndex/PortfolioIndex.js";
6
+ export * from "./Collection/Collection.js";
7
+ export * from "./Reading/Reading.js";
8
+ export * from "./Contact/Contact.js";
9
+ export * from "./Music/Music.js";
10
+ export * from "./Timeline/Timeline.js";
11
+ export * from "./Recovery/Recovery.js";
12
+ export * from "./Media/Media.js";
13
+ export * from "./Media/MediaLightbox.js";
14
+ export * from "./Metrics/Metrics.js";
15
+ export * from "./SearchPalette/SearchPalette.js";
16
+ export * from "./Content/Content.js";
17
+ export * from "./Content/CodePanel.js";
18
+ export * from "./Actions/Actions.js";
19
+ export * from "./Conversation/Conversation.js";
20
+ export * from "./Evidence/Evidence.js";
21
+ export * from "./Workbench/Reveal.js";
22
+ export * from "./Workbench/Workbench.js";
23
+ export * from "./Workbench/WorkbenchHero.js";
24
+ export * from "./Workbench/WorkbenchFigure.js";
25
+ export * from "./Workbench/ToolStrip.js";
26
+ export * from "./Workbench/WorkbenchCard.js";
27
+ export * from "./Workbench/WorkbenchEntries.js";
28
+ export * from "./Workbench/Chronology.js";
29
+ export * from "./Workbench/PhotoMosaic.js";
30
+ export * from "./Workbench/ContactRow.js";
31
+ export * from "./Workbench/theme.js";
32
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../../src/website/index.ts"],"sourcesContent":["export * from './SiteShell/SiteShell'\nexport * from './SiteNavigation/SiteNavigation'\nexport * from './Portfolio/Portfolio'\nexport * from './Portfolio/QuestionCard'\nexport * from './PortfolioIndex/PortfolioIndex'\nexport * from './Collection/Collection'\nexport * from './Reading/Reading'\nexport * from './Contact/Contact'\nexport * from './Music/Music'\nexport * from './Timeline/Timeline'\nexport * from './Recovery/Recovery'\nexport * from './Media/Media'\nexport * from './Media/MediaLightbox'\nexport * from './Metrics/Metrics'\nexport * from './SearchPalette/SearchPalette'\nexport * from './Content/Content'\nexport * from './Content/CodePanel'\nexport * from './Actions/Actions'\nexport * from './Conversation/Conversation'\nexport * from './Evidence/Evidence'\nexport * from './Workbench/Reveal'\nexport * from './Workbench/Workbench'\nexport * from './Workbench/WorkbenchHero'\nexport * from './Workbench/WorkbenchFigure'\nexport * from './Workbench/ToolStrip'\nexport * from './Workbench/WorkbenchCard'\nexport * from './Workbench/WorkbenchEntries'\nexport * from './Workbench/Chronology'\nexport * from './Workbench/PhotoMosaic'\nexport * from './Workbench/ContactRow'\nexport * from './Workbench/theme'\n"],"mappings":"AAAA,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;AACd,cAAc;","names":[]}
@@ -0,0 +1,6 @@
1
+ .folio-action-menu { inline-size: 15rem; max-inline-size: calc(100vw - 1rem); max-block-size: min(32rem, var(--radix-dropdown-menu-content-available-height)); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
2
+ .folio-action-menu-item { min-block-size: 44px; }
3
+ .folio-scroll-control { transition: opacity var(--duration-fast) var(--ease); }
4
+ .folio-scroll-control-hidden { opacity: 0; pointer-events: none; }
5
+ @media (prefers-reduced-motion: reduce) { .folio-scroll-control { transition: none; } }
6
+ [data-motion='none'] .folio-scroll-control { transition: none; }
@@ -0,0 +1,46 @@
1
+ /*
2
+ * Document defaults for a host whose whole page is a website, published as
3
+ * `website-base.css`.
4
+ *
5
+ * Opt-in, and deliberately not part of `website.css`: every rule here reaches
6
+ * past the compositions to the document — the body's type and ground, heading
7
+ * and paragraph margins, link colour, the scrollbar gutter, and one focus ring
8
+ * for every focusable element. An application that renders a composition inside
9
+ * its own chrome keeps its own defaults by not importing this file.
10
+ *
11
+ * All of it sits in the base layer, so any utility still wins over it.
12
+ */
13
+ @layer base {
14
+ html { -webkit-text-size-adjust: 100%; scrollbar-gutter: stable; }
15
+ body {
16
+ margin: 0;
17
+ background: var(--paper);
18
+ color: var(--ink);
19
+ font-family: var(--sans);
20
+ font-size: clamp(15.5px, 1.05vw, 17px);
21
+ line-height: 1.62;
22
+ -webkit-font-smoothing: antialiased;
23
+ text-rendering: optimizeLegibility;
24
+ }
25
+ h1, h2, h3, h4 { margin: 0; font-weight: 400; }
26
+ p { margin: 0; }
27
+ a { color: inherit; }
28
+ :lang(zh) {
29
+ text-spacing-trim: space-first;
30
+ text-autospace: normal;
31
+ font-synthesis-style: none;
32
+ }
33
+
34
+ /* The site-wide ring the compositions are drawn against.
35
+
36
+ Layered, because unlayered it beat every utility whatever its specificity:
37
+ the `Command` input asks for `outline-none` and still drew a clipped square.
38
+ `:is()` rather than `:where()` so it outranks the core `:focus-visible` ring
39
+ in this same layer whichever stylesheet loads last, while any composition
40
+ rule and any utility still outranks it. `--website-focus` is defined in
41
+ `website.css`; without it the ring takes the core focus colour. */
42
+ :is(a, button, input, textarea, select, summary, [tabindex]):focus-visible {
43
+ outline: var(--focus-w) solid var(--website-focus, var(--focus));
44
+ outline-offset: 3px;
45
+ }
46
+ }
@@ -0,0 +1,89 @@
1
+ .folio-collection-frame{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}
2
+ .folio-content-band{background:var(--paper);color:var(--ink)}
3
+ .folio-content-band[data-tone=muted]{background:var(--paper-2)}
4
+ .folio-content-band[data-tone=feature]{background:var(--feature-surface);color:var(--on-feature)}
5
+ .folio-content-band[data-spacing=content]{padding-block:0 clamp(4rem,8vw,7rem)}
6
+ .folio-content-band[data-spacing=section]{padding-block:clamp(3rem,7vw,6rem)}
7
+ .folio-collection-intro{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.65fr);align-items:center;gap:clamp(2rem,5vw,5rem);padding-block:clamp(3.5rem,8vw,6.5rem) clamp(2.5rem,5vw,4.5rem)}
8
+ .folio-collection-intro:has(>div:only-child){grid-template-columns:minmax(0,1fr)}
9
+ .folio-collection-intro h1{margin:0;font-family:var(--serif-i18n,var(--font-heading));font-weight:var(--display-weight);font-size:var(--fs-title);line-height:1.05;letter-spacing:-.032em;text-wrap:balance}
10
+ .folio-collection-intro>div:first-child>p{max-width:54ch;margin-block:1.5rem 0;color:var(--ink-2);font-size:clamp(1.0625rem,1.6vw,1.25rem);line-height:1.65;text-wrap:pretty}
11
+ .folio-collection-intro[data-compact] h1{font-size:var(--fs-lead)}
12
+ .folio-collection-intro-media{min-width:0}
13
+ .folio-collection-intro-media img{width:100%;height:auto}
14
+ .folio-collection-context,.folio-record-context,.folio-record-metadata,.folio-collection-count{font-family:var(--mono-i18n,var(--label-font));font-size:.6875rem;line-height:1.65;letter-spacing:calc(.09em * var(--label-tracking-scale));color:var(--ink-3-aa)}
15
+ .folio-collection-context{margin-block-end:1rem;text-transform:var(--label-case)}
16
+ .folio-collection-actions{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;margin-block-start:1.5rem}
17
+ .folio-collection-metadata{display:flex;flex-wrap:wrap;gap:1.5rem 3rem;margin:0;padding-block:1.25rem;border-block:1px solid var(--rule)}
18
+ .folio-collection-metadata dt{font-family:var(--mono-i18n,var(--font-mono));font-size:.6875rem;color:var(--ink-3-aa)}
19
+ .folio-collection-metadata dd{margin:.5rem 0 0;color:var(--ink)}
20
+ .folio-collection-group{padding-block-start:clamp(3rem,7vw,6rem)}
21
+ .folio-collection-group[data-compact]{padding-block-start:1.5rem}
22
+ .folio-collection-group-heading{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:1rem;border-block-end:1px solid var(--rule-hard);padding-block-end:1rem;margin-block-end:1rem}
23
+ .folio-collection-group-heading h2{margin:0;font-family:var(--serif-i18n,var(--font-heading));font-weight:var(--display-weight);font-size:var(--fs-lead);line-height:1.1;letter-spacing:-.028em}
24
+ .folio-collection-group-heading>span{font-family:var(--mono-i18n,var(--font-mono));font-size:.6875rem;color:var(--ink-3-aa)}
25
+ .folio-collection-controls{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;border-block:1px solid var(--rule);padding-block:1rem}
26
+ .folio-collection-controls[data-quiet]{border:0}
27
+ .folio-collection-filters{display:flex;flex-wrap:wrap;align-items:center;gap:.375rem}
28
+ .folio-collection-filters>.folio-collection-context{margin:0 1rem 0 0}
29
+ .folio-collection-count{margin-inline-start:.25rem;letter-spacing:normal}
30
+ .folio-collection-search{display:flex;align-items:center;gap:.5rem;min-width:0;max-width:24rem;flex:1 1 16rem}
31
+ .folio-collection-search>div{min-width:0;flex:1;gap:0}
32
+ .folio-collection-search input{width:100%;min-width:0;min-height:44px}
33
+ .folio-collection-highlight{background:var(--accent-muted);color:var(--accent-on-muted);border-radius:var(--radius-sm);padding-inline:.125rem}
34
+ .folio-record{border-block-end:1px solid var(--rule)}
35
+ .folio-record-link{display:grid;grid-template-columns:9.25rem minmax(0,1fr) minmax(7rem,auto);gap:1.75rem;padding-block:1.875rem;color:inherit;text-decoration:none;align-items:start}
36
+ .folio-record-link:focus-visible{outline:var(--focus-w) solid var(--focus);outline-offset:var(--focus-off)}
37
+ .folio-record-media{position:relative;height:6.5rem;overflow:hidden;border:1px solid var(--rule);border-radius:var(--radius-sm);background:var(--paper-2)}
38
+ .folio-record-media[data-empty]{border:0;background:transparent}
39
+ .folio-record-media img{display:block;width:100%;height:100%;object-fit:cover}
40
+ .folio-record-copy{min-width:0}
41
+ .folio-record-copy h2,.folio-record-copy h3{margin:.375rem 0 0;font-family:var(--serif-i18n,var(--font-heading));font-size:var(--fs-heading);font-weight:var(--display-weight);line-height:1.16;letter-spacing:-.022em}
42
+ .folio-record-link:hover h2,.folio-record-link:hover h3{color:var(--ink-2)}
43
+ .folio-record-context{display:flex;flex-wrap:wrap;gap:.75rem}
44
+ .folio-record-summary{max-width:var(--measure-record,62ch);margin:.875rem 0 0;color:var(--ink-2);line-height:1.66;text-wrap:pretty}
45
+ .folio-record-metadata{margin-block-start:1rem}
46
+ .folio-record-metadata ul{display:flex;flex-wrap:wrap;gap:.5rem;list-style:none;margin:0;padding:0}
47
+ .folio-record-trailing{font-family:var(--mono-i18n,var(--font-mono));font-size:.6875rem;line-height:1.8;text-align:end;color:var(--ink-3-aa)}
48
+ .folio-record-context,.folio-record-metadata,.folio-record-trailing,.folio-collection-metadata dt,.folio-collection-group-heading>span{font-family:var(--sans);font-size:.75rem;letter-spacing:normal;font-variant-numeric:tabular-nums}
49
+ .folio-record-index{font-family:var(--mono-i18n,var(--font-mono));font-size:.6875rem;color:var(--ink-3-aa)}
50
+ .folio-record[data-variant=editorial][data-indexed] .folio-record-link{grid-template-columns:2rem 9.25rem minmax(0,1fr) minmax(7rem,auto)}
51
+ .folio-record[data-variant=media] .folio-record-link{grid-template-columns:15.375rem minmax(0,1fr) auto}
52
+ .folio-record[data-variant=media][data-indexed] .folio-record-link{grid-template-columns:2rem 15.375rem minmax(0,1fr) auto}
53
+ .folio-record[data-variant=media] .folio-record-media{height:9.625rem}
54
+ .folio-record[data-variant=compact] .folio-record-link{grid-template-columns:minmax(0,1fr) auto;padding-block:1.125rem}
55
+ .folio-record[data-variant=compact][data-indexed] .folio-record-link{grid-template-columns:2.25rem minmax(0,1fr) auto}
56
+ .folio-record[data-variant=compact] h2,.folio-record[data-variant=compact] h3{font-family:var(--mono-i18n,var(--font-mono));font-size:.9375rem;font-weight:500;line-height:1.6;letter-spacing:normal}
57
+ .folio-record-subtitle{font-family:var(--mono-i18n,var(--font-mono));font-size:.6875rem;line-height:1.6;color:var(--ink-3-aa);overflow-wrap:anywhere}
58
+ .folio-featured-record{display:grid;grid-template-columns:minmax(0,1.08fr) minmax(0,.92fr);gap:clamp(2rem,6vw,6rem);align-items:center;padding-block:2.5rem clamp(3rem,6vw,5.5rem);border-block-end:1px solid var(--rule)}
59
+ .folio-featured-record-media{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--paper-2);border-radius:var(--radius-sm)}
60
+ .folio-featured-record-media>a{display:block;width:100%;height:100%}
61
+ .folio-featured-record-media img{width:100%;height:100%;object-fit:cover}
62
+ .folio-featured-record h2{margin-block:1.125rem 0;font-family:var(--serif-i18n,var(--font-heading));font-size:var(--fs-lead);font-weight:var(--display-weight);line-height:1.1;letter-spacing:-.028em}
63
+ .folio-featured-record h2 a{display:inline-flex;align-items:center;min-height:44px;color:inherit;text-decoration:none}
64
+ .folio-featured-record p{max-width:49ch;margin-block:1.25rem 0;color:var(--ink-2);line-height:1.7}
65
+ .folio-collection-footer{padding-block-start:clamp(2rem,5vw,4rem)}
66
+ .folio-collection-footer>div{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:1rem 2rem}
67
+ .folio-taxonomy-links{display:flex;flex-wrap:wrap;gap:.5rem;margin-block:1.5rem}
68
+ .folio-reference-rows{margin:0;border-block-start:1px solid var(--rule-hard)}
69
+ .folio-reference-rows>div{display:grid;grid-template-columns:minmax(10rem,1fr) minmax(0,3fr);gap:1.5rem;padding-block:1.5rem;border-block-end:1px solid var(--rule)}
70
+ .folio-reference-rows dt{font-family:var(--mono-i18n,var(--font-mono));font-size:.75rem;color:var(--ink-3-aa)}
71
+ .folio-reference-rows dt p{font-family:var(--sans);font-size:.8125rem;line-height:1.6;margin-block:.5rem 0}
72
+ .folio-reference-rows dd{margin:0;min-width:0}
73
+ /* The enclosing row owns the divider when structured content is nested. */
74
+ .folio-reference-rows>div>dd>:is(.folio-feature-pairs,.folio-reference-rows){border-block-start:0}
75
+ .folio-reference-rows>div>dd>.folio-feature-pairs{row-gap:1.5rem}
76
+ .folio-reference-rows>div>dd>.folio-feature-pairs>div{padding-block:0;border-block-end:0}
77
+ .folio-reference-rows>div>dd>.folio-reference-rows>div:first-child{padding-block-start:0}
78
+ .folio-reference-rows>div>dd>.folio-reference-rows>div:last-child{padding-block-end:0;border-block-end:0}
79
+ .folio-reference-rows + .folio-collection-controls,
80
+ .folio-reference-rows + :is(div,section)>.folio-collection-controls:first-child{border-block-start:0}
81
+ .folio-collection-group-heading ~ .folio-reference-rows{border-block-start:0}
82
+ @media(max-width:900px){.folio-collection-intro,.folio-featured-record{grid-template-columns:1fr}.folio-record[data-variant=media] .folio-record-link,.folio-record[data-variant=media][data-indexed] .folio-record-link{grid-template-columns:10rem minmax(0,1fr) auto}.folio-record[data-variant=media] .folio-record-index{display:none}}
83
+ @media(max-width:640px){.folio-collection-controls{align-items:stretch}.folio-collection-search{max-width:none}.folio-record[data-variant] .folio-record-link,.folio-record[data-variant][data-indexed] .folio-record-link{grid-template-columns:minmax(0,1fr);gap:1rem}.folio-record-media,.folio-record-index{display:none}.folio-record[data-variant=media] .folio-record-media:not([data-empty]){display:block;height:auto;aspect-ratio:16/9}.folio-record-trailing{text-align:start}.folio-reference-rows>div{grid-template-columns:1fr}.folio-collection-intro{padding-block-start:3.5rem}}
84
+ :lang(zh) :is(.folio-collection-intro h1,.folio-record-copy h2,.folio-record-copy h3,.folio-featured-record h2,.folio-collection-group h2){letter-spacing:var(--ls-cjk,normal);line-height:1.35}
85
+ .folio-collection-tally{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:.75rem 1.5rem;margin:0;font-family:var(--sans);font-size:.8125rem;font-weight:400;line-height:1.5;letter-spacing:normal;color:var(--ink-3-aa);font-variant-numeric:tabular-nums}
86
+ .folio-collection-tally>span{display:inline-flex;align-items:center;padding:.5rem .875rem;border:1px solid var(--rule);border-radius:var(--radius-pill);background:var(--paper-2)}
87
+ @media(max-width:767px){.folio-collection-tally{justify-content:flex-start}}
88
+ .folio-collection-list{list-style:none;margin:0;padding:0}
89
+ .folio-collection-list>li{min-width:0}
@@ -0,0 +1,29 @@
1
+ .folio-correspondence {
2
+ display: grid;
3
+ align-items: start;
4
+ gap: 3rem;
5
+ border-block-start: 1px solid var(--rule-hard);
6
+ padding-block: clamp(2.5rem, 5vw, 4rem) clamp(4rem, 8vw, 7rem);
7
+ }
8
+ .folio-contact-form, .folio-contact-facts { min-inline-size: 0; }
9
+ .folio-contact-form__fields { display: grid; gap: 2rem; border-block-start: 1px solid var(--rule-hard); padding-block-start: 2rem; }
10
+ .folio-contact-form__identity { display: grid; gap: 2rem; }
11
+ .folio-contact-form__actions { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.25rem; }
12
+ .folio-contact-facts__links { display: flex; flex-wrap: wrap; gap: .5rem 1rem; margin-block-start: 1rem; }
13
+ .folio-question-list__items { border-block-start: 1px solid var(--rule-hard); }
14
+ .folio-question-list__item { display: grid; gap: 1rem; padding-block: 1.5rem; border-block-end: 1px solid var(--rule); }
15
+ .folio-location-figure { margin: 0; }
16
+ .folio-location-figure__map { position: relative; aspect-ratio: 16 / 10; overflow: hidden; border-radius: var(--radius-sm); background: var(--paper-2); }
17
+ .folio-location-figure__map > img { position: absolute; inset: 0; inline-size: 100%; block-size: 100%; object-fit: cover; }
18
+ .folio-location-figure__crosshair::before, .folio-location-figure__crosshair::after { content: ''; position: absolute; background: var(--rule-2); }
19
+ .folio-location-figure__crosshair::before { inset-block: 0; inset-inline-start: 50%; inline-size: 1px; }
20
+ .folio-location-figure__crosshair::after { inset-inline: 0; inset-block-start: 50%; block-size: 1px; }
21
+ .folio-location-figure__marker { position: absolute; inset-inline-start: 50%; inset-block-start: 50%; inline-size: .875rem; block-size: .875rem; border-radius: var(--radius-pill); border: 2px solid var(--paper); background: var(--ink); outline: 1px solid var(--ink); translate: -50% -50%; }
22
+ [dir='rtl'] .folio-location-figure__marker { translate: 50% -50%; }
23
+ .folio-location-figure__caption { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: .25rem 1rem; margin-block-start: .75rem; border-block-start: 1px solid var(--rule); padding-block-start: .75rem; }
24
+ @media (min-width: 640px) { .folio-contact-form__identity { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
25
+ @media (min-width: 768px) { .folio-question-list__item { grid-template-columns: minmax(12rem, 4fr) minmax(0, 8fr); gap: 2rem; } }
26
+ @media (min-width: 901px) {
27
+ .folio-correspondence { grid-template-columns: minmax(16rem, 4fr) minmax(0, 8fr); gap: clamp(3rem, 7vw, 7rem); }
28
+ .folio-correspondence[data-aside-position='end'] { grid-template-columns: minmax(0, 8fr) minmax(18rem, 4fr); }
29
+ }
@@ -0,0 +1,20 @@
1
+ .folio-step-sequence { margin: 0; }
2
+ /* A sequence's anchor is emphasis, not progress, so it takes the primary
3
+ action's fill: the accent by default, ink where `data-action` says so. */
4
+ .folio-sequence-step[data-anchor] .folio-sequence-counter { border-color: var(--action); background: var(--action); color: var(--action-foreground); }
5
+ /* The rail itself is the core Steps rendering; only what Steps has no slot for lives here. The column's own 0.25rem gap plus this margin keeps tags 0.625rem under the note. */
6
+ .folio-sequence-tags { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-block-start: 0.375rem; }
7
+ .folio-sequence-caption { max-inline-size: 62ch; margin-block-start: 1.5rem; padding-block-start: 1rem; border-block-start: 1px solid var(--border-subtle); color: var(--foreground-muted); font-size: 0.875rem; line-height: 1.65; }
8
+ .folio-content-table { overflow-x: auto; scrollbar-width: thin; }
9
+ .folio-content-table:focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }
10
+ .folio-external-link-mark { display: inline-block; margin-inline-start: 0.2em; font-family: var(--font-sans); font-size: 0.8em; }
11
+ .folio-code-panel,
12
+ figure:has(> .folio-code-panel-head) { min-inline-size: 0; margin-block: 2rem; margin-inline: 0; overflow: hidden; border: 1px solid var(--border-subtle); border-radius: var(--radius); background: var(--background); }
13
+ .folio-code-panel-head { display: flex; align-items: center; justify-content: space-between; gap: 0.75rem; padding-block: 0.25rem; padding-inline: 1rem 0.375rem; border-block-end: 1px solid var(--border-subtle); background: var(--background-elevated); }
14
+ .folio-code-panel-head > span { color: var(--secondary-text); font-family: var(--label-font); font-size: 0.625rem; letter-spacing: calc(0.14em * var(--label-tracking-scale)); }
15
+ .folio-clipboard-button { min-inline-size: 44px; min-block-size: 44px; }
16
+ pre.folio-code-panel-pre,
17
+ [data-folio-article] pre.folio-code-panel-pre { min-inline-size: 0; margin: 0; padding: 1rem 1.125rem; overflow-x: auto; border: 0; border-radius: 0; background: var(--background); color: var(--foreground); font-family: var(--font-mono); font-size: 0.8125rem; line-height: 1.7; scrollbar-width: thin; }
18
+ pre.folio-code-panel-pre code { display: block; inline-size: fit-content; min-inline-size: 100%; padding: 0; border: 0; border-radius: 0; background: transparent; font: inherit; }
19
+ pre.folio-code-panel-pre [data-line] { display: inline-block; min-inline-size: 100%; min-block-size: 1.7em; }
20
+ pre.folio-code-panel-pre:focus-visible { outline: 2px solid var(--focus); outline-offset: -2px; }
@@ -0,0 +1,91 @@
1
+ /* Shared interaction density and focus treatment for public reading surfaces. */
2
+ .folio-collection-controls { gap: .75rem 1.25rem; padding-block: .75rem; }
3
+ .folio-collection-filters { gap: .25rem; }
4
+ .folio-collection-filters>button { min-inline-size: 44px; min-block-size: 34px; padding: .375rem .625rem; font-size: .8125rem; border-radius: var(--radius-sm); }
5
+ .folio-collection-search { gap: .5rem; flex: 0 1 16rem; max-inline-size: 18rem; padding: 0 .625rem; border: 1px solid var(--rule); border-radius: var(--radius-sm); background: var(--paper); }
6
+ .folio-collection-search:focus-within { border-color: var(--website-focus); }
7
+ .folio-collection-search>svg { flex: none; color: var(--ink-3-aa); }
8
+ .folio-collection-search input { min-inline-size: 0; min-block-size: 34px; block-size: 34px; flex: 1; padding: 0; border: 0; border-radius: 0; background: transparent; font-size: .8125rem; box-shadow: none; }
9
+ .folio-collection-search input:focus,.folio-collection-search input:focus-visible { outline: none; box-shadow: none; }
10
+ .folio-collection-search input::-webkit-search-cancel-button { -webkit-appearance: none; }
11
+ .folio-collection-search>button { min-inline-size: 28px; min-block-size: 28px; inline-size: 28px; block-size: 28px; }
12
+ .folio-reference-link { display: inline-flex; align-items: center; gap: .375rem; min-block-size: 32px; max-inline-size: 100%; padding: .25rem 0; font-family: var(--sans); font-size: .8125rem; color: var(--ink-2); text-decoration: none; }
13
+ .folio-reference-link>span { overflow-wrap: anywhere; }
14
+ .folio-reference-link>svg { flex: none; }
15
+ .folio-reference-link:hover>span { text-decoration: underline; text-underline-offset: 4px; text-decoration-color: var(--rule-2); }
16
+ .folio-reference-link:focus-visible { outline: 1px solid var(--rule-2); outline-offset: 2px; border-radius: 2px; }
17
+ .folio-command-tabs [role=tab] { min-block-size: 34px; padding: .375rem .625rem; font-size: .75rem; }
18
+ :is(.folio-command-tabs,.folio-command-snippet) [role=group] { padding: .625rem .75rem; }
19
+ :is(.folio-command-tabs,.folio-command-snippet) pre { font-size: .78125rem; line-height: 1.6; }
20
+ :is(.folio-command-tabs [role=tabpanel],.folio-command-snippet) button { min-inline-size: 28px; min-block-size: 28px; inline-size: 28px; block-size: 28px; }
21
+ .folio-command-tabs [role=tabpanel] { padding-block-start: .75rem; }
22
+ .folio-record[data-variant=compact] .folio-record-link { padding-block: 1rem; gap: 1rem; }
23
+ .folio-record[data-variant=compact] :is(h2,h3) { font-family: var(--sans); font-size: .875rem; margin-block-start: 0; }
24
+ .folio-record[data-variant=compact] .folio-record-summary { font-size: .8125rem; margin-block-start: .375rem; line-height: 1.7; }
25
+ @media (max-width: 640px) { .folio-collection-search { flex-basis: auto; inline-size: 100%; max-inline-size: none; } }
26
+ @media (pointer: coarse) {
27
+ .folio-collection-filters>button,.folio-collection-search input,.folio-reference-link,.folio-command-tabs [role=tab] { min-block-size: 44px; }
28
+ .folio-collection-search>button,:is(.folio-command-tabs [role=tabpanel],.folio-command-snippet) button { min-inline-size: 44px; min-block-size: 44px; }
29
+ :is(.folio-command-tabs [role=tabpanel],.folio-command-snippet) div:has(>button[aria-label]) { padding-block: 0; }
30
+ }
31
+ .folio-selection-toolbar { animation: folio-fade-in var(--duration-fast) var(--ease); }
32
+ /* The site-wide ring that reads this colour lives in `website-base.css`; the
33
+ scoped rules below read it too. */
34
+ :root { --website-focus: color-mix(in srgb, var(--ink) 60%, var(--paper)); }
35
+ .folio-site-navigation-inner { min-block-size: 3.75rem; }
36
+ .folio-site-navigation .folio-navigation-search {
37
+ min-block-size: 34px;
38
+ block-size: 34px;
39
+ inline-size: clamp(9rem, 14vw, 12rem);
40
+ padding-inline: .75rem;
41
+ background: var(--paper);
42
+ border-radius: var(--radius-sm);
43
+ font-size: .8125rem;
44
+ }
45
+ .folio-navigation-search kbd { border: 0; background: transparent; padding: 0; }
46
+ .folio-site-navigation button:focus-visible { outline-color: var(--website-focus); outline-offset: 2px; }
47
+ .folio-site-navigation button:focus:not(:focus-visible) { outline: none; }
48
+ .folio-site-navigation .folio-navigation-search:focus-visible { outline: none; background: var(--paper-2); box-shadow: inset 0 0 0 1px var(--website-focus); }
49
+ .folio-question-card form { padding: .375rem; border-radius: var(--radius-md); align-items: center; gap: .375rem; }
50
+ .folio-question-card form:focus-within { border-color: var(--website-focus); box-shadow: 0 2px 8px color-mix(in srgb, var(--ink) 5%, transparent); }
51
+ .folio-question-card form>button { border-radius: 50%; inline-size: 44px; min-inline-size: 44px; block-size: 44px; min-block-size: 44px; }
52
+ .folio-question-card form>button:disabled { background: var(--paper-2); color: var(--ink-3-aa); opacity: 1; border-color: var(--rule); }
53
+ .folio-question-card form input:focus,
54
+ .folio-question-card form input:focus-visible { outline: none; box-shadow: none; border: 0; }
55
+ .folio-question-card form input { border-radius: 0; }
56
+ .folio-selection-toolbar { gap: 0; padding: .25rem; border-color: var(--rule-2); border-radius: var(--radius-md); box-shadow: 0 4px 16px color-mix(in srgb, var(--ink) 9%, transparent); }
57
+ .folio-selection-toolbar > button,
58
+ .folio-selection-toolbar > button:first-child { min-block-size: 34px; background: transparent; color: var(--ink-2); border: 0; border-radius: var(--radius-sm); padding: .375rem .75rem; font-family: var(--sans); font-size: .8125rem; font-weight: 400; }
59
+ .folio-selection-toolbar > button + button { border-inline-start: 1px solid var(--rule); border-start-start-radius: 0; border-end-start-radius: 0; }
60
+ .folio-selection-toolbar > button:hover { background: var(--paper-2); color: var(--ink); }
61
+ /* The menus the compositions open, and no others. A menu portals to <body>, so
62
+ it cannot be scoped by an ancestor; it carries its composition's class
63
+ instead, and a host's own DropdownMenu keeps the primitive's look. */
64
+ :is(.folio-action-menu, .folio-site-preference-menu)[data-folio-menu] { padding: .375rem; border-color: var(--rule); border-radius: var(--radius-md); background: var(--paper); box-shadow: 0 4px 20px color-mix(in srgb, var(--ink) 8%, transparent); backdrop-filter: none; }
65
+ :is(.folio-action-menu, .folio-site-preference-menu)[data-folio-menu]:focus { outline: none; }
66
+ :is(.folio-action-menu, .folio-site-preference-menu)[data-folio-menu] [role='menuitem'],
67
+ .folio-site-preference-item { min-block-size: 36px; font-family: var(--sans); font-size: .8125rem; font-weight: 400; border-radius: var(--radius-sm); }
68
+ .folio-portfolio-index [role='tab'] > span { color: var(--ink-3-aa); background: transparent; border: 0; font-family: var(--sans); font-size: .75rem; font-weight: 400; font-variant-numeric: tabular-nums; }
69
+ .folio-portfolio-image[data-natural] .folio-portfolio-image-frame { aspect-ratio: auto; background: transparent; }
70
+ .folio-portfolio-image[data-natural] img { position: static; display: block; inline-size: 100%; block-size: auto; object-fit: contain; }
71
+ .folio-portfolio-list[data-variant='thumbnails'] > div,
72
+ .folio-portfolio-list[data-variant='frames'] > div { align-items: start; }
73
+ @media (max-width: 599px) {
74
+ .folio-site-navigation .folio-navigation-search { inline-size: auto; }
75
+ .folio-collection-intro { padding-block-start: 6rem; }
76
+ }
77
+ @media (max-width: 40rem) {
78
+ /* Safari zooms a page when the field it focuses is under 16px. Keep the
79
+ surrounding compact composition, but make the editable text legible. */
80
+ .folio-collection-search input,
81
+ .folio-question-card form input { font-size: 1rem; }
82
+ }
83
+ @media (max-width: 359px) {
84
+ .folio-site-navigation .folio-navigation-search { inline-size: 44px; }
85
+ }
86
+ @media (pointer: coarse) {
87
+ .folio-site-navigation .folio-navigation-search,
88
+ .folio-selection-toolbar > button,
89
+ :is(.folio-action-menu, .folio-site-preference-menu)[data-folio-menu] [role='menuitem'],
90
+ .folio-site-preference-item { min-block-size: 44px; }
91
+ }
@@ -0,0 +1,115 @@
1
+ .folio-conversation-layout { display: grid; grid-template-columns: minmax(0, 1fr); align-items: start; gap: 3rem; }
2
+ .folio-conversation-layout__evidence { display: none; min-inline-size: 0; }
3
+ .folio-conversation-facts { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1.25rem 2rem; border-block: 1px solid var(--rule); padding-block: 1.25rem; }
4
+ .folio-conversation-facts dd > span { display: inline-flex; align-items: center; gap: .5rem; }
5
+ .folio-conversation-thread { min-inline-size: 0; }
6
+ .folio-conversation-thread__intro { border-block-start: 1px solid var(--rule-hard); padding-block-start: 2rem; }
7
+ .folio-conversation-thread__intro > h2 { max-inline-size: 22ch; text-wrap: balance; }
8
+ .folio-conversation-thread__intro > p { max-inline-size: 56ch; }
9
+ .folio-conversation-suggestions { margin-block-start: 2rem; }
10
+ .folio-conversation-suggestions > ul, .folio-conversation-sources > ul { list-style: none; margin: .5rem 0 0; padding: 0; border-block-start: 1px solid var(--rule); }
11
+ .folio-conversation-suggestions > ul > li, .folio-conversation-sources > ul > li { border-block-end: 1px solid var(--rule); }
12
+ .folio-conversation-suggestions__action { inline-size: 100%; justify-content: space-between; text-align: start; gap: 1.5rem; padding-inline: 0; }
13
+ .folio-conversation-suggestions__action > svg { flex-shrink: 0; }
14
+ .folio-conversation-thread__controls { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .25rem 1.5rem; border-block-start: 1px solid var(--rule-hard); padding-block-start: .75rem; }
15
+ .folio-conversation-thread__controls > div { display: flex; flex-wrap: wrap; gap: .25rem; }
16
+ .folio-conversation-log { display: flex; flex-direction: column; }
17
+ .folio-conversation-log[data-compact] { gap: 2rem; }
18
+ .folio-conversation-thread__composer { margin-block-start: 3rem; }
19
+ .folio-conversation-thread__composer[data-sticky] { position: sticky; inset-block-end: 0; z-index: 10; margin-block-start: 2rem; padding-block: 1rem .75rem; border-block-start: 1px solid var(--rule-hard); background: var(--paper); }
20
+ .folio-conversation-thread__proposal { margin-block-end: 1.25rem; }
21
+ .folio-question-composer__row { display: flex; align-items: end; gap: 1rem; }
22
+ .folio-question-composer__field { flex: 1; min-inline-size: 0; }
23
+ .folio-question-composer__row > button { flex-shrink: 0; }
24
+ .folio-question-composer__footer { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem 1rem; justify-content: space-between; margin-block-start: .75rem; }
25
+ .folio-question-composer__footer > p { max-inline-size: 56ch; }
26
+ .folio-question-composer__counter { white-space: nowrap; font-variant-numeric: tabular-nums; }
27
+ .folio-conversation-turn { border-block-end: 1px solid var(--rule); padding-block: 1.75rem; }
28
+ .folio-conversation-turn__toggle { inline-size: 100%; justify-content: space-between; align-items: baseline; gap: 1rem; text-align: start; font: inherit; color: inherit; padding-inline: 0; }
29
+ .folio-conversation-turn__toggle > span { text-wrap: balance; }
30
+ .folio-conversation-turn__toggle > svg { flex-shrink: 0; transition: rotate var(--duration-fast) var(--ease); }
31
+ .folio-conversation-turn__toggle[data-state='open'] > svg { rotate: 90deg; }
32
+ .folio-conversation-turn__body { max-inline-size: 64ch; padding-block-start: .75rem; }
33
+ .folio-conversation-turn__preview { max-inline-size: 64ch; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
34
+ .folio-conversation-quote { margin: 0 0 1.5rem; border-inline-start: 1px solid var(--rule-2); padding-inline-start: 1.25rem; }
35
+ .folio-conversation-quote > blockquote { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; margin: .5rem 0 0; font-family: var(--font-heading); font-weight: var(--display-weight); font-style: italic; font-size: 1rem; line-height: 1.6; color: var(--ink-2); }
36
+ .folio-conversation-quote[data-compact] { margin-block-end: 1rem; padding-inline-start: .875rem; }
37
+ .folio-conversation-quote[data-compact] > blockquote { -webkit-line-clamp: 3; font-size: .875rem; }
38
+ .folio-conversation-answer__question { margin-block: .375rem 1rem; font-family: var(--font-heading); }
39
+ .folio-conversation-answer > .folio-activity-trace { margin-block-end: 1rem; }
40
+ .folio-conversation-prose { font-size: 1rem; overflow-wrap: anywhere; }
41
+ .folio-conversation-prose > p { white-space: pre-wrap; }
42
+ .folio-conversation-prose p.folio-conversation-prose__heading { margin-block: 1.5rem .5rem; font-size: 1rem; font-family: var(--font-sans); font-weight: 500; line-height: 1.5; color: var(--ink); }
43
+ .folio-conversation-prose p.folio-conversation-prose__heading[data-lead] { margin-block-start: 0; }
44
+ .folio-conversation-prose sup { font-size: .75em; }
45
+ .folio-conversation-caret { display: inline-block; inline-size: .375rem; block-size: 1em; margin-inline-start: .2rem; vertical-align: -.1em; background: var(--ink); }
46
+ .folio-conversation-sources { margin-block-start: 1.5rem; border-block-start: 1px solid var(--rule-hard); padding-block-start: .75rem; }
47
+ .folio-conversation-sources__header { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; }
48
+ .folio-conversation-sources__link { display: grid; grid-template-columns: 2rem minmax(0, 1fr) auto; inline-size: 100%; align-items: baseline; text-align: start; gap: .75rem; padding-inline: 0; }
49
+ .folio-conversation-sources__link[data-highlighted] { background: var(--accent-muted); }
50
+ .folio-conversation-sources__link > span:nth-child(2) { min-inline-size: 0; }
51
+ .folio-conversation-sources__link > span:nth-child(2) > span { display: block; }
52
+ .folio-action-proposal__actions { margin-block-start: .375rem; border-block-start: 1px solid var(--rule-hard); }
53
+ .folio-action-proposal__action { display: flex; inline-size: 100%; justify-content: space-between; gap: 1rem; text-align: start; border-block-end: 1px solid var(--rule); padding-inline: 0; }
54
+ .folio-action-proposal__action > span { min-inline-size: 0; }
55
+ .folio-action-proposal__action > span:last-child { display: flex; align-items: center; gap: .75rem; flex-shrink: 0; }
56
+ .folio-conversation-launcher { position: fixed; inset-block-end: 1.5rem; inset-inline-start: 1.5rem; z-index: 40; min-block-size:3rem; padding-inline:1rem 1.125rem; gap:.625rem; border:1px solid var(--rule-2); border-radius:var(--radius-pill); background:var(--paper); color:var(--ink-2); font-family:var(--sans); font-size:.8125rem; font-weight:500; box-shadow:0 2px 5px color-mix(in srgb,var(--ink) 4%,transparent),0 8px 24px color-mix(in srgb,var(--ink) 6%,transparent); transition: opacity var(--duration-base) var(--ease),background var(--duration-fast),box-shadow var(--duration-fast); }
57
+ .folio-conversation-launcher:hover { background:var(--paper-2); box-shadow:0 3px 8px color-mix(in srgb,var(--ink) 5%,transparent),0 10px 28px color-mix(in srgb,var(--ink) 8%,transparent); }
58
+ .folio-conversation-launcher[data-revealed='false'] { opacity: 0; pointer-events: none; }
59
+ .folio-conversation-dock__scrim { position: fixed; inset: 0; z-index: var(--z-scrim); background: var(--scrim); }
60
+ .folio-conversation-dock { position: fixed; inset-inline: 0; inset-block-end: 0; z-index: var(--z-modal); display: flex; flex-direction: column; max-block-size: min(72svh, 40rem); overflow: hidden; border: 1px solid var(--rule-hard); border-radius: var(--radius-lg) var(--radius-lg) 0 0; background: var(--paper); transition: opacity var(--duration-base) var(--ease), transform var(--duration-base) var(--ease), visibility var(--duration-base) var(--ease); }
61
+ .folio-conversation-dock[data-open='false'] { visibility: hidden; opacity: 0; translate: 0 .75rem; }
62
+ .folio-conversation-dock[data-card='true'] { inset: auto; max-block-size: none; border-radius: var(--radius-lg); }
63
+ .folio-conversation-dock[data-card='true'][data-corner='bottom-left'] { bottom: 1.5rem; left: 1.5rem; }
64
+ .folio-conversation-dock[data-card='true'][data-corner='bottom-right'] { bottom: 1.5rem; right: 1.5rem; }
65
+ .folio-conversation-dock[data-card='true'][data-corner='top-left'] { top: 1.5rem; left: 1.5rem; }
66
+ .folio-conversation-dock[data-card='true'][data-corner='top-right'] { top: 1.5rem; right: 1.5rem; }
67
+ .folio-conversation-dock[data-dragging] { user-select: none; }
68
+ .folio-conversation-dock[data-moving] { transition: none; }
69
+ .folio-conversation-dock__header { display: flex; align-items: center; justify-content: space-between; gap: .75rem; flex-shrink: 0; border-block-end: 1px solid var(--rule-hard); padding-inline: 1rem; }
70
+ .folio-conversation-dock__header > span, .folio-conversation-dock__header > div { display: flex; align-items: center; gap: .5rem; }
71
+ .folio-conversation-dock[data-card='true'] > .folio-conversation-dock__header { cursor: grab; padding-block: .5rem; }
72
+ .folio-conversation-dock[data-moving] > .folio-conversation-dock__header { cursor: grabbing; }
73
+ .folio-conversation-dock__log { min-block-size: 0; flex: 1; overflow-y: auto; overscroll-behavior: contain; padding: 1rem; }
74
+ .folio-conversation-dock__proposal { border-block-start: 1px solid var(--rule); padding: .75rem 1rem 0; }
75
+ .folio-conversation-dock__notice { border-block-start: 1px solid var(--rule); padding: .75rem 1rem; background: var(--paper-2); }
76
+ .folio-conversation-dock__composer { border-block-start: 1px solid var(--rule-hard); padding: .75rem 1rem max(.75rem, env(safe-area-inset-bottom)); }
77
+ .folio-conversation-dock-welcome > p { max-inline-size: 30ch; font-family: var(--font-heading); }
78
+ .folio-conversation-dock-welcome .folio-conversation-suggestions { margin-block-start: 1.5rem; }
79
+ .folio-conversation-dock { border-color:var(--rule-2); box-shadow:0 12px 48px color-mix(in srgb,var(--ink) 12%,transparent); }
80
+ .folio-conversation-dock__header { padding-inline:1.25rem; border-color:var(--rule); font-family:var(--sans); }
81
+ .folio-conversation-dock__header a { font-family:var(--sans); font-size:.8125rem; }
82
+ .folio-conversation-dock__log { padding:1.5rem; }
83
+ .folio-conversation-dock-welcome>p { font-family:var(--sans); font-size:1rem; line-height:1.75; font-weight:400; color:var(--ink-2); }
84
+ .folio-conversation-dock .folio-conversation-suggestions__action { font-family:var(--sans); font-size:.8125rem; font-weight:400; line-height:1.65; white-space:normal; padding-block:.75rem; }
85
+ .folio-conversation-dock__composer { padding:1rem 1.25rem; border-color:var(--rule); background:var(--paper-2); }
86
+ .folio-conversation-resize { position: absolute; z-index: 10; }
87
+ .folio-conversation-resize[data-side='top'], .folio-conversation-resize[data-side='bottom'] { inset-inline: 0; block-size: .375rem; cursor: ns-resize; }
88
+ .folio-conversation-resize[data-side='left'], .folio-conversation-resize[data-side='right'] { inset-block: 0; inline-size: .375rem; cursor: ew-resize; }
89
+ .folio-conversation-resize[data-side='top'] { top: 0; }
90
+ .folio-conversation-resize[data-side='bottom'] { bottom: 0; }
91
+ .folio-conversation-resize[data-side='left'] { left: 0; }
92
+ .folio-conversation-resize[data-side='right'] { right: 0; }
93
+ .folio-conversation-resize:focus-visible, .folio-conversation-resize[data-dragging] { background: var(--focus); outline: none; }
94
+ .folio-selection-toolbar { position: fixed; z-index: var(--z-modal); display: flex; align-items: stretch; gap: .125rem; padding: .3125rem; max-inline-size: calc(100vw - 2rem); border: 1px solid var(--rule-hard); border-radius: var(--radius-lg); background:var(--paper); box-shadow:0 .75rem 2rem color-mix(in srgb,var(--ink) 14%,transparent); }
95
+ .folio-selection-toolbar[data-floating='false'] { left: 50%; translate: -50% 0; bottom: calc(5rem + env(safe-area-inset-bottom)); }
96
+ .folio-selection-toolbar > button { min-block-size:2.5rem; white-space: nowrap; border-radius:calc(var(--radius) - 1px); }
97
+ .folio-selection-toolbar > button:first-child{background:var(--ink);color:var(--paper)}
98
+ @media (max-width: 639px) {
99
+ .folio-conversation-suggestions [data-wide-only] { display: none; }
100
+ .folio-action-proposal__detail { display: none; }
101
+ .folio-question-composer[data-compact] .folio-question-composer__row { gap: .5rem; }
102
+ .folio-question-composer[data-compact] input { font-size: 1rem; }
103
+ }
104
+ @media (min-width: 901px) {
105
+ .folio-conversation-layout { grid-template-columns: minmax(0, 1fr) minmax(17rem, 21rem); gap: clamp(2.5rem, 5vw, 5rem); }
106
+ .folio-conversation-layout__evidence { display: block; position: sticky; inset-block-start: var(--scroll-offset); border-inline-start: 1px solid var(--rule); padding-inline-start: clamp(1.5rem, 3vw, 2.5rem); }
107
+ }
108
+ @media (min-width: 640px) { .folio-conversation-facts { display: flex; flex-direction: row; flex-wrap: wrap; gap: 1.5rem 3rem; } }
109
+ @media (prefers-reduced-motion: no-preference) {
110
+ .folio-conversation-caret { animation: folio-conversation-blink 1s steps(2, end) infinite; }
111
+ }
112
+ @media (prefers-reduced-motion: reduce) {
113
+ .folio-conversation-dock, .folio-conversation-launcher, .folio-conversation-turn__toggle > svg { transition: none; }
114
+ }
115
+ @keyframes folio-conversation-blink { to { opacity: 0; } }